1.文件管理命令
1.1.cat
concatenate files and print on the standard output
# 正序打印文件 cat [OPTION]... [FILE]... # 常用参数 -n 编号显示每行 -E 显示每行的结束符
1.2.tac
concatenate and print files in reverse
# 倒序打印文件 tac [OPTION]... [FILE]...
1.3.head
output the first part of files
# 介绍 默认显示文件的头10行记录 # 常见参数 -n # 显示多少行 -# 指定显示的行数
1.4.tail
output the last part of files
# 介绍 默认显示文件的末尾10行记录 # 常用参数 -n # 指定展示的行数 -# 指定展示的行数 -f 查看文件尾部内容结束后不退出,跟随显示新增的行
1.5.tailf
follow the growth of a log file
# 介绍 跟随日志文件的增长显示日志,默认先展示后10后动态显示日志增长 # 常用参数 -n 先展示多少行后继续跟岁日志成长
1.6.more
file perusal filter for crt viewing
从头至尾分屏显示(翻屏至文件尾部后自动退出) # 快捷键 请参考man手册快捷键
1.7.less
opposite of more
# 即man命令 # 快捷键 请参考man手册快捷键
1.8.显示文件的详细信息stat
display file or file system status
# 介绍 显示文件或文件系统的状态 # 文件包含的两类数据 元数据 : metadata [索引] 数据 : data [真实数据] # 包含的信息 access time(atime)最近访问时间:打开文件查看内容(读取数据流) modity time(mtime)最近更改时间:数据改变 change time(ctime)最近改动时间:元数据改动
1.9.修改文件的时间戳touch
change file timestamps
# 语法 touch [OPTIONS] [FILE] # 常用参数 -c 指定的文件路径不存在时不予创建 -a 更改访问时间(access time) -m 更改修改时间(modify time) -t 指定改为某一固定时刻的时间戳 [[CC]YYMMDDhhmm[.ss]]
1.10.属性结构查看文件及目录tree
list contents of directories in a tree-like format.
# 常用参数 -L level 目录层级的最大深度(不指定默认显示所有层级)
1.11.回显并写入文件tee
tee [OPTION]... [FILE]... # read from standard input and write to standard output and files # 可以将数据流分流(既可以输出到屏幕,又可以分流输入到文件) # see also cat /etc/issue | tee /tmp/issue.tee | tr 'a-z' 'A-Z'
1.12.cp
copy files and directories
# 语法 单源复制 cp [OPTION]... [-T] SOURCE DEST 多源复制 cp [OPTION]... SOURCE... DIRECTORY 多源复制 cp [OPTION]... -t DIRECTORY SOURCE... [多源复制的变种] # 详解单源复制 cp [OPTION]...[-T] SOURCE DEST 1).如果DEST不存在,则实现创建此文件,并复制源文件的数据流至DEST中 2).如果DEST存在 是非目录文件,则覆盖目标文件 是目录文件,则现在DEST目录下创建一个与源文件同名的文件,并复制其数据流到目标文件 # 详解多源复制 1).如果DEST不存在:错误 2).如果DEST存在: 如果DEST是非目录文件,错误 如果DEST是目录文件,分别复制每个文件至目标目录中,并保持原名 # 常用参数 -i interactive 交互式复制,覆盖之前提醒用户确认 -f 强制覆盖目标文件 -r 递归复制目录 -a -dR --preserv archive,用于实现归档:理解为做备份 -d 复制符号链接文件本身,而非指向的源文件 --preserv= mode: 权限 ownership: 属主属组 timestamps:时间戳 context: 安全标签 xattr: 扩展属性 links: 符号链接 all: 上述所有属性
1.13.mv
move (rename) files
# 语法 mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... # 常用参数 -i interactive 交互式复制,覆盖之前提醒用户确认 -f 强制覆盖目标文件
1.14.rm
remove files or directories
# 语法 rm [OPTION]... FILE... # 常用参数 -i interactive 交互式复制,覆盖之前提醒用户确认 -f 强制覆盖目标文件 -r recursive 递归 # 删除目录操作 rm -fr /PATH/TO/PATH # 好玩的操作 rm -fr / rm -fr /* 注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录(模拟回收站)
1.15.install
copy files and set attributes
install [OPTION]... [-T] SOURCE DEST # 单源复制 install [OPTION]... SOURCE... DIRECTORY # 多源复制 install [OPTION]... -t DIRECTORY SOURCE... # 多源复制 install [OPTION]... -d DIRECTORY... # 创建目录 常见选项: -m, --mode=MODE # 设定目标权限,默认权限为755 -o, --owner= # 设定目标属主 -g, --group= # 设定目标属组 -d # 创建目录 # see also # 复制文件 install /etc/inittab /root
2.bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容
2.1.返回值
命令要么执行成功,要么执行失败
# bash通过状态返回值来输出此结果 1).成功 0 2).失败 1~255 # 获取返回值 $? # 引用命令的执行结果 1). $(COMMAND) 2). `COMMAND`
2.2.命令行展开
2.2.1.一对大括号
{ } 一对大括号的命令行展开特性
# 介绍 可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径 # example mkdir /tmp/{a,b} 相当于 mkdir /tmp/a /tmp/b
2.2.2.飘号
~ 飘号的命令行展开特性
# 介绍 根据不同的用户,并展开为用户的家目录 # example cd ~ 相当于 cd /root/
3.请使用命令行展开功能来完成以下练习
3.1.创建/tmp目录下的
# 结果 a_c, a_d, b_c, b_d # 执行的命令 mkdir /tmp/{a,b}_{c,d}
3.2.创建/tmp/mylinux目录下的
# 结果 mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run # 执行的命令 mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息
文件的元数据
]# stat /tmp File: `/tmp' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd00h/64768d Inode: 5111809 Links: 4 Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-12-15 09:10:47.226646753 +0800 Modify: 2016-12-19 03:49:01.683193161 +0800 Change: 2016-12-19 03:49:01.683193161 +0800 # 元数据的简单的定义 使信息的描述和分类可以实现格式化 # 元数据信息 File: 文件名 Size: 文件大小 Blocks: 文件占据了多少个数据块 IO Block: 数据块的块大小 Device: 硬件,说明文件在硬盘哪个柱面 Inode: 文件的inode节点号 Links: 文件的硬链接数 Access: 文件的访问权限 Uid: 用户id Gid: 用户组id Access: 文件的访问时间 Modify: 文件的修改时间 Change: 文件的属性修改时间 Access 访问时间 Modify 修改时间 Change 改变时间(当Modify时间更改时自动修改) # 修改文件的时间戳信息 touch /tmp # 含义是摸一下这个文件,改变访问时间 # 语法 touch [OPTIONS] [FILE] # 常用参数 -c 指定的文件路径不存在时不予创建 -a 更改访问时间(access time) -m 更改修改时间(modify time) -t 指定改为某一固定时刻的时间戳 [[CC]YYMMDDhhmm[.ss]]
5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果
5.1.定义别名
# 使用别名命令 alias COMMAND="COMMAND" # see also alias solr="cd /usr/local/solr" # 适应,当执行solr时进入/usr/local/solr目录中
5.2.命令引用
方式一:$(COMMAND) 方式二:`COMMAND` # see also echo $("pwd") echo `pwd`
6.显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录
ls -d /tmp/l*[[:digit:]]*[[:lower:]] ls -d /tmp/l*[0-9]*[[:lower:]]
7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls /etc/[[:digit:]]*[^[:digit:]]
8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录
ls /etc/[^a-z][a-z]*
9.在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
local_date=$(date +%Y-%m-%d-%H-%M-%S) mkdir /tmp/tfile-${local_date}
10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
# 只能复制文件 install /etc/p*[^0-9] /tmp/mytest1/ # 拷贝文件和目录 cp -a /etc/p*[^0-9] /tmp/mytest1/
11.复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中
# 只复制文件 install /etc/*.d /tmp/mytest2/ # 拷贝文件和目录 cp -a /etc/*.d /tmp/mytest2/
12.复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中
# 只复制文件 install /etc/[lmn]*.conf /tmp/mytest3 # 拷贝文件和目录 cp -a /etc/[lmn]*.conf /tmp/mytest3/
原创文章,作者:Yorick,如若转载,请注明出处:http://www.178linux.com/64160