RHCE_1-2_[从命令行管理文件]
1.文件管理命令:
活动 | 单一来源 | 多来源 |
---|---|---|
复制文件 | cp file1 file2 | cp file1 file2 file3 dir (4) |
移动文件 | mv file1 file2 | mv file1 file2 file3 dir (4) |
删除文件 | rm file1 | rm -f file1 file2 file3 (5) |
创建目录 | mkdir dir | mkdir -p par1/par2/dir (6) |
复制目录 | cp -r dir1 dir2 | cp -r dir1 dir2 dir3 dir4 (4) |
移动目录 | mv dir1 dir2 | mv dir1 dir2 dir3 dir4 (4) |
删除目录 | rm -r dir1 | rm -rf dir1 dir2 dir3 (5) |
注:
(1)结果为重命名;
(2)需要使用第归选项处理来源目录;
(3)如果dir2目录存在,则结果为移动,否则结果为重命名;
(4)最后一个参数必须是目录;
(5)谨慎使用”force”选项,系统不会提示确认操作;
(6)使用”创建父级“选项时应小心,无法捕获键入错误。
2.文件通配:(部分)
(1)大括号扩展:(可以相互嵌套)
例:
[root@desktop ~]# echo {Sunday,Monday,Tuesday}.log
Sunday.log Monday.log Tuesday.log
[root@desktop ~]# echo file{1..3}.txt
file1.txt file2.txt file3.txt
[root@desktop ~]# echo file{a..c}.txt
filea.txt fileb.txt filec.txt
[root@desktop ~]# echo file{a,b}{1,2}.txt
filea1.txt filea2.txt fileb1.txt fileb2.txt
[root@desktop ~]# echo file{a{1,2},b,c}.txt
filea1.txt filea2.txt fileb.txt filec.txt
(2)替换命令
命令替换允许命令的输出替换命令本身。当命令包含前导美元符号
(command)或者反引号‘command‘时,就会发生命令替换。反引号形式比较陈旧,而且有两个缺点:1)反引号在视觉上很容易与单引号混淆;2)反引号无法嵌套在反引号内。
(command)形式可以相互嵌套多个命令扩展。
例:
[root@desktop ~]# echo Today is `date +%A`
Today is 星期二
[root@desktop ~]# echo The time is $(date +%M) minutes past $(date +%l%p)
The time is 24 minutes past 4下午
防止参数被扩展:
在Bash shell中,许多字符有特殊含义。为了忽略元字符的特殊含义,使用引用和转义来防止它们被shell扩展。反斜杠()是Bash中的一个转义字符,防止其后的一个字符被特殊解释。如果要保护较长的字符串,则使用单引号(‘)或双引号(“)来括起字符串。
使用双引号可以阻止通配和shell扩展,但依然允许命令和变量替换。变量替换在概念上与命令替换一样,但可能使用可选的大括号语法。
例:
[root@desktop ~]# host=$(hostname -s); echo $host
desktop
[root@desktop ~]# echo "******hostname is ${host}******"
******hostname is desktop******
[root@desktop ~]# echo "******hostname is $host******"
******hostname is desktop******
[root@desktop ~]# echo Your username variable is \$USER
Your username variable is $USER
[root@desktop ~]# echo Your username variable is $USER
Your username variable is root
使用单引号则可以按字面解译所有的文本。除了阻止通配和shell扩展外,引号也指示shell额外阻止命令替换和变量替换。问号也是一个需要防止扩展的元字符。
例:
[root@desktop ~]# echo "Will variable $host evaluate to $(hostname -s)?"
Will variable desktop evaluate to desktop?
[root@desktop ~]# echo 'Will variable $host evaluate to $(hostname -s)?'
Will variable $host evaluate to $(hostname -s)?