Linux 基礎指令初識
Linux 基礎指令初識
01. ls 指令
語法: ls [選項] [目錄或文件]
功能:對於目錄,該命令列出該目錄下的所有子目錄與文件。對於文件,將列出文件名以及其他資訊
- -a 列出目錄下的所有文件,包括以 . 開頭的隱含文件。
- -d 將目錄象文件一樣顯示,而不是顯示其下的文件。 如:ls –d 指定目錄
- -l 列出文件的詳細資訊。
- -n 用數字的 UID,GID 代替名稱。
- -F 在每個文件名後附上一個字元以說明該文件的類型,「*」表示可執行的普通文件;「/」表示目錄;「@」表
示符號鏈接;「|」表示FIFOs;「=」表示套接字(sockets)。(目錄類型識別)- -r 對目錄反向排序。
- -t 以時間排序。
- -s 在l文件名後輸出該文件的大小。
- -R 列出所有子目錄下的文件。(遞歸)
- -1 一行只輸出一個文件。
- 如果
ls
後面不添加路徑,就表示當前目錄,如果添加了路徑,則表示所添加路徑相關的資訊!
示例:
-
ls & ls -a : 查看當前目錄,就相當於
Windows
中的打開一個文件夾所顯示的內容。
在上述圖片中,我們會發現有 . 以及 .. 的存在,那麼他們到底表示什麼呢? - . 表示當前目錄 - .. 表示上一層目錄
-
ls -l & ll : 顯示詳細資訊,其中 ls -a 與 ll 是等價的!
注意:在指令中,各個參數是可以互相搭配的如
ls -al
一樣 -
ls -R
列出所有子目錄下的文件。(遞歸)同時類似於此效果的指令,我們也可以使用
tree
對於類似的命令怎麼安裝,具體在後面幾節會詳細說到 !
02. pwd命令
語法: pwd
功能:顯示用戶當前所在的目錄
示例:
03. cd 指令
語法: cd 目錄名
功能:改變工作目錄。將當前工作目錄改變到指定的目錄下。
舉例:
04. touch指令
語法: touch [選項]... 文件...
功能: 新建一個不存在的文件。
示例:
05. echo 指令
功能:在顯示器上顯示一段文字,一般起到一個提示的作用
格式: echo [ -n ] 字元串
參數:n 表示輸出文字後不換行
注意:
- 字元串能加引號,也能不加引號。
- 用echo命令輸出加引號的字元串時,將字元串原樣輸出;
- 用echo命令輸出不加引號的字元串時,將字元串中的各個單詞作為字元串輸出,各字元串之間用一個空格分割。
示例:
06. mkdir指令
語法:mkdir [選項] dirname...
功能:在當前目錄下創建一個名為 「dirname」的目錄
常用選項:
- -p, –parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立
好那些尚不存在的目錄,即一次可以建立多個目錄;
示例:
07. rmdir指令 && rm 指令
07.1 rmdir 指令
rmdir
是一個與mkdir
相對應的命令。mkdir
是建立目錄,而rmdir
是刪除命令。
語法:rmdir [-p] [dirName]
適用對象:具有當前目錄操作許可權的所有使用者
功能:刪除空目錄
常用選項:
-p 當子目錄被刪除後如果父目錄也變成空目錄的話,就連帶父目錄一起刪除。
示例:
07.2 rm指令
**rm **命令可以同時刪除文件或目錄
語法:rm [-f-i-r-v] [dirName/dir]
適用對象:所有使用者
功能:刪除文件或目錄
常用選項:
- -f 即使文件屬性為只讀(即防寫),亦直接刪除 -> 強制刪除
- -i 刪除前逐一詢問確認
- -r 刪除目錄及其下所有文件
示例:
在使用
rm
命令時我們可以使用通配符*
來簡便我們的書寫。
警告:
— 慎用rm -rf 文件/文件夾
這條命令,使用前要三思而後行!– 禁用rm -rf /*
(可以在虛擬機上玩著試試.jpg)
08. man指令
在Linux中man可以幫助我們查看一些幫助文檔,就如我們曾經在編寫C語言程式碼時會去查閱一些官方文檔如:
C++ 參考手冊
cplusplus
man 語法: man [選項] 命令
常用選項:
- -k 根據關鍵字搜索聯機幫助 num 只在第num章節找
- -a 將所有章節的都顯示出來,比如 man printf 它預設從第一章開始搜索,知道就停止,用a選項,當按 下q退出,他會繼續往後面搜索,直到所有章節都搜索完畢。
解釋一下,面手冊分為8章
1 是普通的命令
2 是系統調用,如open,write之類的(通過這個,至少可以很方便的查到調用這個函數,需要加什麼頭文
件)
3 是庫函數,如printf,fread4是特殊文件,也就是/dev下的各種設備文件
5 是指文件的格式,比如passwd, 就會說明這個文件中各個欄位的含義
6 是給遊戲留的,由各個遊戲自己定義
7 是附件還有一些變數,比如向environ這種全局變數在這裡就有說明
8 是系統管理用的命令,這些命令只能由root使用,如ifconfig (cnetos7 並沒有自帶此命令,需要安裝)
示例:
09. cp指令
語法:cp [選項] 源文件或目錄 目標文件或目錄
功能: 複製文件或目錄
說明: cp指令用於複製文件或目錄,如同時指定兩個以上的文件或目錄,且最後的目的地是一個已經存在的目錄,
則它會把前面指定的所有文件或目錄複製到此目錄中。若同時指定多個文件或目錄,而最後的目的地並非一個已存
在的目錄,則會出現錯誤資訊
常用選項:
- -f 或 –force 強行複製文件或目錄, 不論目的文件或目錄是否已經存在
- -i 或 –interactive 覆蓋文件之前先詢問用戶
- -r遞歸處理,將指定目錄下的文件與子目錄一併處理。若源文件或目錄的形態,不屬於目錄或符號鏈
接,則一律視為普通文件處理
示例:
10. mv指令
mv 命令是move的縮寫,可以用來移動文件或者將文件改名(move (rename) files),是Linux系統下常用的命
令,經常用來備份文件或者目錄。
語法: mv [選項] 源文件或目錄 目標文件或目錄
功能:
- 視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的
目錄中。 - 當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它
將所給的源文件或目錄重命名為給定的目標文件名。 - 當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,mv命令將各參數指定的源文件均移至
目標目錄中。
常用選項:
- -f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
- -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
示例:
11. cat指令
語法:cat [選項] [文件]
功能: 查看目標文件的內容
常用選項:
- -b 對非空輸出行編號
- -n 對輸出的所有行編號
- -s 不輸出多行空行
與之相對應有一個 tac 命令 -> 它的作用是逆序輸出文件的內容
但tac命令無 -n 選項
tac
用法:tac [選項]... [文件]...
Write each FILE to standard output, last line first.
With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-b, --before 在行前而非行尾添加分隔標誌
-r, --regex 將分隔標誌視作正則表達式來解析
-s, --separator=字元串 使用指定字元串代替換行作為分隔標誌
--help 顯示此幫助資訊並退出
--version 顯示版本資訊並退出
示例:
12. more & less 指令
假設 某日誌 有100000行,我們想查看這個文件的內容,若我們使用cat命令,這將會非常不友好!
示例:
12.1 more 指令
語法:more [選項] [文件]
功能:more命令,功能類似 cat
常用選項:
- q 退出more
示例:
12.2 less 指令
less 工具也是對文件或其它輸出進行分頁顯示的工具,應該說是linux正統查看文件內容的工具,功能極
其強大。
less 的用法比起 more 更加的有彈性。在 more 的時候,我們並沒有辦法向前面翻, 只能往後面看
但若使用了 less 時,就可以使用 [pageup][pagedown] 等按鍵的功能來往前往後翻看文件,更容易用
來查看一個文件的內容!
除此之外,在 less 裡頭可以擁有更多的搜索功能,不止可以向下搜,也可以向上搜。
語法: less [參數] 文件
功能:
less與more類似,但使用less可以隨意瀏覽文件,而more僅能向前移動,卻不能向後移動,而且less在查看之前
不會載入整個文件。
選項:
- -i 忽略搜索時的大小寫
- -N 顯示每行的行號
- /字元串:向下搜索「字元串」的功能
- ?字元串:向上搜索「字元串」的功能
- n:重複前一個搜索(與 / 或 ? 有關)
- N:反向重複前一個搜索(與 / 或 ? 有關)
- q:quit
13. head & tail 指令
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊
head 用來顯示檔案的開頭至標準輸出中,
而 tail 想當然爾就是看檔案的結尾。
13.1 head 指令
語法: head [參數]… [文件]…
功能:head 用來顯示檔案的開頭至標準輸出中,默認head命令列印其相應文件的開頭10行。
選項:
- -n<行數> 顯示的行數
示例:
13.2 tail 指令
tail 命令從指定點開始將文件寫到標準輸出.使用tail命令的-f選項可以方便的查閱正在改變的日誌文件,tail –
f filename會把filename里最尾部的內容顯示在螢幕上,並且不但刷新,使你看到最新的文件內容.
語法: tail[必要參數] [選擇參數] [文件]
功能: 用於顯示指定文件末尾內容,不指定文件時,作為輸入資訊進行處理。常用查看日誌文件。
選項:
- -f 循環讀取
- -n<行數> 顯示行數
示例:
14. grep 指令
語法: grep [選項] 搜尋字元串 文件
功能: 在文件中搜索字元串,將找到的行列印出來
常用選項:
- -i :忽略大小寫的不同,所以大小寫視為相同
- -n :順便輸出行號
- -v :反向選擇,亦即顯示出沒有 ‘搜尋字元串’ 內容的那一行
示例:
15. | && > && >>
15.1 | 管道符
在一些時候我們只想在一些特定輸出中查看是否有我們所需要的東西,但此時我們又不想查看整個文件,這時我們就可以使用 | 來幫助我們進行篩選
示例:
15.2 > 重定向
在日常的輸出資訊都是在螢幕中輸出的,我們可以使用 >
給它定向輸入到文件里去。
示例:
15.3 >> 追加
往文件中繼續追加內容
示例:
16. zip/unzip指令
語法: zip 壓縮文件.zip 目錄或文件
功能: 將目錄或文件壓縮成zip格式
常用選項:
-r 遞 歸處理,將指定目錄下的所有文件和子目錄一併處理
-d 自定義解壓目錄
舉例:
17. tar指令
也是一個打包命令
格式: tar [-cxtzjvf] 文件與目錄 ….
參數:
- -c :建立一個壓縮文件的參數指令(create 的意思);
- -x :解開一個壓縮文件的參數指令!
- -t :查看 tarfile 裡面的文件!
- -z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
- -j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
- -v :壓縮的過程中顯示文件!這個常用,但不建議用在背景執行過程!
- -f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加參數!
- -C : 解壓到指定目錄
示例:
範例一:將整個 /etc 目錄下的文件全部打包成為 `/tmp/etc.tar`
[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==僅打包,不壓縮!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮
特別注意,在參數 f 之後的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~
如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~
上述指令在執行的時候,會顯示一個警告訊息:
『`tar: Removing leading `/" from member names`』那是關於絕對路徑的特殊設定。
範例二:查閱上述 /tmp/etc.tar.gz 文件內有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的文件時,就得要加上 z 這個參數了!這很重要的!
範例三:將 /tmp/etc.tar.gz 文件解壓縮在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
在預設的情況下,我們可以將壓縮檔在任何地方解開的!以這個範例來說,
我先將工作目錄變換到 /usr/local/src 底下,並且解開 /tmp/etc.tar.gz ,
則解開的目錄會在 /usr/local/src/etc 呢!另外,如果您進入 /usr/local/src/etc
則會發現,該目錄下的文件屬性與 /etc/ 可能會有所不同喔!
範例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
我可以透過 tar -ztvf 來查閱 tarfile 內的文件名稱,如果單只要一個文件,
就可以透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!
範例五:將 /etc/ 內的所有文件備份下來,並且保存其許可權!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
這個 -p 的屬性是很重要的,尤其是當您要保留原本文件的屬性時!
範例六:在 /home 當中,比 2005/06/01 新的文件才備份
[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home