同步時間
以管理員身份執(zhí)行如下命令因俐,可以自動與網(wǎng)絡(luò)時間同步:
time.nist.gov 是一個時間服務(wù)器
$ rdate -s time.nist.gov
管道符: |
就是把前面的命令運(yùn)行的要放入標(biāo)準(zhǔn)輸出的結(jié)果丟給后面的命令
cat 1.txt | cat
正則表達(dá)式
由一般字符和特殊字符(meta字符)組成
meta元字符
\
通常用于打開或關(guān)閉后續(xù)字符的特殊含義阳堕,如(...)與{...}
.
匹配任何單個字符(除NULL)
*
匹配前面的子表達(dá)式任意次甸私,例:a* 匹配任意多個a
?
匹配前面的子表達(dá)式零次或一次匹配前面的子表達(dá)式一次或多次。
+
匹配前面的子表達(dá)式一次或多次
^
匹配輸入字符串的開始位置
$
匹配輸入字符串的結(jié)束位置
[]
匹配方括號內(nèi)的任一字符,其中可用連字符(-)指的連續(xù)字符的范圍;^符號若出現(xiàn)在方括號的第一個位置,則表示匹配不在列表中的任一字符
(x|y)
匹配x或y衙传,比如:(g|f)ood
,匹配good或food
文件通配符
*
匹配文件名中的任何字符串压汪,包括空字符串粪牲。
?
匹配文件名中的任何單個字符。
[...]
匹配[ ]中所包含的任何字符止剖∠傺簦可以用 – 連接,表示范圍
[!...]
匹配[ ]中非 感嘆號穿香!之后的字符亭引。
如:
5*
5開頭的所有字符串
*5
5結(jié)尾的所有字符串
*5?
以5為倒數(shù)第二個字符的字符串
[0-9]
所有以數(shù)字的字符
[1,2]
1 或者2
[!0-9]
不是數(shù)字的字符
echo 打印
-n
打印語句后不會換行。
-e
開啟轉(zhuǎn)義皮获,即可以打印后面的 \t,\r 等轉(zhuǎn)義字符
可以打印彩色文本焙蚓。
printf
用于格式化輸出,使用的參數(shù)和C語言中的printf函數(shù)一樣
eg:printf "%-5s %-10s %-4.2f\n" 1 James 80.9968
-
:表示左對齊,默認(rèn)為右對齊
s
:表示打印的是字符串
f
:表示打印一個浮點(diǎn)數(shù)购公,其中4表示寬度萌京,.2表示保留2位小數(shù)
printf
默認(rèn)不帶換行,需要手動添加
cat 查看文件
-n
:為每行前面加上行號宏浩。-n會為空白行也加上行號知残,-b選項則會跳過空白行。
-s
:壓縮相鄰的空白行比庄,即連續(xù)的空白行將壓縮為一行求妹。
-T
:用^I符號表示制表符\t
grep 匹配
grep [options] [表達(dá)式]
-
[options]列表:
-c :只輸出匹配行的統(tǒng)計數(shù)
-n :顯示匹配行及行號
-A2 :列出匹配行及下面2行
-B2 :列出匹配行及上面2行
-C2 :列出匹配行及上下2行
-I :不區(qū)分大小寫(只適用于單字符)
-h :查詢多文件時不顯示文件名
-H :查詢多文件時顯示文件名(默認(rèn))
-l :查詢多文件時只輸出包含匹配字符的文件名
-o :每行只輸出匹配部分
-s :不顯示不存在或無匹配文本的錯誤信息
-v :顯示不包含匹配文本的所有行
-r :遞歸匹配目錄下所有文件及目錄
-E :擴(kuò)展grep,增加了額外的正則表達(dá)式元字符集
-e :指定多個匹配樣式佳窑,樣式間“或”的關(guān)系
-f pattern_file:樣式文件pattern_file中逐行存放要匹配的樣式制恍,可匹配多個樣式,樣式之間是“或”的關(guān)系
--color :為匹配項顯示不同顏色 grep –E "pattern1|pattern2" files
:顯示匹配pattern1
或pattern2
的行grep –e pattern1 –e pattern2 files
: 匹配pattern1
或pattern2
4)grep pattern1 files | grep pattern2
:顯示既匹配pattern1
又匹配pattern2
的行egrep "t_hero|t_item"
匹配t_hero
或者t_item
的項grep "t_hero\|t_item"
可以實現(xiàn)與上面同樣的功能
sed 處理內(nèi)容
sed [options] 'command' file(s)
或sed [options] -f scriptfile file(s)
一次處理一行內(nèi)容 不改變文件內(nèi)容
[options]列表:
-n : 取消默認(rèn)的輸出,使用安靜(silent)模式神凑。
-r : 使用正則表達(dá)式净神,及表達(dá)式中不需要進(jìn)行轉(zhuǎn)義
-f filename : 指定sed腳本的文件名filename
-e '' : 允許多重編輯·
-i : 將替換結(jié)果應(yīng)用于源文件
- 替換字符串
sed 's/pattern/string/' file
或者
cat file | sed 's/pattern/string/'
- 替換文件中所有匹配內(nèi)容,使用參數(shù)g
sed 's/pattern/string/g' file
但如果你想從第N處匹配開始替換耙厚,可以使用參數(shù)/Ng
$ echo thisthisthisthis | sed 's/this/THIS/2g' thisTHISTHISTHIS
- sed的定界符'/'.當(dāng)匹配模式中含有'/'字符時强挫,我們需要用''對定界符'/'進(jìn)行轉(zhuǎn)義
$ echo a/b | sed 's/a\/b/a*b/' a*b
為了避免轉(zhuǎn)義字符造成的理解困難,我們可以使用其它定界符薛躬,比如|,:,@,#,$,%,+等等
$ echo a/b | sed 's:a/b:a*b:' a*b
- 移除匹配樣式行
sed '/pattern/d' file
$ sed -r '/^ *$/d' args.txt #移除空白行,含有一個或多個空格的行
- 組合多個表達(dá)式
$ echo abd | sed 's/a/A/' | sed 's/d/D/' #用管道組合
$ echo abd | sed 's/a/A/;s/d/D/' #用分號組合
$ echo abd | sed -e 's/a/A/' -e 's/d/D/' #用-e選項組合
- 已匹配字符串標(biāo)記(&)
&代表匹配給定樣式的字符串呆细,常用于對給定樣式增加[]型宝,{}等不需要改變樣式的情況
$ echo "this is an example" | sed 's/\w\+/[&]/g' #\w\+ 匹配每個單詞
[this] [is] [an] [example]
- 子串匹配標(biāo)記(\1)
有時我們希望對匹配給定的樣式標(biāo)記出一些子串來,方便后續(xù)引用
\(pattern\)
用于匹配子串pattern
\1 用于引用第一個匹配到的子串絮爷,\n 對應(yīng)第n個匹配到的子串趴酣。
$ echo 123 asd | sed 's/\([0-9]\+\) \([a-z]\+\)/\2+\1/'
asd+123
其中\(zhòng)1對應(yīng)數(shù)字123,\2對應(yīng)字母asd
對于子串的引用坑夯,在樣式里一定要用()括起來岖寞,如果加上-r選項,則不需要轉(zhuǎn)義:
$ echo 123 asd | sed -r 's/([0-9]+) ([a-z]+)/\2+\1/'
asd+123
- 引用
在腳本中有用的一點(diǎn)柜蜈,用雙引號引用的sed表達(dá)式仗谆,會對表達(dá)式求值來進(jìn)行擴(kuò)展,如使用前面定義的變量等
$ text=hello
$ echo hello world | sed "s/$text/HELLO/"
HELLO world
tail 查看文件
用于顯示指定文件末尾內(nèi)容淑履,不指定文件時隶垮,作為輸入信息進(jìn)行處理。常用查看日志文件
主要參數(shù)
-f :循環(huán)讀取 #可以用在監(jiān)控線上有沒有報錯信息
-q :不顯示處理信息
-v :顯示詳細(xì)的處理信息
-c<數(shù)目> :顯示的字節(jié)數(shù)
-n<行數(shù)> :顯示行數(shù)
--pid=PID :與-f合用,表示在進(jìn)程ID,PID死掉之后結(jié)束.
-q, --quiet, --silent :從不輸出給出文件名的首部
find 查找
find dir [option] 'command'
dir
: 目錄名秘噪,用空格隔開多個目錄
-
[option]列表:
-name wildcard 文件名狸吞,wildcard表示通配符,并非正則式
find dir1 dir2 -name '.c' –print 在目錄dir1和dir2中查找文件,并打印路徑
如果在-name后面緊跟一個-prune蹋偏,則表示此目錄應(yīng)被修剪
find . ( -name ".svn" -prune ) -o –print 表示對于查找的目錄便斥,要么修剪掉(.svn),要么打印出來(其他)威始。
-iname 忽略名字大小寫
-path 指定目錄枢纠,如果在-path前面加上 ! 字逗,則表示忽略此目錄京郑,目錄名可以使用通配符匹配。
-type 文件類型
f:普通文件 d:目錄 l:符號連接文件 c:字符設(shè)備文件 b:塊設(shè)備文件 p:管道文件
-size ±nc 查找大于(+)或小于(-)n字節(jié)的文件葫掉,注意c(charter)
-mtime ±ndays 文件最近修改時間
-user,-nouser 文件所有者
-group,-nogroup 指定文件用戶組
多條件的與(-a)/或(-o)/非(P┚佟)
find . ( -name ".txt" –o –name "*.sh" ) –print
括號兩邊應(yīng)該有空格
-maxdepth n 指定最大目錄深度,n=1表示最大為當(dāng)前目錄
-mindepth n 指定最小目錄深度俭厚,n=2表示不打印當(dāng)前目錄下的文件
-maxdepth和-mindepth應(yīng)作為find的第三個參數(shù)出現(xiàn)户魏,以提高效率 -
'command'命令列表:
-print 打印路徑名
-delete 對找到的文件進(jìn)行刪除
-exec 對查找到的目標(biāo)執(zhí)行某一命令。
find ${workdir} -name "$filename" -exec |grep $uid
-exec 參數(shù)后面跟的是bash命令挪挤,但只能跟一個命令叼丑,如果想執(zhí)行多個命令,那么可以將多個命令放進(jìn)一個shell腳本扛门,然后執(zhí)行這個腳本鸠信。
bash命令的終止,使用 ';' (分號)來判定论寨,在后面必須有一個 ';'在分號前應(yīng)該加上轉(zhuǎn)義字符''
'{}'星立,使用{}來表示文件名,也就是find前面處理過程中過濾出來的文件葬凳,用于bash命令進(jìn)行處理
-ok 與-exec類似绰垂,只是對查找到符合條件的目標(biāo)執(zhí)行一個命令前需要經(jīng)過確認(rèn)
cut 剪切
cut
命令從文件的每一行剪切字節(jié)、字符和字段并將這些字節(jié)火焰、字符和字段寫至標(biāo)準(zhǔn)輸出劲装,必須指定 -b
、-c
或-f
標(biāo)志之一昌简。
主要參數(shù)
-b: 以字節(jié)為單位進(jìn)行分割占业。這些字節(jié)位置將忽略多字節(jié)字符邊界,除非也指定了 -n 標(biāo)志江场。
-c: 以字符為單位進(jìn)行分割纺酸。(單個字母等)
cut –c2-5 file ,表示將文件file每行的第2-5個字符作為一列顯示出來址否。
-d: 自定義分隔符餐蔬,默認(rèn)為制表符碎紊。
-f: 與-d一起使用,指定顯示哪個區(qū)域樊诺。
例子:cat file.txt | cut -d']' -f7仗考;
cat file.txt | cut -d']' –f4,7;//打印4和7列
cat file.txt | cut -d']' –f4-7词爬;//打印4到7列
-n: 取消分割多字節(jié)字符秃嗜。僅和 -b 標(biāo)志一起使用。如果字符的最后一個字節(jié)落在由 -b 標(biāo)志的 List 參數(shù)指示的<br />范圍之內(nèi)顿膨,該字符將被寫出锅锨;否則,該字符將被排除恋沃。
--complement: 與-f一起使用必搞,指定顯示哪個區(qū)域的補(bǔ)集。
sort 排序
sort
將文件的每一行作為一個單位囊咏,相互比較恕洲,比較原則是從首字符向后,依次按ASCII
碼值進(jìn)行比較梅割,最后將他們按升序輸出霜第。
主要參數(shù):
-u: 去除重復(fù)行
-r: sort默認(rèn)的排序方式是升序,如果想改成降序户辞,用此參數(shù)
-o file: 把排序結(jié)果輸出到文件file泌类,file可以是原文件
-n: 以數(shù)值排序
-t: 指定間隔符
-k: 指定域排序,常與-t連用底燎。sort –t ':' –k 2
在指定域的時候還可細(xì)分末誓,比如指定第二個域的第3個字符開始比較,用-k 2.3;
比如指定第二個域的第3個字符到第二個域的第5個字符進(jìn)行排序书蚪,用-k 2.3,2.5
比如只指定第二個域的第3個字符進(jìn)行排序,用-k 2.3,2.3
-b: 忽略每一行前面的所有空白部分迅栅,從第一個可見字符開始比較
-f: 忽略大小寫進(jìn)行排序
uniq 去重
-c : 統(tǒng)計重復(fù)的行數(shù)
-u : 只顯示不重復(fù)的那些行
-d : 只顯示重復(fù)的那些行
-s n : 指定跳過前n個字符
-w n : 指定用于比較的最大字符數(shù)
wc 統(tǒng)計
使用wc的各種選項來統(tǒng)計行數(shù)殊校、單詞數(shù)和字符數(shù)。
主要參數(shù):
-l :行數(shù)
-w :單詞數(shù)
-c :字符數(shù)
seq
seq A B
: 用于產(chǎn)生從某個數(shù)到另外一個數(shù)之間的所有整數(shù)
主要參數(shù):
-f:指定格式读存。默認(rèn)是"%g"为流,表示按寬度為1輸出∪貌荆可以在g的前面加入一些字符敬察,表示不同的含義,如:
%2g:表示按寬度為2右對齊尔当。
%02g:表示按寬度為2右對齊莲祸,不足的部分用0補(bǔ)足蹂安。
可用于構(gòu)造日志文件名
for i in `seq -f "log.20160407"%02g 5 12`; do echo $i; done
str%03g:表示按寬度為3右對齊,補(bǔ)足的位數(shù)用0補(bǔ)锐帜,并在前面加上str子串田盈。
%-3g:表示按寬度為3左對齊。
mkdir 創(chuàng)建目錄
常用參數(shù):
-p: 可以是一個路徑名稱缴阎。此時若路徑中的某些目錄尚不存在允瞧,加上此選項后,系統(tǒng)將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;
-m <777>: 模式蛮拔,設(shè)定權(quán)限<模式>
-v: 在創(chuàng)建目錄的同時輸出信息述暂。
date 時間
-
顯示時間
date [OPTION]... [+FORMAT]
date "+%Y-%m-%d %H:%M:%S" #顯示當(dāng)前的年月日時分秒 -
設(shè)置時間
date -s //設(shè)置當(dāng)前時間,只有root權(quán)限才能設(shè)置建炫,其他只能查看畦韭。
date -s 20080523 //設(shè)置成20080523,這樣會把具體時間設(shè)置成空00:00:00
date -s 15:20:30 //設(shè)置時間
date +%s //當(dāng)前時間時間戳 -
轉(zhuǎn)換時間
把linux下的時間戳轉(zhuǎn)換成現(xiàn)實中的年月日時分秒date –d @timestamp
eg:$date -d @1433087999
2015年 05月 31日 星期日 23:59:59 CST
md5sum MD5
MD5全稱是報文摘要算法(Message-Digest Algorithm 5)踱卵,此算法對任意長度的信息逐位進(jìn)行計算廊驼,產(chǎn)生一個二進(jìn)制長度為128位(十六進(jìn)制長度32位)的“指紋”(或稱“報文摘要”),即使兩個文件只相差一個字符惋砂,產(chǎn)生的校驗和也完全不同妒挎。
-
使用md5sum來產(chǎn)生指紋(報文摘要)命令如下:
md5sum file > file.md5
若不指定文件名,則從標(biāo)準(zhǔn)輸入讀取西饵,也可輸出到標(biāo)準(zhǔn)輸出設(shè)備酝掩,因此可與管道符“|”連用。
可以使用文件通配符眷柔,將多個文件的md5值輸出到同一個文件期虾。
文件file.md5的內(nèi)容如下:c0e207c045c344ebf363c3e9a6de1076 file
第一列是md5校驗和,第二列是對應(yīng)文件名驯嘱。 -
使用md5報文摘要驗證文件镶苞。
將生成的file.md5文件放在對應(yīng)file文件的同一目錄下。使用如下命令驗證:md5sum -c file.md5
若驗證成功鞠评,輸出“file: 確定”茂蚓;驗證失敗則輸出“file: 失敗”,并打印警告信息:“md5sum: 警告:1/1 生成的校驗和不匹配”剃幌。
ln 鏈接
主要參數(shù):
-f : 鏈結(jié)時先將與 dist 同檔名的檔案刪除
-d : 允許系統(tǒng)管理者硬鏈結(jié)自己的目錄
-i : 在刪除與 dist 同檔名的檔案時先進(jìn)行詢問
-n : 在進(jìn)行軟連結(jié)時聋涨,將 dist 視為一般的檔案
-s : 進(jìn)行軟鏈結(jié)(symbolic link)
ln –s target new
為target文件建立一個軟鏈接new指向target
-v : 在連結(jié)之前顯示其檔名
-b : 將在鏈結(jié)時會被覆寫或刪除的檔案進(jìn)行備份
-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
-V METHOD : 指定備份的方式
--help : 顯示輔助說明
--version : 顯示版本
split 大文件切割
split -b 500m file newfile_prefix
-l:行數(shù),指定每多少行切成一個小文件负乡。
-b:指定每多少字就要切成一個小文件牍白。支持單位:m,k
-C:與-b參數(shù)類似,但切割時盡量維持每行的完整性抖棘。
-d:指定切割后的文件名以數(shù)字作為后綴
合并: cat newfile_prefix* > newfile
alias 別名
alias myssh=’sh filename.sh’
chmod 權(quán)限
使用chmod命令設(shè)置文件權(quán)限茂腥。
chmod a+x file
u : 指定用戶權(quán)限
g : 指定用戶組權(quán)限
o : 指定其他用戶權(quán)限
a : 指定所有類別
+ : 增加權(quán)限
- : 刪除權(quán)限
r : 可讀
w : 可寫
x : 可執(zhí)行狸涌,對目錄文件來說表示可訪問目錄中的文件和子目錄
vim 文本編輯工具
vimdiff
文本差異對比
vimdiff FILE_LEFT FILE_RIGHT
常用命令:
Ctrl-w K 把當(dāng)前窗口移到最上邊
Ctrl-w H 把當(dāng)前窗口移到最左邊
Ctrl-w J 把當(dāng)前窗口移到最下邊
Ctrl-w L 把當(dāng)前窗口移到最右邊
Ctrl-w,w 在兩個文件之間來回跳轉(zhuǎn)
]c 跳轉(zhuǎn)到下一差異點(diǎn)
[c 跳轉(zhuǎn)到上一差異點(diǎn),可在前面加上數(shù)字础芍,表示跳轉(zhuǎn)多少個差異
dp(diff put) 把一個差異點(diǎn)中當(dāng)前文件的內(nèi)容復(fù)制到另一個文件中
do(diff get) 另一個文件的內(nèi)容復(fù)制到當(dāng)前行中
:diffupdate 手工來刷新比較結(jié)果
zo(folding open) 展開被折疊的相同的文本行
zc(folding close) 重新折疊
paste 拼接
用paste命令實現(xiàn)按列拼接杈抢。
$ paste file1 file2 file3...
參數(shù):
-d:指定定界符
ls 列出目錄
以下是幾種方法列出當(dāng)前路徑下的目錄。
ls –d */
ls –F | grep "/$"
ls –l | grep "^d"
find . –type d –maxdepth 1 –print
jps 顯示java進(jìn)程
顯示當(dāng)前系統(tǒng)的java進(jìn)程情況仑性,及其id號惶楼。我們可以通過它來查看我們到底啟動了幾個java進(jìn)程(因為每一個java程序都會獨(dú)占一個java虛擬機(jī)實例),和他們的進(jìn)程號(為下面幾個程序做準(zhǔn)備)诊杆,并可通過opt來查看這些進(jìn)程的詳細(xì)啟動參數(shù)歼捐。
主要參數(shù):
-q 只顯示pid,不顯示class名稱,jar文件名和傳遞給main 方法的參數(shù)
-m 輸出傳遞給main 方法的參數(shù)晨汹,在嵌入式j(luò)vm上可能是null
-l 輸出應(yīng)用程序main class的完整package名 或者 應(yīng)用程序的jar文件完整路徑名
-v 輸出傳遞給JVM的參數(shù)
xargs 參數(shù)傳遞
xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr] [-L number] [-n number [-x]] [-P maxprocs] [-s size] [utility [argument ...]]
給其他命令傳遞參數(shù)的一個過濾器豹储,也是組合多個命令的一個工具。
最經(jīng)典應(yīng)用模式: somecommand | xargs -item command
不帶command
淘这,默認(rèn)的使用echo
輸出
用途:
1.構(gòu)造參數(shù)列表并運(yùn)行命令剥扣,即將接收的參數(shù)傳遞給后面的command
命令執(zhí)行
2.將多行輸入轉(zhuǎn)換為單行(特殊功效)
優(yōu)點(diǎn):
1.將輸入?yún)?shù)整理后,去除<newline>
換行符铝穷,以一個列表形式處理
2.避免參數(shù)過長引發(fā)的問題钠怯,使用xargs -n
參數(shù)適當(dāng)控制,對于經(jīng)常產(chǎn)生大量輸出的命令如find
曙聂、locate
和grep
來說非常有用
-item
代表選項:
-0 當(dāng)sdtin含有特殊字元時候晦炊,將其當(dāng)成一般字符,想/'空格等
-a file 從文件中讀入作為sdtin
-e flag 注意有的時候可能會是-E宁脊,flag必須是一個以空格分隔的標(biāo)志断国,當(dāng)xargs分析到含有flag這個標(biāo)志的時候就停止。
-E EOF 指定輸入結(jié)束符
-n num 后面加次數(shù)榆苞,表示命令在執(zhí)行的時候一次用的argument的個數(shù)稳衬,默認(rèn)是用所有的。
-p 操作具有可交互性坐漏,每次執(zhí)行comand都交互式提示用戶選擇宋彼,當(dāng)每次執(zhí)行一個argument的時候詢問一次用戶
-t 表示先打印命令,然后再執(zhí)行仙畦。
-i 或者是-I,這得看linux支持了音婶,將xargs的每項名稱慨畸,一般是一行一行賦值給{},可以用{}代替衣式。
-r no-run-if-empty 如果沒有要處理的參數(shù)傳遞給xargsxargs 默認(rèn)是帶 空參數(shù)運(yùn)行一次寸士,如果你希望無參數(shù)時檐什,停止 xargs,直接退出弱卡,使用 -r 選項即可乃正,其可以防止xargs 后面命令帶空參數(shù)運(yùn)行報錯。
-s num xargs后面那個命令的最大命令行字符數(shù)(含空格)
-L 從標(biāo)準(zhǔn)輸入一次讀取num行送給Command命令 婶博,-l和-L功能一樣
-d delim 分隔符瓮具,默認(rèn)的xargs分隔符是回車,argument的分隔符是空格凡人,這里修改的是xargs的分隔符
-x exit的意思名党,如果有任何 Command 行大于 -s Size 標(biāo)志指定的字節(jié)數(shù),停止運(yùn)行 xargs 命令挠轴,-L -I -n 默認(rèn)打開-x參數(shù)传睹,主要是配合-s使用
-P 修改最大的進(jìn)程數(shù),默認(rèn)是1岸晦,為0時候為as many as it can.
未完待續(xù)...
原文鏈接:http://blog.keepmovingxin.com/2016/04/28/Linux-Commond/