本文的主要内容是:
1.Linux上的基本文件管理命令
2bash的特性及其命令状态返回值
3.bash的花括号展开机制
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息
5如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
6.bash特性之globbing文件名匹配以及示例详解:
(1)显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
(2).显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
(3)显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
(4)在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
(5)复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
(6).复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
(7)复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
1.Linux上的基本文件管理命令
Linux的哲学思想之一就是一切皆文件,几乎所有的配置文件都已纯文本的形式存在,甚至连物理设备的访问入口也是文件,因此,对文件的管理尤为中重要,是玩转Linux的基本技能。常见的文件管理命令有:
(1) ls : 列出指定目录下文件
语法: ls [options] [file]
常用选项:
-a : 列出指定目录下的所有文件,包括隐藏文件
-l : 以长格式列出文件信息
-d:查看目录自身而非其内部的文件列表;
-R: recursive,递归显示;
-h : 默认情况下,列出的文件的信息是以字节为单位,-h选项能使列出的文件大小以 KB,MB等为单位列出,通常与-l一起组合使用
示例:
表示列出/etc目录下的所有文件 : ls -a /etc/
以人容易读懂的长格式显示/etc下的文件:ls -lah /etc/
只查看指定的文件信息:ls -lah /etc/fstab
(2) cp:复制文件和目录,默认情况下不能复制目录。
语法:cp [options] source dest
常用选项:
-f : 强行复制文件或目录, 不论目的文件或目录是否已经存在
-p :保留源文件或目录的属性,包括所有者、所属组、权限与时间
-d:复制链接属性
-R: 递归处理,将指定目录下的文件及子目录一并处理
示例:
将file1 复制到 /tmp/ : cp file1 /tmp/file1
将dir1下的文件复制到/tmp/下:cp -R dir1 /tmp/
复制时保留文件的属性: cp -p fiel1 /tmp/
(3)pwd:显示工作目录
(4)cd:改变工作目录
语法:cd [options] dest_dir
常用选项:
cd: 切换回家目录;
cd ~ username:切换到指定用户的家目录
cd – :在上一次所在的目录与当前目录之间进行切换
(5) cat : 查看指定文件的内容
语法:cat [options] file
常用选项:
-n :显示文件内容的时候添加行号
示例:
查看file的内容: cat -n file
(6).tac:查看文件的内容,是从后往前查看
语法: tac [options] file
常用选项:
-n:显示时添加行号
示例:
tac -n file1
(7)file:查看文件类型
语法:file file_name
(8).mv:移动或者重命名文件
语法:mv [options] source dest
常用选项:
-b :若需覆盖文件,则覆盖前先行备份。
-f :强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
示例:
将当前目录下的文件file重命名为file1:mv file file1
将当前目录下的file移动到/tmp/file,而且要做个备份:mv -b file /tmp/file
(9).rm:删除文件或者目录,默认情况下,当文件不为空的时会询问是否要删除,此命令及其危险,操作之前请三思而后行。
语法:rm [options] file
常用选项:
-r:递归删除
-f :强行删除
-i:删除文件之前会询问是否删除
示例:
删除文件file: rm file
强制删除文件file:rm -f file
删除/tmp/下的test目录: rm -r /tmp/test/
强制删除/tmp/test/目录:rm -rf /tmp/test
(10).wc:统计文件中单词个数和文件的行数
语法:wc [options] file
常用选项:
-l:文件的行数
-w:统计单词的个数
示例:
统计file的行数:wc -l file
统计file的单词个数:wc -w file
(11)sort:对文本文件进行排序
语法:sort [options] file
常用选项:
-d : 按字典顺序进行排序
-n :按数字进行排序
-r:逆序排序
示例:
对file进行逆序排序:sort -r file
对fi按字典顺序进行排序:sort -d file
对file按数字顺序进行排序:sort -n file
(12).tr:转换或删除字符
语法 : tr [options] set1 set2
常用选项:
-d : 删除指定的字符集合
-s : 删除重复的字符集合
常用的字符串集合:
[a-z]:全部小写字符集合
[A-Z]:全部大写字符的集合
[0-9]:全部数字的集合
示例:
将file中的全部小写转换为大写:tr [a-z] [A-Z] < file
将file中的数字全部删除: tr -d [0-9] < file
删除file中的空行:tr -s "\n" < file
(13).mkdir:创建目录
语法:mkdir [options] dir_name
常用选项:
-p:当父目录不存在时先创建父目录
-v:显示详细的创建过程
-m MODE:创建目录时直接指定权限
示例:
在/tmp目录下创建test1/test2/目录,test1事先不存在:mkdir -p /tmp/test1/test2
2.bash特性之命令状态返回值
bash中每个命令执行之后只会有两种状态,成功或者失败,而成功执行返回的指是0,若返回值为其他的则说明上一条命令执行失败了。
查看方法:echo $?
3.bash特性之展开机制
(1).命令行展开:
~:自动展开为用户的家目录
{}:将逗号分隔的路径列表展开为多个路径
例如:
在/tmp/下创建a_c, a_d, b_c, b_d : touch {a,b}_{c,d}
创建有如下结构的文件目录/tmp/mysysroot/
|– bin
|– etc
| — sysconfig
| — network-scripts
|– sbin
|– usr
| |– bin
| |– lib
| |– lib64
| |– local
| | |– bin
| | |– etc
| | |– lib
| | |– sbin
| |– sbin
— var
|– cache
|– log
|– run
mkdir -p /tmp/mysysroot/{bin,etc/sysconfig/network-script,sbin,usr/{bin,lib,lib64,local/{bin,etc,lib,sbin}sbin}var/{cache,log,run}}
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息
(1).文件的元数据有:
文件类型:常见的类型有普通文件(f),目录(d),块设备文件(b),字符设备(c),管道文件(p),套接字文件(s),连接文件(l)。
属主和属组信息:创建文件的用户以及该用户所属的用户组
属主和属组和其他用户对文件的权限:三位为一组,分别是r(读)w(写)x(执行),对应位没有则显示为-
文件的大小:显示了文件的大小,通常以字节为单位
文件的时间戳:包括文件的创建时间,修改时间和改变时间
文件名称:即为文件的名字
(2)修改文件的时间戳
touch:修改文件的时间戳
语法: touch [options] file
常用选项:
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t STAMP
示例:
创建不存在的文件file:touch file
更新文件的时间戳 file:touch -r file
设定文件的时间戳:touch -t 201211142234.50 file
5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
(1).定义命令别名:
alias name=command : 只对当前进程有效,下次重新启动时就会失效,要想永久有效,要将其写入配置文件中。
(2).引用另一个命令的执行结果的方法:管道(|),同时也体现了Linux的重要哲学思想之一,组合小程序完成复杂的任务。
例如:
想分屏显示查看你ls得到的结果 ls -lah | less
6.bash的特性之globbing文件名通配
bash的特性之一,支持globbing文件名通配,即支持元字符匹配模式,常用的有
\*:匹配任意长度任意字符
? :任意的单个字符
[ ]:范围内的任意单个字符
[^ ] :范围外的任意单个字符
常见用于匹配的字符集合有:
[[:upper:]]:所有大写的字母
[[:lower:]] : 所有小写字母
[[:alpha:]]:所遇的字母
[[:digit:]]:所有数字集合
[[:space:]:空格
[[:alnum:]]]:字母和数字
[[:punct:]]:标点符号
(1).显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls -d /var/l?[[:lower:]]
(2).显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]^[0-9]
(3)显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
ls -d /etc/[^a-z][a-z]*
(4)在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/ file-`date +%Y-%m-%d-%H-%M-%S`
(5).复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中:
cp -r /etc/p[^0-9] /tmp/mytest1
(6).复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录
cp -r /etc/*.d /tmp/mytest2
(7)复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中:
cp /etc/[lmn]*.conf /tmp/mytest3
原创文章,作者:zhangbao,如若转载,请注明出处:http://www.178linux.com/49067
评论列表(1条)
在总结知识点的时候能多一些实验环节能加深印象,想得越多,实践的越多越记忆深刻。