记录 Linux 常用但又被经常忽略的命令

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 条评论

    暂无评论