Linux 的命令简直不要太多,但是经常用的可能很少,所以导致经常忘记一些实用的操作,这里记录自己常用但又尝尝忘记的 Bash 操作。
history(操作历史):
!str: 执行最近一个指定字符串str开头的命令; !?str: 执行最近一条包含字符串str的命令;
$ echo Hello World
Hello World
$ echo Goodbye
Goodbye
$ !e
echo Goodbye
Goodbye
按下Ctrl + r
会显示操作历史,键入命令的首字母,Shell 就会自动在历史文件中,查询并显示匹配的结果。
字符串匹配替换
(1)字符串头部的模式匹配
如果 pattern 匹配变量 variable 的开头, 删除最短匹配(非贪婪匹配)的部分,返回剩余部分
${variable#pattern}
如果 pattern 匹配变量 variable 的开头, 删除最长匹配(贪婪匹配)的部分,返回剩余部分
${variable##pattern}
$ myPath=/home/cam/book/long.file.name
$ echo ${myPath#/*/}
cam/book/long.file.name
$ echo ${myPath##/*/}
long.file.name
替换:
${variable/#pattern/string}
示例
$ foo=JPG.JPG
$ echo ${foo/#JPG/jpg}
jpg.JPG
(2)字符串尾部的模式匹配
如果 pattern 匹配变量 variable 的结尾, 删除最短匹配(非贪婪匹配)的部分,返回剩余部分
${variable%pattern}
如果 pattern 匹配变量 variable 的结尾, 删除最长匹配(贪婪匹配)的部分,返回剩余部分
${variable%%pattern}
替换:
# 模式必须出现在字符串的结尾
${variable/%pattern/string}
# 示例
$ foo=JPG.JPG
$ echo ${foo/%JPG/jpg}
JPG.jpg
(3)任意位置的模式匹配
如果 pattern 匹配变量 variable 的一部分, 最长匹配(贪婪匹配)的那部分被 string 替换,但仅替换第一个匹配
${variable/pattern/string}
如果 pattern 匹配变量 variable 的一部分, 最长匹配(贪婪匹配)的那部分被 string 替换,所有匹配都替换
${variable//pattern/string}
$ path=/home/cam/foo/foo.name
$ echo ${path/foo/bar}
/home/cam/bar/foo.name
$ echo ${path//foo/bar}
/home/cam/bar/bar.name
更多参考阮一峰 Bash脚本教程
评论列表,共 0 条评论
暂无评论