命令列的藝術

2021-09-27 06:43:15 字數 2566 閱讀 6311

熟練使用命令列是一種常常被忽視,或被認為難以掌握的技能,但實際上,它會提高你作為工程師的靈活性以及生產力。本文是乙份我在 linux 上工作時,發現的一些命令列使用技巧的摘要。有些技巧非常基礎,而另一些則相當複雜,甚至晦澀難懂。這篇文章並不長,但當你能夠熟練掌握這裡列出的所有技巧時,你就學會了很多關於命令列的東西了。

這篇文章是許多作者和譯者共同的成果。這裡的部分內容 首次 出現 於 quora, 但已經遷移到了 github,並由眾多高手做出了許多改進。如果你在本文中發現了錯誤或者存在可以改善的地方,請貢獻你的乙份力量

涵蓋範圍:

注意事項:

遇到問題的話,請嘗試使用 explainshell去獲取相關命令、引數、管道等內容的解釋。

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 '' *.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 ' end ' myfile
find . -type f -ls
egrep -o 'acct_id=[0-9]+' access.log | cut -d= -f2 | sort | uniq -c | sort -rn
function taocl()
以下是僅限於 os x 系統的技巧。

以下是僅限於 windows 系統的技巧。

awesome-osx-command-line:乙份針對 os x 命令列的更深入的指南。

shellcheck:乙個靜態 shell 指令碼分析工具,本質上是 bash/sh/zsh 的 lint。

filenames and pathnames in shell:有關如何在 shell 指令碼裡正確處理檔名的細枝末節。

data science at the command line:用於資料科學的一些命令和工具,摘自同名書籍。

命令列的藝術

流暢地使用命令列是乙個常被忽略的技能,或被認為是神秘的奧義。但是,它會以明顯而微妙的方式改善你作為工程師的靈活度和生產力。這是我在 linux 上工作時發現的有用的命令列使用小竅門和筆記的精粹。有些小竅門是很基礎的,而有些是相當地特別 複雜 或者晦澀難懂。這篇文章不長,但是如果你可以使用 並記得這裡...

命令列的藝術

外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img h2jyswmc 1607338793614 熟練使用命令列是一種常常被忽視,或被認為難以掌握的技能,但實際上,它會提高你作為工程師的靈活性以及生產力。本文是乙份我在 linux 上工作時,發現的一些命令列使用技巧的摘要。有些技巧非...

命令列藝術2

bin sh 傳統的 bin sh或者 bin bash用來指定直譯器 可以使用 usr bin env bash的改進版。這樣做的好處是,系統會自動在path環境變數中查詢你指定的程式 本例中的bash 相比第一種寫法,你應該盡量用這種寫法,因為程式的路徑是不確定的。這樣寫還有乙個好處,作業系統的...