译|Bash-Oneliner(随缘更新)
偶然在 GitHub 刷到了 这个项目,里面有各种各样的 bash 使用小技巧,但是它真的很长😰,以至于我没有信心一口气读完它。那干脆重新翻译整理一遍好了,顺便还能当个字典用,有需要就回来查一查
- 注意:本文只会收录我在自己机器 zsh 环境下实测有效、且认为比较有用的条目,同时也会补充一些自己的内容
终端技巧
- 快捷键(Ctrl+?)
Ctrl + R:搜索历史命令
Ctrl + A:光标移动到行首
Ctrl + D:发送 EOF
Ctrl + K:删除从光标到行末的所有字符
Ctrl + W:剪切光标前的单词,使用 Ctrl + Y 粘贴
Ctrl + U:剪切光标前的行,使用 Ctrl + Y 粘贴
Ctrl + _:撤销输入
Ctrl + L:清屏(不重置滚动条)
- 通过
history
中的号码指定命令
1 | !4160 |
- 执行上一条命令
1 | !! |
- 执行特定字符串开头的历史命令
1 | cat filename |
- 路径名模式扩展(glob)
1 | # '*' 匹配任意字符零次或多次 |
- 常用的环境变量
$0
:可执行文件名
$1
、$2
、$3
:位置参数
$#
:参数的数量
$?
:上一条命令的退出代码
$$
:当前 shell 的 pid
- 切片操作
1 | VAR="123456" |
- 字符串替换
1 | VAR="banana" |
cat
输出多行内容
1 | cat <<EOF > hello.py |
1 | cat <<EOF | python3 |
- 快速复制(zsh)
1 | sudo apt install xclip |
字符串操作(grep、sed、awk)
grep
grep
,grep -G
:基本正则表达式(BRE)
fgrep
,grep -F
:全字匹配模式
egrep
,grep -E
:扩展正则表达式(ERE)
- 统计空行的数量
1 | grep -c "^$" |
- 匹配完整单词
1 | grep -w 'target' |
- 显示匹配行的前后几行
1 | # 同时显示匹配行的后三行 |
- 只打印第一次匹配的结果
1 | ps -ef | grep -m 1 chrome |
- 统计匹配的行数
1 | ps -ef | grep -c chrome |
- 统计模板出现的次数
1 | ps -ef | grep -o chrome | wc -l |
- 递归地在文件中搜索
1 | # 不跟随符号链接 |
xargs 的使用
- 查找所有 pdf 文件并复制到指定文件夹
1 | find -name '*.pdf' | xargs -I {} cp {} ../output/ |
- 将每 3 个参数划分为一组(
-n 3
),并打开命令显示(-t
)
1 | seq 10 | xargs -n 3 -t echo |
未完待续……
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处!
评论