這個系列教程的前面我們講解了如何安裝Linux系統,以及學習Linux系統的一些方法。那么從這篇博客開始,我們就正式進入Linux命令的學習。學習命令,首先要跟大家糾正的一點就是,我們不需要記住每一條命令的詳細語法格式,學完之后我們只需要知道某個命令能干什么。這樣我們在實際應用中,遇到需要實現某個功能,我們腦海只要能想起來適用於某個命令就行,至於詳細格式我們可以通過查資料。當我們使用的多了,會不知不覺的記住這些命令,這才是正確的學習方法。Linux命令有很多,如果初學者就想全部記住這些命令的詳細格式,會對我們產生很大的學習挫敗性,還沒記完這些命令,或許你已經喪失了學習Linux的熱情了。所以接下來的幾篇博客,我會詳細講解Linux常用命令的語法格式以及用法,大家記住大概的用法就行了,到時候不會可以回過頭來查詢。
本篇博客我們學習Linux最常用的文件處理命令。
1、Linux命令的普遍語法格式
命令格式: 命令 【-選項】【參數】
例子: ls -la /etc
說明: ①、個別命令使用不遵循此格式,【】這種符號表示可以省略
②、當有多個選項時,可以寫在一起
③、簡化選項(一般用一個-)與完整選項(一般用兩個--)
比如 ls -a 等於 ls --all
上面的便是Linux系統中的一般命令格式,基本上所有命令都是遵循這種語法格式(個別命令除外)。
2、目錄處理命令
一、顯示目錄文件命令:ls
①、命令名稱:ls
②、英文原意:list
③、命令所在路徑:/bin/ls
④、執行權限:所有用戶
⑤、功能描述:顯示目錄文件
⑥、語法: ls 選項【-ald】【文件或目錄】
-a 顯示所有文件,包括隱藏文件
-l 詳細信息顯示
-d 僅顯示目錄名,而不顯示目錄下的內容列表
-h 人性化顯示(hommization)
-i 查看任意一個文件的i節點(類似於身份證唯一信息)
-t 用文件和目錄的更改時間排序;可以用第一個顯示的文件判斷最近修改的文件
注意:. 開頭的文件除非是目錄,否則就是隱藏文件
上面我們分別列出了ls的各種命令組合顯示效果。我們以 -rw-------. 1 root root 1.3k Mar 11 08:05 anaconda-ks.cfg 為例解析每個字段:
①、-rw------- 第一位表示文件類型,- 表示是二進制文件,d 表示目錄, l 表示軟連接文件。后面的每三個為一組:
rw- --- ---
u g o
u(user)所有者 g(group)所屬組 o(other) 其他人
r 讀 w寫 x執行 -無權限
②、1 引用計數,表示文件被引用過多少次
③、root 這第一個root表示所有者,一般創建一個文件,所有者默認是創建者。
④、root 這第二個root表示所屬組。
⑤、1.3K 表示文件字節大小,不帶單位表示字節
⑥、ar 11 08:05 表示文件的最后修改時間。注意:Linux沒有明確的創建時間,只有最后一次訪問時間、文件的狀態修改時間、文件的數據修改時間
⑦、anaconda-ks.cfg 表示文件名
二、創建目錄命令:mkdir
①、命令名稱:mkdir
②、英文原意:make directories
③、命令所在路徑:/bin/mkdir
④、執行權限:所有用戶
⑤、功能描述:創建新目錄
⑥、語法: mkdir 【-p】【目錄名】
-p 遞歸創建
例子:創建單個目錄:mkdir /tmp/vae.txt
創建多個目錄:mkdir /tmp/a.txt /tmp/b.txt
注意:1、創建的目錄已經存在, 那么 Linux 會提示我們 Linux 無法創建它。
2、不帶任何參數運行 mkdir 命令會在當前目錄下創建目錄。
3、不帶上-p,如果新建的文件上級目錄不存在則不會執行成功這種說法是錯誤的。加或者不加上 -p 前面的目錄沒有得都會依次創建。
4、創建目錄的首要條件是, 在想要創建目錄的目標路徑下你必須具有訪問權限。
三、切換目錄命令:cd
①、命令名稱:cd
②、英文原意:change directory
③、命令所在路徑:shell 內置命令
④、執行權限:所有用戶
⑤、功能描述:切換目錄
⑥、語法: cd【目錄名】
例子:切換到指定目錄:cd /tmp/vae
回到上一級目錄:cd ..
還是在當前目錄:cd .
返回上兩級目錄:cd ../..
返回進入此目錄之前所在的目錄:cd -
四、shell內置命令和外部命令的區別
大家可以看到前面的三個命令,ls命令和mkdir命令都有命令的所在路徑,而cd命令我們說是shell內置命令。這兩者便是Linux內置命令和外部命令。
內部命令實際上是shell程序的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程序識別並在shell程序內部完成運行,通常在linux系統加載運行時shell就被加載並駐留在系統內存中。內部命令是寫在bashy源碼里面的,其執行速度比外部命令快,因為解析內部命令shell不需要創建子進程。比如:exit,history,cd,echo等。
外部命令是linux系統中的實用程序部分,因為實用程序的功能通常都比較強大,所以其包含的程序量也會很大,在系統加載時並不隨系統一起被加載到內存中,而是在需要時才將其調用內存。通常外部命令的實體並不包含在shell中,但是其命令執行過程是由shell程序控制的。shell程序管理外部命令執行的路徑查找、加載存放,並控制命令的執行。外部命令是在bash之外額外安裝的,通常放在/bin,/usr/bin,/sbin,/usr/sbin......等等。可通過“echo $PATH”命令查看外部命令的存儲路徑,比如:ls、vi等。
用type命令可以分辨內部命令與外部命令:
內部命令和外部命令最大的區別之處就是性能。內部命令由於構建在shell中而不必創建多余的進程,要比外部命令執行快得多。因此和執行更大的腳本道理一樣,執行包含很多外部命令的腳本會損害腳本的性能。
五、顯示當前目錄命令:pwd
①、命令名稱:pwd
②、英文原意:print working directory
③、命令所在路徑:/bin/pwd
④、執行權限:所有用戶
⑤、功能描述:顯示當前目錄
⑥、語法: pwd
例子:顯示當前目錄:pwd
六、刪除空目錄命令:rmdir
①、命令名稱:rmdir
②、英文原意:remove empty directories
③、命令所在路徑:/bin/rmdir
④、執行權限:所有用戶
⑤、功能描述:刪除空目錄(如果目錄下存在文件則不能刪除)
⑥、語法: rmdir 【空目錄名】
例子:刪除指定空目錄:rmdir /tmp/a
注意:由於此命令只能刪除空目錄,在實際操作中應用的不多,后面我們講解 rm 命令可以替代。
七、復制文件或目錄命令:cp
①、命令名稱:cp
②、英文原意:copy
③、命令所在路徑:/bin/cp
④、執行權限:所有用戶
⑤、功能描述:復制文件或目錄
⑥、語法: cp -rp 【原文件或目錄】【目標目錄】
-r 復制目錄
-p 保留文件屬性
例子:比如我們將 root 目錄下的install.log 文件復制到 tmp 目錄下
可以用於復制后文件改名,比如我們將 root 目錄下的 install.log 文件復制到 tmp的copyinstall.log 文件
還可同時復制多個文件,注意復制目錄的時候要加 -r選項。加-p屬性之后會將原文件的一些屬性比如修改時間等也原封不動的復制過去。如果不加-p屬性,那么復制后的文件修改時間為當前系統時間。
八、剪切文件或目錄命令:mv
①、命令名稱:mv
②、英文原意:move
③、命令所在路徑:/bin/mv
④、執行權限:所有用戶
⑤、功能描述:剪切文件、改名
⑥、語法: mv【原文件或目錄】【目標目錄】
例子:在 tmp 目錄下創建目錄 tmp1 ,然后在 tmp1 目錄下創建目錄 tmp1_1,然后 命令 mv /tmp/tmp1/tmp1_1 /tmp 將 tmp1目錄下的 tmp1_1 剪切到 tmp 目錄下。
九、刪除文件或目錄命令:rm
①、命令名稱:rm
②、英文原意:remove
③、命令所在路徑:/bin/rm
④、執行權限:所有用戶
⑤、功能描述:剪切文件、改名
⑥、語法: rm -rf 【文件或目錄】
-r 刪除目錄
-f 強制執行
例子:在 tmp 目錄下有兩個目錄 tmp1 和 tmp1_1,rm -r tmp1_1 是刪除這個目錄,但是需要輸入 y 來確認
rm -rf tmp1 是強制刪除 tmp1 目錄,不需要輸入 y 來確認,這種做法很簡單,但是容易誤刪文件,沒有反悔的機會
rm -rf tmp1 tmp2 同時刪除兩個文件
3、文件處理命令
一、創建空文件命令:touch
①、命令名稱:touch
②、英文原意:
③、命令所在路徑:/bin/touch
④、執行權限:所有用戶
⑤、功能描述:創建空文件
⑥、語法: touch 【文件名】
例子:在 tmp 目錄下創建 tmp.log 文件
注意:創建文件時,文件名不要有空格,不然就是創建了 兩個文件
touch progrom files 這是創建了兩個文件,progrom 和 files
如果我們想創建一個文件名為 progrom files ,應該用引號括起來(盡量避免文件名包含空格)
touch "progrom files"
二、顯示文件內容命令(適合內容較少的文件):cat
①、命令名稱:cat
②、英文原意:
③、命令所在路徑:/bin/cat
④、執行權限:所有用戶
⑤、功能描述:顯示文件內容(只能顯示內容較少的文件)
⑥、語法: cat【文件名】
-n 顯示文件行號
例子:通過不加參數-n和加參數-n,顯示/etc/issue的內容
注意:此命令只能顯示文件內容比較少的文件,如果文件內容很多,用cat命令是不合適的,視覺效果是屏幕不斷滾動更新。
三、反向顯示文件內容命令(適合內容較少的文件):tac
①、命令名稱:tac
②、英文原意:
③、命令所在路徑:/bin/tac
④、執行權限:所有用戶
⑤、功能描述:顯示文件內容(只能顯示內容較少的文件)
⑥、語法: tac【文件名】
例子:顯示/etc/issue的內容
四、分頁顯示文件內容命令(不能向前翻頁):more
①、命令名稱:more
②、英文原意:
③、命令所在路徑:/bin/more
④、執行權限:所有用戶
⑤、功能描述:分頁顯示文件內容
⑥、語法: more【文件名】
(空格)或f 翻頁(一頁一頁的往后顯示)
(Enter) 換行(一行一行的往后顯示)
q 或 Q 退出
例子:查看etc目錄下的 services 文件信息:more /etc/services
五、分頁顯示文件內容命令(可以前后翻頁):less
①、命令名稱:less
②、英文原意:
③、命令所在路徑:/usr/bin/less
④、執行權限:所有用戶
⑤、功能描述:分頁顯示文件內容
⑥、語法: less【文件名】
(空格)或f 或PgDn 翻頁(一頁一頁的往后顯示)
PgUp向前翻頁
(Enter) 換行或向下的箭頭(一行一行的往后顯示)
向上的箭頭(一行一行的往前顯示)
q 或 Q 退出
輸入/想搜索的字符,然后回車鍵
例子:查看etc目錄下的 services 文件信息:less/etc/services。這個比較簡單,我們就不截圖演示了,主要是最后提到的搜索功能,我們在進入命令之后,輸入
/想搜索的字符,然后回車鍵,如下:
回車之后,如下顯示:
六、顯示文件內容命令(指定行數):head
①、命令名稱:head
②、英文原意:
③、命令所在路徑:/usr/bin/head
④、執行權限:所有用戶
⑤、功能描述:顯示文件的前面幾行
⑥、語法: head【文件名】
-n 指定顯示的行數
不加 -n 默認顯示前 20 行數據
例子:顯示 etc目錄下的 services 文件前面 20 行 head -n 20 /etc/services
七、反向文件內容命令(文件即時更新后也能動態顯示,多用於日志文件顯示):tail
①、命令名稱:tail
②、英文原意:
③、命令所在路徑:/usr/bin/tail
④、執行權限:所有用戶
⑤、功能描述:顯示文件的后面幾行
⑥、語法: tail【文件名】
-n 指定顯示的行數
-f 動態顯示文件末尾內容(即文件實時變化,那么顯示內容也會隨之變化)
例子:顯示 etc目錄下的 services 文件后面 20 行 tail -n 20 -f /etc/services
注意:如果我們想結束加上 -f顯示的tail命令,通過 Ctrl+C。
4、總結
本篇博客我們主要講解了Linux系統中的文件和目錄處理命令,顯示目錄文件信息 ls 這是我們最常用的,然后創建目錄命令 mkdir,切換目錄命令 cd,顯示當前目錄 pwd,刪除空目錄命令 rmdir,這個命令用的不多,如果我們想刪除目錄可以用 rm 命令,注意 rm 如果加上 -f 參數,那將沒有提示,直接將文件從系統中刪除,需要特別注意,以免刪除系統文件。然后我們接着介紹了復制文件或目錄命令 cp,剪切文件或目錄命令 mv,注意mv命令在剪切后可以直接更改文件或目錄名稱。
接着我們介紹了幾個文件處理命令,創建空文件 touch,顯示文件內容的命令有很多,我們也不需要記住那么多,首先less命令能顯現文件內容比較多的文件,而且能前后翻頁顯示。再就是如果我們需要動態監視文件內容的變化,比如某個日志文件,我們可以通過 tail 加上-f參數動態顯示文件末尾的內容。