命令使用求助[1]
命令名 --help
查看命令的使用方法。
如:date --help
管道操作[2]
-|
管道,配合其他命令使用。將上一條命令的輸出作為下一條命令的輸入。
如:ps -ef | grep java
信息分析處理[3]
#awk #sed #grep #wc #echo #cut #sort
- awk:文本分析工具。awk 會把每行進行一個拆分,用相應的命令對拆分出來的“段”進行處理。
- 行工作模式,讀入文件的每一行,會把一行的內(nèi)容,存到$0里
- 使用內(nèi)置的變量FS(段的分隔符,默認用的是空白字符),分割這一行,把分割出來的每個段存到相應的變量$(1-100)
- 輸出的時候按照內(nèi)置變量OFS(out FS),輸出
- 讀入下一行繼續(xù)操作
語法:awk ‘匹配模式+行為’ filename
示例:
provins=($(awk '{print $2}' provinsInfo.txt)) 將文本provinsInfo.txt中每行按空格分隔后的第2個(從1開始)。字符串放入數(shù)組provins中。
echo "String:number" | awk -F':' ‘{print $2}’ 將字符串"String:number"按‘:’進行分隔,并取第2部分。
- sed:文本處理工具,配合不同的參數(shù)執(zhí)行刪除、修改、獲取等操作。
語法:sed -參數(shù) '行為'
示例:
sed -i ‘/linux/d’ log.txt 直接在log.txt文件中刪除包含linux的行
sed ‘$d’ log.txt 刪除log.txt文件的最后一行
sed -n ‘3p’ log.txt 打印log.txt文件中的第3行
grep:文本的條件篩選工具
語法:cat filename | grep '篩選條件'
示例:
cat xferlog | grep ‘20170915’篩選出文件xferlog中包含字符‘20170915’的記錄(行)。
grep -v篩選出不包含篩選條件的記錄(行)。
grep -c輸出匹配行的條數(shù)
grep -n輸出匹配行所在的行號
cat xferlog | egrep ‘20170915|20170916’篩選出文件xferlog中包含字符‘20170915’或‘20170916’的記錄(行)。wc:文本信息統(tǒng)計工具
語法:wc filename
-l:列出文本行數(shù)
-w:列出文本字數(shù)(英文單字)
-m:列出字符數(shù)
示例:
wc -l config.txt顯示config文件的行數(shù)。(其他寫法:grep -n “” 文件名)
wc config.txt顯示結果為:n1 n2 n3 config.txt n1為文本行數(shù),n2為文本字數(shù),n3為文本字符數(shù)echo:文本打印或控制臺輸出
語法: echo XXX
示例:
echo “${username}=vike” 在控制臺打印。
echo -n "first line" 不打印換行符,后續(xù)內(nèi)容將與“first line”同行顯示
- cut:按條件截取字符串
語法:cat filename | cut -b n-m 截取文件的第n-m行字符
echo String | cut -d '分隔符' n 根據(jù)自定義分隔符截取第n段
示例:
cat config.txt | cut -b 2-8 截取config.txt文件中的2-8行。
echo config | cut -b 3 截取config字符串的第三個字符。
- sort:將文本內(nèi)容按ASCII碼值進行排序,升序打印。
語法:sort filename
示例:
sort config.txt 以文件的各行為單位,按ASCII碼排序打印輸出,原文本未做修改。
系統(tǒng)信息查詢[4]
#du (disk usage) #df #stat
作用:顯示目錄(或文件)所占磁盤空間的大小。
示例:
du -ah --max-depth=1 查看目錄下的所有文件的大小,以K、M、G的單位顯示。
-a 表示目錄中每個文件顯示各自磁盤使用情況
-h 以K,M,G為單位,提高信息的可讀性。
--max-depth=n 表示只深入到第n層目錄,此處設置為1,即表示只深入到第一層子目錄
df -h 顯示磁盤分區(qū)上的可使用的磁盤空間。默認顯示單位為KB。
stat -c 格式代碼 文件名 獲取關于文件的額外信息,包括文件系統(tǒng)和文件。
用戶及權限操作[5]
#chmod #chown #passwd
- chmod:修改文件(夾)權限
語法:chmod mode file
其中mode是指:owner+[rwx]
owner: u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
此外mode也可以是數(shù)字:r=4,w=2,x=1。
示例:
chmod ugo+r file.txt 將文件 file.txt 設為所有人添加讀取的權限。
chmod 777 file.txt 將文件file.txt 設為所有人皆可讀可寫可執(zhí)行。
- chown:修改文件(夾)所屬的用戶或用戶組
語法:chown own:group file
其中own指文件所屬用戶,group指文件所屬的群組
示例:
chown root: file.txt 改變文件file.txt的擁有者和群組
chown :aiusr file.txt 改變文件file.txt的組群
- passwd:修改系統(tǒng)用戶的密碼
語法:passwd username
回車后再依次輸入舊密碼和兩遍新密碼即可修改完成
(先登錄root,獲得root權限) passwd aiusr :修改用戶aiusr的密碼。
文件操作[6]
#mkdir #cd #cp #scp #mv #rm #touch #cat #head #tail #vi
- mkdir:創(chuàng)建文件夾
語法:mkdir [mode] dirname
示例:
mkdir 760 data 創(chuàng)建名為data的文件夾,權限為創(chuàng)建者可讀可寫可執(zhí)行,同組的可讀可寫,普通用戶無任何權限。
- cd:進入某個路徑下的文件夾
語法: cd filepath
示例:
cd /home/data 進入目錄/home/data
- cp:復制文件
語法:cp filepath1/filename1 filepath2/filename2
示例:
cp /home/data/1.txt /home/data/backup/2.txt 復制/home/data/目錄下的文件1.txt到目錄/home/data/backup/下,命名為2.txt。
- scp:復制文件至遠程服務器
語法:scp filepath1/filename1 remote_username@remote_ip:filepath2/filename2
示例:
scp home/vike/data/1.txt universal@192.168.1.246:/home/zw/data/1.txt 復制當前主機下/home/data/目錄下的文件1.txt到遠程主機universal(ip:192.168.1.246)的/home/zw/data/目錄下。
- mv:移動文件(重命名文件)
語法:mv filepath1/filename1 filepath2/filename2
示例:
mv /home/data/1.txt /home/data/backup/2.txt 移動/home/data/目錄下的文件1.txt到目錄/home/data/backup/下,命名為2.txt。
mv /home/data/1.txt /home/data/2.txt 將/home/data/目錄下的文件1.txt重命名為2.txt。
- rm:刪除文件
語法:rm filepath/filename
示例:
rm /home/data/1.txt 刪除/home/data/目錄下的文件1.txt
-f 強制刪除文件或者文件夾,不提示
-r 遞歸處理,將目錄下的文件及其子文件夾全部刪除
-i 刪除文件或目錄前先詢問用戶(輸入y或n后再進行操作)
- touch:創(chuàng)建文件
語法:touch filepath/filename
示例:
touch /home/data/2.txt 在/home/data/目錄下創(chuàng)建文件2.txt
- cat:打開文件
語法:cat filepath/filename
示例:
cat /home/data/1.txt 打開/home/data/目錄下的文件1.txt
cat -n filename 打開文件,并顯示行號。
- head,tail:查看文件前/后n行(不填寫參數(shù)時默認顯示10行)
語法:head [-n] filepath/filename;
tail [-n] filepath/filename
示例:
head /home/data/1.txt 打印/home/data/目錄下文件1.txt的前10行
tail -50 /home/data/1.txt 打印/home/data/目錄下文件1.txt的后50行
- vi,vim:編輯文件(打開文件后--i(輸入),:q!(退出),:wq(保存退出))
語法:vi filepath/filename
示例:
vi /home/data/1.txt 編輯/home/data/目錄下的文件1.txt
搜索[7]
#find #locate #whereis
進程[8]
-
ps -ef查看進程 -
crontab -l查看當前定時任務 -
crontab -e編輯當前定時任務
crontab格式
| 分 | 時 | 日 | 月 | 周 | 命令行 |
|---|
* :所有取值 / :每 X-Y:從X連續(xù)到Y X,Y:離散的X和Y
停止運行[9]
- 篩選出需要的腳本,獲取進程ID
ps -ef | grep '腳本名'
- 強行終止腳本
kill -9 進程ID
其他[10]
- 字符串/數(shù)值比較(參考:http://blog.csdn.net/weiyuweizhi/article/details/7488388)
整數(shù)比較:
-eq 等于,如:if [ "b" ]
-ne 不等于,如:if [ "b" ]
-gt 大于,如:if [ "b" ]
-ge 大于等于,如:if [ "b" ]
-lt 小于,如:if [ "b" ]
-le 小于等于,如:if [ "b" ]
< 小于(需要雙括號),如:(("b"))
<= 小于等于(需要雙括號),如:(("b"))
> 大于(需要雙括號),如:(("b"))
>= 大于等于(需要雙括號),如:(("b"))
字符串比較:
= 等于,如:if [ "b" ]
== 等于,如:if [ "b" ], 與=等價
注意:==的功能在[[]]和[]中的行為是不同的,如下:
1 [[ a以"z"開頭(模式匹配)那么將為true
2 [[ a等于z(字符匹配),那么結果為true
3 [ a" == "z" ] # 如果$a等于z*(字符匹配),那么結果為true
!= 不等于,如:if [ "b" ], 這個操作符將在[[]]結構中使用模式匹配.
< 小于,在ASCII字母順序下.如:
if [[ "b" ]]
if [ "b" ] 在[]結構中"<"需要被轉義.
> 大于,在ASCII字母順序下.如:
if [[ "b" ]]
if [ "b" ] 在[]結構中">"需要被轉義.
-z 字符串為"null".就是長度為0.
-n 字符串不為"null"
- 字符串截取切割(參考:http://www.jb51.net/article/56563.htm)
假設有變量 var=http://www.aaa.com/123.htm.
- # 號截取,刪除左邊字符,保留右邊字符。
echo ${var#*//}
其中 var 是變量名,# 號是運算符,*// 表示從左邊開始刪除第一個 // 號及左邊的所有字符
即刪除 http://,結果是 :www.aaa.com/123.htm
- ## 號截取,刪除左邊字符,保留右邊字符。
echo ${var##*/}
##*/ 表示從左邊開始刪除最后(最右邊)一個 / 號及左邊的所有字符
即刪除 http://www.aaa.com/,結果是 123.htm
- %號截取,刪除右邊字符,保留左邊字符
echo ${var%/*}
%/* 表示從右邊開始,刪除第一個 / 號及右邊的字符
- %% 號截取,刪除右邊字符,保留左邊字符
echo ${var%%/*}
%%/* 表示從右邊開始,刪除最后(最左邊)一個 / 號及右邊的字符
結果是:http:
- 從左邊第幾個字符開始,及字符的個數(shù)
echo ${var:0:5}
其中的 0 表示左邊第一個字符開始,5 表示字符的總個數(shù)。
結果是:http:
- 從左邊第幾個字符開始,一直到結束。
echo ${var:7}
其中的 7 表示左邊第8個字符開始,一直到結束。
結果是 :www.aaa.com/123.htm
- 從右邊第幾個字符開始,及字符的個數(shù)
echo ${var:0-7:3}
其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數(shù)。
結果是:123
- 從右邊第幾個字符開始,一直到結束。
echo ${var:0-7}
表示從右邊第七個字符開始,一直到結束。
結果是:123.htm
注:(左邊的第一個字符是用 0 表示,右邊的第一個字符用 0-1 表示)