80951138 2019-07-24
作为一名程序员,命令行是必备技能来的。今天,给大家推荐一个github上6W+ star的命令行项目,希望对大家有所帮助。
熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。
日常使用
find . -name '*.py' | xargs grep some_function cat hosts | xargs -I{} ssh root@{} hostname
set -euo pipefail trap "echo 'error: Script failed: see failed command above'" ERR
# do something in current dir (cd /some/other/dir && other-command) # continue in original dir
diff /etc/hosts <(ssh somehost cat /etc/hosts)
{ # 在这里写代码 }
TCPKeepAlive=yes ServerAliveInterval=15 ServerAliveCountMax=6 Compression=yes ControlMaster auto ControlPath /tmp/%r@%h:%p ControlPersist yes
stat -c '%A %a %n' /etc/timezone
>>> 2+3 5
文件及数据处理
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
# 将文件、目录和内容全部重命名 foo -> bar: repren --full --preserve-case --from foo --to bar . # 还原所有备份文件 whatever.bak -> whatever: repren --renames --from '(.*)\.bak' --to '\1' *.bak # 用 rename 实现上述功能(若可用): rename 's/\.bak$//' *.bak
mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt
系统调试
单行脚本
一些命令组合的例子:
sort a b | uniq > c # c 是 a 并 b sort a b | uniq -d > c # c 是 a 交 b sort a b b | uniq -u > c # c 是 a - b
awk '{ x += $3 } END { print x }' myfile
find . -type f -ls
egrep -o 'acct_id=[0-9]+' access.log | cut -d= -f2 | sort | uniq -c | sort -rn
function taocl() { curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README-zh.md| pandoc -f markdown -t html | iconv -f 'utf-8' -t 'unicode' | xmlstarlet fo --html --dropdtd | xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | xmlstarlet unesc | fmt -80 }
冷门但有用
仅限 OS X 系统
以下是仅限于 OS X 系统的技巧。
仅限 Windows 系统
以下是仅限于 Windows 系统的技巧。
在 Winodws 下获取 Unix 工具
实用 Windows 命令行工具
Cygwin 技巧
项目github地址点击下方阅读更多