精彩內容推薦
- 一套java架構師學習資源,等你拿
- java實戰練習專案教程
- 你所需要的大資料視訊教程
- java全套學習視訊教程及原始碼
- 微服務資源springboot、springcloud、docker、dubbo專案實戰等傾心分享
shell簡介
1.1 shell家族
**shell:**命令直譯器,根據輸入的命令執行相應命令。
察看當前系統下有哪些shell:
cat /etc/shells
複製程式碼
察看當前系統正在使用的shell
echo $SHELL
複製程式碼
常見shell:
/bin/sh (已經被 /bin/bash 所取代)
/bin/bash (就是 Linux 預設的 shell)
/bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,相容於 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已經被 /bin/tcsh 所取代)
/bin/zsh (基於 ksh 發展出來的,功能更強大的 shell)
複製程式碼
1.2 bash
bash 是一個為GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again SHell — 這是關於Bourne shell(sh)的一個雙關語(Bourne again / born again) bash 是 許 多 Linux 平 臺 的 內 定 Shell, 事 實 上, 還 有 許 多 傳 統 UNIX 上 用 的 Shell, 像 tcsh、csh、ash、bsh、ksh等等,Shell Script大致都類同,當您學會一種Shell以後,其 它的Shell會很快就上手,大多數的時候,一個Shell Script通常可以在很多種Shell上使用。
bash是大多數Linux系統以及Mac OS X v10.4預設的shell,它能執行於大多數Unix風格 的作業系統之上,甚至被移植到了Microsoft Windows上的Cygwin系統中,以實現windows的POSIX虛擬介面。此外,它也被DJGPP專案移植到了MS-DOS上。
1.3 命令和路徑補齊
在bash下敲命令時,Tab鍵可以補全已經敲了一部分的檔名和目錄名。如果是Ubuntu 系統,系統預設啟用了bash completion,還可以補全命令的某些引數、Makefile目標等 等。如果是Debian系統,可以用以下命令啟用bash completion:
$ source /etc/bash_completion
複製程式碼
建議將這一行加入∼/.bashrc
啟動指令碼中。比如使用sudo後面接命令,如果沒有bash completion則只有sudo可以補全,後面的命令不能補全。如果啟用了bash completion,則 後面的命令,包括命令的某些引數(比如aptitude命令的install)都可以補全了。
比如在主目錄下要列出桌面目錄的內容,輸入(不回車)
$ ls De
複製程式碼
然後敲Tab鍵,如果以De開頭的檔案或資料夾只有Desktop一個,就自動補全為
$ ls Desktop
複製程式碼
否則,再敲一次Tab鍵,將會把所有以De開頭的檔案或資料夾列在下面供你選擇(在這裡 我們手動建立另外一個以De開頭的檔案)
$ touch Death
$ ls De
Death Desktop/
複製程式碼
你可以再補敲一個s再Tab,這次Desktop就會補全到命令後面了。有 的 人 是 從 DOS 時 代 過 來 的, 留 下 一 個 很 不 好 的 習 慣 就 是 在 找 一 個 文 件 時 反 復 地cd、ls、cd、ls
等找到了要找的檔案時再想回到先前的目錄,已經不記得先前是 從哪個目錄轉到這裡來的了。
我們從上面可以看出,Tab補全本身就具備了ls的功能,上面的Tab補全相當於ls -Fd De*
命令。所以我們完全不必反覆地cd到別的目錄然後ls去找檔案,多按幾次Tab就可以一條 命令完成了,這樣的好處是我們的當前目錄不用變,不需要找完了檔案再cd回來,同時省去 了大量的按鍵次數。更重要的是,自動補全同時兼具了檢查拼寫錯誤的功能,如果前面幾個 字母拼寫錯了,就補全不出東西來,使用者就知道拼寫錯了,如果前面幾個字母沒有拼寫錯, 那麼由系統補全出來的檔名肯定也不會有拼寫錯誤,避免了使用者在敲很長的檔名時易犯 的拼寫錯誤。
1.4 歷史記錄
history
複製程式碼
歷史記錄是另外一個非常方便的功能。按上下移動游標鍵(或者Ctrl-p、Ctrl-n
)可以 一條一條瀏覽以前輸過的命令。如果有需要重複輸入的命令就不用輸第二次了。如果你能記 住以前輸過的某條命令中的某個關鍵字,可以按Ctrl-r,然後輸入關鍵字,隨著你每輸入一 個字母,bash會做增量式(increasingly)查詢,也可以反覆按Ctrl-r或Ctrl-s向前向後查 找。如果找到了,按左右移動游標鍵或Home鍵(Ctrl-a)或End鍵(Ctrl-e)將該命令帶回提示 符下進一步修改,或者直接按Enter鍵原封不動地執行該命令。
1.5 主鍵盤快捷鍵
bash的快捷鍵和emacs保持一致,用慣其中之一再用另一個程式會很順手的。請記住一條原則:儘量使用主鍵盤快捷鍵而不使用移動游標鍵和編輯鍵。因為手不必離開主鍵盤是效 率最高的,這樣在你一生之中所節省的來回移動手的時間絕對可以用星期來計算,是絕對值 得你花十分鐘的時間記住這些快捷鍵的。
功能 | 快捷鍵 | 助記 |
---|---|---|
上 | Ctrl-p | previous |
下 | Ctrl-n | next |
左 | Ctrl-b | backward |
右 | Ctrl-f | forward |
Del | Ctrl-d | delete游標後面的 |
Home | Ctrl-a | the first letter |
End | Ctrl-e | end |
Backspace | Backspace | delete游標前面的 |
目錄和檔案
2.1 類Unix系統目錄結構
ubuntu沒有碟符這個概念,只有一個根目錄/,所有檔案都在它下面
/ 根目錄
bin //系統可執行程式,如命令
boot //核心和啟動程式,所有和啟動相關的檔案都儲存在這裡 grub //引導器相關檔案
dev //裝置檔案
etc //系統軟體的啟動和配置檔案,系統在啟動過程中需要讀取的檔案都在這個目錄。如LILO引數、用 戶賬戶和密碼。
home //使用者的主目錄。下面是自己定義的使用者名稱的資料夾
lib //系統程式庫檔案,這個目錄裡存放著系統最基本的動態連結共享庫,類似於Windows下的system32 目錄,幾乎所有的應用程式都需要用到這些共享庫。
media //掛載媒體裝置,如光碟機、U盤等
mnt //目錄是讓使用者臨時掛載別的檔案系統,如掛載Windows下的某個分割槽,ubuntu預設還是掛載在/media 目錄。
opt //可選的應用軟體包(很少使用)
proc //這個目錄是系統記憶體的對映,我們可以直接訪問這個目錄來獲取系統資訊。也就是說,這個目錄 的內容不在硬碟上而是在記憶體裡。
sbin //管理員系統程式 selinux
srv
sys //udev用到的裝置目錄樹,/sys反映你機器當前所接的裝置 tmp //臨時資料夾
usr //這是個最龐大的目錄,我們要用到的很多應用程式和檔案幾乎都存放在這個目錄下。] bin // 應用程式
game //遊戲程式 include
lib //應用程式的庫檔案 lib64
local //包含使用者程式等 sbin //管理員應用程式
複製程式碼
2.2 使用者目錄
位於/home/user
,稱之為使用者工作目錄或家目錄,表示方式:
/home/user
~
複製程式碼
2.2.1 相對路徑和絕對路徑
絕對路徑
從/目錄開始描述的路徑為絕對路徑,如:
cd /home ls /usr
複製程式碼
相對路徑
從當前位置開始描述的路徑為相對路徑,如:
cd ../../ ls abc/def
複製程式碼
.和..
每個目錄下都有**.和..** . 表示當前目錄 .. 表示上一級目錄,即父目錄 根目錄下的.和..都表示當前目錄
2.3 ls
ls [OPTION]… [FILE]…
複製程式碼
ls是英文單詞list的簡寫,其功能為列出目錄的內容。這是使用者最常用的一個命令,因 為使用者需要不時地檢視某個目錄的內容。該命令類似於DOS下的dir命令。 對於每個目錄, 該命令將列出其中的所有子目錄與檔案。對於每個檔案,ls將輸出其檔名以及所要求的其 他資訊。預設情況下,輸出條目按字母順序排序。當未給出目錄名或是檔名時,就顯示當 前目錄的資訊。
主要的OPTION有:
-a 列出隱藏檔案,檔案中以“.”開頭的均為隱藏檔案,如:~/.bashrc
-l 列出檔案的詳細資訊
-R 連同子目錄中的內容一起列出
複製程式碼
用ls -l
命令顯示的資訊中,開頭是由10個字元構成的字串,其中第一個字元表示文 件型別,它可以是下述型別之一:
- 普通檔案 d 目錄
l 符號連結
b 塊裝置檔案
c 字元裝置檔案
s socket檔案,網路套接字 p 管道
複製程式碼
後面的9個字元表示檔案的訪問許可權,分為3組,每組3位。第一組表示檔案屬主的權 限,第二組表示同組使用者的許可權,第三組表示其他使用者的許可權。每一組的三個字元分別表示 對檔案的讀、寫和執行許可權。各許可權如下所示:
r 讀
w 寫
x 可執行。對於目錄,表示進入許可權。
s 當檔案被執行時,把該檔案的UID或GID賦予執行程式的UID(使用者ID)或GID(組 ID)。
t 設定標誌位(sticky bit)。如果是有sticky bit的目錄,在該目錄下任何使用者只要有適當的許可權即可建立文 件,但檔案只能被超級使用者、目錄擁有者或檔案屬主刪除。如果是有sticky bit的可執行檔案,在該檔案執行後, 指向其正文段的指標仍留在記憶體。這樣再次執行它時,系統就能更快地裝入該檔案。
- 沒有相應位置的許可權。
複製程式碼
訪問許可權後面的數字表示與該檔案共享inode的檔案總數,即硬連結數(參見下面ln命 令)。
2.4 cd
change dir 改變當前所在路徑
cd ~
cd dir1/dir2 cd ..
複製程式碼
2.5 which
檢視指定命令所在路徑
which ls
複製程式碼
2.6 pwd
檢視當前所在路徑
pwd
複製程式碼
2.7 mkdir
mkdir [OPTION] DIRECTORY…
複製程式碼
建立目錄DIRECTORY,可以一次建立多個。OPTION如果是-p,表示可以連同父目錄一起 建立。
2.8 rmdir
rmdir [OPTION]… DIRECTORY…
複製程式碼
刪除空目錄,可以一次刪除多個。OPTION如果是-p,表示可以連同空的父目錄一起刪 除。mkdir和rmdir的用法舉例:
$ mkdir a
$ mkdir a/b
$ ls a b
$ rmdir a/b
$ ls a
$ rmdir a
$ mkdir a/b
mkdir: cannot create directory `a/b': No such file or directory
$ mkdir -p a/b
$ rmdir -p a/b
複製程式碼
2.9 touch
touch [OPTION]… FILE…
複製程式碼
- 將每個檔案的訪問及修改時間都更新為目前的時間。
- 如果檔案不存在,則建立一個位元組數為0的檔案。
2.10 rm
刪除檔案:
rm file
複製程式碼
刪除目錄:
rm dir -rf
複製程式碼
2.11 mv
重新命名:
mv file1 file2
複製程式碼
移動檔案:
mv file1 ~/
複製程式碼
2.12 cp
拷貝檔案:
cp file1 file2 cp file1 dir/ cp file1 ../
複製程式碼
拷貝目錄:
cp dir1 dir2 -r cp dir1 ~/ -r
複製程式碼
2.13 cat
檢視檔案裡內容,輸出到終端,如果cat時沒跟檔名,則讀標準輸入,遇到\n後,輸 出到標準輸出,終端下輸入Ctrl-d表示結束
2.14 more
more [OPTION] FILE…
複製程式碼
檢視文字檔案的內容,螢幕顯示完一屏就等待使用者按下任意鍵再滾動到下一屏,如果中 途不想繼續看下去了,可以按Ctrl+C或q終止顯示。
2.15 less
less [OPTION] FILE…
複製程式碼
檢視文字檔案的內容,螢幕顯示完一屏就等待使用者按鍵,使用者可以向上或向下檢視,如 果中途不想繼續看下去了,可以按Ctrl+C或q終止顯示。
2.16 head
head [OPTION]… FILE…
顯示指定檔案的前面幾行。如果沒有指定檔案,將從標準輸入(鍵盤)上讀取。如果沒
有指定要顯示的行數,則預設顯示前10行。如果要顯示檔案的前5行:
$ head -5 file1
複製程式碼
2.17 tail
tail [OPTION]… FILE…
顯示檔案的最後幾行。若沒有指定顯示的行或字元數,則預設顯示末尾10行。如果要顯
示檔案末5行:
$ tail -5 file1
複製程式碼
2.18 ln
連結有兩種,一種被稱為硬連結(Hard Link),另一種被稱為符號連結(Symbolic Link)。建立硬連結時,連結檔案和被連結檔案必須位於同一個檔案系統中,並且不能建立 指向目錄的硬連結。而對符號連結,則不存在這個問題。預設情況下,ln產生硬連結。如果 給ln命令加上-s選項,則建立符號連結。舉例如下,注意ls -l列出檔案的硬連結數和位元組 數:
硬連結:
touch hello
ln hello word_h
複製程式碼
軟連結:
ln -s hello word_s
複製程式碼
2.19 tree
這個命令需要下載安裝,ubuntu下
sudo apt-get install tree
複製程式碼
按結構樹的形狀顯示目錄和檔案
2.20 wc
利用 wc 指令我們可以計算檔案的 Byte 數、字數、或是列數,若不指定檔名稱、或 是所給予的檔名為“-”,則 wc 指令會從標準輸入裝置讀取資料。
wc -l ./*
複製程式碼
-c 或–bytes 或–chars 只顯示 Bytes 數。 -l 或–lines 只顯示列數。 -w 或–words 只顯示字數。
2.21 od
od -tcx file1
複製程式碼
-t 指定資料的顯示格式,主要的引數有: c ASCII字元或反斜槓序列 d[SIZE] 有符號十進位制數,每個整數SIZE位元組。 f[SIZE] 浮點數,每個整數SIZE位元組。 o[SIZE] 八進位制(系統預設值為02),每個整數SIZE位元組。 u[SIZE] 無符號十進位制數,每個整數SIZE位元組。 x[SIZE] 十六進位制數,每個整數SIZE位元組。
2.22 du
檢視某個目錄的大小: 以M為單位
du -hm /home/sihai/test
複製程式碼
以B為單位
du -hb ./*
複製程式碼
以K為單位,4k的整數倍
du -hk ./*
複製程式碼
2.23 df
df檢視磁碟使用情況
df --block-size=GB df --block-size=MB
複製程式碼
檔案屬性和使用者使用者組
3.1 whoami
檢視當前登陸使用者
3.2 chmod
- 文字設定法
chmod [who] [+|-|=] [mode] 檔名
操作物件who可是下述字母中的任一個或者它們的組合:
u 表示“使用者(user)”,即檔案或目錄的所有者。 g 表示“同組(group)使用者”,即與檔案屬主有相同組ID的所有使用者。 o 表示“其他(others)使用者”。 a 表示“所有(all)使用者”。它是系統預設值。
操作符號可以是:
- +新增某個許可權。
- -取消某個許可權。
- = 賦予給定許可權並取消其他所有許可權(如果有的話)。
設定mode所表示的許可權可用下述字母的任意組合:
r 可讀。 w 可寫。 x 可執行。
- 數字設定法
chmod [mode] 檔名 我們必須首先了解用數字表示的屬性的含義:
0表示沒有許可權, 1表示可執行許可權, 2表示可寫許可權, 4表示可讀許可權,
然後將其相加。所以數字屬性的格式應為3個從0到7的八進位制數,其順序是 (u)(g)(o)。
例如,如果想讓某個檔案的屬主有“讀/寫”二種許可權,需要把4(可讀)+2(可寫)= 6(讀/寫)。
比如設定一個檔案允許所有使用者可寫
$ chmod a+w file1
複製程式碼
設定一個檔案允許所有使用者可讀、可寫、不可執行
$ chmod 666 file1
複製程式碼
3.3 chown
chown [OPTION]… [OWNER:GROUP] FILE…
chown [OPTION]… –reference=RFILE FILE…
更改某個檔案或目錄的屬主和屬組。這個命令也很常用。例如root使用者把自己的一個檔案拷貝給使用者A, 為了讓使用者A能夠存取這個檔案,root使用者應該把這個檔案的屬主設為A, 否則,使用者A無法存取這個檔案。
OPTION的主要引數:
- -R 遞迴式地改變指定目錄及其下的所有子目錄和檔案的擁有者。
- -v 顯示chown命令所做的工作。 比如把一個檔案改為sihai使用者和nogroup使用者組所有
$ sudo chown sihai:nogroup file1
複製程式碼
注意:
- chown需要特權使用者才能執行
- 一個檔案的owner和owning group是沒有關聯的。一個檔案屬於使用者A,也屬於使用者組 B,並不表示使用者A屬於使用者組B。
3.4 chgrp
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
該命令改變(指定)指定檔案所屬的使用者組。其中group可以是使用者組ID,也可以是/etc/group檔案中使用者組的組名。
檔名是以空格分開的要改變屬組的檔案列表,支援通配 符。如果使用者不是該檔案的屬主或超級使用者,則不能改變該檔案的組。
OPTION的主要引數:
- -R 遞迴式地改變指定目錄及其下的所有子目錄和檔案的屬組。
查詢與檢索
4.1 find
根據檔名查詢
find [OPTION] path… [expression]
在目錄中搜尋檔案,path指定目錄路徑,系統從這裡開始沿著目錄樹向下查詢檔案。它是一個路徑列表,相互用空格分離,如果不寫path,那麼預設為當前目錄。Expression 是 find命令接受的表示式,find命令的所有操作都是針對表示式的。
一條最常用的find命令--在當前目錄及子目錄下查詢所有以file開頭的檔名。
$ find . -name 'file*'
$ find / -name 'vimrc'
$ find ~ -name '*.c'
複製程式碼
4.2 grep
根據內容檢索
grep [options] PATTERN [FILE...]
複製程式碼
在指定檔案中搜尋特定的內容,並將含有這些內容的行輸出到標準輸出。若不指定檔案 名,則從標準輸入讀取。 [options]部分包含的主要引數:
-
-c:只輸出匹配行的計數。
-
-I:不區分大小寫(只適用於單字元)。
-
-h:查詢多檔案時不顯示檔名。
-
-l:查詢多檔案時只輸出包含匹配字元的檔名。
-
-n:顯示匹配行及行號。
-
-s:不顯示不存在或無匹配文字的錯誤資訊。
-
-v:顯示不包含匹配文字的所有行。
-
-R: 連同子目錄中所有檔案一起查詢。
比如到系統標頭檔案目錄下查詢所有包含printf的檔案
$ grep 'printf' /usr/include -R
複製程式碼
安裝解除安裝軟體
5.1 apt-get
更新源伺服器列表
sudo vi /etc/apt/sources.list
複製程式碼
更新完伺服器列表後需要更新下源
sudo apt-get update 更新源 sudo apt-get install package 安裝包 sudo apt-get remove package 刪除包 sudo apt-cache search package 搜尋軟體包 sudo apt-cache show package 獲取包的相關資訊,如說明、大小、版本等 sudo apt-get install package --reinstall 重新安裝包 sudo apt-get -f install 修復安裝 sudo apt-get remove package --purge 刪除包,包括配置檔案等 sudo apt-get build-dep package 安裝相關的編譯環境 sudo apt-get upgrade 更新已安裝的包 sudo apt-get dist-upgrade 升級系統 sudo apt-cache depends package 瞭解使用該包依賴那些包 sudo apt-cache rdepends package 檢視該包被哪些包依賴 sudo apt-get source package 下載該包的原始碼 sudo apt-get clean && sudo apt-get autoclean 清理無用的包 sudo apt-get check 檢查是否有損壞的依賴
5.2 deb包安裝
安裝deb軟體包命令: sudo dpkg -i xxx.deb 刪除軟體包命令: sudo dpkg -r xxx.deb 連同配置檔案一起刪除命令: sudo dpkg -r --purge xxx.deb 檢視軟體包資訊命令: sudo dpkg -info xxx.deb 檢視檔案拷貝詳情命令: sudo dpkg -L xxx.deb 檢視系統中已安裝軟體包資訊命令: sudo dpkg -l 重新配置軟體包命令: sudo dpkg-reconfigure xxx
5.3 原碼安裝
- 解壓縮原始碼包
- cd dir
- ./configure 檢測檔案是否缺失,建立Makefile,檢測編譯環境
- make 編譯原始碼,生成庫和可執行程式
- sudo make install 把庫和可執行程式,安裝到系統路徑下
磁碟管理
6.1 mount
命令格式:
mount [-t vfstype] -o options device dir
其中:
- -t vfstype 指定檔案系統的型別,通常不必指定。mount 會自動選擇正確的型別。常 用型別有:
光碟或光碟映象:iso9660
DOS fat16檔案系統:msdos Windows 9x fat32檔案系統:vfat Windows NT ntfs檔案系統:ntfs
Mount Windows檔案網路共享:smbfs UNIX(LINUX) 檔案網路共享:nfs
-
-o options 主要用來描述裝置或檔案的掛接方式。常用的引數有: loop:用來把一個檔案當成硬碟分割槽掛接上系統 ro:採用只讀方式掛接裝置 rw:採用讀寫方式掛接裝置 iocharset:指定訪問檔案系統所用字符集
-
device 要掛接(mount)的裝置。
-
dir裝置在系統上的掛接點(mount point)。
6.1.1 掛接光碟映象檔案
由 於 近 年 來 磁 盤 技 術 的 巨 大 進 步, 新 的 電 腦 系 統 都 配 備 了 大 容 量 的 磁 盤 系 統, 在 Windows下許多人都習慣把軟體和資料做成光碟映象檔案通過虛擬 光碟機來使用。這樣做有 許多好處:一、減輕了光碟機的磨損;二、現在硬碟容量巨大存放幾十個光碟映象檔案不成問 題,隨用隨調十分方便;三、硬碟的讀取速度要遠 遠高於光碟的讀取速度,CPU佔用率大大 降低。其實linux系統下製作和使用光碟映象比Windows系統更方便,不必借用任何第三方軟 件包。
1.從光碟製作光碟映象檔案。將光碟放入光碟機,執行下面的命令。
cp /dev/cdrom /home/sunky/mydisk.iso
複製程式碼
或
dd if=/dev/cdrom of=/home/sunky/mydisk.iso
複製程式碼
**注:**執行上面的任何一條命令都可將當前光碟機裡的光碟製作成光碟映象檔案/home/ sunky/mydisk.iso
2.檔案和目錄製作成光碟映象檔案,執行下面的命令。
mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
複製程式碼
**注:**這條命令將/home/sunky/mydir目錄下所有的目錄和檔案製作成光碟映象檔案/ home/sunky/mydisk.iso
,光碟卷標為:mydisk
3.光碟映象檔案的掛接(mount)
mkdir /mnt/vcdrom
複製程式碼
**注:**建立一個目錄用來作掛接點(mount point)
mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
複製程式碼
**注:**使用/mnt/vcdrom就可以訪問盤映象檔案mydisk.iso裡的所有檔案了。
6.1.2 掛載U盤
1.檢測儲存裝置名稱
sudo fdisk -l
複製程式碼
2.掛載儲存裝置sdb1到掛載點/mnt目錄
sudo mount /dev/sdb1 /mnt
複製程式碼
3.訪問/mnt
4.解除安裝/mnt
sudo umount /mnt
複製程式碼
6.2 umount
解除安裝命令
sudo umount 掛在點
複製程式碼
6.3 dd
dd:拷貝
例1:拷貝光碟(注意,你的光碟是標準的 iso9660格式才可以這麼做)
dd if=/dev/cdrom of=cdrom.iso
複製程式碼
例2:將檔案sfile拷貝到檔案 dfile中。
$ dd if=sfile of=dfile
複製程式碼
例3:建立一個100M的空檔案
dd if=/dev/zero of=hello.txt bs=100M count=1
複製程式碼
/dev/null,外號叫無底洞,你可以向它輸出任何資料,它通吃,並且不會撐著!
/dev/zero,是一個輸入裝置,你可你用它來初始化檔案,從裡面讀出來的資料都是0。
壓縮包管理
7.1 tar
tar [主選項+輔選項] 檔案或者目錄 tar可以為檔案和目錄建立檔案。
利用tar命令使用者可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案中加入新的檔案。使用該命令時,主選項是 必須要有的,輔選項是輔助使用的,可以選用。
主選項包括:
- c 建立新的檔案檔案。如果使用者想備份一個目錄或是一些檔案,就要選擇這個選項。
- r 把要存檔的檔案追加到檔案檔案的未尾。
- t 列出檔案檔案的內容,檢視已經備份了哪些檔案。
- u 更新檔案。用新增的檔案取代原備份檔案,如果在備份檔案中找不到要更新的檔案,則把它追加到備份檔案的最 後。
- x 從檔案檔案中釋放檔案。(常用)
輔選項包括:
-
f 使用檔案檔案或裝置,這個選項通常是必選的。(常用) k 儲存已經存在的檔案。
-
m 在還原檔案時,把所有檔案的修改時間設定為現在。 M 建立多卷的檔案檔案,以便在幾個磁碟中存放。
-
v 詳細報告tar處理的檔案資訊。如無此選項,tar不報告檔案資訊。(常用) w 每一步都要求確認。
-
z 用gzip來壓縮/解壓縮檔案,加上該選項後可以將檔案檔案進行壓縮,但還原時也一定要使用該選項進行解壓 縮。(常用)
-
j 用bzip2來壓縮/解壓縮檔案,加上該選項後可以將檔案檔案進行壓縮,但還原時也一定要使用該選項進行解壓 縮。(常用)
要將檔案備份到一個特定的裝置,只需把裝置名作為備份檔名。 打包:
tar cvf dir.tar dir tar xvf dir.tar dir
複製程式碼
打gz壓縮包:
tar zcvf dir.tar.gz dir tar zxvf dir.tar.gz
複製程式碼
打bz2壓縮包:
tar jcvf dir.tar.bz2 dir tar jxvf dir.tar.bz2
複製程式碼
指定目錄解壓縮:
tar zxvf dir.tar.gz -C ~/test
複製程式碼
7.2 rar
打包:把dir壓縮成newdir.rar
rar a -r newdir dir
複製程式碼
解包:把newdir.rar解壓縮到當前目錄
unrar x newdir.rar
複製程式碼
####7.3zip 打包:
zip -r dir.zip dir
複製程式碼
解包:
unzip dir.zip
複製程式碼
程式管理
8.1 who
檢視當前線上上的使用者情況。所有的選項都是可選的,不使用任何選項時,who命令將 顯示以下三項內容:
login name:登入使用者名稱; terminal line:使用終端裝置; login time:登入到系統的時間。
sihai@ubuntu:~/demo$ who -uH
名稱 線路 時間 空閒 程式號 備註 sihai tty2 2014-08-14 13:31 . 6798
sihai tty7 2014-08-14 01:31 舊 2423
sihai pts/1 2014-08-14 01:31 12:00 2843 (:0)
sihai pts/3 2014-08-14 10:39 . 2843 (:0)
複製程式碼
####8.2 ps
ps [選項]
ps命令用於監控後臺程式的工作情況,因為後臺程式是不和螢幕鍵盤這些標準輸入/輸 出裝置進行通訊的,所以如果需要檢測其情況,便可以使用ps命令了。選項部分如下:
-
-e 顯示所有程式。
-
-f 全格式。
-
-h 不顯示標題。
-
-l 長格式。
-
-w 寬輸出。
-
a 顯示終端上的所有程式,包括其他使用者的程式。 r 只顯示正在執行的程式。
-
x 顯示沒有控制終端的程式。
這個命令引數有很多,但一般的使用者只需掌握一些最常用的命令引數就可以了。
最常用的三個引數是u、a、x
, 我們首先以root身份登入系統,檢視當前程式狀況
sihai@ubuntu:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 3672 2008 ? Ss 08:46 0:01 /sbin/init
sihai@ubuntu:~$ ps ajx
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 4592 6948 6948 4592 pts/3 6948 R+ 1000 0:00 ps ajx
sihai@ubuntu:~$ ps -Lf 2423
UID PID PPID LWP C NLWP STIME TTY STAT TIME CMD
1000 2423 2282 2423 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2465 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2466 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2468 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
複製程式碼
Head標頭:
USER 使用者名稱 UID 使用者ID(User ID) PID 程式ID(Process ID) PPID 父程式的程式ID(Parent Process id) SID 會話ID(Session id) %CPU 程式的cpu佔用率 %MEM 程式的記憶體佔用率 VSZ 程式所使用的虛存的大小(Virtual Size) RSS 程式使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。 TTY 與程式關聯的終端(tty) STAT 程式的狀態:程式狀態使用字元表示的(STAT的狀態碼) R 執行 Runnable (on run queue) 正在執行或在執行佇列中等待。 S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的形成或接受到訊號。 I 空閒 Idle Z 僵死 Zombie(a defunct process) 程式已終止, 但程式描述符存在, 直到父程式呼叫wait4()系統調 用後釋放。 D 不可中斷 Uninterruptible sleep (ususally IO) 收到訊號不喚醒和不可執行, 程式必須等待直到有中 斷髮生。 T 停止 Terminate 程式收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行。 P 等待交換頁 W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。 X 死掉的程式 < 高優先順序程式 高優先序的程式 N 低優先 級程式 低優先序的程式 L 記憶體鎖頁 Lock 有記憶體分頁分配並縮在記憶體內 s 程式的領導者(在它之下有子程式); l 多程式的(使用 CLONE_THREAD, 類似 NPTL pthreads)
- 位於後臺的程式組 START 程式啟動時間和日期 TIME 程式使用的總cpu時間 COMMAND 正在執行的命令列命令 NI 優先順序(Nice) PRI 程式優先順序編號(Priority) WCHAN 程式正在睡眠的核心函式名稱;該函式的名稱是從/root/system.map檔案中獲得的。 FLAGS 與程式相關的數字標識
8.4 fg
fg [job…]
把指定的後臺作業或掛起作業移到前臺執行。 引數job是一個或多個程式的PID,或者 是命令名稱,或者是作業號(作業號前面要帶一個%號)。
通常在shell中輸入命令啟動程式後,如果該程式需要與使用者互動,那麼此後使用者的鍵 盤輸入都被該程式讀取,直到該程式退出後才出現shell提示符$,這種程式為前臺程式。
如果在命令列的末尾加上&字元,則shell為這個命令建立一個後臺程式,它雖然也可以 輸出到螢幕,但是不能讀取鍵盤輸入,不管執行命令的程式有沒有退出都立刻回到shell提 示符接受下一條命令的輸入。如果該程式也需要讀取鍵盤輸入,則被掛起等待直到使用者用fg 命令把它變成前臺程式。如果一個命令需要較長的處理時間並且不需要與使用者互動,就適合 把它放在後臺執行。
8.5 bg
bg [job…]
把被掛起的程式提到後臺執行。 其中,job是一個或多個程式的PID、命令名稱或者作 業號,在引數前要帶%號。
8.6 kill
向指定程式傳送訊號
kill [ -signal | -s signal ] pid ...
檢視訊號編號
kill -l [ signal ]
複製程式碼
給一個程式發訊號,或終止一個程式的執行。
kill命令如果不帶引數而直接跟pid,就是發給該程式SIGTERM訊號,大部分程式收到該 訊號就會終止。但是被掛起的程式不能處理訊號,所以必須發SIGKILL訊號,由系統強制終 止程式。
8.7env
檢視當前程式環境變數
$env
複製程式碼
- vim ∼/.bashrc 配置當前使用者環境變數
- vim /etc/profile 配置系統環境變數,配置時需要有root許可權
使用者管理
9.1 建立使用者
sudo useradd -s /bin/bash -g sihai -d /home/sihai -m sihai sudo useradd -s /bin/sh -g group -G adm,root xwp
複製程式碼
此命令新建了一個使用者xwp,該使用者的登入Shell是/bin/sh,他屬於group使用者組,同時 又屬於adm和root使用者組,其中group使用者組是其主組。
-
-s 指定新使用者登陸時shell型別
-
-g 指定所屬組,該組必須已經存在
-
-G 指定附屬組,該組必須已經存在
-
-d 使用者家目錄
-
-m 使用者家目錄不存在時,自動建立該目錄
9.2 設定使用者組
sudo groupadd sihai
複製程式碼
9.3 設定密碼
sudo passwd sihai
複製程式碼
9.4 切換使用者
su 使用者名稱
su sihai
複製程式碼
9.5 root使用者
變成root使用者
sudo su
複製程式碼
設定root密碼
passwd
複製程式碼
9.6 刪除使用者
userdel 選項 使用者名稱
常用的選項是-r,他的作用是把使用者的主目錄一起刪除。 例如:
sudo userdel -r sihai
複製程式碼
此命令刪除使用者sihai在系統檔案(主要是/etc/passwd,/etc/shadow,/etc/ group等)中的記錄,同時刪除使用者的主目錄。
網路管理
10.1 ifconfig
1.檢視網路卡資訊
ifconfig
複製程式碼
2.關閉網路卡
sudo ifconfig eth0 down
複製程式碼
3.開啟網路卡eth0
sudo ifconfig eth0 up
複製程式碼
4.給eth0配置臨時IP
sudo ifconfig eth0 IP
複製程式碼
10.2ping
ping [選項] 主機名/IP地址
檢視網路上的主機是否在工作。它向該主機傳送ICMP ECHO_REQUEST包。有時我們想從網路上的某臺主機上下載檔案,可是又不知道那臺主機是否開著,就需要使用ping命令檢視。
命令中各選項的含義如下:
-c 數目 在傳送指定數目的包後停止。 -d 設定SO_DEBUG的選項。 -f 大量且快速地送網路封包給一臺機器,看它的迴應。 -I 秒數 設定間隔幾秒送一個網路封包給一臺機器,預設值是一秒送一次。 -l 次數 在指定次數內,以最快的方式送封包資料到指定機器(只有超級使用者可以使用此選項)。 -q 不顯示任何傳送封包的資訊,只顯示最後的結果。 -r 不經由閘道器而直接送封包到一臺機器,通常是檢視本機的網路介面是否有問題。 -s 位元組數 指定傳送的資料位元組數,預設值是56,加上8位元組的ICMP頭,一共是64ICMP資料位元組。
10.3netstat
netstat [選項]
顯示網路連線、路由表和網路介面資訊,可以讓使用者得知目前都有哪些網路連線正在運 作。命令中各選項的含義如下:
-a 顯示所有socket,包括正在監聽的。 -c 每隔1秒就重新顯示一遍,直到使用者中斷它。 -i 顯示所有網路介面的資訊,格式同“ifconfig -e”。 -n 以網路IP地址代替名稱,顯示出網路連線情形。 -r 顯示核心路由表,格式同“route -e”。 -t 顯示TCP協議的連線情況。 -u 顯示UDP協議的連線情況。 -v 顯示正在進行的工作。
####10.4nslookup
nslookup name
查詢一臺機器的IP地址和其對應的域名。它通常需要一臺域名伺服器來提供域名服務。 如果使用者已經設定好域名伺服器,就可以用這個命令檢視不同主機的IP地址對應的域名。
不帶引數使用nslookup命令時,出現提示符“>”,在後面輸入要查詢的IP地址或域名 並回車即可。如果要退出該命令,輸入exit並回車即可。
sihai@ubuntu:~$ nslookup
> www.sihai.cn
Server: 127.0.0.1
Address: 127.0.0.1#53
複製程式碼
10.5 finger
finger [-lmsp] user [user@host …]
查詢使用者的資訊,通常會顯示系統中某個用 戶的使用者名稱、主目錄、停滯時間、登入時間、登入shell等資訊。如果要查詢遠端機上的用 戶資訊,需要在使用者名稱後面接“@主機名”,採用[使用者名稱@主機名]的格式,不過要查詢的網 絡主機需要執行finger守護程式。
命令中各選項的含義如下:
-s 顯示使用者的註冊名、實際姓名、終端名稱、寫狀態、停滯時間、登入時間等資訊。 -l 除了用-s選項顯示的資訊外,還顯示使用者主目錄、登入shell、郵件狀態等資訊,以 及使用者主目錄下的.plan、.project和.forward檔案的內容。 -p 除了不顯示.plan檔案和.project檔案以外,與-l選項相同。
sihai@ubuntu:~$ finger sihai
Login: sihai Name: sihai
Directory: /home/sihai Shell: /bin/bash
On since Mon Sep 8 08:55 (CST) on tty7 14 hours 48 minutes idle On since Mon Sep 8 21:57 (CST) on pts/1 from :0
11 minutes 18 seconds idle
On since Mon Sep 8 23:12 (CST) on pts/2 from :0 6 seconds idle
No mail. No Plan.
複製程式碼
常用伺服器構建
11.1 ftp
11.1.1ftp伺服器
1.安裝vsftpd伺服器
sudo apt-get install vsftpd
複製程式碼
2.配置vsftpd.conf檔案
sudo vi /etc/vsftpd.conf
複製程式碼
新增下面設定
anonymous_enable=YES
anon_root=/home/sihai/ftp
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=0022
複製程式碼
3.重啟伺服器,重新載入/etc/vsftpd.conf配置檔案
ubuntu12.04下
sudo /etc/init.d/vsftpd restart
ubuntu14.04下
sudo /lib/init/upstart-job vsftpd restart
複製程式碼
4.進入你的/home/sihai/ftp目錄下建立一個空目錄,供使用者上傳
cd ~/ftp
mkdir anonymous chmod 777 anonymous
複製程式碼
5.測試上傳功能,登陸ftp伺服器,進入到anonymous目錄
ftp IP
cd anonymous
複製程式碼
6.上傳命令,可以把你當前目錄下的檔案上傳到ftp伺服器的anonymous目錄
put somefile
get somefile
複製程式碼
11.1.2 ftp客戶端
Ubuntu 預設已經安裝ftp客戶端
11.1.3 lftp客戶端
lftp 也 是 一 種 ftp 客 戶 程 序。 它 是 以 文 本 方 式 操 作 的, 但 是 比 起 圖 形 界 面 更 為 方 便。lftp幾乎具有bash的所有方便功能,Tab 補全,bookmark, queue, 後臺下載等可以 得到支援。用法與ftp類似,主要的指令如下:
put 上傳檔案 mput 上傳多個檔案 get 下載檔案 mget 下載多個檔案 mirror 下載整個目錄及其子目錄 mirror –R 上傳整個目錄及其子目錄 !command 呼叫本地shell執行命令command
注意,有的發行版可能預設沒有安裝lftp工具,需要使用者自己安裝。如果是Debian或 Ubuntu系統,則安裝lftp軟體包。
sudo apt-get install lftp
複製程式碼
11.2 nfs
1.安裝nfs伺服器
sudo apt-get install nfs-kernel-server
複製程式碼
2.設定/etc/exports配置檔案
sudo vi /etc/exports
複製程式碼
新增這行配置
/home/使用者名稱/nfs *(rw,sync,no_root_squash)
複製程式碼
3.在使用者目錄下建立nfs目錄
mkdir /home/使用者名稱/nfs
複製程式碼
4.重啟伺服器,重新載入配置檔案
sudo /etc/init.d/nfs-kernel-server restart
複製程式碼
5.在/home/使用者名稱/nfs目錄下建立測試檔案hello
cd /home/使用者名稱/nfs touch hello
複製程式碼
6.測試伺服器,把伺服器共享目錄nfs掛在到/mnt節點
sudo mount -t nfs -o nolock -o tcp IP:/home/使用者名稱/nfs /mnt
複製程式碼
7.進入/mnt目錄可以看到hello檔案,表示構建成功
8.解除安裝網路共享目錄
sudo umount /mnt
複製程式碼
11.3ssh
1.安裝ssh伺服器
sudo apt-get install openssh-server
複製程式碼
2.遠端登陸
ssh 使用者名稱@IP
複製程式碼
其它命令
12.1 終端翻頁
Shift-pageup
Shift-pagedown
複製程式碼
12.2 man
看手冊(叫做manual或man page)。每一個命令和系統函式都有自己的man page。
man man
複製程式碼
man read
複製程式碼
檢視read命令的man page
man 2 read
複製程式碼
檢視read系統函式的man page(在第二個section中,表示為read(2)) man -k read 以read為關鍵字查詢相關的man page
12.3 clear
清屏。使游標和提示符回到螢幕第一行。
快捷鍵:Ctrl-l
####12.4 alias
alias [-p] name=value …
將 value 字 符 串 起 個 別 名 叫 name, 以 後 在 命 令 行 輸 入 name,shell 自 動 將 其 解 釋 為value,如果不帶引數執行本命令,或以引數-p執行,則顯示當前定義的別名列表。
$ alias
alias ls='ls --color=auto' alias rm='rm -i'
複製程式碼
12.5 echo
echo [-n] 字串
在顯示器上顯示一段文字,一般起到一個提示的作用。其中選項n表示輸出文字後不換 行;字串可以加引號,也可以不加引號。用echo命令輸出加引號的字串時,將字串原 樣輸出;用echo命令輸出不加引號的字串時,將字串中的各個單詞作為字串輸出,各 字串之間用一個空格分割。
檢視上一個程式退出數值,正常情況程式退出值是0
echo $?
複製程式碼
12.6 date
檢視當前時間
12.7 umask
umask [-p] -S [mode]
umask指定使用者建立檔案時的掩碼,其中的mode和chmod的命令中的格式一樣。如果不用 mode引數,則顯示當前的umask設定。如果用-S引數,則以符號形式顯示設定。
$ umask 0022
$ umask -S u=rwx,g=rx,o=rx
複製程式碼
比如該使用者touch或gedit建立一個檔案,則其預設許可權為-rw-r-r–
,如果該使用者創 建一個可執行檔案(比如編譯生成的程式),則其預設許可權為-rwxr-xr-x
。也就是說,由於 umask的設定,建立的檔案預設是不具有g的w許可權和o的w許可權的,除非用chmod更改許可權。
12.8 建立終端
建立終端標籤
Ctrl + Shift + t
複製程式碼
切換標籤
Alt+n(n=1)
複製程式碼
新開終端
Ctrl + Shift + n
複製程式碼
關機重啟
關機重啟這些操作都需要有root許可權
13.1 poweroff
13.2 shutdown
shutdown -t 秒數 [-rkhncfF] 時間 [警告訊息]
選項:
-t 秒數 : 設定在切換至不同的runlevel之前, 警告和刪除二訊號之間的延遲時間(秒). -k : 僅送出警告訊息文字, 但不是真的要 shutdown. -r : shutdown 之後重新開機 -h : shutdown 之後關機. -n : 不經過 init , 由 shutdown 指令本身來做關機動作.(不建議你用) -f : 重新開機時, 跳過 fsck 指令, 不檢查檔案系統. -F : 重新開機時, 強迫做 fsck 檢查. -c : 將已經正在 shutdown 的動作取消.
例子:
shutdown -r now 立刻重新開機 shutdown -h now 立刻關機
shutdown -k now 'Hey! Go away! now....' 發出警告訊息, 但沒有真的關機 shutdown -t3 -r now 立刻重新開機, 但在警告和刪除processes 之間, 延遲3秒鐘. shutdown -h 10:42 'Hey! Go away!' 10:42 分關機
shutdown -r 10 'Hey! Go away!' 10 分鐘後關機
shutdown -c 將剛才下的 shutdown 指令取消,必須切換至其它tty, 登入之後, 才能下此一指令. shutdown now 切換至單人操作模式(不加任何選項時)
複製程式碼
注意事項: 時間引數務必要加: 不是用 now, 便是用 hh:mm 或 mm now 其實就是 0 的意思.
13.3 reboot
13.4 檢視核心版本資訊
uname -a
複製程式碼
13.5 檢視發行版資訊
lsb_release -a
複製程式碼
13.6 檢視空閒記憶體
free -m
複製程式碼
vim
16.1 vi簡介
vi是“Visual interface”的簡稱,它在Linux上的地位就彷彿Edit程式在DOS上一樣。 它可以執行輸出、刪除、查詢、替換、塊操作等眾多文字操作,而且使用者可以根據自己的需 要對其進行定製。Vi不是一個排版程式,它不象Word或WPS那樣可以對字型、格式、段落等 其他屬性進行編排,它只是一個文字編輯程式。 vi沒有選單,只有命令,且命令繁多。
Vi有三種基本工作模式:
- 命令模式
- 文字輸入模式
- 末行模式。
16.1.1 命令列模式
任何時候,不管使用者處於何種模式,只要按一下ESC鍵,即可使Vi進入命令模式;我們 在shell環境(提示符為$)下輸入啟動Vi命令,進入編輯器時,也是處於該模式下。在該模式 下,使用者可以輸入各種合法的Vi命令,用於管理自己的文件。此時從鍵盤上輸入的任何字元 都被當做編輯命令來解釋,若輸入的字元是合法的Vi命令,則Vi在接受使用者命令之後完成相 應的動作。但需注意的是,所輸入的命令並不在螢幕上顯示出來。若輸入的字元不是Vi的合 法命令,Vi會響鈴報警。
16.1.2 文字輸入模式
在命令模式下輸入插入命令i、附加命令a 、開啟命令o、修改命令c、取代命令r或替換 命令s都可以進入文字輸入模式。在該模式下,使用者輸入的任何字元都被Vi當做檔案內容保 存起來,並將其顯示在螢幕上。在文字輸入過程中,若想回到命令模式下,按鍵ESC即可。
16.1.3 末行模式
末行模式也稱ex轉義模式。在命令模式下,使用者按“:”鍵即可進入末行模式下,此時 Vi會在顯示視窗的最後一行(通常也是螢幕的最後一行)顯示一個“:”作為末行模式的提示 符,等待使用者輸入命令。多數檔案管理命令都是在此模式下執行的(如把編輯緩衝區的內容 寫到檔案中等)。末行命令執行完後,Vi自動回到命令模式。例如:
:sp newfile
複製程式碼
則分出一個視窗編輯newfile檔案。如果要從命令模式轉換到編輯模式,可以鍵入命令a 或者i;如果需要從文字模式返回,則按Esc鍵即可。在命令模式下輸入“:”即可切換到末 行模式,然後輸入命令。
16.2 vim基礎操作
進入插入模式:
i: 插入游標前一個字元 I: 插入行首 a: 插入游標後一個字元 A: 插入行未 o: 向下新開一行,插入行首 O: 向上新開一行,插入行首
進入命令模式: ESC:從插入模式或末行模式進入命令模式 移動游標:
h: 左移 j: 下移 k: 上移 l: 右移 M: 游標移動到中間行 L: 游標移動到螢幕最後一行行首 G: 移動到指定行,行號 -G w: 向後一次移動一個字 b: 向前一次移動一個字 {: 按段移動,上移 }: 按段移動,下移 Ctr-d: 向下翻半屏 Ctr-u: 向上翻半屏 Ctr-f: 向下翻一屏 Ctr-b: 向上翻一屏 gg: 游標移動檔案開頭 G: 游標移動到檔案末尾
刪除命令:
x: 刪除游標後一個字元,相當於 Del X: 刪除游標前一個字元,相當於 Backspace dd: 刪除游標所在行,n dd 刪除指定的行數 D: 刪除游標後本行所有內容,包含游標所在字元 d0: 刪除游標前本行所有內容,不包含游標所在字元 dw: 刪除游標開始位置的字,包含游標所在字元
撤銷命令:
u: 一步一步撤銷 U: 一次性撤銷當前行所作的所有操作 Ctr-r: 反撤銷
重複命令:
.: 重複上一次操作的命令
文字行移動:
-
: 文字行右移
- <<: 文字行左移
複製貼上:
yy: 複製當前行,n yy 複製 n 行 p: 在游標所在位置向下新開闢一行,貼上
可視模式:
v: 按字元移動,選中文字 V: 按行移動,選中文字可視模式可以配合 d, y, >>, << 實現對文字塊的刪除,複製,左右移動
替換操作:
r: 替換當前字元 R: 替換當前行游標後的字元
查詢命令:
/: str查詢 n: 下一個 N:上一個
替換命令: 把abc全部替換成123
:%s/abc/123/g
複製程式碼
程式碼排版:
gg=G: 程式碼自動縮排排版
16.3 vim分屏操作
分屏操作:
sp: 上下分屏,後可跟檔名 vsp: 左右分屏,後可跟檔名 Ctr+w+w: 在多個視窗切換
啟動分屏
1.使用大寫O引數進行垂直分屏
$ vim -On file1 file2 ...
複製程式碼
2.使用小寫o引數進行水平分屏
$ vim -on file1 file2 ...
複製程式碼
注: n是數字,表示分屏的數量,n要大於等於檔案個數
關閉分屏
1.關閉當前視窗
ctrl+w c
複製程式碼
2.關閉當前視窗,如果只剩最後一個,則退出vim
ctrl+w q
複製程式碼
編輯中分屏
1.上下分割當前開啟的檔案
ctrl+w s
複製程式碼
2.上下分割,並開啟一個新的檔案
:sp filename
複製程式碼
3.左右分割當前開啟的檔案
ctrl+w v
複製程式碼
4.左右分割,並開啟一個新的檔案
:vsp filename
複製程式碼
分屏編輯中游標的移動 vi中的游標鍵是h,j,k,l,要在各個屏之間切換,只需要先按一下ctrl+w
1.把游標移動到上邊的屏
ctrl+w k
複製程式碼
2.把游標移動到下邊的屏
ctrl+w j
複製程式碼
3.把游標移動到右邊的屏
ctrl+w l
複製程式碼
4.把游標移動到左邊的屏
ctrl+w h
複製程式碼
5.把游標移動到下一個的屏
ctrl+w w
複製程式碼
移動分屏 1.向上移動
ctrl+w K
複製程式碼
2.向下移動
ctrl+w J
複製程式碼
3.向右移動
ctrl+w L
複製程式碼
4.向左移動
ctrl+w H
複製程式碼
螢幕尺寸
1.增加高度
ctrl+w +
複製程式碼
2.減少高度
ctrl+w -
複製程式碼
3.讓所有屏的高度一致
ctrl+w =
複製程式碼
4.左加寬度
ctrl+w >
複製程式碼
5.右加寬度
ctrl+w <
複製程式碼
6.右增加n寬 (如:n=30)
ctrl+w n <
複製程式碼
文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:
好好學java
,獲取優質學習資源。