Linux基礎入門+基本命令的萬字碎碎念

開篇總想絮叨兩句

之前一直沒系統的學習過 Linux,也就簡單的用過Ubuntu,或者在本地的虛擬機上,搭了搭開發的環境,以及半查半折騰的在阿里雲的 CentOS 系統上部署了一個博客,現在因爲有時候用的稍微多了一點,正好家裏也有幾本Linux的數據,那就把這一部分好好學習,順便整理一下,難免會有一些錯誤,有什麼問題希望大家不吝賜教 ~

(一) 強大的 Shell

(1) terminal

shell 是什麼,可能大家還有點迷糊,但是 terminal 這個詞或許會感覺熟悉一點,是的,一般在學習階段,很多人安裝系統的時候會選擇安裝圖形化界面,相比較純圖形化界面,圖形化界面看起來會友好一些,而在看一些書籍,視頻的時候,我們會非常頻繁的使用到一個名叫 terminal (終端) 的東西,它在圖形用戶界面中,也算是一個非常重要的東西了,我們就從這裏講起,Rush !!!

A:基本定義

終端(termimal),它確切的叫法是終端仿真器(termimal emulator),當然了大部分人更習慣於叫前者

  • 在 linux 下使用組合鍵 ctrl+alt+T 打開的就是終端
  • 當然,鼠標右鍵點擊 open termimal 也是一樣的

起碼從咱們用戶看起來的角度來看,它提供了一個命令的輸入輸出環境,也就是說你想執行點啥命令操作,都可以在這裏面通過具體的命令語法去執行

B:terminal 和 Shell 的關係

標題是 Shell ,這都說了半天了,咋還沒扯到呢

來了,來了,他們兩個的關係很密切,在圖形界面中的用戶終端中,可以在這裏用來啓動 bash(也就是 Shell,因爲 Linux 默認是使用 bash 後面你就知道,用它的快樂你想象不到)也就是說當你打開一個 terminal 的時候,terminal 和 Shell 會被操作系統關聯起來,當我們在 terminal 中輸入命令後,shell 就負責解釋命令

隨意將 terminal 簡單的理解成一個 “工具” 的概念也是可以的

下圖就是分別在 烏班圖 和 CentOS 下的終端界面

(2) Shell

A:基本定義

shell是一個命令行解釋器,是 Linux 內核的一個外殼,負責外界與 Linux 內核的交互

shell接收用戶或者其他應用程序的命令,然後將這些命令轉化成內核能理解的語言並傳給內核,內核執行命令完成後將結果返回給用戶或者應用程序

B:什麼是Linux 內核 ?

上面一直又談到了 Linux 的內核,這又是什麼呢?

  • 計算機硬件包括運算器,控制器,存儲器,輸入/ 輸出設備等等,而內核的作用就是讓各種硬件設備各司其職且又能協同運行

  • 也就是說 Linux 系統的內核負責完成對硬件資源的分配、調度任務

  • 但是內核對於系統的正常運行,是絕對重要的一部分,所以我們一般不直接編譯內核參數,而是用戶通過基於系統調用接口開發出的程序或者服務來管理計算機

C:什麼是 Bash ?

早在 UNIX 時期,shell 有着許多版本,比如sh、C SHell、K SHell、等等,每一種Shell都各有特點

Bash(Bournce-Again SHell)這個shell是Bourne Shell的增強版本

同樣現在大部分主流的 Linux 默認的選擇了Bash解釋器

  • 通過上下方向鍵來調取過以往執行過的命令

  • 命令或者參數僅需輸入前幾位就可以通過Tab鍵補全

  • 具有強大的批處理腳本

  • 具有實用的環境變量功能

D:Shell 的地位

通過這一張圖片,大家應該就很好理解定義中所說 Shell 所處的地位了,簡單的說,它就像是一個翻譯官,幫助 用戶與內核之間交流,用戶想要執行一些 “命令” 就去告訴 Shell ,然後 Shell 再去和內核溝通,最終調用相應的程序或者服務去完成

到這裏,小小的總結一下:terminal 這個工具活躍在爲用戶服務的面前,而 Shell 活躍在爲用戶服務的背後

(二) 提前說明

