- 格式化符号:%s, %c, %d, %f.%-5s指明了一个为左对齐且宽度为5的字符串替换(-表示左对齐),如果没有指明-则表示右对齐,宽度指定了保留给某个变量的字符数.对于浮点数,可以使用其他参数对小数部分进行舍入,例如:%-4.2f,其中.2指定保留2位小数.
- 比较:
- 算数比较:
- -gt: 大于 例如: if [ 1 -get 0 ]; then … if
- -lt: 小于
- -ge: 大于或等于
- -le: 小于或等于
- 字符串比较:
- = 或 ==: 相等, 例如: if [ $str2 == $str2 ]
- !=: 不等于
- >; 大于
- <: 小于
- -z: 是否空字符串, 例如: if [ -z $str1 ]
- -n: 是否非空字符串, 例如: if [ -n $str1 ]
- 文件相关比较:
- -f: 是否为文件, 例如: if [ -f $var ]
- -x: 是否是可执行文件
- -d: 是否是目录
- -e: 文件是否存在
- -c: 是否是字符设备文件
- -b: 是否是块设备文件
- -w: 是否是可写文件
- -r: 是否是可读文件
- -L: 是否是符号连接
- 打印彩色输出:\e[颜色码m,\e[0m将颜色重置.其中常用的颜色码有:黑色(30),红色(31),绿色(32),黄色(33),蓝色(34),洋红(35),青色(36),白色(37).常用的彩色背景色有:黑色(40), 红色(41),绿色(42),黄色(43),蓝色(44),洋红(45),青色(46),白色(47)
- 文件描述符及重定向:
- 标准输入(stdin)用0表示,标准输出(stdout)用1表示,标准错误(stderr)用2表示.
- 将文本输出到文件用(>),例如: echo "hello" > temp.txt
- 将文本追加到文件用(>>),例如: echo "hello" >> temp.txt
- 重定向符号>和>>的区别是>会清除之前的内容,而>>是追加到文件尾部.
- 将标准输出和标准错误输出到文件,例如: cmd 2 > stderr.txt 1 > stdout.txt.如果想把标准错误和标准输出重定向到统一文件,例如: cmd 2 > &1 output.txt,或者 cmd &> output.txt.
- 如果标准输出和标准错误不想输出到文件,可以将重定向到一个特殊文件/dev/null,黑洞文件.
- 标准输入用<表示, 例如: cmd < file.
- 日期date
- 获取日期:date 2017年 05月 24日 星期三 16:59:41 CST
- 获取时间戳(秒):date +%s 1495616478
- 设置日期和时间: date -s "格式化的日期字符串" date -s "2017-05-28 23:00:00"
- 查找 find
- 根据文件名或正则表达式搜索find dir -name "*.txt" 忽略大小写 find dir -iname "*.txt"
- 根据文件类型搜索选项 -type
文件类型 | 类型参数 |
普通文件 | f |
符号链接 | l |
目录 | d |
字符设备 | c |
块设备 | b |
套接字 | s |
FIFO | p |
- 根据文件时间搜索(-表示小于,+表示大于):
- 访问时间:-atime(单位天), -amin(单位分钟) 用户最近一次访问时间
- 修改时间:-mtime(单位天), -mmin(单位分钟) 文件内容最后一次修改时间
- 变化时间:-ctime(单位天), -cmin(单位分钟) 文件元数据(权限,所有权等)最后一次改变时间
- 根据文件大小搜索-size:
文件单位 | 大小 |
b | 块(512字节) |
c | 字节 |
w | 字(2字节) |
k | 1024字节 |
M | 1024K字节 |
G | 1024M字节 |
- 删除匹配文件:-delete
- 基于文件权限和所有权匹配:-perm 权限 例如: -prem 644
- 执行命令动作:-exec
- 结合grep,可以搜索文件内容的关键字并高亮显示,例如: find path -iname "*.cpp" -exec grep –color -wn -H $1 \{\} \;
- 文件分割:split
- 按大小分割: split -b blockSize file 其中单位有K(kb), M(MB), G(GB), c(byte), w(word)
- 按行数分割: split -l lineNumber file
- 使用数字为后缀选项:-d, 默认是字母为后缀
- 指定后缀长度选项:-a length
- 文件
- 任意文件大小:dd 例如: dd if=/dev/zero of=zero.data bs=1M count=1, 默认if为stdin, of为stdout, 其大小为count * bs.
- 文件权限,所有权和粘滞位
- 第一个字母对应的关系:
符号 | 含义 |
- | 普通文件 |
d | 目录 |
c | 字符设备 |
b | 块设备 |
l | 符号链接 |
s | 套接字 |
- 剩余的部分可以划分成3个部分,每组3个字符组成:
第一组3个字符对应的是用户权限
第二组3个字符对应的是用户组权限
第三组3个字符对应的其他用户权限
- 每组3个字符的含义:
第一个字符是读权限
第二个字符是写权限
第三个字符是执行权限
其中除了其他用户外其余2个用户(组)还有一个setuid(S)特殊权限,出现在执行权限位,setuid权限允许用户以其拥有者的权限来执行可执行文件,即使这个可执行文件是由其他用户允许的.
- 目录有一个特殊的权限,粘滞位.如果目录设置了粘滞位,只有创建该目录的用户才能删除目录中的文件,即使用户组和其他用户也有写的权限,也无能为力.粘滞位出现在其他用户权限的执行权限位(x)位置,使用t或T表示,如果没有设置执行权限但设置了粘滞位.就使用t;如果同时设置了执行权限和粘滞位,就使用T.一个典型的例子就是/tmp目录
- 改变文件权限:chmod 例如: chmod u=rwx g=rw o=r file; chmod u+x file; chmod u-x file; chmod a+x file, 选项-R为递归设置
- u: 指定用户权限
- g: 指定用户组权限
- o: 指定其他用户权限
- a: 全部
- +: 添加权限
- -: 删除权限
- 权限序列:
- r-- = 4
- -w- = 2
- --x = 1
- rw- = 4 + 2 = 6
- r-x = 4 + 1 = 5
- -w-x = 2 + 1 = 3
例如: rwx rw- r-- 等于764即 chmod 764 file
- 改变所有权:chown 例如: chmod -R user.group file, 其他-R选项为递归设置
- 设置文件为不可修改文件:chattr, 例如:chattr +i file 设置文件file为不可修改, chattr -i file 设置文件file为可修改.
浙公网安备 33010602011771号