首頁 > 軟體

六個優雅的 Linux 命令列技巧

2020-06-16 17:08:47

一些非常有用的命令能讓命令列的生活更滿足,使用 Linux 命令工作可以獲得許多樂趣,但是如果您使用一些命令,它們可以減少您的工作或以有趣的方式顯示資訊時,您將獲得更多的樂趣。在今天的文章中,我們將介紹六個命令,它們可能會使你用在命令列上的時間更加值當。

 

watch

watch 命令會重複執行您給出的任何命令,並顯示輸出。預設情況下,它每兩秒執行一次命令。命令的每次執行都將覆蓋上一次執行時顯示的內容,因此您始終可以看到最新的資料。

您可能會在等待某人登入時使用它。在這種情況下,您可以使用 watch who 命令或者 watch -n 15 who 命令使每 15 秒執行一次,而不是兩秒一次。另外終端視窗的右上角會顯示日期和時間。

  1. $ watch-n 5who
  2. Every5.0s:who stinkbug:WedAug2314:52:152017
  3. shs pts/02017-08-2314:45(192.168.0.11)
  4. zoe pts/12017-08-2308:15(192.168.0.19)

您也可以使用它來檢視紀錄檔檔案。如果您顯示的資料沒有任何變化,則只有視窗角落裡的日期和時間會發生變化。

  1. $ watchtail/var/log/syslog
  2. Every2.0s:tail/var/log/syslog stinkbug:WedAug2315:16:372017
  3. Aug2314:45:01 stinkbug CRON[7214]:(root) CMD (command -v debian-sa1 >/dev/nu
  4. ll && debian-sa1 11)
  5. Aug2314:45:17 stinkbug systemd[1]:StartedSession179 of user shs.
  6. Aug2314:55:01 stinkbug CRON[7577]:(root) CMD (command -v debian-sa1 >/dev/nu
  7. ll && debian-sa1 11)
  8. Aug2315:05:01 stinkbug CRON[7582]:(root) CMD (command -v debian-sa1 >/dev/nu
  9. ll && debian-sa1 11)
  10. Aug2315:08:48 stinkbug systemd[1]:StartingCleanup of TemporaryDirectories...
  11. Aug2315:08:48 stinkbug systemd-tmpfiles[7584]:[/usr/lib/tmpfiles.d/var.conf:1
  12. 4]Duplicate line for path "/var/log", ignoring.
  13. Aug2315:08:48 stinkbug systemd[1]:StartedCleanup of TemporaryDirectories.
  14. Aug2315:13:41 stinkbug systemd[1]:StartedSession182 of user shs.
  15. Aug2315:14:29 stinkbug systemd[1]:StartedSession183 of user shs.
  16. Aug2315:15:01 stinkbug CRON[7828]:(root) CMD (command -v debian-sa1 >/dev/nu
  17. ll && debian-sa1 11)

這裡的輸出和使用命令 tail -f /var/log/syslog 的???出相似。

 

look

這個命令的名字 look 可能會讓我們以為它和 watch 做類似的事情,但其實是不同的。look 命令用於搜尋以某個特定字串開頭的單詞。

  1. $ look ecl
  2. eclectic
  3. eclectic's
  4. eclectically
  5. eclecticism
  6. eclecticism's
  7. eclectics
  8. eclipse
  9. eclipse's
  10. eclipsed
  11. eclipses
  12. eclipsing
  13. ecliptic
  14. ecliptic's

look 命令通常有助於單詞的拼寫,它使用 /usr/share/dict/words 檔案,除非你使用如下的命令指定了檔名:

  1. $ lookesac.bashrc
  2. esac
  3. esac
  4. esac

在這種情況下,它的作用就像跟在一個 awk 命令後面的 grep ,只列印匹配行上的第一個單詞。

 

man -k

man -k 命令列出包含指定單詞的手冊頁。它的工作基本上和 apropos 命令一樣。

  1. $ man-k logrotate
  2. dh_installlogrotate (1)- install logrotate config files
  3. logrotate (8)- rotates, compresses,and mails system logs
  4. logrotate.conf (5)- rotates, compresses,and mails system logs

 

help