後面繼續學習的東西,基本不涉及到圖形界面了,不過作爲初學,仍然可以在桌面中調出 terminal 進行使用,圖形化會使得學習的壓力也小一點,對我個人而言,平時 Linux 更多的是用來做服務器,穩定,可靠,安全是第一個考慮的問題,圖形界面雖然簡單,但是卻需要安裝更多服務,開放更多的端口,同時佔用更多的系統資源,所以下面都涉及圖形界面的講解,再次強調一下,Ubuntu 和 CentOS 以及其他發行版本有些命令是不同的,但是基礎的基本也都差不多的,處於學習的態度,大家完全可以在學習中使用不同的發行版本試一試,如果你是一名開發的選手,我更推薦你在 CentOS 上實踐,反正不會咱就學,不對咱就改唄

(三) 命令的基本格式

首先看一下命令的基本格式

基本格式:command [options] [arguments]

即:命令 [選項] [參數]

注意:別忘了命令後加空格

命令格式中的 [] 代表可選,有些命令可以不寫選項或參數,也能執行

下面用常見的 ls 命令講解一下(具體的知識點會放到下面說,這裏只爲了演示基本格式)

ls 的基本作用就是展開目錄,而不同的選項、參數

  • 直接輸入 ls 指令(無選項參數)後回車,那是因爲有默認參數存在

  • 輸入 ls -l 顯示出詳細信息,這是一個短格式指令,所以使用 一個減號調用 -

  • 輸入ls --all 列出包括隱藏文件的指令,這是這是一個長格式指令,它是英文完整單詞,所以使用 兩個減號調用 --

一般情況下,短格式選項是長格式選項的縮寫,也就是一個短格式選項會有對應的長格式選項,就例如上面使用的長格式指令 ls --all 和其對應的短格式指令 ls -a的效果是一致的

但是也有一些例外比如剛開始的 ls 命令的短格式選項 -l 就沒有對應的長格式選項

(四) Linux 文件和目錄管理

(1) 目錄結構

Linux 和 Windows 還是有很大區別的,在正式學習命令之前,還有一個知識需要補充介紹,也就是目錄的結構

我拿一臺空着的烏班圖給大家做演示,當然不同的發行版本,還是有區別的,不過這一篇主要是一些常用的基本命令,所以也沒關係,大家也可以CentOS 等等

大家可以在終端輸入 ls / 看一下根目錄下有些什麼東西

當然了,其中自然有一些是比較重要的,我們把關鍵的一些介紹一下

  • bin(binary) 存放二進制的可執行文件(這個目錄存放着最經常使用的命令)
    • 例如 ls mkdir 就存在此處
  • sbin(super user binary):這裏存放的是系統管理員使用的系統管理程序。
  • boot:這裏存放的是引導 Linux 時使用的各種文件
  • dev(divices):該目錄下存放的是 Linux 的設備文件
  • etc(etcetera):這個目錄用來存放所有的系統管理所需要的配置文件和子目錄
  • home:存放用戶文件的根目錄,其中有按照用戶名稱命令的文件夾,裏面有相關的文件(非Root用戶)
  • root:超級用戶目錄,即Root用戶的主目錄
  • lib(library):這個目錄裏存放着系統最基本的動態連接共享庫,其作用類似於Windows裏的DLL文件,幾乎所有的應用程序都需要用到這些共享庫
  • usr:這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似於windows下的program files目錄
  • var:這個目錄中存放着運行時需要改變數據的文件,包括各種日誌文件
  • media:linux系統會自動識別一些設備,例如U盤、光驅等等,當識別後,linux會把識別的設備掛載到這個目錄下

我們只摘出來其中幾個重要的介紹,當然還有一些就需要大家自己去探索一下啦~

(2) 絕對路徑和相對路徑

Linux 系統中所有的文件(目錄)都被分爲以根目錄 “/” 開始的倒置的樹狀結構,學過數據結構中 “樹” 這個結構,大家應該就明白了(節點上少,下多,像一個倒過來的樹)

Linux使用正斜線 / 而不是反斜線 \ 來在文件路徑中劃分目錄

在 Shell 中:

  • ~ 代表用戶主目錄
  • / 代表根目錄
  • . 代表當前目錄
  • .. 代表當前目錄的上一級目錄

這幾個點,作爲一個默認已知的基礎鋪墊,後面配合各種命令會及極其常用

A:絕對路徑演示

最重要的一點:絕對路徑一定是從根目錄 / 寫起的

例如,通過絕對路徑打開 usr 文件夾 下的 src 目錄

我們以 root 用戶目錄出發(cd 爲切換目錄,pwd 爲顯示當前路徑 後面會介紹,這裏主要看絕對和相對路徑的特點)

