Linux 新手應該知道的 26 個命令
當你進入了 Linux 的世界,在下載、安裝 了某個 Linux 發行版,體驗了 Linux 桌面並安裝了一些你喜愛和需要的軟體之後,應該去了解下 Linux 真正的魅力所在:命令列。每一個 Linux 命令其實就是一個程式,藉助這些命令,我們可以辦到非常多的事情。下面將會為大家介紹一下幾個常用的命令。
如何尋求幫助?
在 Linux 下遇到問題,最重要的是要自己尋求幫助,下面是三種尋求幫助的方法。
man
man 是 Linux 的幫助手冊,即 manual 。因為大多數程式都會自帶手冊,所以可以通過 man 命令獲取幫助。執行以後,在 man page 頁面中按 q 退出。
獲取 ls 的幫助
$ man ls
檢視有多少(針對不同方面的)同名的手冊
$ man -f ls ls (1) - list directory contents ls (1p) - list directory contents
檢視特定的手冊
$ man 1p ls
info
與 man 不同的是,可以像瀏覽網頁一樣在各個節點中跳轉。
從文件首頁開始瀏覽
$ info
獲取特定程式的幫助
$ info program
help
除了上面的兩種方法外,還有一種簡單使用的方法,那就是 –help 引數,一般程式都會有這個引數,會輸出最簡單有用的介紹。
$ man --help ### 獲取 man 的幫助 $ info --help ### 獲取 info 的幫助 $ ls --help ### 獲取 ls 的幫助
如何簡單操作?
在 Terminal(終端) 中,有許多操作技巧,這裡就介紹幾個簡單的。
游標
- up(方向鍵上) 可以調出輸入歷史執行記錄,快速執行命令
- down(方向鍵下) 配合 up 選擇歷史執行記錄
- Home 移動游標到本行開頭
- End 移動游標到本行結尾
- PgUp 向上翻頁
- PaDN 向下翻頁
- ctrl + c 終止當前程式
Tab 補全
Tab 補全是非常有用的一個功能,可以用來自動補全命令或檔名,省時準確。
- 未輸入狀態下連按兩次 Tab 列出所有可用命令
- 已輸入部分命令名或檔名,按 Tab 進行自動補全,多用你就肯定會喜歡的了。
常用命令
以下命令按照通常的使用頻度排列。
cd
cd 是開啟某個路徑的命令,也就是開啟某個資料夾,並跳轉到該處。
$ cd path ### path 為你要開啟的路徑。
其中 path 有絕對路徑和相對路徑之分,絕對路徑強調從 / 起,一直到所在路徑。相對路徑則相對於當前路徑來說,假設當前家目錄有etc 資料夾(絕對路徑應為 /home/username/etc),如果直接 cd etc 則進入此資料夾,但若是 cd /etc/ 則是進入系統 etc ,多琢磨一下就可以理解了。另外在 Linux 中, . 代表當前目錄, .. 代表上級目錄,因此返回上級目錄可以 cd .. 。
ls
ls 即 list ,列出檔案。
$ ls ### 僅列出當前目錄可見檔案 $ ls -l ### 列出當前目錄可見檔案詳細資訊 $ ls -hl ### 列出詳細資訊並以可讀大小顯示檔案大小 $ ls -al ### 列出所有檔案(包括隱藏)的詳細資訊
注意: Linux 中 以 . 開頭的檔案或資料夾均為隱藏檔案或隱藏資料夾。
pwd
pwd 用於返回當前工作目錄的名字,為絕對路徑名。
$ pwd /home
mkdir
mkdir 用於新建資料夾。
$ mkdir folder $ mkdir -p folder/subfolder ### -p 引數為當父目錄存在時忽略,若不存在則建立,用此引數可建立多級資料夾
rm
rm 即 remove ,刪除檔案。
$ rm filename ### 刪除 filename $ rm -i filename ### 刪除 filename 前提示,若多個檔案則每次提示 $ rm -rf folder/subfolder/ ### 遞迴刪除 subfolder 下所有檔案及資料夾,包括 subfolder 自身 $ rm -d folder ### 刪除空資料夾
cp
cp 即 copy ,複製檔案。
$ cp source dest ### 將 source 複製到 dest $ cp folder/* dest ### 將 folder 下所有檔案(不含子資料夾中的檔案)複製到 dest $ cp -r folder dest ### 將 folder 下所有檔案(包含子資料夾中的所有檔案)複製到 dest
mv
mv 即 move ,移動檔案。
$ mv source folder ### 將 source 移動到 folder 下,完成後則為 folder/source $ mv -i source folder ### 在移動時,若檔案已存在則提示 **是否覆蓋** $ mv source dest ### 在 dest 不為目錄的前提下,重新命名 source 為 dest
cat
cat 用於輸出檔案內容到 Terminal 。
$ cat /etc/locale.gen ### 輸出 locale.gen 的內容 $ cat -n /etc/locale.gen ### 輸出 locale.gen 的內容並顯示行號
more
more 與 cat 相似,都可以檢視檔案內容,所不同的是,當一個文件太長時, cat 只能展示最後佈滿螢幕的內容,前面的內容是不可見的。這時候可用 more 逐行顯示內容。
$ more /etc/locale.gen $ more +100 /etc/locale.gen ### 從 100 行開始顯示
less
less 與 more 相似,不過 less 支援上下滾動檢視內容,而 more 只支援逐行顯示。
$ less /etc/locale.gen $ less +100 /etc/locale.gen
nano
nano 是一個簡單實用的文字編輯器,使用簡單。
$ nano filename ### 編輯 filename 檔案,若檔案不存在,則新開啟一個檔案,若退出時儲存,則建立該檔案
編輯完後,ctrl + X 提示是否儲存,按 y 確定儲存即可。
注意:在使用過程中可用 ctrl + G 獲取幫助。
reboot
reboot 為重啟命令。
# reboot ### '$' 和 '#' 的區別在於 '$' 普通使用者即可執行 ### 而 '#' 為 root 使用者才可執行,或普通使用者使用 'sudo'
poweroff
poweroff 為關機命令。
# poweroff ### 馬上關機
ping
ping 主要用於測試網路連通,通過對目標機器傳送資料包來測試兩臺主機是否連通,及延時情況。
$ ping locez.com ### 通過域名 ping,若 DNS 未設定好,可能無法 ping 通 $ ping linux.cn PING linux.cn (211.157.2.94) 56(84) bytes of data. 64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=1 ttl=53 time=41.5 ms 64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=2 ttl=53 time=40.4 ms 64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=3 ttl=53 time=41.9 ms ^C --- linux.cn ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 40.406/41.287/41.931/0.644 ms $ ping 211.157.2.94 ### 通過 IP 地址 ping ,若無法 ping 通可能是網路連線出現問題
grep
grep 主要用於返回匹配的專案,支援正規表示式。
$ grep PATTERN filename ### 返回所有含有 PATTERN 的行 $ grep zh_CN /etc/locale.gen ### 返回所有含 zh_CN 的行
mount
mount 用於掛載一個檔案系統,需要 root 使用者執行。一個磁碟可分為若干個分割槽,在分割槽上面可以建立檔案系統,而掛載點則是提供一個訪問的入口,將一個分割槽的檔案系統掛載到某個目錄中,稱這個目錄為掛載點,並且可以通過這個掛載點訪問該檔案系統中的內容。
例如一塊硬碟在 Linux 中表示為 /dev/sda 那麼它上面的分割槽應該表示為 /dev/sda1 、/dev/sda2 。
# mount ### 輸出系統目前的掛載資訊 # mount /dev/sda1 /mnt ### 將 sda1 掛載到 /mnt 中 # cd /mnt ### 直接通過 /mnt 訪問內容 # mount -o remount,rw /mnt ### 重新掛載 sda1 到 /mnt 並設定為 可讀寫 # mount -a ### 掛載 fstab 檔案配置好的檔案系統
umount
umount 與 moung 相反,是解除安裝一個掛載點,即取消該入口。
# umount /mnt ### 解除安裝 /mnt 這個掛載點的檔案系統 # umount -a ### 解除安裝所有已掛載的檔案系統
tar
tar 主要用於建立歸檔檔案,和解壓歸檔檔案,其本身是沒有壓縮功能的,但可以呼叫 gzip 、 bzip2 進行壓縮處理。
引數解釋:
- -c 建立歸檔
- -x 解壓歸檔
- -v 顯示處理過程
- -f 目標檔案,其後必須緊跟 目標檔案
- -j 呼叫 bzip2 進行解壓縮
- -z 呼叫 gzip 進行解壓縮
- -t 列出歸檔中的檔案
$ tar -cvf filename.tar . ### 將當前目錄所有檔案歸檔,但不壓縮,注意後面有個 ’.‘ ,不可省略,代表當前目錄的意思 $ tar -xvf filename.tar ### 解壓 filename.tar 到當前資料夾 $ tar -cvjf filename.tar.bz2 . ### 使用 bzip2 壓縮 $ tar -xvjf filename.tar.bz2 ### 解壓 filename.tar.bz2 到當前資料夾 $ tar -cvzf filename.tar.gz ### 使用 gzip 壓縮 $ tar -xvzf filename.tar.gz ### 解壓 filename.tar.gz 到當前資料夾 $ tar -tf filename ### 只檢視 filename 歸檔中的檔案,不解壓
ln
ln 主要用於在兩個檔案中建立連結,連結又分為 Hard Links (硬連結)和 Symbolic Links (符號連結或軟連結),其中預設為建立硬連結,使用 -s 引數指定建立軟連結。
- 硬連結主要是增加一個檔案的連結數,只要該檔案的連結數不為 0 ,該檔案就不會被物理刪除,所以刪除一個具有多個硬連結數的檔案,必須刪除所有它的硬連結才可刪除。
- 軟連結簡單來說是為檔案建立了一個類似快捷方式的東西,通過該連結可以訪問檔案,修改檔案,但不會增加該檔案的連結數,刪除一個軟連結並不會刪除原始檔,即使原始檔被刪除,軟連結也存在,當重新建立一個同名的原始檔,該軟連結則指向新建立的檔案。
- 硬連結只可連結兩個檔案,不可連結目錄,而軟連結可連結目錄,所以軟連結是非常靈活的。
$ ln source dest ### 為 source 建立一個名為 dest 的硬連結 $ ln -s source dest ### 為 source 建立一個名為 dest 的軟連結
chown
chown 用於改變一個檔案的所有者及所在的組。
# chown user filename ### 改變 filename 的所有者為 user # chown user:group filename ### 改變 filename 的所有者為 user,組為 group # chown -R root folder ### 改變 folder 資料夾及其子檔案的所有者為 root
chmod
chmod 永遠更改一個檔案的許可權,主要有 讀取 、 寫入 、 執行 ,三種許可權,其中 所有者 、 使用者組 、 其他 各佔三個,因此 ls -l 可以看到如下的資訊
-rwxr--r-- 1 locez users 154 Aug 30 18:09 filename
其中 r=read , w=write , x=execute
# chmod +x filename ### 為 user ,group ,others 新增執行許可權 # chmod -x filename ### 取消 user , group ,others 的執行許可權 # chmod +w filename ### 為 user 新增寫入許可權 # chmod ugo=rwx filename ### 設定 user ,group ,others 具有 讀取、寫入、執行許可權 # chmod ug=rw filename ### 設定 user ,group 新增 讀取、寫入許可權 # chmod ugo=--- filename ### 取消所有許可權
useradd
useradd 用於新增一個普通使用者。
# useradd -m -g users -G audio -s /usr/bin/bash newuser ### -m 建立 home 目錄, -g 所屬的主組, -G 指定該使用者在哪些附加組, -s 設定預設的 shell ,newuser 為新的使用者名稱
passwd
passwd 用於改變使用者登入密碼。
$ passwd ### 不帶引數更改當前使用者密碼 # passwd newuser ### 更改上述新建的 newuser 的使用者密碼
whereis
whereis 用於查詢檔案、手冊等。
$ whereis bash bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz $ whereis -b bash ### 僅查詢 binary bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout $ whereis -m bash ### 僅查詢 manual bash: /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz
find
find 也用於查詢檔案,但更為強大,支援正則,並且可將查詢結果傳遞到其他命令。
$ find . -name PATTERN ### 從當前目錄查詢符合 PATTERN 的檔案 $ find /home -name PATTERN -exec ls -l {} /; # 從 /home 檔案查詢所有符合 PATTERN 的檔案,並交由 ls 輸出詳細資訊
wget
wget 是一個下載工具,簡單強大。
$ wget -O newname.md https://github.com/LCTT/TranslateProject/blob/master/README.md ### 下載 README 檔案並重新命名為 newname.md $ wget -c url ### 下載 url 並開啟斷點續傳
恭喜你,你已經學習了完了26 個基礎的 Linux 命令。雖然這裡只是一些最基礎的命令,但是熟練使用這些命令就踏出了你從一位 Linux 新手成為 Linux 玩家的第一步!
相關文章
- 每個 Linux 新手都應該知道的 10 個命令Linux
- 你應該知道的16個linux命令Linux
- 新手應該掌握的Linux命令(轉)Linux
- 每個運維人員應該知道的 10 個 Linux 命令!運維Linux
- 每個開發人員應該知道的 10 個 Linux 命令Linux
- 每個Linux使用者都應該知道的命令列技巧Linux命令列
- 你應該知道的16個Linux伺服器監控命令Linux伺服器
- 每個Python新手都應該知道的程式設計技巧Python程式設計
- 每個極客都應該知道的Linux技巧Linux
- 系統管理員應該知道的 20 條 Linux 命令Linux
- 新手應知應會的Linux命令Linux
- Linux-系統管理員應該知道的20條Linux命令Linux
- 新手程式設計師應該知道的7件事程式設計師
- 你應該知道的Linux歷史Linux
- 極客都應該知道的Linux技巧Linux
- 對 Linux 新手有用的 20 個命令Linux
- 你應該瞭解的 7個Linux ls 命令技巧Linux
- 每個前端應該知道的jquery 細節前端jQuery
- 你應該知道的一些Linux技巧Linux
- Linux的幾個新手必備的命令(一)Linux
- 每個開發者都應該知道的33個JavaScript概念JavaScript
- Linux 命令列:find 的 26 個用法示例Linux命令列
- 對 Linux 新手非常有用的 20 個命令Linux
- 對 Linux 新手非常有用的20個命令Linux
- 給新手的 10 個有用 Linux 命令列技巧Linux命令列
- 你應該知道的FlutterFlutter
- 你應該知道的RocketMQMQ
- 前端應該知道的GraphQL前端
- Laravel 你應該知道的幾個最佳實踐Laravel
- IT職場:每個黑帶都應該知道的事
- Mac小白應該要知道的幾個小技巧Mac
- 每個 Java 開發者都應該知道的 5 個註解Java
- 每個程式設計師應該知道的12個API程式設計師API
- 每個Java開發者都應該知道的5個JDK工具JavaJDK
- Linux系統的命令應該如何記?Linux
- 29 個你必須知道的 Linux 命令Linux
- 你應該知道的9個優秀的CSS框架CSS框架
- 每個 Kubernetes 應聘者應該知道的 5 個面試題面試題