1. 程式人生 > >Linux學習筆記+Vim用法簡介

Linux學習筆記+Vim用法簡介

學習Linux之前,我們先來簡單的認識一下作業系統。

一 從認識作業系統開始

1.1 作業系統簡介

我通過以下四點介紹什麼作業系統:

  • 作業系統(Operation System,簡稱OS)是管理計算機硬體與軟體資源的程式,是計算機系統的核心與基石;
  • 作業系統本質上是執行在計算機上的軟體程式
  • 為使用者提供一個與系統互動的操作介面
  • 作業系統分核心與外殼(我們可以把外殼理解成圍繞著核心的應用程式,而核心就是能操作硬體的程式)。

 

1.2 作業系統簡單分類

1.Windows: 目前最流行的個人桌面作業系統 ,不做多的介紹,大家都清楚。

2.Unix 最早的多使用者、多工作業系統 .按照作業系統的分類,屬於分時作業系統。Unix 大多被用在伺服器、工作站,現在也有用在個人計算機上。它在建立網際網路、計算機網路或客戶端/伺服器模型方面發揮著非常重要的作用。 

3.Linux: Linux是一套免費使用和自由傳播的類Unix作業系統.Linux存在著許多不同的Linux版本,但它們都使用了 Linux核心。Linux可安裝在各種計算機硬體裝置中,比如手機、平板電腦、路由器、視訊遊戲控制檯、臺式計算機、大型機和超級計算機。嚴格來講,Linux這個詞本身只表示Linux核心,但實際上人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU 工程各種工具和資料庫的作業系統。

 

二 初探Linux

2.1 Linux簡介

我們上面已經介紹到了Linux,我們這裡只強調三點。

  • 類Unix系統: Linux是一種自由、開放原始碼的類似Unix的作業系統
  • Linux核心: 嚴格來說,Linux這個詞本身只表示Linux核心
  • Linux之父: 一個程式設計領域的傳奇式人物。他是Linux核心的最早作者,隨後發起了這個開源專案,擔任Linux核心的首要架構師與專案協調者,是當今世界最著名的電腦程式設計師、黑客之一。他還發起了Git這個開源專案,併為主要的開發者。

 

2.2 Linux誕生簡介

  • 1991年,芬蘭的業餘計算機愛好者Linus Torvalds編寫了一款類似Minix的系統(基於微核心架構的類Unix作業系統)被ftp管理員命名為Linux 加入到自由軟體基金的GNU計劃中;
  • Linux以一隻可愛的企鵝作為標誌,象徵著敢作敢為、熱愛生活。

2.3 Linux的分類

Linux根據原生程度,分為兩種:

  1. 核心版本: Linux不是一個作業系統,嚴格來講,Linux只是一個作業系統中的核心。核心是什麼?核心建立了計算機軟體與硬體之間通訊的平臺,核心提供系統服務,比如檔案管理、虛擬記憶體、裝置I/O等;
  2. 發行版本: 一些組織或公司在核心版基礎上進行二次開發而重新發行的版本。Linux發行版本有很多種(ubuntu和CentOS用的都很多,初學建議選擇CentOS),如下圖所示: 

三 Linux檔案系統概覽

3.1 Linux檔案系統簡介

在Linux作業系統中,所有被作業系統管理的資源,例如網路介面卡、磁碟驅動器、印表機、輸入輸出裝置、普通檔案或是目錄都被看作是一個檔案。

也就是說在LINUX系統中有一個重要的概念:一切都是檔案。其實這是UNIX哲學的一個體現,而Linux是重寫UNIX而來,所以這個概念也就傳承了下來。在UNIX系統中,把一切資源都看作是檔案,包括硬體裝置。UNIX系統把每個硬體都看成是一個檔案,通常稱為裝置檔案,這樣使用者就可以用讀寫檔案的方式實現對硬體的訪問。

3.2 檔案型別與目錄結構

Linux支援5種檔案型別  

Linux的目錄結構如下:

Linux檔案系統的結構層次鮮明,就像一棵倒立的樹,最頂層是其根目錄: 