root@ubuntu:~# cd /usr/src
root@ubuntu:/usr/src# pwd
/usr/src

上面的例子,即使我們身在 root 目錄下,但是通過絕對路徑我們仍然可以跳轉到我們想要去的目錄下

root@ubuntu:~# cd usr/src
bash: cd: usr/src: No such file or directory

如果我們不從 / 寫起,就會提醒找不到這個文件或者目錄

B:相對路徑演示

依舊從 root 目錄出發,由於 root 的前一級目錄就是 / 根目錄,所以可以通過 cd .. 返回上一級目錄,或者直接通過 cd / 回到根目錄,由於 usr 就在根目錄下,所以可以通過 cd ./usr 或者cd usr相對路徑的寫法進入,爲了演示,我都拆開寫了,大家也可以在 root 目錄下,使用 ../usr 直接打開 usr目錄

root@ubuntu:~# cd ..
root@ubuntu:/# cd ./usr
root@ubuntu:/usr# cd ./src
root@ubuntu:/usr/src# pwd
/usr/src

C:總結

絕對路徑永遠是是相對於根路徑 / 的,文件不動,則它的絕對路徑不變

而相對路徑是相對於當前所在目錄而言的,當前所在目錄改變,文件的相對路徑也會變化

(3) 第一次使用命令的注意點

A:登錄後的顯示

當你登錄後,首次出現的就是在用戶(或超級用戶)的目錄下,由於你登錄的賬戶不同可能會有不同的顯示

  • 左側顯示用戶名 右側顯示 $ 即普通用戶登錄,例如:gzah7799@ubuntu:~$

  • 左側顯示 root 右側爲 # 即超級用戶狀態登錄,例如:root@ubuntu:~#

我這裏選擇了使用 root 直接登錄,當然你也可以選擇使用普通用戶登錄,但是最好給其賦予 root 權限,否則學習過程中,有一些命令和操作是沒有權限執行的

補充:不同的發行版本中,提示符的外觀可能有些許不同,但是基本是一致的,通常會包括 (用戶名@機器名 目錄 和 #/$ 符號

B:家目錄

用戶登錄後,要有一個初始登錄的位置,這個初始登錄位置就稱爲用戶的家目錄(也稱用戶的主目錄)

  • 超級用戶的家目錄:/root
  • 普通用戶的家目錄:/home/用戶名

登錄後也會直接跳轉到這個目錄下

(4) 目錄切換(cd)

cd 命令用於切換工作路徑:也就是說**,輸入 cd** 後接着輸入絕對路徑或者相對路徑就可以完成目錄的切換了

這個命令也太常用了,通過cd 可以非常靈活的切換工作目錄,除了上面演示的絕對路徑以及相對路徑的寫法,還有一些非常方便的寫法可以搭配在 cd 後面

~ 代表當前登錄用戶的主目錄
~ 用戶名 表示切換至指定用戶的主目錄
- 代表上次所在目錄
. 代表當前目錄
.. 代表上級目錄

隨便寫一個,大家可以參考下格式

root@ubuntu:/usr/src# cd ~
root@ubuntu:~#

(5) 顯示當前路徑(pwd)

使用pwd命令可以顯示當前用戶所處的工作目錄的絕對路徑,pwd 是 Print Working Directory 的縮寫

注意點:

Ubuntu 默認的終端下面,進入很多層的目錄後,前面那個提示符會顯示完整的路徑,我感覺不是很舒服,尤其是進去的目錄比較深的時候,這一點可以度娘一下,把它改掉

  • root@ubuntu:/etc/vim#

CnetOS,雖然也顯示出當前所在的目錄,但它只會列出整個路徑中最後的那一個目錄,同樣是 /etc/vim 文件夾,下面這種前面只顯示 vim

  • root@localhost vim]#

(6) 查看目錄下文件(ls)

通過前面的 cd 以及 pwd 命令我們已經在 Linux 文件系統中亂跑了,但是再怎麼跑也得有個方向,ls 就可以幫助我們看到你跑到(切換)的這個地方(目錄)放着哪些文件,然後再決定進行下一步操作

A:基本用法

所以這個 ls 也是非常常用的,使用頻率甚至超過了cd

  • 只需要輸入 ls 就可以直接查看當前工作目錄下的一系列文件和子目錄

  • 除此之外,還可以指定目錄查看,例如指定查看 usr 目錄下的內容
