當你進入了 Linux 的世界,在下載、安裝 了某個 Linux 發行版,體驗了 Linux 桌面並安裝了一些你喜愛和需要的軟件之後,應該去了解下 Linux 真正的魅力所在:命令行。每一個 Linux 命令其實就是一個程序,借助這些命令,我們可以辦到非常多的事情。下面將會為大家介紹一下幾個常用的命令。
在 Linux 下遇到問題,最重要的是要自己尋求幫助,下面是三種尋求幫助的方法。
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
與 man
不同的是,可以像浏覽網頁一樣在各個節點中跳轉。
從文檔首頁開始浏覽
$ info
獲取特定程序的幫助
$ info program
除了上面的兩種方法外,還有一種簡單使用的方法,那就是 --help
參數,一般程序都會有這個參數,會輸出最簡單有用的介紹。
$ man --help ### 獲取 man 的幫助
$ info --help ### 獲取 info 的幫助
$ ls --help ### 獲取 ls 的幫助
在 Terminal(終端)
中,有許多操作技巧,這裡就介紹幾個簡單的。
Tab
補全是非常有用的一個功能,可以用來自動補全命令或文件名,省時准確。
Tab
列出所有可用命令Tab
進行自動補全,多用你就肯定會喜歡的了。以下命令按照通常的使用頻度排列。
cd
是打開某個路徑的命令,也就是打開某個文件夾,並跳轉到該處。
$ cd path ### path 為你要打開的路徑。
其中 path 有絕對路徑和相對路徑之分,絕對路徑強調從 /
起,一直到所在路徑。相對路徑則相對於當前路徑來說,假設當前家目錄有etc
文件夾(絕對路徑應為 /home/username/etc
),如果直接 cd etc
則進入此文件夾,但若是 cd /etc/
則是進入系統 etc
,多琢磨一下就可以理解了。另外在 Linux 中, .
代表當前目錄, ..
代表上級目錄,因此返回上級目錄可以 cd ..
。
ls
即 list ,列出文件。
$ ls ### 僅列出當前目錄可見文件
$ ls -l ### 列出當前目錄可見文件詳細信息
$ ls -hl ### 列出詳細信息並以可讀大小顯示文件大小
$ ls -al ### 列出所有文件(包括隱藏)的詳細信息
注意: Linux 中 以 .
開頭的文件或文件夾均為隱藏文件或隱藏文件夾。
pwd
用於返回當前工作目錄的名字,為絕對路徑名。
$ pwd
/home
mkdir
用於新建文件夾。
$ mkdir folder
$ mkdir -p folder/subfolder ### -p 參數為當父目錄存在時忽略,若不存在則建立,用此參數可建立多級文件夾
rm
即 remove ,刪除文件。
$ rm filename ### 刪除 filename
$ rm -i filename ### 刪除 filename 前提示,若多個文件則每次提示
$ rm -rf folder/subfolder/### 遞歸刪除 subfolder 下所有文件及文件夾,包括 subfolder 自身
$ rm -d folder ### 刪除空文件夾
cp
即 copy ,復制文件。
$ cp source dest ### 將 source 復制到 dest
$ cp folder/* dest ### 將 folder 下所有文件(不含子文件夾中的文件)復制到 dest
$ cp -r folder dest ### 將 folder 下所有文件(包含子文件夾中的所有文件)復制到 dest
mv
即 move ,移動文件。
$ mv source folder ### 將 source 移動到 folder 下,完成後則為 folder/source
$ mv -i source folder ### 在移動時,若文件已存在則提示 **是否覆蓋**
$ mv source dest ### 在 dest 不為目錄的前提下,重命名 source 為 dest
cat
用於輸出文件內容到 Terminal 。
$ cat /etc/locale.gen ### 輸出 locale.gen 的內容
$ cat -n /etc/locale.gen ### 輸出 locale.gen 的內容並顯示行號
more
與 cat
相似,都可以查看文件內容,所不同的是,當一個文檔太長時, cat
只能展示最後布滿屏幕的內容,前面的內容是不可見的。這時候可用 more
逐行顯示內容。
$ more /etc/locale.gen
$ more +100/etc/locale.gen ### 從 100 行開始顯示
less
與 more
相似,不過 less
支持上下滾動查看內容,而 more
只支持逐行顯示。
$ less /etc/locale.gen
$ less +100/etc/locale.gen
nano
是一個簡單實用的文本編輯器,使用簡單。
$ nano filename ### 編輯 filename 文件,若文件不存在,則新打開一個文件,若退出時保存,則創建該文件
編輯完後,ctrl + X
提示是否保存,按 y
確定保存即可。
注意:在使用過程中可用 ctrl + G
獲取幫助。
reboot
為重啟命令。
# reboot ### '$' 和 '#' 的區別在於 '$' 普通用戶即可執行
### 而 '#' 為 root 用戶才可執行,或普通用戶使用 'sudo'
poweroff
為關機命令。
# poweroff ### 馬上關機
ping
主要用於測試網絡連通,通過對目標機器發送數據包來測試兩台主機是否連通,及延時情況。
$ ping locez.com ### 通過域名 ping,若 DNS 未設置好,可能無法 ping 通
$ ping linux.cn
PING linux.cn (211.157.2.94)56(84) bytes of data.
64 bytes from211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=1 ttl=53 time=41.5 ms
64 bytes from211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=2 ttl=53 time=40.4 ms
64 bytes from211.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 PATTERN filename ### 返回所有含有 PATTERN 的行
$ grep zh_CN /etc/locale.gen ### 返回所有含 zh_CN 的行
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
與 moung
相反,是卸載一個掛載點,即取消該入口。
# umount /mnt ### 卸載 /mnt 這個掛載點的文件系統
# umount -a ### 卸載所有已掛載的文件系統
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
主要用於在兩個文件中創建鏈接,鏈接又分為 Hard Links
(硬鏈接)和 Symbolic Links
(符號鏈接或軟鏈接),其中默認為創建硬鏈接,使用 -s
參數指定創建軟鏈接。
0
,該文件就不會被物理刪除,所以刪除一個具有多個硬鏈接數的文件,必須刪除所有它的硬鏈接才可刪除。$ ln source dest ### 為 source 創建一個名為 dest 的硬鏈接
$ ln -s source dest ### 為 source 創建一個名為 dest 的軟鏈接
chown
用於改變一個文件的所有者及所在的組。
# chown user filename ### 改變 filename 的所有者為 user
# chown user:group filename ### 改變 filename 的所有者為 user,組為 group
# chown -R root folder ### 改變 folder 文件夾及其子文件的所有者為 root
chmod
永遠更改一個文件的權限,主要有 讀取 、 寫入 、 執行 ,三種權限,其中 所有者 、 用戶組 、 其他 各占三個,因此 ls -l
可以看到如下的信息
-rwxr--r--1 locez users 154Aug3018: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 -m -g users -G audio -s /usr/bin/bash newuser
### -m 創建 home 目錄, -g 所屬的主組, -G 指定該用戶在哪些附加組, -s 設定默認的 shell ,newuser 為新的用戶名
passwd
用於改變用戶登錄密碼。
$ passwd ### 不帶參數更改當前用戶密碼
# passwd newuser ### 更改上述新建的 newuser 的用戶密碼
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 .-name PATTERN ### 從當前目錄查找符合 PATTERN 的文件
$ find /home -name PATTERN -exec ls -l {} \; # 從 /home 文件查找所有符合 PATTERN 的文件,並交由 ls 輸出詳細信息
wget
是一個下載工具,簡單強大。
$ wget -O newname.md https://github.com/LCTT/TranslateProject/blob/master/README.md ### 下載 README 文件並重命名為 newname.md
$ wget -c url ### 下載 url 並開啟斷點續傳
Linux wget命令詳解 http://www.linuxidc.com/Linux/2012-08/67837.htm
Linux 下使用 wget/aria2 進行離線迅雷批量下載 http://www.linuxidc.com/Linux/2011-10/46052.htm
Linux使用wget請求地址時報錯 http://www.linuxidc.com/Linux/2011-07/39345.htm
Linux下載命令wget使用詳解 http://www.linuxidc.com/Linux/2011-01/30980.htm
wget 使用大全 http://www.linuxidc.com/Linux/2008-09/15722.htm
Linux 命令行下載工具 wget 的使用技巧 http://www.linuxidc.com/Linux/2007-10/8293.htm
wget 命令實例 http://www.linuxidc.com/Linux/2014-10/108733.htm
恭喜你,你已經學習了完了26 個基礎的 Linux 命令。雖然這裡只是一些最基礎的命令,但是熟練使用這些命令就踏出了你從一位 Linux 新手成為 Linux 玩家的第一步!