當你完全絕望的時候,您可能會試圖使用此命令,help 命令實際上是顯示一個 shell 內建命令的列表。最令人驚訝的是它有相當多的引數變數。你可能會看到這樣的東西,然後開始想知道這些內建功能可以為你做些什麼:

  1. $ help
  2. GNU bash, version 4.4.7(1)-release (i686-pc-linux-gnu)
  3. These shell commands are defined internally.Type`help' to see this list.
  4. Type `help name' to find out more about the function `name'.
  5. Use`info bash' to find out more about the shell in general.
  6. Use `man-k' or `info' to find out more about commands notinthislist.
  7. A star (*)next to a name means that the command is disabled.
  8. job_spec [&] history [-c][-d offset][n]or hist>
  9. (( expression ))if COMMANDS;then COMMANDS;[elif C>
  10. . filename [arguments] jobs [-lnprs][jobspec ...]or jobs >
  11. :kill[-s sigspec |-n signum |-sigs>
  12. [ arg...] let arg [arg ...]
  13. [[ expression ]]local[option] name[=value]...
  14. alias[-p][name[=value]...] logout [n]
  15. bg [job_spec ...] mapfile [-d delim][-n count][-O or>
  16. bind [-lpsvPSVX][-m keymap][-f file> popd [-n][+N |-N]
  17. break[n]printf[-v var] format [arguments]
  18. builtin [shell-builtin [arg ...]] pushd [-n][+N |-N |dir]
  19. caller[expr]pwd[-LP]
  20. case WORD in[PATTERN [| PATTERN]...)> read [-ers][-a array][-d delim][->
  21. cd[-L|[-P [-e]][-@]][dir] readarray [-n count][-O origin][-s>
  22. command [-pVv] command [arg ...] readonly [-aAf][name[=value]...] o>
  23. compgen [-abcdefgjksuv][-o option][>return[n]
  24. complete [-abcdefgjksuv][-pr][-DE]> select NAME [in WORDS ...;]do COMM>
  25. compopt [-o|+o option][-DE][name ..>set[-abefhkmnptuvxBCHP][-o option->
  26. continue[n] shift [n]
  27. coproc [NAME] command [redirections] shopt [-pqsu][-o][optname ...]
  28. declare[-aAfFgilnrtux][-p][name[=v> source filename [arguments]
  29. dirs [-clpv][+N][-N] suspend [-f]
  30. disown [-h][-ar][jobspec ...| pid >test[expr]
  31. echo[-neE][arg ...]time[-p] pipeline
  32. enable [-a][-dnps][-f filename][na> times
  33. eval[arg ...] trap [-lp][[arg] signal_spec ...]
  34. exec[-cl][-a name][command [argume>true
  35. exit[n] type [-afptP] name [name ...]
  36. export[-fn][name[=value]...]or ex> typeset [-aAfFgilnrtux][-p] name[=v>
  37. false ulimit [-SHabcdefiklmnpqrstuvxPT][l>
  38. fc [-e ename][-lnr][first][last] o> umask [-p][-S][mode]
  39. fg [job_spec] unalias [-a] name [name ...]
  40. for NAME [in WORDS ...];do COMMAND>unset[-f][-v][-n][name ...]
  41. for(( exp1; exp2; exp3 ));do COMMAN>until COMMANDS;do COMMANDS;done
  42. function name { COMMANDS ;}or name > variables -Namesand meanings of so>
  43. getopts optstring name [arg] wait [-n][id...]
  44. hash [-lr][-p pathname][-dt][name >while COMMANDS;do COMMANDS;done
  45. help [-dms][pattern ...]{ COMMANDS ;}

 

stat -c

stat 命令用於顯示檔案的大小、所有者、使用者組、索引節點號、許可權、修改和存取時間等重要的統計資訊。這是一個非常有用的命令,可以顯示比 ls -l 更多的細節。

  1. $ stat .bashrc
  2. File:.bashrc
  3. Size:4048Blocks:8 IO Block:4096 regular file
  4. Device:806h/2054dInode:421481Links:1
  5. Access:(0644/-rw-r--r--)Uid:(1000/ shs)Gid:(1000/ shs)
  6. Access:2017-08-2315:13:41.781809933-0400
  7. Modify:2017-06-2117:37:11.875157790-0400
  8. Change:2017-06-2117:37:11.899157791-0400
  9. Birth:-

使用 -c 選項,您可以指定要檢視的欄位。例如,如果您只想檢視一個檔案或一系列檔案的檔名和存取許可權,則可以這樣做:

  1. $ stat -c '%n %a'.bashrc
  2. .bashrc 644

在此命令中, %n 表示每個檔案的名稱,而 %a 表示存取許可權。%u 表示數位型別的 UID,而 %U 表示使用者名稱。

  1. $ stat -c '%n %a' bin/*
  2. bin/loop 700
  3. bin/move2nohup 700
  4. bin/nohup.out 600
  5. bin/show_release 700
  6. $ stat -c '%n %a %U' bin/*
  7. bin/loop 700 shs
  8. bin/move2nohup 700 shs
  9. bin/nohup.out 600 root
  10. bin/show_release 700 shs

 

TAB

如果你沒有使用過 tab 鍵來補全檔名,你真的錯過了一個非常有用的命令列技巧。tab 鍵提供檔名補全功能(包括使用 cd 時的目錄)。它在出現歧義之前盡可能多的填充檔名(多個檔案以相同的字母開頭。如果您有一個名為 bigplans 的檔案,另一個名為 bigplans2017 的檔案會發生歧義,你將聽到一個聲音,然後需要決定是按下確認鍵還是輸入 2 之後再按下 tab 鍵選擇第二個檔案。

(題圖:Micah Elizabeth Scott (CC BY 2.0)


via: https://www.networkworld.com/article/3219684/linux/half-a-dozen-clever-linux-command-line-tricks.html

作者:Sandra Henry-Stocker 譯者:firmianay 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-08/146613.htm


IT145.com E-mail:sddin#qq.com