文章標題

  1. 前言

本文介紹了常用的Linux shell命令,包括date、cut、sort、uniq、sed、vi、diff、find等,同時給出儘可能使用的實例以便於理解。

  1. Linux shell命令

2.1 date

作用:獲取或者設置日期

用法:date [選項] 顯示時間格式(以+開頭,後面接格式)

舉例:

(1) 以固定格式顯示時間:date + “%Y%m%d%H”

(2) 顯示明天的日期:date -d “tomorrow” +”%Y-%m-%d”

(3) 顯示前天的日誌:date -d “1 days ago” +”%Y-%m-%d”

2.2 cut

作用:從輸入文件或者命令的輸出中析取出各種域

用法:cut –c{字符串範圍} –d{字段間分割符} –f{字段索引編號}

舉例:

(1)查看在線用戶:who | cut –c1-8

(2)從系統文件/etc/passwd中獲取用戶名列表:cut –d: -f1 /etc/passwd

2.3. paste

作用:將多個域合併

用法:cut –d{字段間分割符}

舉例:

paste –d’:’ filename1 filename2

2.4. sort

作用:排序

用法:

-t 指定分隔符, 默認爲空格

-r 以降序來排列

-u 去掉重複行

-d 以字典序來排列,包括字母,數字,符號等

-n 以數字序來排列

+positon1 -positon2 從第position1 字段到position2字段,包括position1,不包括position2。positon1從0開始。

-k KeyDefinition 指定排序關鍵字。KeyDefinition 選項的格式爲:

[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]

排序關鍵字包括任何以 FStart 變量指定的字段和 CStart 變量指定的列開頭的字符及以 FEnd 變量指定的字段和

CEnd 變量指定的列結束的字符。Modifier 變量的值能夠是 b、d、f、i、n 或 r。修飾符和同一字母的標誌等價。

舉例:

(1) 對/etc/passwd 文件的第三項進行排序(userid): sort -t: -k 3n /etc/passwd

(2) 基於ip地址對/etc/hosts文件排序: sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n /etc/hosts

2.5. uniq

作用:對數據進行去重

用法:先要對數據進行排序,然後再去重

-d:輸出重複行

-c:對數據進行計數

舉例:

找出/etc/passwd文件中的重複用戶名:sort /etc/passwd | cut –f1 –d: | uniq –d

2.6. sed

作用:編輯數據

用法:

sed command file

-n選項:指定行號或者行號範圍,如果未指定,表示任意一行;用p表示打印

舉例:

sed –n ‘-1,2p’ file.txt #顯示前兩行

sed –n ‘/UNIX/p’ filename #顯示包含“UNIX“的行

d命令:刪除數據

舉例:

sed ‘1,2d’ intro #刪掉前兩行

sed ‘/UNIX/d’ intro #刪掉包含“UNIX“的行

s命令:替換

舉例

Sed ‘s/Unix/UNIX/g’ intro > temp #將文件intro中“Unix“替換爲UNIX, 並將結果保存到temp文件中

2.7. vi

(1) 光標移動

nG:光標移至第n行首

n+:光標下移n行

n-:光標上移n行

n$:光標移至第n行尾

(2) 刪除命令

do:刪至行首

d$:刪至行尾

ndd:刪除當前行及其後n-1行

:n1,n2 d:將n1行到n2行之間的內容刪除

(3) 搜索替換

/pattern:從光標開始處向文件尾搜索pattern

?pattern:從光標開始處向文件首搜索pattern

:s/p1/p2/g:將當前行中所有p1均用p2替代

:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g:將文件中所有p1均用p2替換

(4) 複製粘貼

yy:複製當前行,將光標移動到某一行,p粘貼

n1,n2 co n3:n1爲起始行,n2爲結束行,n3爲粘貼行(其中,co是copy的簡稱,也可以直接用copy代替)

(5) 文件保存與退出

:w :保存當前文件

:x :保存當前文件並退出

:q!:不保存文件並退出vi

(6) 多個文件之間的複製粘貼

先在開始處做標誌mk (注:m是做標註的命令,語法是m[字母],[字母]爲該行的標註)

然後在末尾用”ay k (光標自動回到開始處,此時已經把你的內容放到緩衝區了)

其中a表示緩衝區a

然後用ex轉義到你的文件B中,然後用”ap命令粘貼就行

即:vi 1.txt 2.txt mk“ay kex 2.txt ”ap

(7) vi切分窗口

:split two.c:打開另一個窗口並用該窗口編輯另一個指定的文件

:vsplit:垂直分割窗口

CTRL-W:跳轉窗口

(8) 比較兩個文件的不同之處

vimdiff 1.txt 2.txt

2.8. diff和patch

(1) diff命令

功能是用來比較兩個文件的不同,然後記錄下來,也就是所謂的 diff 補丁

選項

-r 是一個遞歸選項

-u 選項以統一格式創建補丁文件,這種格式比缺省格式更緊湊些。

(2) patch命令

patch 就是利用 diff 製作的補丁來實現源文件(夾) 和目的文件(夾) 的轉換。

選項:

-p0 選項要從當前目錄查找目的文件(夾)

-p1 選項 要忽略掉第一層目錄,從當前目錄開始查找。

-E 選項說明如果發現了空文件,那麼就刪除它

-R 選項說明在補丁文件中的 “ 新 ” 文件和 “ 舊 ” 文件現在要調換過來了(實際上就是給新版本打補丁,讓它變成老版本)

舉例:

單個文件:

diff –uN from-file to-file >to-file.patch

patch –p0 < to-file.patch

patch –RE –p0 < to-file.patch

多個文件:

diff –uNr from-docu to-docu >to-docu.patch

patch –p1 < to-docu.patch

patch –R –p1

發佈了22 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章