root@ubuntu:/# ls /usr
bin  games  include  lib  local  sbin  share  src
  • 還有一種,就是指定多個目錄查看,例如同時查看普通用戶主目錄以及 usr 目錄
root@ubuntu:/# ls /home/gzah7799 /usr
/home/gzah7799:
Desktop  Documents  Downloads  examples.desktop  Music  Pictures  Public  Templates  Videos

/usr:
bin  games  include  lib  local  sbin  share  src

B:選項和參數

搭配一點參數,帶來加倍的快樂,當然這裏都是短指令,例如 -a 的長指令是 -all 我都沒有列舉哈,我摘了幾個常用的,不過這幾個裏面也主要用 -a 和 -l 比較多

選項(短) 含義
-a 顯示所有文件及目錄,包括隱藏文件(開頭爲 . 的文件)也一起羅列出來,這是最常用的選項之一。
-A 顯示所有文件及目錄,包括隱藏文件,但不包括 . 與 … 這兩個目錄
-F 在文件或目錄名後加上文件類型的指示符號例如,* 代表可運行文件,/代表目錄,= 代表 socket 文件,\ 代表 FIFO 文件
-l 使用長格式列出文件和目錄信息
-r 將文件以相反次序顯示(原定依英文字母次序)
-S 用文件和目錄大小排序
-t 將文件依建立時間的先後次序列出
-R 遞歸處理,將指定目錄下所有文件及子目錄及子目錄中的文件一併列出(別亂試 - -)

-l舉個例子:

補充:llls -l 的效果是一樣的,可以理解爲簡寫或者別名

root@ubuntu:/usr# ls -l
total 92
drwxr-xr-x   2 root root 49152 Apr 21 07:17 bin
drwxr-xr-x   2 root root  4096 Jul 24  2018 games
drwxr-xr-x  34 root root  4096 Apr 15 06:53 include
drwxr-xr-x 131 root root  4096 Apr 17 02:15 lib
drwxr-xr-x  10 root root  4096 Jul 24  2018 local
drwxr-xr-x   2 root root 12288 Apr 17 02:20 sbin
drwxr-xr-x 246 root root 12288 Apr 17 02:16 share
drwxr-xr-x   6 root root  4096 Apr 21 07:17 src

C:長列表格式

前面看到了使用 cd -l使得目錄下的內容通過長格式顯示出了結果,而這種格式包含着很多的有用信息,簡單看一下它提供了哪些

輸出信息 信息描述
d 文件類型:“-”代表普通文件,d 表示目錄
drwxr-xr-x 文件權限,以三個分,共分爲三組,在後面的權限專篇文章,我會專門去講解這一點
2 文件連接數
root 文件的用戶所有者
root 文件的用戶羣所有者
49152 文件長度(也就是文件大小,不是文件的磁盤佔用量)
Apr 21 07:17 文件的更改時間(mtime),或者是文件的最後訪問時間(atime)
bin 文件 / 目錄名稱

(7) Linux創建目錄(mkdir命令)

基本用法:mkdir [參數] 目錄名稱

  • -m<目錄屬性>或—mode<目錄屬性> :建立目錄的同時設置目錄的權限,而不是採用默認目錄權限

    • 無參數默認創建目錄dir,其默認權限爲755,加-m 權限爲777
  • -p--parents :若上層目錄沒有建立,則遞歸幫你創建上層目錄

權限的問題我們仍不多考慮,放到後面,這裏分別演示一下無參數創建以及遞歸創建

root@ubuntu:~# mkdir ideal-20
root@ubuntu:~# cd ideal-20
root@ubuntu:~/ideal-20# mkdir -p a/b
root@ubuntu:~/ideal-20# cd a
root@ubuntu:~/ideal-20/a# cd b
root@ubuntu:~/ideal-20/a/b# pwd
/root/ideal-20/a/b

(8) 刪除空目錄(rmdir)

基本用法:rmdir [選項] [目錄]

  • -p:遞歸刪除目錄,當子目錄刪除其父目錄爲空時,也一同刪除
  • -v:輸出處理的目錄詳情

演示:

root@ubuntu:~/ideal-20/a/b# rmdir /root/ideal-20/a/b

如果目錄不爲空就會報錯

rmdir: failed to remove '/root/ideal-20': Directory not empty

(9) 創建文件 (touch)

