文章目录
后端开发技能学习(三) shell常用命令
字符串操作
汇总表:
根据位置截取
${string: start :length} # 从左边开始截
${string: 0-start :length} # 从右边开始截
# 栗子
$url="iamgod"
$echo ${url: 3:3}
god
$echo ${url: 0-6:3}
iam
根据指定字符截取
使用#号可以截取指定字符(或者子字符串)右边的所有字符,具体格式如下:
${
string#*chars} # 截取第一次匹配后的结果
${
string##*chars} # 截取最后一次匹配后的结果
其中,string 表示要截取的字符,chars 是指定的字符(或者子字符串),*是通配符的一种,表示任意长度的字符串。*chars连起来使用的意思是:忽略左边的所有字符,直到遇见 chars(chars 不会被截取)。
# 栗子
$ echo ${
a#*m}
god
使用%号可以截取指定字符(或者子字符串)左边的所有字符,具体格式如下:
${string%chars*} # 截取第一次匹配后的结果
请注意*的位置,因为要截取 chars 左边的字符,而忽略 chars 右边的字符,所以 *应该位于 chars 的右侧。其他方面%和#的用法相同
查找
find
find用于对文件进行查找
格式:find pathname -options [-print -exec -ok …]
参数:
pathname:目录
options:选项
-print:输出匹配结果
-exec:对匹配的文件进行操作
-ok:同上,不过会给出提示
option | 含义 |
---|---|
-name | 按文件名查找 |
-perm | 按文件权限查找 |
-prune | |
-user | 按照文件属主查找 |
-group | 按文件属组查找 |
-mtime | 按照文件更改时间查找 |
-nogroup | 无组文件查找 |
-nouser | 无主文件查找 |
-newer f1 ! f2 | 比f1新比f2旧的文件 |
-size n | 查找文件长度为n |
depth | 在子目录继续查找 |
-follow | 遇到符号链接,跟踪到指向的文件 |
-type | 指定类型文件 |
栗子:
$ find . -name "test.sh" # 查找名称为test.sh的文件
$ find . -name test.sh | xargs sh # 查找该文件并执行
$find /apps -path "/apps/bin" -prune -o -print # 避开bin目录查找
$ find . -size +100000c -print # 查找大于1M字节的文件(不加c表示块,即512字节)
type | 类型 |
---|---|
b | 块设备文件 |
d | 目录 |
c | 字符设备文件 |
p | 管道文件 |
l | 符号链接文件 |
f | 普通文件 |
grep
grep用于对文件内容进行查找
通用格式:
grep [option] “string_to_find” filename
选项:
option | full name | meaning |
---|---|---|
-a - | -text | 不忽略二进制数据 |
-A<行数> | –after-contxt<行数> | 显示查找行后n行的内容 |
-B<行数> | –before-context | 显示查找行前n行的内容 |
-c | –count | 计算符合条件的行数量 |
-C | –context | 显示改行前后的内容 |
-d | –directories | # 可以用于对目录进行查找 |