常見目錄說明:

  • /bin 存放二進位制可執行檔案(ls,cat,mkdir等),常用命令一般都在這裡;
  • /etc 存放系統管理和配置檔案;
  • /home 存放所有使用者檔案的根目錄,是使用者主目錄的基點,比如使用者user的主目錄就是/home/user,可以用~user表示;
  • /usr  用於存放系統應用程式;
  • /opt 額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這裡;
  • /proc 虛擬檔案系統目錄,是系統記憶體的對映。可直接訪問這個目錄來獲取系統資訊;
  • /root 超級使用者(系統管理員)的主目錄(特權階級^o^);
  • /sbin: 存放二進位制可執行檔案,只有root才能訪問。這裡存放的是系統管理員使用的系統級別的管理命令和程式。如ifconfig等;
  • /dev 用於存放裝置檔案;
  • /mnt 系統管理員安裝臨時檔案系統的安裝點,系統提供這個目錄是讓使用者臨時掛載其他的檔案系統;
  • /boot 存放用於系統引導時使用的各種檔案;
  • /lib  存放著和系統執行相關的庫檔案 ;
  • /tmp 用於存放各種臨時檔案,是公用的臨時檔案儲存點;
  • /var 用於存放執行時需要改變資料的檔案,也是某些大檔案的溢位區,比方說各種服務的日誌檔案(系統啟動日誌等。)等;
  • /lost+found 這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows下叫什麼.chk)就在這裡。

四 Linux基本命令

下面只是給出了一些比較常用的命令。推薦一個Linux命令快查網站,非常不錯,大家如果遺忘某些命令或者對某些命令不理解都可以在這裡得到解決。

Linux命令大全:http://man.linuxde.net/

4.1 目錄切換命令

  • cd usr 切換到該目錄下usr目錄
  • cd ..(或cd../): 切換到上一層目錄
  • cd / 切換到系統根目錄
  • cd ~ 切換到使用者主目錄
  • cd - 切換到上一個所在目錄

4.2 目錄的操作命令(增刪改查)

  1. mkdir 目錄名稱: 增加目錄
  2. ls或者ll(ll是ls -l的縮寫,ll命令以看到該目錄下的所有目錄和檔案的詳細資訊):檢視目錄資訊
  3. find 目錄 引數: 尋找目錄(查)

示例:

    • 列出當前目錄及子目錄下所有檔案和資料夾: find .
    • 在/home目錄下查詢以.txt結尾的檔名:find /home -name "*.txt"
    • 同上,但忽略大小寫: find /home -iname "*.txt"
    • 當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案:find . \( -name "*.txt" -o -name "*.pdf" \)或find . -name "*.txt" -o -name "*.pdf"
  1. mv 目錄名稱 新目錄名稱: 修改目錄的名稱(改)

注意:mv的語法不僅可以對目錄進行重新命名而且也可以對各種檔案,壓縮包等進行 重新命名的操作。mv命令用來對檔案或目錄重新命名,或者將檔案從一個目錄移到另一個目錄中。後面會介紹到mv命令的另一個用法。

  1. mv 目錄名稱 目錄的新位置: 移動目錄的位置---剪下(改)

注意:mv語法不僅可以對目錄進行剪下操作,對檔案和壓縮包等都可執行剪下操作。另外mv與cp的結果不同,mv好像檔案“搬家”,檔案個數並未增加。而cp對檔案進行復制,檔案個數增加了。

  1. cp -r 目錄名稱 目錄拷貝的目標位置: 拷貝目錄(改),-r代表遞迴拷貝

注意:cp命令不僅可以拷貝目錄還可以拷貝檔案,壓縮包等,拷貝檔案和壓縮包時不 用寫-r遞迴

  1. rm [-rf] 目錄: 刪除目錄(刪)

注意:rm不僅可以刪除目錄,也可以刪除其他檔案或壓縮包,為了增強大家的記憶, 無論刪除任何目錄或檔案,都直接使用rm -rf 目錄/檔案/壓縮包

4.3 檔案的操作命令(增刪改查)

  1. touch 檔名稱: 檔案的建立(增)
  2. cat/more/less/tail 檔名稱 檔案的檢視(查)
    • cat 只能顯示最後一屏內容
    • more 可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出檢視
    • less 可以使用鍵盤上的PgUp和PgDn向上 和向下翻頁,q結束檢視
    • tail-10  檢視檔案的後10行,Ctrl+C結束

注意:命令 tail -f 檔案 可以對某個檔案進行動態監控,例如tomcat的日誌檔案, 會隨著程式的執行,日誌會變化,可以使用tail -f catalina-2016-11-11.log 監控 文 件的變化

  1. vim 檔案: 修改檔案的內容(改)

vim編輯器是Linux中的強大元件,是vi編輯器的加強版,vim編輯器的命令和快捷方式有很多,但此處不一一闡述,大家也無需研究的很透徹,使用vim編輯修改檔案的方式基本會使用就可以了。

