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

開篇總想絮叨兩句

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

(一) 強大的 Shell

(1) terminal

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

A:基本定義

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

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

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

B:terminal 和 Shell 的關係

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

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

隨意將 terminal 簡單的理解成一個 「工具」 的概念也是能夠的windows

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

(2) Shell

A:基本定義

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

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 學到多麼深的一個層次,不過即便做爲基礎認識,還有一些例如用戶、還有權限等等的問題也沒有說到,後面我會再出幾篇文章說一下

寫這篇文章,主要緣由仍是由於本身欠缺這方面的知識,順便當總結,也一樣分享給你們一塊兒交流,固然啦,這篇文章都是一些入門的基礎操做,沒什麼難度可言,也渴望與你們交流

感謝你們的支持,謝謝!

(八) 結尾

若是文章中有什麼不足,歡迎你們留言交流,感謝朋友們的支持!

若是能幫到你的話,那就來關注我吧!若是您更喜歡微信文章的閱讀方式,能夠關注個人公衆號

在這裏的咱們素不相識,卻都在爲了本身的夢而努力 ❤

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

相關文章
相關標籤/搜索