當你進入了 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
與
mount
相反,是解除安裝一個挂載點,即取消該入口。
-
# 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 并開啟斷點續傳