創建好了目錄,就可以開始試着創建文件了,touch 可以幫助我們創建文件,也可以修改目錄的時間參數

基本用法:touch 文件名稱

選項
-c--no-create 如果文件不存在,不建立任何文件,也不提示
-d<時間日期> 使用指定的時間日期,而非現在的時間
-t<日期時間> 使用指定的日期時間,而非現在的時間
-a 改變文件的訪問時間爲系統當前時間,無需設置時間選項
-m 改變文件的修改時間爲系統當前時間,無需設置時間選項
-r 把指定文件或目錄的日期、時間都設成和參考文件或目錄的日期、時間想通過

比較用的多一點的就是簡單的文件創建了

root@ubuntu:~# touch demo.txt
root@ubuntu:~# ls
demo.txt

指定修改時間 也給出一下格式

touch -d "20200423 10:11" test.txt

(10) 複製文件和目錄(cp)

cp 命令,主要用來複制文件和目錄

基本用法:cp [選項] 源文件 目標文件

選項 含義
-a 複製文件和目錄以及屬性(包括所有權和權限)
-i 若目標文件或目錄已經存在時,進行覆蓋時會先詢問是否進行覆蓋
-p 保留源文件或目錄的屬性,而非使用默認屬性(備份常用);
-r 遞歸地複製目錄及其內容
u 複製時,只會複製那些目標目錄不存在的或者相應文件的更新文件
v 複製文件時,顯示信息性消息

A:複製文件

  • 首先將 root 目錄下的 demo.txt 複製到 var 文件夾下
root@ubuntu:~# cp demo.txt /var/
  • 再次執行這一句,原來的內容就會被覆蓋掉,如果想要提醒可以執行 cp -i

  • 當我們處於別的目錄下記得要寫絕對路徑,同時下面一同演示如何改名修改

root@ubuntu:/var# cp /root/demo.txt /var/test.txt

B:複製目錄

  • 把 var 目錄下的 ideal 文件夾複製到 root目錄下
root@ubuntu:/var# cp -r /var/ideal/ /root/
  • 還有一種就是使用通配符,把第一個文件夾中的所有文件複製到第二個文件夾中
root@ubuntu:/var# cp -r /var/ideal/* /root/

(11) 刪除文件或目錄(rm)

rm 命令用來刪除文件和目錄,同時默認情況下不會有任何的提示

基本用法:rm[選項] 文件或目錄

選項 含義
-f 系統將不再詢問,而是直接刪除目標文件或目錄
-i 在刪除文件或目錄之前,系統會給出提示信息
-r 可刪除指定目錄及包含的所有內容,包括所有的子目錄和文件

這個方法使用要特別小心,Linux 可是沒有還原操作的,它默認認爲用戶是明智的,尤其搭配通配符進行刪除的時候,一定要小心,可以提前使用 ls 命令看一下要刪除的內容是不是自己想要的

下面兩行命令分別就是刪除文件和刪除目錄的簡單演示

root@ubuntu:/var# rm test.txt
root@ubuntu:/var# rm -r /var/ideal/

(12) 移動文件或重命名文件(mv)

基本用法:mv [參數] [源文件或目錄] [目標文件或目錄]

選項 含義
-b 若需覆蓋文件,則覆蓋前先進行備份
-f 如果目標文件或目錄已經存在,則直接覆蓋現有的文件或目錄
-i 若目標文件或目錄已經存在時,進行覆蓋時會先詢問是否進行覆蓋
-u 移動或更改文件名時,若目標文件已存在,且其文件日期比源文件新,則不覆蓋目標文件

A:移動文件

/root/demo.txt 文件移動到根目錄 /

root@ubuntu:~# mv /root/demo.txt /

B:移動文件並改名

/root/demo.txt 文件移動到根目錄 / ,並重命名爲 test.txt

root@ubuntu:~# mv /root/demo.txt /test.txt

C:移動目錄

移動/root/ideal目錄中的所有文件和子目錄到根目錄

root@ubuntu:~# mv /root/ideal /

D:重命名文件或目錄

將 demo 文件重命名爲 demo2 ,將 ideal 目錄重命名爲 ideal2

root@ubuntu:~# mv /root/demo /root/demo2
root@ubuntu:~# mv /root/ideal /root/ideal2

(13) 文件間建立鏈接(ln)

基本用法:ln [選項] 源文件 目標文件

