Linux中國

用戶必會的 20 個 Linux 基礎命令

在黝黑的終端窗口中輸入命令,這樣的方式對某些人群來說可能好像過時了,但對許多專業計算機人員來說,這幾乎是計算機完成能夠執行的所有任務的最有效、最簡便和最清晰的方式。如今,一些項目將開源命令引入了 macOS 和 Windows 等非開放平台,因此終端命令不僅僅是針對 Linux 和 BSD 用戶,更是與每個人都息息相關。你可能會驚訝地發現,在一台普通的 POSIX 計算機上安裝了數千個命令,當然,其中很多命令並不是真的有用,至少不是直接或經常性被使用。而其中的一部分命令雖然不是有效終端必須使用的命令,但相比其他命令而言使用頻率較高,值得大家學習一下。

以下是終端用戶最可能會使用的前 20 個命令:

cd

在終端外,你可以單擊圖標從一個文件夾移動到另一個文件夾,但在終端中,你需要使用 cdcd 命令代表 變更目錄 change directory ,是用戶在 Linux 系統中移動的方式。這是 Linux 中從一個地方到另一個地方最快、最直接的路線。

例如,在桌面上,當你想從你的主目錄(你保存所有文件夾的地方)移動到一個名為 presentations 的文件夾時,你首先要打開你的 Documents 文件夾,然後打開一個名叫 work 的文件夾,然後是 projects 文件夾,然後是 conference 文件夾,最後是 presentations 文件夾,裡面存放的是 LibreOffice Impress 幻燈片。這個過程包含了很多次的雙擊操作。同時屏幕上還需要許多滑鼠移動動作,這取決於新窗口出現的位置,以及大腦需要跟蹤的許多路徑點。許多人通過將 所有文件 都放在桌面上來避免這個看似微不足道的任務。

而終端用戶只需鍵入以下內容即可避免此問題:

$ cd ~/Documents/work/projects/conference/presentations

一些有經驗的終端用戶甚至都懶得輸入所有這些,而是使用 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 命令使用很普遍,以至於經常被用作動詞(例如 「我會對一些文件進行 grep」)和動名詞(例如 「grep 一些輸出」)。無論是查看日誌文件還是解析其他命令的輸出,它都是在 shell 中解析文本時的關鍵組件。這是忙碌的用戶專註於特定信息的一種方式。考慮一下計算世界中的數據量,grep 命令的流行就見怪不怪了。你可以通過閱讀我的 介紹性文章 了解 grep,然後下載 備忘錄 學習。

file

當你需要知道文件包含什麼類型的數據時,請使用 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 命令並不神奇。它只不過是根據文件如何標識自身而進行輸出的,並且文件可能是錯誤的、損壞的或偽裝的。使用 hexdump 進行嚴格檢查的方式確定性更強,但對於日常使用而言,file 命令非常方便。

awk

awk 不僅僅是一個命令,它還是一種字面意義上的 編程語言點此下載我們的免費 Awk 電子書 進行學習,你可能會寫出遠超你想像的腳本。

curl

curl 命令是用於終端的 非互動式 Web 瀏覽器。它是面向 Web 和 API 開發人員的 開發工具。它是一個複雜靈活的命令,但如果你想從你的終端順利地與 Web 服務交互,該命令是很值得學習的。

下載我們免費的 curl 備忘錄,你可以從中學會 curl 的許多選項。

ps

管理系統資源主要由內核負責,當你更喜歡或更需要手動管理時,可以使用 ps 命令。讀者可以在我的 使用 procps-ng 監控 Linux 系統 文章中了解 ps

cat

cat 命令 連接 concatenate 的縮寫,它曾因為能將若干小文件合併而顯得非常有用,這些小文件可能是由於大小限制而(使用 split 命令)拆分的。如今,cat 主要是用來將文本文件的內容轉儲到終端中以供快速閱讀,除非你為此專門去使用 headtailmoreless 等命令。

儘管它的原始用途幾乎已被棄用,並且其他幾個命令也主要提供了其次要功能,但 cat 仍然是一個有用的工具。例如,它可以是複製(cp)命令的替代品:

