从命令行管理文件之使用命令行工具管理文件
命令行文件管理
文件管理涉及创建、删除、复制和移动文件。此外,也可创建、删除、复制和移动目录,以帮助有条理地整理文件。
文件管理命令
活动 | 单一来源(注) | 多来源(注) |
---|---|---|
复制文件 | cp file1 file2 | cp file1 file2 file3 dir(4) |
移动文件 | mv file1 file2(1) | mv file1 file2 file3 dir(4) |
删除文件 | rm file1 | rm -f file1 file2 file3 dir(5) |
创建目录 | mkdir dir | mkdir -p par1/par2/dir(6) |
复制目录 | cp -r dir1 dir2(2) | cp -r dir1 dir2 dir3 dir4(4) |
移动目录 | mv dir1 dir2(3) | mv dir1 dir2 dir3 dir4(4) |
删除目录 | rm -r dir1(2) | rm -rf dir1 dir2 dir3(5) |
注: | (1)结果为重命名。(2)要使用“递归”选项处理来源目录。(3)如果dir2存在,则结果为移动。如果dir2不存在,则结果为重命名。(4)最后一个参数必须是目录(5)请谨慎使用“force”选项,系统将不会提示您确认操作。(6)使用“创建”父级选项时应小心;无法捕获键入错误。 |
从命令行管理文件之使用路径名扩展匹配文件名
文件通配:路径名扩展
Bash shell 具有一个路径名匹配功能,以前叫做通配。Bash通配功能通常称为“模式匹配”或“通配符”,可以使大量文件变得更加轻松。使用元字符“扩展”来匹配要寻找的文件名和路径名,可以一次性针对几种的一组文件执行命令。
1.模式匹配
通配是一种shell命令解析操作,它将一个通配符模式扩展到一组匹配的路径名。在执行命令之前,命令行元字符由匹配列表替换。不返回匹配项的模式(尤其是方括号括起的字符类),将原始模式请求显示为字面上的文本。下列常见的元字符和模式类。
模式 | 匹配项 |
---|---|
* | 由零个或多个字符组成的任何字符串 |
? | 任何一个字符 |
~ | 当前用户的主目录 |
~username | 用户username的主目录 |
~+ | 当前工作目录 |
~- | 上一工作目录 |
[abc…] | 括起的类中的任何一个字符 |
[!abc…] | 不在括起的类中的任何一个字符 |
[^abc…] | 不在括起的类中的任何一个字符 |
[[:alpha:]] | 任何字母字符(1) |
[[:lower:]] | 任何小写字符(1) |
[[:upper:]] | 任何大写字符(1) |
[[:alnum:]] | 任何字母字符或数字(1) |
[[:punct:]] | 除空格和字母数字以外的任何可打印字符(1) |
[[:digit:]] | 任何数字,即0-9(1) |
[[:space:]] | 任何一个空白字符;可能包含制表符、换行符或回车符,以及换页符和空格(1) |
注意 | 预设的POSIX字符类;针对当前区域而调整。 |
2.波形符扩展
波形符(~)后斜杠分隔符时可匹配当前用户的主目录。当后接一个字符串直到斜杠时,如果可以找到匹配项,则它被解释为用户名。如果找不到匹配的用户名,则返回实际波形符加上该字符串。
[sutdent@desktopX glob]$ ls ~/glob
able alf baker barvo cast charlie delta dog easy echo
[student@desktopX glob]$ echo ~/glob
/home/student/glob
[studnet@desktopX glob]$
3. 大括号扩展
大括号扩展用于生成任意字符串。大括号包含字符串的逗号分隔列表或顺序表达式。结果包含大括号定义之前或之后的文本。大括号扩展可以相互嵌套。
[student@desktopX glob]$ echo {Sunday,Monday,Tuesday,Wednesday} . log
Sunday.log Monday.log Tuesday.log Wednesday.log
[student@desktopX glob]$ echo file{1..3} . txt
file1.txt file2.txt file3.txt
4. 命令替换
命令替换允许命令输出替换命令本身。当命令包含前导美元符号和括号 ( c o m m a n d ) 或 者 反 引 号 ‘ c o m m a n d ‘ 时 , 就 会 发 生 命 令 替 换 。 (command)或者反引号`command`时,就会发生命令替换。 (command)或者反引号‘command‘时,就会发生命令替换。(command)形式可以互相嵌套多个命令扩展。
[student@desktopX glob]$ echo Today is date +%A.
Today is Wednesday.
[student@desktopX glob] echo The time is (date +%M) minutes past $(date +%1%p).
The time is 26 minutes past 11AM.
[student@desktopX glob]$
5. 防止参数被扩展
在Bash shell 中,许多字符有特殊含义。为了忽略元字符的而述含义,使用引用和转义来阻止它们被shell扩展。反斜杠(\)是Bash中的一个转义字符,防止其后的一个字符被特殊解释。如果要保护较长的字符串,则使用单引号(’)或双引号(")来括起字符串。
使用双引号可以阻止通配和shell扩展,但依然允许命令和变量替换。变量替换在概念上与命令替换一样,但可能使用可选的大括号语法。
使用单引号则可以按字面解释翻译所有的文本。