選項 含義
-s 如果目標文件已經存在,則刪除目標文件後再建立鏈接文件
-f 如果目標文件已經存在,則刪除目標文件後再建立鏈接文件

Linux 鏈接概念

Linux 鏈接分兩種,一種被稱爲硬鏈接(Hard Link),另一種被稱爲符號鏈接(Symbolic Link)。默認情況下,ln 命令產生硬鏈接。

硬連接

硬連接指通過索引節點來進行連接。在 Linux 的文件系統中,保存在磁盤分區中的文件不管是什麼類型都給它分配一個編號,稱爲索引節點號(Inode Index)。在 Linux 中,多個文件名指向同一索引節點是存在的。比如:A 是 B 的硬鏈接(A 和 B 都是文件名),則 A 的目錄項中的 inode 節點號與 B 的目錄項中的 inode 節點號相同,即一個 inode 節點對應兩個不同的文件名,兩個文件名指向同一個文件,A 和 B 對文件系統來說是完全平等的。刪除其中任何一個都不會影響另外一個的訪問。

硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因爲對應該目錄的索引節點有一個以上的連接。只刪除一個連接並不影響索引節點本身和其它的連接,只有當最後一個連接被刪除後,文件的數據塊及目錄的連接纔會被釋放。也就是說,文件真正刪除的條件是與之相關的所有硬連接文件均被刪除。

軟連接

另外一種連接稱之爲符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似於 Windows 的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的軟鏈接(A 和 B 都是文件名),A 的目錄項中的 inode 節點號與 B 的目錄項中的 inode 節點號不相同,A 和 B 指向的是兩個不同的 inode,繼而指向兩塊不同的數據塊。但是 A 的數據塊中存放的只是 B 的路徑名(可以根據這個找到 B 的目錄項)。A 和 B 之間是“主從”關係,如果 B 被刪除了,A 仍然存在(因爲兩個是不同的文件),但指向的是一個無效的鏈接。

(五) 文本操作(僅查看)

(1) 顯示文本文件內容(cat)

使用 cat 命令可以顯示文本文件的內容,其後可以直接跟文件名

同時 cat 也可以把幾個文件內容附加到另一個文件中,即連接合並文件

基本用法:cat [參數] [文件]

選項 含義
-A 顯示所有的內容,包括特殊字符
-E 列出每行結尾的回車符 $;
-n 對輸出的所有行進行編號;
-s 當遇到有連續 2 行以上的空白行時,就替換爲 1 行的空白行。

選個長度小點的演示,別的大家親手試一試就好了

root@ubuntu:/etc# cat -n issue
     1	Ubuntu 18.04.1 LTS \n \l
     2	

補充:cat 是從第一行開始顯示,而有一個命令 tac 則是從最後一行開始顯示

(2) 分頁顯示文本文件的內容(more)

上面的演示是一個很短的文件,但是由於 cat 命令是直接將內容一次性輸出到屏幕上,但是如果內容過多,查看起來就會非常的麻煩,因爲信息會在屏幕上快速的滾動,對於長篇的文本內容,更推薦使用more命令來查看,同時它在下面會以百分比的形式告訴你已經讀了多少

基本用法:more [選項] 文件名

除了特殊需要,一般也不加什麼參數,下面的大概瞭解下就好了

選項 含義
-f 計算行數時,以實際的行數,而不是自動換行過後的行數。
-p 不以捲動的方式顯示每一頁,而是先清除屏幕後再顯示內容。
-c 跟 -p 選項相似,不同的是先顯示內容再清除其他舊資料。
-s 當遇到有連續兩行以上的空白行時,就替換爲一行的空白行。
-u 不顯示下引號(根據環境變量 TERM 指定的終端而有所不同)。
+n 從第 n 行開始顯示文件內容,n 代表數字。
-n 一次顯示的行數,n 代表數字。

more 命令的執行會打開一個可以交互的界面,所以瞭解下面一些交互的指令還是必要的

交互指令 功能
h 或 ? 顯示 more 命令交互命令幫助。
q 或 Q 退出 more。
v 在當前行啓動一個編輯器。
:f 顯示當前文件的文件名和行號。
!<命令> 或 :!<命令> 在子Shell中執行指定命令。
回車鍵 向下移動一行。
空格鍵 向下移動一頁。
Ctrl+l 刷新屏幕。
= 顯示當前行的行號
轉到上一次搜索開始的地方
Ctrf+f 向下滾動一頁。
. 重複上次輸入的命令
/ 字符串 搜索指定的字符串
d 向下移動半頁
b 向上移動一頁