在實際開發中,使用vim編輯器主要作用就是修改配置檔案,下面是一般步驟:

vim 檔案------>進入檔案----->命令模式------>按i進入編輯模式----->編輯檔案 ------->按Esc進入底行模式----->輸入:wq/q! (輸入wq代表寫入內容並退出,即儲存;輸入q!代表強制退出不儲存。)

  1. rm -rf 檔案: 刪除檔案(刪)

同目錄刪除:熟記 rm -rf 檔案 即可

4.4 壓縮檔案的操作命令

1)打包並壓縮檔案:

Linux中的打包檔案一般是以.tar結尾的,壓縮的命令一般是以.gz結尾的。

而一般情況下打包和壓縮是一起進行的,打包並壓縮後的檔案的字尾名一般.tar.gz。 命令:tar -zcvf 打包壓縮後的檔名 要打包壓縮的檔案 其中:

  • z:呼叫gzip壓縮命令進行壓縮
  • c:打包檔案
  • v:顯示執行過程
  • f:指定檔名

比如:加入test目錄下有三個檔案分別是 :aaa.txt bbb.txt ccc.txt,如果我們要打包test目錄並指定壓縮後的壓縮包名稱為test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/

2)解壓壓縮包:

命令:tar [-xvf] 壓縮檔案

其中:x:代表解壓

示例:

1 將/test下的test.tar.gz解壓到當前目錄下可以使用命令:tar -xvf test.tar.gz

2 將/test下的test.tar.gz解壓到根目錄/usr下:tar -xvf xxx.tar.gz -C /usr(- C代表指定解壓的位置)

4.5 Linux的許可權命令

作業系統中每個檔案都擁有特定的許可權、所屬使用者和所屬組。許可權是作業系統用來限制資源訪問的機制,在Linux中許可權一般分為讀(readable)、寫(writable)和執行(excutable),分為三組。分別對應檔案的屬主(owner),屬組(group)和其他使用者(other),通過這樣的機制來限制哪些使用者、哪些組可以對特定的檔案進行什麼樣的操作。通過 ls -l 命令我們可以 檢視某個目錄下的檔案或目錄的許可權

示例:在隨意某個目錄下ls -l

 

第一列的內容的資訊解釋如下:

 

下面將詳細講解檔案的型別、Linux中許可權以及檔案有所有者、所在組、其它組具體是什麼?

檔案的型別:

  • d: 代表目錄
  • -: 代表檔案
  • l: 代表連結(可以認為是window中的快捷方式)

Linux中許可權分為以下幾種:

  • r:代表權限是可讀,r也可以用數字4表示
  • w:代表權限是可寫,w也可以用數字2表示
  • x:代表權限是可執行,x也可以用數字1表示

檔案和目錄許可權的區別:

對檔案和目錄而言,讀寫執行表示不同的意義。

對於檔案:

許可權名稱

可執行操作

r

可以使用cat檢視檔案的內容

w

可以修改檔案的內容

x

可以將其執行為二進位制檔案

對於目錄:

許可權名稱

可執行操作

r

可以檢視目錄下列表

w

可以建立和刪除目錄下檔案

x

可以使用cd進入目錄

在linux中的每個使用者必須屬於一個組,不能獨立於組外。在linux中每個檔案有所有者、所在組、其它組的概念。

  • 所有者

一般為檔案的建立者,誰建立了該檔案,就天然的成為該檔案的所有者,用ls ‐ahl命令可以看到檔案的所有者 也可以使用chown 使用者名稱 檔名來修改檔案的所有者 。

  • 檔案所在組

當某個使用者建立了一個檔案後,這個檔案的所在組就是該使用者所在的組 用ls ‐ahl命令可以看到檔案的所有組 也可以使用chgrp 組名 檔名來修改檔案所在的組。

  • 其它組

除開檔案的所有者和所在組的使用者外,系統的其它使用者都是檔案的其它組

我們再來看看如何修改檔案/目錄的許可權。

修改檔案/目錄的許可權的命令:chmod

示例:修改/test下的aaa.txt的許可權為屬主有全部許可權,屬主所在的組有讀寫許可權, 其他使用者只有讀的許可權

chmod u=rwx,g=rw,o=r aaa.txt

 

上述示例還可以使用數字表示:

chmod 764 aaa.txt

補充一個比較常用的東西:

