用戶必會的 20 個 Linux 基礎(chǔ)命令
無論新手老手,這 20 個 Linux 命令都能讓你的操作更輕松。
在黝黑的終端窗口中輸入命令,這樣的方式對某些人群來說可能好像過時了,但對許多專業(yè)計算機人員來說,這幾乎是計算機完成能夠執(zhí)行的所有任務(wù)的最有效、最簡便和最清晰的方式。如今,一些項目將開源命令引入了 macOS 和 Windows 等非開放平臺,因此終端命令不僅僅是針對 Linux 和 BSD 用戶,更是與每個人都息息相關(guān)。你可能會驚訝地發(fā)現(xiàn),在一臺普通的 POSIX 計算機上安裝了數(shù)千個命令,當然,其中很多命令并不是真的有用,至少不是直接或經(jīng)常性被使用。而其中的一部分命令雖然不是有效終端必須使用的命令,但相比其他命令而言使用頻率較高,值得大家學習一下。
以下是終端用戶最可能會使用的前 20 個命令:
cd
在終端外,你可以單擊圖標從一個文件夾移動到另一個文件夾,但在終端中,你需要使用 cd。cd 命令代表變更目錄change directory,是用戶在 Linux 系統(tǒng)中移動的方式。這是 Linux 中從一個地方到另一個地方最快、最直接的路線。
例如,在桌面上,當你想從你的主目錄(你保存所有文件夾的地方)移動到一個名為 presentations 的文件夾時,你首先要打開你的 Documents 文件夾,然后打開一個名叫 work 的文件夾,然后是 projects 文件夾,然后是 conference 文件夾,最后是 presentations 文件夾,里面存放的是 LibreOffice Impress 幻燈片。這個過程包含了很多次的雙擊操作。同時屏幕上還需要許多鼠標移動動作,這取決于新窗口出現(xiàn)的位置,以及大腦需要跟蹤的許多路徑點。許多人通過將 所有文件 都放在桌面上來避免這個看似微不足道的任務(wù)。
而終端用戶只需鍵入以下內(nèi)容即可避免此問題:
- $ cd ~/Documents/work/projects/conference/presentations
一些有經(jīng)驗的終端用戶甚至都懶得輸入所有這些,而是使用 Tab 鍵自動完成單詞填充。更甚者,有時你都不必依賴自動完成,而是改用通配符:
- $ cd ~/Doc*/work/*/conf*/p*
pwd
用 Buckaroo Banzai 的話來說:“無論你走到哪里,你就在那里。”
當你想弄清楚確切位置時,就可以使用 pwd 命令。pwd 代表打印工作目錄print working directory,這正是它的作用。--physical(在某些情況時縮寫為 -P)顯示解析所有符號鏈接后的確切位置。
- $ pwd
- /home/tux/presentation
- $ pwd --physical
- /home/tux/Documents/work/projects/conference/presentations
sed
流編輯器 sed 更廣為人知的是一個強大的批量 查找和替換 命令,但它同時也是一個正當合理的文本編輯器。你可以通過閱讀我的 介紹性文章 來學習使用它,然后通過我的 高級教程和備忘錄 成為老手。
grep
grep 命令使用很普遍,以至于經(jīng)常被用作動詞(例如 “我會對一些文件進行 grep”)和動名詞(例如 “grep 一些輸出”)。無論是查看日志文件還是解析其他命令的輸出,它都是在 shell 中解析文本時的關(guān)鍵組件。這是忙碌的用戶專注于特定信息的一種方式??紤]一下計算世界中的數(shù)據(jù)量,grep 命令的流行就見怪不怪了。你可以通過閱讀我的 介紹性文章 了解 grep,然后下載 備忘錄 學習。
file
當你需要知道文件包含什么類型的數(shù)據(jù)時,請使用 file 命令:
- $ file example.foo
- example.foo: RIFF (little-endian) data, Web/P image [...]
- $ file example.bar
- example.bar: ELF 64-bit LSB executable, x86-64 [...]
當然,file 命令并不神奇。它只不過是根據(jù)文件如何標識自身而進行輸出的,并且文件可能是錯誤的、損壞的或偽裝的。使用 hexdump 進行嚴格檢查的方式確定性更強,但對于日常使用而言,file 命令非常方便。
awk
awk 不僅僅是一個命令,它還是一種字面意義上的 編程語言。點此下載我們的免費 Awk 電子書 進行學習,你可能會寫出遠超你想象的腳本。
curl
curl 命令是用于終端的 非交互式 Web 瀏覽器。它是面向 Web 和 API 開發(fā)人員的 開發(fā)工具。它是一個復雜靈活的命令,但如果你想從你的終端順利地與 Web 服務(wù)交互,該命令是很值得學習的。
下載我們免費的 curl 備忘錄,你可以從中學會 curl 的許多選項。
ps
管理系統(tǒng)資源主要由內(nèi)核負責,當你更喜歡或更需要手動管理時,可以使用 ps 命令。讀者可以在我的 使用 procps-ng 監(jiān)控 Linux 系統(tǒng) 文章中了解 ps。
cat
cat 命令 是連接concatenate的縮寫,它曾因為能將若干小文件合并而顯得非常有用,這些小文件可能是由于大小限制而(使用 split 命令)拆分的。如今,cat 主要是用來將文本文件的內(nèi)容轉(zhuǎn)儲到終端中以供快速閱讀,除非你為此專門去使用 head、tail、more 或 less 等命令。
盡管它的原始用途幾乎已被棄用,并且其他幾個命令也主要提供了其次要功能,但 cat 仍然是一個有用的工具。例如,它可以是復制(cp)命令的替代品:
- $ cat myfile.ogg > /backups/myfile.ogg
它可以顯示文件中不便觀察的隱形字符。例如,使用 --show-tabs 選項,分割 YAML 的 Tab 字符就會顯示為 ^I:
- $ cat --show-tabs my.yaml
- ---
- - hosts: all
- tasks:
- - name: Make sure the current version of 'sysstat' is installed.
- dnf:
- name:
- ^I- sysstat
- ^I- httpd
- ^I- mariadb-server
- state: latest
它還可以用 --show-nonprinting 顯示非打印字符,用 --show-ends 標記行尾,用 --number 提供行號,等等。
find
find 命令可以用來查找文件,但它還有許多選項,這些選項可以幫助你通過各種過濾器和參數(shù)查找文件。讀者可以從我的 介紹性文章 中學習該命令的基礎(chǔ)知識。
如果你一直想知道為什么最基本的、不起眼的 ls 命令,不在本文列表中,那是因為 find 的靈活性。它不僅可以列表文件:
- $ find .
- ./bar.txt
- ./baz.xml
- ./foo.txt
- [...]
它還可以提供包含詳細信息的長列表功能:
- $ find . -ls
- 3014803 464 -rw-rw-r-- 1 tux users 473385 Jul 26 07:25 ./foo.txt
- 3014837 900 -rwxrwxr-x 1 tux users 918217 Nov 6 2019 ./baz.xml
- 3026891 452 -rw-rw-r-- 1 tux users 461354 Aug 10 13:41 ./foo.txt
- [...]
這是一個技術(shù)問題,但也是很一個巧妙的技巧。
tar
人們有時會引用 BSD 的 tar 語法來拿 Linux 命令開玩笑。盡管有這樣的名聲,但 tar 命令實際上非常直觀。讀者可以閱讀我的 如何解壓縮 tar.gz 文件 文章,了解在需要時使用 tar 命令的簡單知識。
more、less 和 most
這些統(tǒng)稱為分頁命令。分頁命令與 cat 類似,但前者會在屏幕底部暫停輸出,直到你向下滾動查看更多內(nèi)容。這些命令比較簡單,但每個之間都有細微差別。用戶是用箭頭鍵還是空格鍵滾動?是必須手動退出,還是在顯示的文件末尾自動退出?用戶的首選搜索行為是什么樣的?選擇你最喜歡的分頁命令并將其設(shè)置在 .bashrc 中吧!
ssh 和 scp
OpenSSH 不僅有助于保護與遠程系統(tǒng)的連接安全,還可以用于啟用其他命令。例如,對于許多用戶來說,有了 .ssh 目錄,他們才能與 Git 存儲庫順利交互、將更新發(fā)布到網(wǎng)站、登錄云控制平臺。
mv
mv 命令有雙重作用:它既可以 移動文件 又可以 重命名文件。它有幾個可用的保護措施,例如 --interactive 和 --no-clobber 選項避免破壞現(xiàn)有文件,--backup 命令確保數(shù)據(jù)在新位置驗證之前被保留,以及 --update 選項確保舊版本不會替換新版本文件。
sudo
當某個用戶賬戶的用戶名已知,且具有 全部 系統(tǒng)權(quán)限時,該用戶很快就會成為黑客攻擊的目標。sudo 命令消除了對字面上 root 用戶的需求,從而優(yōu)雅地移除了有關(guān)系統(tǒng)的重要信息。不過這還不是全部,使用 sudo 你還可以輕松地管理單個命令、用戶和組的權(quán)限。你可以在選定的命令上啟用無密碼執(zhí)行、記錄用戶會話、使用摘要驗證來驗證命令,等等。
alias
使用 alias 命令將長命令變成易于記憶的快捷方式:
- $ alias ls='ls --classify --almost-all --ignore-backups --color'
clear
有時終端會顯得很混亂,輸入 clear(或在某些 shell 中按 Ctrl+L)后,你就能得到漂亮、刷新的屏幕了。
setfacl
傳統(tǒng)上,POSIX 文件權(quán)限由 chown 和 chmod 決定。然而,如今系統(tǒng)變得更加復雜,因此有一個靈活性更高的命令。setfacl 命令允許創(chuàng)建一個 訪問控制列表(ACL),可以配置任意用戶所需權(quán)限,并可以為文件夾及其中創(chuàng)建的內(nèi)容設(shè)置默認權(quán)限。
netcat
可能需要使用 netcat(nc)的人不多,但這些使用它的人確離不開它。nc 命令是一個通用的網(wǎng)絡(luò)連接工具。
它可以連接到一個端口,類似于 telnet 命令:
- $ nc -u 192.168.0.12 80
它可以 ping 一個端口,類似于 ping 命令:
- $ nc -zvn 192.168.0.12 25
它可以探測開放端口,類似于 nmap 命令:
- $ nc -zv 192.168.0.12 25-80
以上僅是該命令的一小部分用途。
你自己構(gòu)建的命令
在某種程度上,Linux 終端是一個創(chuàng)造性解決問題的平臺。當你學習命令時,你也在學習可用于創(chuàng)建自己的命令的組塊。我的 shell 歷史 中的許多命令都是自己編寫的 shell 腳本,從而實現(xiàn)了根據(jù)自己想要的工作方式定制工作流程。你為自己的效率和舒適度而設(shè)計的命令也可以作為 shell 中的基本命令?;ㄐr間了解一些很棒的命令,然后試著構(gòu)建自己的命令吧。當你構(gòu)建出的命令非常好用時,把它開源,這樣就可以與他人分享你的想法啦!