(3) 顯示文本文件前/後 N 行(head/tail)

這個命令的應用場景就是當你不想要看完整個文檔,直線看前N行,就可以使用它

基本用法:head [選項] 文件名 以及 tail [選項] 文件名

選項 含義
-n K 這裏的 K 表示行數,該選項用來顯示文件前 K 行的內容;
-c K 這裏的 K 表示字節數,該選項用來顯示文件前 K 個字節的內容
-v 顯示文件名

(2) 和 (3) 都比較簡單,就不演示了

(4) 顯示(less)

less命令和more命令功能基本差不多,也是分屏的顯示方式,同時支持 more 命令的所有參數,同時還多了一些選項,例如支持使用上下鍵翻頁,總的來說,它更加的全面以及完善

基本用法:less [選項] 文件名

選項暫時用的也不多,暫時擱着,以後有需要查就是了,下面的交互指令,瞭解一下就好了,把常用的例如上下頁這種記住就可以了

交互指令 功能
/字符串 向下搜索“字符串”的功能。
?字符串 向上搜索“字符串”的功能。
n 重複*前一個搜索(與 / 成 ? 有關)。
N 反向重複前一個搜索(與 / 或 ? 有關)。
b 向上移動一頁。
d 向下移動半頁。
h 或 H 顯示幫助界面。
q 或 Q 退出 less 命令。
y 向上移動一行。
空格鍵 向下移動一頁。
回車鍵 向下移動一行。
【PgDn】鍵 向下移動一頁。
【PgUp】鍵 向上移動一頁。
Ctrl+f 向下移動一頁。
Ctrl+b 向上移動一頁。
Ctrl+d 向下移動一頁。
Ctrl+u 向上移動半頁。
j 向下移動一行。
k 向上移動一行。
G 移動至最後一行。
g 移動到第一行。
ZZ 退出 less 命令。
v 使用配置的編輯器編輯當前文件。
[ 移動到本文檔的上一個節點。
] 移動到本文檔的下一個節點。
p 移動到同級的上一個節點。
u 向上移動半頁。

(5) 總結

這幾個查看文本的命令用幾句話總結一下

  • cat 從第一行開始顯示內容,特點是一次性加載完
  • tac 從最後一行開始顯示內容,特點是一次性加載完
  • more 一頁一頁的顯示文件內容
  • less 與 more 類似,可以向前翻頁,更加完善
  • head 只顯示前 N 行
  • tail 只顯示後 N 行

(六) Linux 打包和壓縮

在網絡上,人們自然是更傾向於傳輸經過壓縮後的文件,由於其體積小,所以傳輸時間得以縮短,下面我們就來了解一下 Linux 針對文件壓縮等的概念

(1) 區分打包和壓縮的概念

在 Windows 下,我們通常會借用一些第三方的壓縮軟件,例如 WinRAR Bandizip 進行文件的壓縮,常見的格式 也就是 .rar .zip .7z 等,而同樣 Linux 也有着它壓縮的方式與一些格式,在 Linux 中,在壓縮之前,通常還有一個打包的操作,我們首先來了解一下這兩個概念

① 打包,也稱爲歸檔,是將一個文件或者目錄的集合存儲在一個文件中,打包後的文件沒有經過壓縮,因此它佔用的空間是其中所有文件目錄的總和

  • 說白了,就是把一些文件放在一起變成一個包,方面存儲和和傳輸

② 壓縮的原理就是將文件中相同的信息用一個字符代替,文件體積就能變小,壓縮對於文本或者數據類文件有比較明顯的作用

  • 就比如,文本中總出現,理想二旬不止 這幾個字,那麼這些都會被一個代碼表示,然後寫入詞典文件

下面看一下具體的用法

(2) 打包/解打包命令(tar )

A:打包

基本用法:tar [選項] 源文件或目錄

同時由於打包(歸檔)後的包文件都是 .tar 結尾所以,又叫做 tar 包

選項 含義
-c 將多個文件或目錄進行打包。
-A 追加 tar 文件到歸檔文件。
-f 包名 指定包的文件名。包的擴展名是用來給管理員識別格式的,所以一定要正確指定擴展名;
-v 顯示打包文件過程;

注意哈,使用 tar 命令指定選項時可以不在選項前面輸入“-”,輸不輸入都一樣的