假如我們裝了一個zookeeper,我們每次開機到要求其自動啟動該怎麼辦?

  1. 新建一個指令碼zookeeper
  2. 為新建的指令碼zookeeper新增可執行許可權,命令是:chmod +x zookeeper
  3. 把zookeeper這個指令碼新增到開機啟動項裡面,命令是:chkconfig --add zookeeper
  4. 如果想看看是否新增成功,命令是:chkconfig --list

4.6 Linux 使用者管理

Linux系統是一個多使用者多工的分時作業系統,任何一個要使用系統資源的使用者,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。

使用者的賬號一方面可以幫助系統管理員對使用系統的使用者進行跟蹤,並控制他們對系統資源的訪問;另一方面也可以幫助使用者組織檔案,併為使用者提供安全性保護。

Linux使用者管理相關命令:

  • useradd 選項 使用者名稱:新增使用者賬號
  • userdel 選項 使用者名稱:刪除使用者帳號
  • usermod 選項 使用者名稱:修改帳號
  • passwd 使用者名稱:更改或建立使用者的密碼
  • passwd -S 使用者名稱 :顯示使用者賬號密碼資訊
  • passwd -d 使用者名稱: 清除使用者密碼

useradd命令用於Linux中建立的新的系統使用者。useradd可用來建立使用者帳號。帳號建好之後,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是儲存在/etc/passwd文字檔案中。

passwd命令用於設定使用者的認證資訊,包括使用者密碼、密碼過期時間等。系統管理者則能用它管理系統使用者的密碼。只有管理者可以指定使用者名稱稱,一般使用者只能變更自己的密碼。

4.7 Linux系統使用者組的管理

每個使用者都有一個使用者組,系統可以對一個使用者組中的所有使用者進行集中管理。不同Linux 系統對使用者組的規定有所不同,如Linux下的使用者屬於與它同名的使用者組,這個使用者組在建立使用者時同時建立。

使用者組的管理涉及使用者組的新增、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group檔案的更新。

Linux系統使用者組的管理相關命令:

  • groupadd 選項 使用者組 :增加一個新的使用者組
  • groupdel 使用者組:要刪除一個已有的使用者組
  • groupmod 選項 使用者組 : 修改使用者組的屬性

4.8 其他常用命令

  • pwd 顯示當前所在位置
  • grep 要搜尋的字串 要搜尋的檔案 --color 搜尋命令,--color代表高亮顯示
  • ps -ef/ps aux 這兩個命令都是檢視當前系統正在執行程序,兩者的區別是展示格式不同。如果想要檢視特定的程序可以使用這樣的格式:ps aux|grep redis (檢視包括redis字串的程序)

注意:如果直接用ps((Process Status))命令,會顯示所有程序的狀態,通常結合grep命令檢視某程序的狀態。

  • kill -9 程序的pid 殺死程序(-9 表示強制終止。)

先用ps查詢程序,然後用kill殺掉

  • 網路通訊命令:
    • 檢視當前系統的網絡卡資訊:ifconfig
    • 檢視與某臺機器的連線情況:ping
    • 檢視當前系統的埠使用:netstat -an
  • shutdown shutdown -h now: 指定現在立即關機;shutdown +5 "System will shutdown after 5 minutes":指定5分鐘後關機,同時送出警告資訊給登入使用者。
  • reboot reboot 重開機。reboot -w 做個重開機的模擬(只有紀錄並不會真的重開機)。

VI編輯器

相信沒有用過Linux的同學在看一些段子的時候都會看到過兩個編輯器:

  • vim
  • emacs

下面我們學習如何簡單使用vi。vi 是 “Visual interface” 的簡稱,它可以執行輸出、刪除、查詢、替換、塊操作等眾多文字操作,而且使用者可以根據自己的需要對其進行定製,這是其他編輯程式所沒有的

  • vi可以看做成我們Windows下的記事本
  • vim 即 Vi IMproved,vi 克隆版本之一

使用Vi來編輯檔案:

 

Vi有三種模式:

VI有三種基本的工作模式:

  • 指令模式
  • 文字輸入模式
  • 行末模式

他們的相互關係如下:

  • 指令模式(Command Mode)輸入a,i,o進入文字輸入模式(Input Mode)。
  • 文字輸入模式(Input Mode)下按ESC進入指令模式(Command Mode)
  • 指令模式(Command Mode)下輸入”:”進入行末模式(Last Line Mode)

普通模式

游標移動

移動游標

為了不影響檔案內容,必須在普通模式(按兩次 Esc 鍵)下移動游標。使用下表中的命令每次可以移動一個字元:

命令

描述

k

向上移動游標(移動一行)

j

向下移動游標(移動一行)

