天天看點

【轉】一些linux基礎指令

在 Linux 下遇到問題,最重要的是要自己尋求幫助,下面是三種尋求幫助的方法。 

<code>man</code> 是 Linux 的幫助手冊,即 <code>manual</code> 。因為大多數程式都會自帶手冊,是以可以通過 <code>man</code> 指令擷取幫助。執行以後,在 man page 頁面中按 <code>q</code> 退出。

擷取 <code>ls</code> 的幫助

<code>$ man ls</code>

檢視有多少(針對不同方面的)同名的手冊

<code>$ man -f ls</code>

<code>ls (1) - list directory contents</code>

<code>ls (1p) - list directory contents</code>

檢視特定的手冊

<code>$ man 1p ls</code>

與 <code>man</code> 不同的是,可以像浏覽網頁一樣在各個節點中跳轉。

從文檔首頁開始浏覽

<code>$ info</code>

擷取特定程式的幫助

<code>$ info program</code>

除了上面的兩種方法外,還有一種簡單使用的方法,那就是 <code>--help</code> 參數,一般程式都會有這個參數,會輸出最簡單有用的介紹。

<code>$ man --help ### 擷取 man 的幫助</code>

<code>$ info --help ### 擷取 info 的幫助</code>

<code>$ ls --help ### 擷取 ls 的幫助</code>

在 <code>Terminal(終端)</code> 中,有許多操作技巧,這裡就介紹幾個簡單的。 

up(方向鍵上) 可以調出輸入曆史執行記錄,快速執行指令

down(方向鍵下) 配合 up 選擇曆史執行記錄

Home 移動光标到本行開頭

End 移動光标到本行結尾

PgUp 向上翻頁

PaDN 向下翻頁

ctrl + c 終止目前程式

<code>Tab</code> 補全是非常有用的一個功能,可以用來自動補全指令或檔案名,省時準确。

未輸入狀态下連按兩次 <code>Tab</code> 列出所有可用指令

已輸入部分指令名或檔案名,按 <code>Tab</code> 進行自動補全,多用你就肯定會喜歡的了。

以下指令按照通常的使用頻度排列。

<code>cd</code> 是打開某個路徑的指令,也就是打開某個檔案夾,并跳轉到該處。

<code>$ cd path ### path 為你要打開的路徑。</code>

其中 path 有絕對路徑和相對路徑之分,絕對路徑強調從 <code>/</code> 起,一直到所在路徑。相對路徑則相對于目前路徑來說,假設目前家目錄有<code>etc</code> 檔案夾(絕對路徑應為 <code>/home/username/etc</code>),如果直接 <code>cd etc</code> 則進入此檔案夾,但若是 <code>cd /etc/</code> 則是進入系統 <code>etc</code> ,多琢磨一下就可以了解了。另外在 Linux 中, <code>.</code> 代表目前目錄, <code>..</code> 代表上級目錄,是以傳回上級目錄可以 <code>cd ..</code> 。

<code>ls</code> 即 list ,列出檔案。

<code>$ ls ### 僅列出目前目錄可見檔案</code>

<code>$ ls -l ### 列出目前目錄可見檔案詳細資訊</code>

<code>$ ls -hl ### 列出詳細資訊并以可讀大小顯示檔案大小</code>

<code>$ ls -al ### 列出所有檔案(包括隐藏)的詳細資訊</code>

注意: Linux 中 以 <code>.</code> 開頭的檔案或檔案夾均為隐藏檔案或隐藏檔案夾。

<code>pwd</code> 用于傳回目前工作目錄的名字,為絕對路徑名。

<code>$ pwd</code>

<code>/home</code> 

<code>mkdir</code> 用于建立檔案夾。

<code>$ mkdir folder</code>

<code>$ mkdir -p folder/subfolder ### -p 參數為當父目錄存在時忽略,若不存在則建立,用此參數可建立多級檔案夾</code>

