系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux命令行使用技術(shù)

Linux命令行的日常使用技術(shù)(2)

時間:2015-07-01 15:46:54 作者:zhijie 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150701/51942.html 手機查看 評論

  日常使用

  在Bash中,使用 tab 補完參數(shù),使用 ctrl-r 來搜索命令歷史。

  在Bash中,使用 ctrl-w 來刪除最后的單詞,使用 ctrl-u 來刪除整行,返回行首。使用 alt-b 和alt-f 來逐詞移動,使用 ctrl-k 來清除到行尾的內(nèi)容,以及使用 ctrl-l 清屏。參見 man readline來查看 Bash 中所有默認(rèn)的鍵盤綁定,有很多。例如,alt-。 可以循環(huán)顯示先前的參數(shù),而alt- 擴展通配。(LCTT 譯注:關(guān)于 Bash 下的快捷鍵,可以參閱: https://linux.cn/article-5660-1.html)

  另外,如果你喜歡 vi 風(fēng)格的鍵盤綁定,可以使用 set -o vi。

  要查看最近用過的命令,請使用 history 。 有許多縮寫形式,比如 !$(上次的參數(shù))和!。ㄉ洗蔚拿睿,雖然使用 ctrl-r 和 alt-。 更容易些。(LCTT 譯注:關(guān)于歷史擴展功能,可以參閱: https://linux.cn/article-5658-1.html )

  返回先前的工作目錄: cd -

  如果你命令輸入到一半,但是改變主意了,可以敲 alt-# 來添加一個 # 到開頭,然后將該命令作為注釋輸入(或者使用快捷鍵 ctrl-a, #,enter 輸入)。然后,你可以在后面通過命令歷史來回到該命令。

  使用 xargs(或 parallel),它很強大。注意,你可以控制每行(-L)執(zhí)行多少個項目,以及并行執(zhí)行(-P)。如果你不確定它是否會做正確的事情,可以首先使用 xargs echo。同時,使用 -I{} 也很方便。樣例:

  find 。-name ’*.py‘| xargs grep some_function

  cat hosts | xargs -I{} ssh root@{} hostname

  pstree -p 對于顯示進(jìn)程樹很有幫助。

  使用 pgrep 和 pkill 來按名稱查找進(jìn)程或給指定名稱的進(jìn)程發(fā)送信號(-f 很有幫助)。

  掌握各種可以發(fā)送給進(jìn)程的信號。例如,要掛起進(jìn)程,可以使用 kill -STOP [pid]。完整的列表可以查閱 man 7 signal。

  如果你想要一個后臺進(jìn)程一直保持運行,使用 nohup 或 disown。

  通過 netstat -lntp 或 ss -plat 檢查哪些進(jìn)程在監(jiān)聽(用于 TCP,對 UDP 使用 -u 替代 -t)。

  lsof來查看打開的套接字和文件。

  在 Bash 腳本中,使用 set -x 調(diào)試腳本輸出。盡可能使用嚴(yán)格模式。使用 set -e 在遇到錯誤時退出。也可以使用 set -o pipefail,對錯誤進(jìn)行嚴(yán)格處理(雖然該話題有點微妙)。對于更復(fù)雜的腳本,也可以使用 trap。

  在 Bash 腳本中,子 shell(寫在括號中的)是組合命令的便利的方式。一個常見的例子是臨時移動到一個不同的工作目錄,如:

  # 在當(dāng)前目錄做些事

  (cd /some/other/dir; other-command)

  # 繼續(xù)回到原目錄

  注意,在 Bash 中有大量的各種各樣的變量擴展。檢查一個變量是否存在:${name:?error message}。例如,如果一個Bash腳本要求一個單一參數(shù),只需寫 input_file=${1:?usage: $0 input_file}。算術(shù)擴展:i=$(( (i + 1) % 5 ))。序列: {1..10}。修剪字符串:${var%suffix} 和${var#prefix}。例如,if var=foo.pdf ,那么 echo ${var%.pdf}.txt 會輸出 foo.txt。

  命令的輸出可以通過 《(some command) 作為一個文件��處理。例如,將本地的 /etc/hosts 和遠(yuǎn)程的比較:

  diff /etc/hosts 《(ssh somehost cat /etc/hosts)

  了解 Bash 中的“嵌入文檔”,就像在 cat 《《EOF 。.. 中。

  在 Bash 中,通過:some-command 》logfile 2》&1 同時重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤。通常,要確保某個命令不再為標(biāo)準(zhǔn)輸入打開文件句柄,而是將它捆綁到你所在的終端,添加 《/dev/null 是個不錯的做法。

  man ascii 可以得到一個不錯的ASCII表,帶有十六進(jìn)制和十進(jìn)制值兩種格式。對于常規(guī)編碼信息,man unicode,man utf-8 和 man latin1 將很有幫助。

  使用 screen 或 tmux 來復(fù)用屏幕,這對于遠(yuǎn)程 ssh 會話尤為有用,使用它們來分離并重連到會話。另一個只用于保持會話的最小可選方案是 dtach。

  在 ssh 中,知道如何使用 -L 或 -D(偶爾也用-R)來打開端口通道是很有用的,如從一臺遠(yuǎn)程服務(wù)器訪問網(wǎng)站時。

  為你的 ssh 配置進(jìn)行優(yōu)化很有用;例如,這個 ~/.ssh/config 包含了可以避免在特定網(wǎng)絡(luò)環(huán)境中連接被斷掉的情況的設(shè)置、使用壓縮(這對于通過低帶寬連接使用 scp 很有用),以及使用一個本地控制文件來開啟到同一臺服務(wù)器的多通道:

  TCPKeepAlive=yes

  ServerAliveInterval=15

  ServerAliveCountMax=6

  Compression=yes

  ControlMasterauto

  ControlPath/tmp/%r@%h:%p

  ControlPersist yes

  其它一些與 ssh 相關(guān)的選項對會影響到安全,請小心開啟,如各個子網(wǎng)或主機,或者在信任的網(wǎng)絡(luò)中:StrictHostKeyChecking=no, ForwardAgent=yes

  要獲得八進(jìn)制格式的文件的權(quán)限,這對于系統(tǒng)配置很有用而用 ls 又沒法查看,而且也很容易搞得一團(tuán)糟,可以使用像這樣的東西:

  stat -c ’%A %a %n‘/etc/timezone

  對于從另一個命令的輸出結(jié)果中交互選擇值,可以使用percol。

  對于基于另一個命令(如git)輸出的文件交互,可以使用fpp (路徑選擇器)。

  要為當(dāng)前目錄(及子目錄)中的所有文件構(gòu)建一個簡單的 Web 服務(wù)器,讓網(wǎng)絡(luò)中的任何人都可以獲取,可以使用: python -m SimpleHTTPServer 7777 (使用端口 7777 和 Python 2)。

標(biāo)簽 命令行

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨特見解

立即評論

以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關(guān)注
掃碼關(guān)注

掃碼關(guān)注 官方交流群 軟件收錄