$ cat myfile.ogg > /backups/myfile.ogg

它可以顯示文件中不便觀察的隱形字元。例如,使用 --show-tabs 選項,分割 YAMLTab 字元就會顯示為 ^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 命令可以用來查找文件,但它還有許多選項,這些選項可以幫助你通過各種過濾器和參數查找文件。讀者可以從我的 介紹性文章 中學習該命令的基礎知識。

如果你一直想知道為什麼最基本的、不起眼的 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
[...]

這是一個技術問題,但也是很一個巧妙的技巧。

tar

人們有時會引用 BSD 的 tar 語法來拿 Linux 命令開玩笑。儘管有這樣的名聲,但 tar 命令實際上非常直觀。讀者可以閱讀我的 如何解壓縮 tar.gz 文件 文章,了解在需要時使用 tar 命令的簡單知識。

more、less 和 most

這些統稱為分頁命令。分頁命令與 cat 類似,但前者會在屏幕底部暫停輸出,直到你向下滾動查看更多內容。這些命令比較簡單,但每個之間都有細微差別。用戶是用箭頭鍵還是空格鍵滾動?是必須手動退出,還是在顯示的文件末尾自動退出?用戶的首選搜索行為是什麼樣的?選擇你最喜歡的分頁命令並將其設置在 .bashrc 中吧!

ssh 和 scp

OpenSSH 不僅有助於保護與遠程系統的連接安全,還可以用於啟用其他命令。例如,對於許多用戶來說,有了 .ssh 目錄,他們才能與 Git 存儲庫順利交互、將更新發布到網站、登錄雲控制平台。

mv

mv 命令有雙重作用:它既可以 移動文件 又可以 重命名文件。它有幾個可用的保護措施,例如 --interactive--no-clobber 選項避免破壞現有文件,--backup 命令確保數據在新位置驗證之前被保留,以及 --update 選項確保舊版本不會替換新版本文件。

sudo

當某個用戶賬戶的用戶名已知,且具有 全部 系統許可權時,該用戶很快就會成為黑客攻擊的目標。sudo 命令消除了對字面上 root 用戶的需求,從而優雅地移除了有關係統的重要信息。不過這還不是全部,使用 sudo 你還可以輕鬆地管理單個命令、用戶和組的許可權。你可以在選定的命令上啟用無密碼執行、記錄用戶會話、使用摘要驗證來驗證命令,等等

alias

使用 alias 命令將長命令變成易於記憶的快捷方式:

$ alias ls='ls --classify --almost-all --ignore-backups --color'

clear

有時終端會顯得很混亂,輸入 clear(或在某些 shell 中按 Ctrl+L)後,你就能得到漂亮、刷新的屏幕了。

setfacl

傳統上,POSIX 文件許可權由 chownchmod 決定。然而,如今系統變得更加複雜,因此有一個靈活性更高的命令。setfacl 命令允許創建一個 訪問控制列表(ACL),可以配置任意用戶所需許可權,並可以為文件夾及其中創建的內容設置默認許可權。

netcat

可能需要使用 netcatnc)的人不多,但這些使用它的人確離不開它。nc 命令是一個通用的網路連接工具。

它可以連接到一個埠,類似於 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

以上僅是該命令的一小部分用途。

你自己構建的命令

在某種程度上,Linux 終端是一個創造性解決問題的平台。當你學習命令時,你也在學習可用於創建自己的命令的組塊。我的 shell 歷史 中的許多命令都是自己編寫的 shell 腳本,從而實現了根據自己想要的工作方式定製工作流程。你為自己的效率和舒適度而設計的命令也可以作為 shell 中的基本命令。花些時間了解一些很棒的命令,然後試著構建自己的命令吧。當你構建出的命令非常好用時,把它開源,這樣就可以與他人分享你的想法啦!

via: https://opensource.com/article/21/9/essential-linux-commands

作者:Seth Kenlon 選題:lujun9972 譯者:unigeorge 校對:wxy

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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國