<code>rm</code> 即 remove ,删除檔案。

<code>$ rm filename ### 删除 filename</code>

<code>$ rm -i filename ### 删除 filename 前提示,若多個檔案則每次提示</code>

<code>$ rm -rf folder/subfolder/ ### 遞歸删除 subfolder 下所有檔案及檔案夾,包括 subfolder 自身</code>

<code>$ rm -d folder ### 删除空檔案夾</code>

<code>cp</code> 即 copy ,複制檔案。

<code>$ cp source dest ### 将 source 複制到 dest</code>

<code>$ cp folder/* dest ### 将 folder 下所有檔案(不含子檔案夾中的檔案)複制到 dest</code>

<code>$ cp -r folder dest ### 将 folder 下所有檔案(包含子檔案夾中的所有檔案)複制到 dest</code>

<code>mv</code> 即 move ,移動檔案。

<code>$ mv source folder ### 将 source 移動到 folder 下,完成後則為 folder/source</code>

<code>$ mv -i source folder ### 在移動時,若檔案已存在則提示 **是否覆寫**</code>

<code>$ mv source dest ### 在 dest 不為目錄的前提下,重命名 source 為 dest</code>

<code>cat</code> 用于輸出檔案内容到 Terminal 。

<code>$ cat /etc/locale.gen ### 輸出 locale.gen 的内容</code>

<code>$ cat -n /etc/locale.gen ### 輸出 locale.gen 的内容并顯示行号</code>

<code>more</code> 與 <code>cat</code> 相似,都可以檢視檔案内容,所不同的是,當一個文檔太長時, <code>cat</code> 隻能展示最後布滿螢幕的内容,前面的内容是不可見的。這時候可用 <code>more</code> 逐行顯示内容。

<code>$ more /etc/locale.gen</code>

<code>$ more +100 /etc/locale.gen ### 從 100 行開始顯示</code>

<code>less</code> 與 <code>more</code> 相似,不過 <code>less</code> 支援上下滾動檢視内容,而 <code>more</code> 隻支援逐行顯示。

<code>$ less /etc/locale.gen</code>

<code>$ less +100 /etc/locale.gen</code>

<code>nano</code> 是一個簡單實用的文本編輯器,使用簡單。

<code>$ nano filename ### 編輯 filename 檔案,若檔案不存在,則新打開一個檔案,若退出時儲存,則建立該檔案</code>

編輯完後,<code>ctrl + X</code> 提示是否儲存,按 <code>y</code> 确定儲存即可。

注意:在使用過程中可用 <code>ctrl + G</code> 擷取幫助。

<code>reboot</code> 為重新開機指令。

<code># reboot ### '$' 和 '#' 的差別在于 '$' 普通使用者即可執行 ### 而 '#' 為 root 使用者才可執行,或普通使用者使用 'sudo'</code>

<code>poweroff</code> 為關機指令。

<code># poweroff ### 馬上關機</code> 

<code>ping</code> 主要用于測試網絡連通,通過對目标機器發送資料包來測試兩台主機是否連通,及延時情況。

<code>$ ping locez.com ### 通過域名 ping,若 DNS 未設定好,可能無法 ping 通</code>

<code>$ ping linux.cn</code>

<code>PING linux.cn (211.157.2.94) 56(84) bytes of data.</code>

<code>64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=1 ttl=53 time=41.5 ms</code>

<code>64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=2 ttl=53 time=40.4 ms</code>

<code>64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=3 ttl=53 time=41.9 ms</code>

<code>^C</code>

<code>--- linux.cn ping statistics ---</code>

<code>3 packets transmitted, 3 received, 0% packet loss, time 2002ms</code>

<code>rtt min/avg/max/mdev = 40.406/41.287/41.931/0.644 ms</code>

<code></code>

<code>$ ping 211.157.2.94 ### 通過 IP 位址 ping ,若無法 ping 通可能是網絡連接配接出現問題</code>

<code>grep</code> 主要用于傳回比對的項目,支援正規表達式。

<code>$ grep PATTERN filename ### 傳回所有含有 PATTERN 的行</code>

<code>$ grep zh_CN /etc/locale.gen ### 傳回所有含 zh_CN 的行</code>

<code>mount</code> 用于挂載一個檔案系統,需要 <code>root</code> 使用者執行。一個磁盤可分為若幹個分區,在分區上面可以建立檔案系統,而挂載點則是提供一個通路的入口,将一個分區的檔案系統挂載到某個目錄中,稱這個目錄為挂載點,并且可以通過這個挂載點通路該檔案系統中的内容。

例如一塊硬碟在 Linux 中表示為 <code>/dev/sda</code> 那麼它上面的分區應該表示為 <code>/dev/sda1</code> 、<code>/dev/sda2</code> 。

<code># mount ### 輸出系統目前的挂載資訊</code>

<code># mount /dev/sda1 /mnt ### 将 sda1 挂載到 /mnt 中</code>

<code># cd /mnt ### 直接通過 /mnt 通路内容</code>

<code># mount -o remount,rw /mnt ### 重新挂載 sda1 到 /mnt 并設定為 可讀寫</code>

<code># mount -a ### 挂載 fstab 檔案配置好的檔案系統</code>

<code>umount</code> 與 <code>mount</code> 相反,是解除安裝一個挂載點,即取消該入口。

<code># umount /mnt ### 解除安裝 /mnt 這個挂載點的檔案系統</code>

<code># umount -a ### 解除安裝所有已挂載的檔案系統</code> 

<code>tar</code> 主要用于建立歸檔檔案,和解壓歸檔檔案,其本身是沒有壓縮功能的,但可以調用 <code>gzip</code> 、 <code>bzip2</code> 進行壓縮處理。

參數解釋:

<code>-c</code> 建立歸檔

<code>-x</code> 解壓歸檔

<code>-v</code> 顯示處理過程

<code>-f</code> 目标檔案,其後必須緊跟 目标檔案

<code>-j</code> 調用 <code>bzip2</code> 進行解壓縮

<code>-z</code> 調用 <code>gzip</code> 進行解壓縮

<code>-t</code> 列出歸檔中的檔案

<code>$ tar -cvf filename.tar . ### 将目前目錄所有檔案歸檔,但不壓縮,注意後面有個 ’.‘ ,不可省略,代表目前目錄的意思</code>

<code>$ tar -xvf filename.tar ### 解壓 filename.tar 到目前檔案夾</code>

<code>$ tar -cvjf filename.tar.bz2 . ### 使用 bzip2 壓縮</code>

<code>$ tar -xvjf filename.tar.bz2 ### 解壓 filename.tar.bz2 到目前檔案夾</code>

<code>$ tar -cvzf filename.tar.gz ### 使用 gzip 壓縮</code>

<code>$ tar -xvzf filename.tar.gz ### 解壓 filename.tar.gz 到目前檔案夾</code>

<code>$ tar -tf filename ### 隻檢視 filename 歸檔中的檔案,不解壓</code>

<code>ln</code> 主要用于在兩個檔案中建立連結,連結又分為 <code>Hard Links</code> (硬連結)和 <code>Symbolic Links</code> (符号連結或軟連結),其中預設為建立硬連結,使用 <code>-s</code> 參數指定建立軟連結。

硬連結主要是增加一個檔案的連結數,隻要該檔案的連結數不為 <code>0</code> ,該檔案就不會被實體删除,是以删除一個具有多個硬連結數的檔案,必須删除所有它的硬連結才可删除。

軟連結簡單來說是為檔案建立了一個類似快捷方式的東西,通過該連結可以通路檔案,修改檔案,但不會增加該檔案的連結數,删除一個軟連結并不會删除源檔案,即使源檔案被删除,軟連結也存在,當重新建立一個同名的源檔案,該軟連結則指向新建立的檔案。

硬連結隻可連結兩個檔案,不可連結目錄,而軟連結可連結目錄,是以軟連結是非常靈活的。

<code>$ ln source dest ### 為 source 建立一個名為 dest 的硬連結</code>

<code>$ ln -s source dest ### 為 source 建立一個名為 dest 的軟連結</code>

<code>chown</code> 用于改變一個檔案的所有者及所在的組。

<code># chown user filename ### 改變 filename 的所有者為 user</code>

<code># chown user:group filename ### 改變 filename 的所有者為 user,組為 group</code>

<code># chown -R root folder ### 改變 folder 檔案夾及其子檔案的所有者為 root</code>

<code>chmod</code> 永遠更改一個檔案的權限,主要有 讀取 、 寫入 、 執行 ,三種權限,其中 所有者 、 使用者組 、 其他 各占三個,是以 <code>ls -l</code> 可以看到如下的資訊

<code>-rwxr--r-- 1 locez users 154 Aug 30 18:09 filename</code>

其中 <code>r=read</code> , <code>w=write</code> , <code>x=execute</code>

<code># chmod +x filename ### 為 user ,group ,others 添加執行權限</code>

<code># chmod -x filename ### 取消 user , group ,others 的執行權限</code>

<code># chmod +w filename ### 為 user 添加寫入權限</code>

<code># chmod ugo=rwx filename ### 設定 user ,group ,others 具有 讀取、寫入、執行權限</code>

<code># chmod ug=rw filename ### 設定 user ,group 添加 讀取、寫入權限</code>

<code># chmod ugo=--- filename ### 取消所有權限</code>

<code>useradd</code> 用于添加一個普通使用者。

<code># useradd -m -g users -G audio -s /usr/bin/bash newuser</code>

<code>### -m 建立 home 目錄, -g 所屬的主組, -G 指定該使用者在哪些附加組, -s 設定預設的 shell ,newuser 為新的使用者名</code>

<code>passwd</code> 用于改變使用者登入密碼。

<code>$ passwd ### 不帶參數更改目前使用者密碼</code>

<code># passwd newuser ### 更改上述建立的 newuser 的使用者密碼</code> 

<code>whereis</code> 用于查找檔案、手冊等。

<code>$ whereis bash</code>

<code>bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz</code>

<code>$ whereis -b bash ### 僅查找 binary</code>

<code>bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout</code>

<code>$ whereis -m bash ### 僅查找 manual</code>

<code>bash: /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz</code>

<code>find</code> 也用于查找檔案,但更為強大,支援正則,并且可将查找結果傳遞到其他指令。

<code>$ find . -name PATTERN ### 從目前目錄查找符合 PATTERN 的檔案</code>

<code>$ find /home -name PATTERN -exec ls -l {} \; # 從 /home 檔案查找所有符合 PATTERN 的檔案,并交由 ls 輸出詳細資訊</code> 

<code>wget</code> 是一個下載下傳工具,簡單強大。

<code>$ wget -O newname.md https://github.com/LCTT/TranslateProject/blob/master/README.md ### 下載下傳 README 檔案并重命名為 newname.md</code>

<code>$ wget -c url ### 下載下傳 url 并開啟斷點續傳</code>

恭喜你,你已經學習了完了26 個基礎的 Linux 指令。雖然這裡隻是一些最基礎的指令,但是熟練使用這些指令就踏出了你從一位 Linux 新手成為 Linux 玩家的第一步!

--------

PS:這裡補充幾種常用的關機指令:

sudo init 0

sudo shutdown -h now

sudo halt -p

sudo poweroff

本文轉自 念槐聚 部落格園部落格,原文連結:http://www.cnblogs.com/haochuang/p/6644993.html,如需轉載請自行聯系原作者

繼續閱讀