演示下,首先 root 目錄下有 demo.txt 文件以及 test 目錄,這三種情況就分別代表了,打包文件、目錄,以及同事打包多者

root@ubuntu:~# tar -cvf demo.txt.tar demo.txt
demo.txt

root@ubuntu:~# tar -cvf test.tar test
test/

root@ubuntu:~# tar -cvf demo-test.tar demo.txt test
demo.txt
test/

查看一下結果

root@ubuntu:~# ls
demo-test.tar  demo.txt  demo.txt.tar  test  test.tar

如果想要進而對其壓縮,就可以執行下面的命令,暫時先看看,別急,這種方式有點麻煩,能更加優化的

這樣 文件就加上了 .gz 後綴了,這是一種壓縮格式,後面再細說

root@ubuntu:~# gzip demo.txt.tar
root@ubuntu:~# ls
demo-test.tar  demo.txt  demo.txt.tar.gz  test  test.tar

B:解打包

基本用法:tar [選項] 壓縮包

選項 含義
-x 對 tar 包做解打包操作。
-f 指定要解壓的 tar 包的包名。
-t 只查看 tar 包中有哪些文件或目錄,不對 tar 包做解打包操作。
-C 目錄 指定解打包位置。
-v 顯示解打包的具體過程。

其實與打包區別是不大的,只不過把 -cvf 替換成了 -xvf

root@ubuntu:~# tar -xvf demo.txt.tar

前者是默認解壓在當前目錄的,如果想要指定目錄解壓,需要使用 -C 選項,例如下面解壓到 usr 目錄下

root@ubuntu:~# tar -xvf demo.txt.tar -C /usr

如果想看一下包中有哪些文件,可以 將 -x 替換成 -t 選項

root@ubuntu:~# tar -tvf test.tar

C:tar 命令直接做打包後壓縮/解壓縮

上面雖然演示了一下打包後,再進行壓縮的一個例子,但是這也太麻煩了吧,打包壓縮,需要先打包成 .tar 再壓縮成 .tar.gz 別急阿,前面演示,是爲了讓大家分的更清楚一點,自然是有着更加方便的操作方式,下面來看一下

基本用法:tar [選項] 壓縮包 源文件或目錄

常用的有兩種:

  • -z:壓縮和解壓縮 “.tar.gz” 格式
  • -j:壓縮和解壓縮 ".tar.bz2"格式

① .tar.gz 方式

  • 打包壓縮
root@ubuntu:~# tar -zcvf demo.txt.tar.gz demo.txt
  • 解壓
root@ubuntu:~# tar -zxvf demo.txt.tar.gz

② -jcvf 方式

這個的區別就是把上面的 -zcvf 換成了 -jcvf 也就是 -z 變成了 -j

  • 打包壓縮
root@ubuntu:~# tar -jcvf demo.txt.tar.gz demo.txt
  • 解壓
root@ubuntu:~# tar -jxvf demo.txt.tar.gz

同時上面說的, -C用於指定解壓位置、-t 用於查看壓縮包內容,也是一樣的哈

總結:一般來說,.tar.gz.tar.bz2 是比較常用的,後面這兩種直接打包壓縮 解壓縮的方式要記好了

(七) 總結

這一篇文章,也是除了安裝,以及配置網絡,環境以外,關於 Linux 的第一篇,這一篇主要講解了關於 Linux 的常用命令,當然了,都是一些比較基礎的,原本 vi/vim 也想放到這裏,但是現在已經1w字左右了,篇幅太長,給大家查閱起來也不是很方便,就挪到下一篇說,雖然說我暫時沒想着把 Linux 學到多麼深的一個層次,不過即使作爲基礎認識,還有一些例如用戶、還有權限等等的問題也沒有說到,後面我會再出幾篇文章說一下

寫這篇文章,主要原因還是因爲自己欠缺這方面的知識,順便當總結,也同樣分享給大家一起交流,當然啦,這篇文章都是一些入門的基礎操作,沒什麼難度可言,也渴望與大家交流

感謝大家的支持,謝謝!

(八) 結尾

如果文章中有什麼不足,歡迎大家留言交流,感謝朋友們的支持!

如果能幫到你的話,那就來關注我吧!如果您更喜歡微信文章的閱讀方式,可以關注我的公衆號

在這裏的我們素不相識,卻都在爲了自己的夢而努力 ❤

一個堅持推送原創開發技術文章的公衆號:理想二旬不止

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章