h

向左移動游標(移動一個字元)

l

向右移動游標(移動一個字元)


兩點提醒:

  • vi 是區分大小寫的,輸入命令時注意不要鎖定大寫。
  • 可以在命令前邊新增一個數字作為字首,例如,2j 將游標向下移動兩行。


當然,還有很多其他命令來移動游標,不過記住,一定要在普通模式(按兩次 Esc 鍵)下。
 

用來移動游標的命令

命令

說明

0 或 |

將游標定位在一行的開頭。

$

將游標定位在一行的末尾。

w

定位到下一個單詞。

b

定位到上一個單詞。

(

定位到一句話的開頭,句子是以 ! . ? 三種符號來界定的。

)

定位到一句話的結尾。

{

移動到段落開頭。&&&&&&

}

移動到段落結束。&&&&&&&&&

[[

回到段落的開頭處。&&&&&&&&&&

]]

向前移到下一個段落的開頭處。&&&&&&&&&&

n|

移動到第 n 列(當前行)。

1G

移動到檔案第一行。

G

移動到檔案最後一行。

nG

移動到檔案第 n 行。

:n

移動到檔案第 n 行。

H

移動到螢幕頂部。

nH

移動到距離螢幕頂部第 n 行的位置。

M

移動到螢幕中間。

L

移動到螢幕底部。

nL

移動到距離螢幕底部第 n 行的位置。

:x

x 是一個數字,表示移動到行號為 x 的行。

 

刪除字元

下面的命令,可以刪除檔案中的字元或行:

命令

說明

x

刪除當前游標下的字元

X

刪除游標前面的字元

dw

刪除從當前游標到單詞結尾的字元

d^

刪除從當前游標到行首的字元

d$

刪除從當前游標到行尾的字元

D

刪除從當前游標到行尾的字元

dd

刪除當前游標所在的行


可以在命令前面新增一個數字字首,表示重複操作的次數,例如,2x  表示連續兩次刪除游標下的字元,2dd 表示連續兩次刪除游標所在的行。

建議各位讀者多加練習上面的命令,再進一步深入學習。

修改文字

如果你希望對字元、單詞或行進行修改,可以使用下面的命令:

命令

描述

cc

刪除當前行,並進入編輯模式。

cw

刪除當前字(單詞),並進入編輯模式。

r

替換當前游標下的字元。

R

從當前游標開始替換字元,按 Esc 鍵退出。

s

用輸入的字元替換當前字元,並進入編輯模式。

S

用輸入的文字替換當前行,並進入編輯模式。

 

貼上複製

vi 中的複製貼上命令:

命令

描述

yy

複製當前行

nyy

複製n行

yw

複製一個字(單詞)

nyw

複製n行

p

將複製的文字貼上到游標後面

P

將複製的文字貼上到游標前面

 

相關快捷操作

  1. u  //撤銷
  2. .  //重複上次操作

 

插入模式

在 Normal 模式下輸入插入命令 i、 a 、 o進入insert模式。使用者輸入的任何字元都被vim當做檔案內容儲存起來,並將其顯示在螢幕上。

  • 在文字輸入過程中,若想回到Normal模式下,按 Esc 鍵即可。

命令列模式

Normal 模式下,使用者按冒號 :即可進入 Command 模式,此時 vim 會在顯示視窗的最後一行 (螢幕的最後一行) 顯示一個 “:” 作為 Command 模式的提示符,等待輸入命令。

  • :w 儲存當前編輯檔案,但並不退出
  • :w newfile 存為另外一個名為 “newfile” 的檔案
  • :wq 用於存檔退出Vi
  • :q! 用於不存檔退出Vi
  • :q用於直接退出Vi (未做修改)

設定Vi環境:

  • :set autoindent 縮排,常用於程式的編寫
  • :set noautoindent 取消縮排
  • :set number 在編輯檔案時顯示行號
  • :set nonumber 不顯示行號
  • :set tabstop=value 設定顯示製表符的空格字元個數
  • :set 顯示設定的所有選項
  • :set all 顯示所有可以設定的選項

 

參考:

https://zh.wikibooks.org/zh-hans/Vim/%E4%B8%89%E7%A7%8D%E6%A8%A1%E5%BC%8F

https://github.com/Snailclimb/JavaGuide/blob/master/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%90%8E%E7%AB%AF%E7%A8%8B%E5%BA%8F%E5%91%98%E5%BF%85%E5%A4%87%E7%9A%84Linux%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md

http://c.biancheng.net/cpp/html/2735.html