Linux之我最常用的命令
更多內容,請點擊:http://blog.csdn.net/weixin_37977062?viewmode=contents
cd / ls / man /rm /
1.history
1.參數
n ;數字,列出最近的n筆命令
-c:將當前shell中的所有history清空
-r;將histfiles的內容讀到目前這個shell中的history中
-w:將目前的history記憶內容寫入histfiles中
2.用法
2.find
用法
find支持文件名的正則表達式查找,按文件修改時間查找,按文件大小查找,按文件權限查找,按文件類型查找等,查找到以後還支持直接對查找到的
文件使用命令,功能非常強大
典型的find命令的寫法是:
find 查找路徑 查找的標準查找到之後的動作
比如: find/home -type d -ls
意思是:找出/home/下所有的目錄,並顯示目錄的詳細信息
選項
1.按文件名查找
-name
直接加文件名,且支持文件名通配
iname
類似於-name,但是匹配文件名時不去分大小寫
-regex
正則表達式匹配文件名
example:
find . -name "vim*" -ls
查找當前目錄下所有以vim開頭的文件,並顯示其詳細信息
find . -iname "vim*" -ls
查找當前目錄下所有以vim開頭的文件(不區分大小寫),並顯示其詳細信息
2.按文件類型查找
-type 文件屬性
d: 目錄
f: 普通文件
l: 鏈接文件(link)
s: socket文件
p: 管道文件(pipe)
b: 塊設備文件
c: 字符設備文件
example:
find . -type d -ls
顯示當前目錄下所有的目錄的詳細信息
find . -type l -ls
顯示當前目錄下所有的鏈接文件的詳細信息
3.按文件所屬組/owner查找
-gid GID
-uid UID
-user USER
-group GROUP
-nouser
-nogroup
exmaple:
find . -user gavinzhou -ls
顯示當前目錄下屬於gavinzhou的所有的文件的詳細信息
4.按文件大小查找
size [+,-][b,k,M,G]
example:
find . -type f -size +1k -ls
顯示當前目錄下所有大於1k的普通文件的詳細信息
5.按文件的修改時間等查找
ctime: 改變時間(按照天計算)
atime: 訪問時間
mtime: 修改時間
-amin: 改變時間(按照分鐘計算)
-cmin: 訪問時間
-mmin: 修改時間
使用[+,-]表示[大於,小於]
example:
find . -atime -1 -ls
顯示當前目錄下所有在兩天以內訪問過得文件的詳細信息
find . -cmin +10 -ls
顯示當前目錄下所有超過10min沒有改變過的文件的詳細信息
6.按文件權限查找
-perm MODE
/MODE: 任意一位匹配即滿足條件
-MODE: 文件權限能完全包含此MODE時才符合條件
example:
find . -perm -644 -ls
顯示當前目錄下文件權限的每一位至少包含r-xr–r–的文件的詳細信息
find . -perm /464 -ls
顯示當前目錄下文件權限的某一位至少包含r–rx-r–的文件的詳細信息
7.組合查找
-a: and
-o: or
-not:
example:
find . -type d -o -type l -ls
顯示當前目錄下所有目錄和鏈接文件的詳細信息
8.後繼命令
-print: 顯示
-ls:類似ls-l的形式顯示每一個文件的詳細
-quit: 查找到一個就退出
-delete: 刪除匹配到的行
-ok COMMAND {} \;每一次操作都需要用戶確認,{}表示引用找到的文件,是佔位符
-exec COMMAND {} \;每次操作無需確認
example:
find . -type d -delete
刪除當前目錄下的所有目錄
find . -type f -ok wc -l {} \;
找出當前目錄下所有的普通文件並顯示文件行數(需確認)
find . -type f -exec wc -l {} \;
找出當前目錄下所有的普通文件並顯示文件行數(無需確認)
3.basename
1.用法示例
$ basename /usr/bin/sort輸出"sort"。
$ basename ./include/stdio.h .h輸出"stdio"。
爲basename指定一個路徑,basename命令會刪掉所有的前綴包括最後一個slash(‘/’)字符,然後將字符串顯示出來。
2.basename命令格式
basename [pathname] [suffix]
basename [string] [suffix]
suffix爲後綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。
示例:
1.$ basename /tmp/test/file.txt
2.file.txt
3.$ basename /tmp/test/file.txt .txt
4.file
3.注意點
1、如果像下面腳本中傳遞參數給basename,參數爲空,basename會將參數左移
2、basename最多接受兩個參數,如果設置的參數多於兩個,會提示錯誤
4.dirname | readlink
1.dirname
有時候,我們需要知道當前執行的輸出shell腳本的所在絕對路徑,可以用dirname實現。
我們知道dirname可以獲取一個文件所在的路徑,dirname的用處是:
輸出已經去除了尾部的”/”字符部分的名稱;如果名稱中不包含”/”,則顯示 ”.” (表示當前目錄)。
示例一:
dirname /usr/bin/sort
輸出:
/usr/bin
示例二:
dirname stdio.h
輸出:
從上面的描述可知道,直接從dirname返回的未必是絕對路徑,取決於提供給dirname的參數是否是絕對路徑。
所以下面這樣的代碼中SHELL_FOLDER中不一定是絕對路徑
SHELL_FOLDER=$(dirname "$0")
需要用cd和pwd命令配合獲取腳本所在絕對路徑,正確的寫法是這樣的,
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
2.readlink
所以用readlink命令我們可以直接獲取$0參數的全路徑文件名,然後再用dirname獲取其所在的絕對路徑:
SHELL_FOLDER=$(dirname $(readlink -f "$0"))
5.tar | gzip
從網絡上下載到的源碼包,最常見的是.tar.gz 包,還有一部分是 .tar.bz2包
要解壓很簡單 :
.tar.gz 格式解壓爲 tar -zxvf xx.tar.gz
.tar.bz2 格式解壓爲 tar -jxvf xx.tar.bz2
1.gzip, gunzip
最廣泛的壓縮工具,Linux系統中標準壓縮工具,對於文本文件能夠達到很高的壓縮率
例:
[root@localhost a]# gzip a.c
[root@localhost a]# ll a.c.gz
-rw-r--r--. 1 root root 271 Aug 20 08:32 a.c.gz
[root@localhost a]# gzip -d a.c.gz
[root@localhost a]# ll a.c
-rw-r--r--. 1 root root 423 Aug 20 08:32 a.c
gzip -d 等價於 gunzip
2.bzip2, bunzip2
新版Linux壓縮工具,比gzip擁有更高的壓縮率
3.tar命令
主選項
· -c創建新的檔案文件。如果用戶想備份一個目錄或者一些文件,就要選擇這個選項
-r 把要存檔的文件追加到檔案文件的末尾
-t 列出檔案文件的內容,查看已經備份了那些文件
-x 從檔案文件中釋放文件
輔助選項
-f 使用檔案文件或設備,這個選項通常是必選的
-v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息
-z 用gzip來壓縮文件,加上該選項後可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓縮
例一:把/home目錄下包括他的子目錄全部做備份文件,備份文件名爲usr.tar
tar cvf usr.tar /home
例二:把/home目錄下包括他的子目錄全部做備份文件,並進行壓縮,備份文件名爲usr.tar.gz
tar czvf usr.tar.gz /home
例三:把usr.tar.gz這個備份文件還原並解壓縮
tar xzvf usr.tar.gz
例四:查看usr.tar備份文件的內容,並以分屏方式顯示在顯示器上
tar tvf usr.tar |more
選項說明
-p 保留權限
-fname 使用name指定存檔文件名或設備名
-v 列出處理的詳細信息
-z 用GNU的gzip壓縮文件或解壓
-j 用GNU的bzip2壓縮文件或解壓
-C directory 將當前目錄切換到directory
-M 創建/列出/恢復多卷存檔文件,以便在幾個備份介質中存放
-N DATE 指定僅對那些比DATE新的文件進行操作
-p 表示希望保留文件許可權限
-P 保留文件的絕對路徑,即不去掉/
-w 要求等待用戶確認每一個操作
-W 表示在寫入備份內容到備份設備以後再讀出來進行驗證以提高可靠性
-T filename 從指定的文件中讀需要備份或恢復的文件名
-X filename 不處理給定文件中列出的文件
--exclude=PATTERN不處理指定的文件
6.mail
1.環境配置
第一步:
yum remove sendmail
yum remove postfix
第二步:
配置文件(添加)
vim /etc/mail.rc
set [email protected] //發送郵件的郵箱
set smtp=smtp.163.com //選擇的服務器
set smtp-auth-user=goupxm1314 //賬號用戶名
set smtp-auth-password=xim52011241314 //授權碼
set smtp-auth=login //登錄方式
2.命令
echo "TEST" | mail -s "LOVE" -a [email protected]
-s:郵件正文
-a:附件
1.echo "郵件內容"| mail -s "標題"-a附件 [email protected]
2.mail -s 標題 [email protected]< file
3.mail -s 標題 [email protected]
//郵件正文
……
……
ctrl+D結束正文併發送
7.awk
1.簡介
awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤爲強大。簡單來說awk就是把文件逐行的讀入,
以空格爲默認分隔符將每行切片,切開的部分再進行各種分析處理。
awk有3個不同版本:awk、nawk和gawk,未作特別說明,一般指gawk,gawk是AWK 的GNU版本。
完整的awk腳本通常用來格式化文本文件中的信息
2.使用方法
awk '{pattern +action}' {filenames}
例一:
搜索/etc/passwd有root關鍵字的所有行。
$ awk -F:'/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
這種是pattern的使用示例,匹配了pattern(這裏是root)的行纔會執行action(沒有指定action,默認輸出每行的內容)
例二:
搜索/etc/passwd有root關鍵字的所有行,並顯示對應的shell.
$ awk -F:'/root/{print $7}' /etc/passwd
/bin/bash
這裏指定了action{print$7}。
儘管操作可能會很複雜,但語法總是這樣,其中pattern表示AWK 在數據中查找的內容,而action 是在找到匹配內容時所執行的一系列命令。
花括號({})不需要在程序中始終出現,但它們用於根據特定的模式對一系列指令進行分組。pattern就是要表示的正規表示法,用斜槓括起來。
3.調用awk
有三種方式調用awk。
1.命令行方式
awk [-F field-separator] 'commands' input-file(s)
其中,commands是真正awk命令,[-F域分隔符]是可選的。input-file(s)是待處理的文件
在awk中,文件的每一行中,由域分隔符分開的每一項稱爲一個域。通常,在不指名-F域分隔符的情況下,默認的域分隔符是空白鍵或者Tab鍵
例一:
只顯示/etc/passwd的賬戶和賬戶對應的shell,而賬戶與shell之間以tab鍵分割
$ cat/etc/passwd |awk -F ':' '{print $1"\t"$7}'
root /bin/bash
daemon /bin/sh
bin /bin/sh
sys /bin/sh
例二:
只顯示/etc/passwd的賬戶和賬戶對應的shell,而賬戶與shell之間以逗號分割,而且在所有行添加列名name,shell,在最後一行添加"blue,/bin/nosh"。
$ cat/etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
name,shell
root,/bin/bash
daemon,/bin/sh
bin,/bin/sh
sys,/bin/sh
....
blue,/bin/nosh
2.shell腳本方式
將所有的awk命令插入一個文件,並使awk程序可執行,然後awk命令解釋器作爲腳本的首行,一遍通過鍵入腳本名稱來調用。
相當於shell腳本首行的:#!/bin/sh
可以換成:#!/bin/awk
3.文件調用方式
將所有的awk命令插入一個單獨文件,然後調用:
awk -fawk-script-file input-file(s)
其中,-f選項加載awk-script-file中的awk腳本,input-file(s)跟上面的是一樣的
4.awk內置變量
awk有許多內置變量用來設置環境信息,這些變量可以被改變,下面給出了最常用的一些變量。
ARGC 命令行參數個數
ARGV 命令行參數排列
ENVIRON 支持隊列中系統環境變量的使用
FILENAME awk瀏覽的文件名
FNR 瀏覽文件的記錄數
FS 設置輸入域分隔符,等價於命令行-F選項
NF 瀏覽記錄的域的個數
NR 已讀的記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
此外,$0變量是指整條記錄,$1表示當前行的第一個域,$2表示當前行的第二個域,......以此類推。
例如:
awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR",columns:" NF ",linecontent:"$0}' /etc/passwd
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:daemon:x:1:1:daemon:/usr/sbin:/bin/sh
filename:/etc/passwd,linenumber:3,columns:7,linecontent:bin:x:2:2:bin:/bin:/bin/sh
filename:/etc/passwd,linenumber:4,columns:7,linecontent:sys:x:3:3:sys:/dev:/bin/sh
使用printf替代print,讓代碼更加簡潔易讀。
$ awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}'/etc/passwd
5.print和printf
awk中同時提供了print和printf兩種打印輸出的函數。
其中print函數的參數可以是變量、數值或者字符串。字符串必須用雙引號引用,參數用逗號分隔。如果沒有逗號,參數就串聯在一起而無法區分。
這裏,逗號的作用與輸出文件的分隔符的作用是一樣的,只是後者是空格而已。
printf函數,其用法和c語言中printf基本相似,可以格式化字符串,輸出複雜時,printf更加好用,代碼更易懂。
6.awk編程
1.變量和賦值
除了awk的內置變量,awk還可以自定義變量。
範例1:統計/etc/passwd的賬戶人數。
$ awk'{count++;print $0;} END{print "user count is ", count}'/etc/passwd
root:x:0:0:root:/root:/bin/bash
......
user count is 40
count是自定義變量。之前的action{}裏都是隻有一個print,其實print只是一個語句,而action{}可以有多個語句,以;號隔開。
這裏沒有初始化count,雖然默認是0,但是妥當的做法還是初始化爲0:
$ awk 'BEGIN{count=0;print "[start]user count is ", count}{count=count+1;print $0;} END{print "[end]user count is ",count}' /etc/passwd
[start]usercount is 0
root:x:0:0:root:/root:/bin/bash
...
[end]usercount is 40
範例2:統計某個文件夾下的文件佔用的字節數。
$ ls -l |awk'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'
[end]size is 8657198
如果以M爲單位顯示:
$ ls -l |awk'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size/1024/1024,"M"}'
[end]size is 8.25889 M
注意,統計不包括文件夾的子目錄。
2.條件語句
awk中的條件語句是從C語言中借鑑來的,見如下聲明方式:
if (expression){
statement;
statement;
... ...
}
if (expression){
statement;
} else {
statement2;
}
if (expression){
statement1;
} else if(expression1) {
statement2;
} else {
statement3;
}
範例3:統計某個文件夾下的文件佔用的字節數,過濾4096大小的文件(一般都是文件夾):
$ ls -l |awk'BEGIN {size=0;print "[start]size is ", size}{if($5!=4096){size=size+$5;}} END{print "[end]size is ",size/1024/1024,"M"}'
[end]size is 8.22339 M
3.循環語句
awk中的循環語句同樣借鑑於C語言,支持while、do/while、for、break、continue,這些關鍵字的語義和C語言中的語義完全相同。
4.數組
因爲awk中數組的下標可以是數字和字母,數組的下標通常被稱爲關鍵字(key)。值和關鍵字都存儲在內部的一張針對key/value應用hash的表格裏。由於hash不是順序存儲,因此在顯示數組內容時會發現,它們並不是按照你預料的順序顯示出來的。數組和變量一樣,都是在使用時自動創建的,awk也同樣會自動判斷其存儲的是數字還是字符串。
一般而言,awk中的數組用來從記錄中收集信息,可以用於計算總和、統計單詞以及跟蹤模板被匹配的次數等等。
範例4:顯示/etc/passwd的賬戶
$ awk -F ':''BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i <NR; i++) print i, name[i]}' /etc/passwd
0 root
1 daemon
2 bin
3 sys
4 sync
5 games
......
這裏使用for循環遍歷數組
8.sed
1.簡介
sed是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(patternspace),接着用sed命令處理
緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有改變,除非你使用重定向
存儲輸出。sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程序等。
2.sed [-nefr] [動作]
1.選項與參數
-n:使用安靜(silent)模式。在一般sed的用法中,所有來自STDIN 的數據一般都會被列出到終端上。但如果加上-n 參數後,則只有經過sed特殊處理的那一行(或者動作)纔會被列出來。
-e :直接在命令列模式上進行sed 的動作編輯;
-f :直接將sed 的動作寫在一個文件內,-f filename則可以運行filename 內的sed 動作;
-r :sed的動作支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法)
-i:直接修改讀取的文件內容,而不是輸出到終端。
1.$ sed -i's/\.$/\!/g' regular_express.txt
利用sed將regular_express.txt內每一行結尾若爲. 則換成 !
2.$ sed -i '$a# This is a test' regular_express.txt
①利用sed直接在regular_express.txt最後一行加入“# This is a test”
②$代表的是最後一行,而a的動作是新增
2.動作說明
動作說明:[n1[,n2]]function
n1, n2:不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在10到 20行之間進行的,則『10,20[動作行爲]』
3.function
a :新增,a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
head -n 3/etc/passwd | sed '2a Drink tea or ......\
> drinkbeer ?'
c :取代,c 的後面可以接字串,這些字串可以取代n1,n2之間的行!
nl /etc/passwd| sed '2,5c No 2-5 number'
d :刪除,因爲是刪除啊,所以d 後面通常不接任何咚咚;
nl /etc/passwd| sed '/root/d'
i :插入,i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
head -n 3/etc/passwd | sed '2i goup love ximeng'
p:列印,亦即將某個選擇的數據印出。通常p會與參數sed -n 一起運行
nl /etc/passwd| sed '/root/p'
nl /etc/passwd| sed -n '/root/p'
s:取代,可以直接進行取代的工作哩!通常這個s的動作可以搭配正規表示法!例如1,20s/old/new/g就是啦!
4.數據的搜尋並替換
sed's/要被取代的字串/新的字串/g'
5.多點編輯
多點編輯-e
$ nl/etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1 root:x:0:0:root:/root:/bin/blueshell
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
sed 後面接的動作,請務必以'' 兩個單引號括住
例如:
1.nl/etc/passwd | sed '2,5d' 刪除2-5行
2.nl/etc/passwd | sed '3,$d' 刪除3-最後一行
3.head -n 3/etc/passwd | sed '2i goup love ximeng'
root:x:0:0:root:/root:/bin/bash
goup loveximeng
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
4.#head -n 3/etc/passwd | sed '2a Drink tea or ......\
> drinkbeer ?'
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Drink tea or......
drink beer ?
bin:x:2:2:bin:/bin:/bin/sh
5.nl/etc/passwd | sed '2,5c No 2-5 number'將第2-5行內容替換爲“No2-5 number”
6.nl/etc/passwd | sed -n '5,7p'僅列出5-7行
7.nl/etc/passwd | sed '/root/p'搜索/etc/passwd有root關鍵字的行。
如果root找到,除了輸出所有行,還會輸出匹配行。
8.nl/etc/passwd | sed '/root/d'刪除/etc/passwd所有包含root的行,其他行輸出
9,先觀察原始信息,利用/sbin/ifconfig查詢IP:打印出本機的ip是192.168.1.100。
$/sbin/ifconfig eth0
eth0 Linkencap:Ethernet HWaddr 00:90:CC:A6:34:84
inetaddr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr:fe80::290:ccff:fea6:3484/64 Scope:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Metric:1
.....(以下省略).....
第一步:下面將IP前面的部分予以刪除:
$/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
192.168.1.100Bcast:192.168.1.255 Mask:255.255.255.0
第二步:接下來則是刪除IP後面的部分:
$/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed's/Bcast.*$//g'
192.168.1.100
9.tee
雙重重定向
tee [-a] file
-a:追加(append)
能夠將數據分流到文檔與屏幕
例如:ls -l |tee [-a] ~/homefile | more
10.tr
1.用法
tr [-ds] SET1 ...
2.參數
-d:刪除訊息當中的SET1這個字符串
-s:替換掉重複的字符
例一:
將last輸出的訊息中,小寫轉換成大寫
last | tr'[a-z]' '[A-Z]'
例二:
將/etc/passwd輸出的訊息中,將冒號(:) 刪除。
$ cat/etc/passwd | tr -d ':'
11.grep
1.用法
grep [-acinv] [--color=auto] '搜索字符串'filename | [less | more]
2.參數
-a:將bin文件以text文件的方式
-c:計算找到'搜索字符串的次數'
-i :忽略大小寫的不同
-n:順便輸出行號
-v:反向搜索
--color=auto:加色
-r:明確要求搜索子目錄 grep-d skip忽略子目錄
-l: 只列出匹配的文件名
-L: 列出不匹配的文件名
-w: 只匹配整個單詞,而不是字符串的一部分(如匹配magic,而不是magical)
沒有參數,在當前目錄搜索帶'索搜字符串'行的文件
3.用於搜索的特殊符號
1./< 和/>分別標註單詞的開始和結尾
例如:
grep man* 會匹配'Batman'、'manic'、'man'等
grep '/<man'* 匹配'manic'、'man',不匹配'Batman'
grep '/<man/>'* 只匹配'man'
2.'^' 指匹配的字符串在行首
例如:
grep -n'[^a-z]oo' a.txt
匹配oo前非小寫字母的行
grep -n'^[a-z]' a.txt
匹配以小寫開頭的行
3.'$' 指匹配的字符串在行尾
例如:
grep -n '^$'a.txt
找出空白行
4.正則語法總結
特殊字符表示意義
^word 待搜尋的字符在行首
word$ 待搜尋的字符在行尾
. 匹配任何一個可能的字符
/ 跳脫符號將特殊字符變成普通字符
? 任何一個單一字符
* 匹配模式中重複的字符
[list] 列表中的字符
[range] 列表中範圍內的字符
[^range] 反向選擇,與[list] 相反
/{n/} 與前一個相同字符連續n 個
/{n,m/} 與前一個相同字浮連續n-m 個
12.uname
1.uname –a詳解
例一
$ uname -a
系統名節點名稱 操作系統的發行版號 內核版本
Linux ubuntu 3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 2717:25:43 UTC 2012
系統處理器的體系結構 CPU硬件平臺 操作系統
i686 i686 i386 GNU/Linux
例二
系統名節點名稱 操作系統的發行版號 內核版本
Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Sun Nov10 22:19:54 EST 2013
系統處理器的體系結構 CPU硬件平臺 操作系統
x86_64 x86_64 x86_64 GNU/Linux
2.參數
將每個參數都單獨執行一次,得到:
----------------------------------------------------------------------------
硬件平臺:
$ uname -i
i386
---------------------------------
機器硬件(CPU)名:
$ uname -m
I686
---------------------------------
節點名稱:
$ uname -n
Ubuntu
---------------------------------
操作系統:
$ uname -o
GNU/Linux
---------------------------------
系統處理器的體系結構:
$ uname -p
i686
---------------------------------
操作系統的發行版號:
$ uname -r
3.2.0-29-generic-pae
---------------------------------
系統名:
$ uname -s
Linux
---------------------------------
內核版本:
$ uname -v
#46-Ubuntu SMP FriJul 27 17:25:43 UTC 2012
13.wc
1.統計命令:wc
1.語法
語法:#wc [-lwm]
選項與參數:
-l :僅列出行;
-w :僅列出多少字(英文單字);
-m :多少字符;
2.使用
#wc /etc/passwd
40 45 1719/etc/passwd
40是行數,45是單詞數,1719是字節數
wc的命令比較簡單使用,每個參數使用如下:
#wc -l/etc/passwd #統計行數,在對記錄數時,很常用
/etc/passwd #表示系統有40個賬戶
#wc -w/etc/passwd #統計單詞出現次數
/etc/passwd
#wc -m/etc/passwd #統計文件的字節數
14.cut
1.參數
-b :以字節爲單位進行分割。這些字節位置將忽略多字節字符邊界,除非也指定了-n 標誌。
1.指定文件中每行的第1,3到7個字符輸出:
cut -b 1,3-7test.txt
2.-n表示1到前n個字符,n-表示從n開始的所有字符
3.打印前兩個字符和從第8個開始的字符
$ cut -b -2,8-test.txt
-c :以字符爲單位進行分割。
-d:自定義分隔符,默認爲製表符。
-f:與-d一起使用,指定顯示哪個區域。
-n :取消分割多字節字符。僅和-b 標誌一起使用。如果字符的最後一個字節落在由-b標誌的List 參數指示的<br/>範圍之內,
該字符將被寫出;否則,該字符將被排除。
2.用法
例1:
顯示所有的用戶名:
[root@localhost~]# cat /etc/passwd | head -n 5 | cut -d : -f 1
root
bin
daemon
adm
lp
例二:
[root@localhost~]# cat cut_ch.txt
星期一
星期二
星期三
星期四
[root@localhost~]# cut -b 3 cut_ch.txt
�
�
�
�
[root@localhost~]# cut -c 3 cut_ch.txt
一
二
三
四
//當遇到多字節字符時,可以使用-n選項,-n用於告訴cut不要將多字節字符拆開。
15.cat
1.參數
-n或--number由1開始對所有輸出的行數編號
-b或--number-nonblank和-n相似,只不過對於空白行不編號
-s或--squeeze-blank當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-v或–show-nonprinting
16.at
1.Ubuntu默認不安裝at,安裝at
sudoapt-get install at ,出錯,按照提示
sudoapt --fix-broken install at
2.安排一個一次性的任務,那麼at命令提供了一個快捷的方式,從而不需要接觸crontab
at命令的運行方式是在後面緊跟着你想要運行的任務的運行時間。時間是靈活的,因爲它支持許多時間格式。包括下面這些例子:
at12:00 PM September 30 2017
atnow + 1 hour
at9:00 AM tomorrow
實例:
goup@Goup-X450JB:~/Desktop/pritice$at now + 1 minute
warning:commands will be executed using /bin/sh
at>/home/goup/Desktop/pritice/goup.sh
at><EOT>
job4 at Tue Oct 10 14:47:00 2017
當你以帶參數的方式輸入at命令以後,將會提示你該命令將在你的linux系統上運行。這可能是一個備份腳本,一套維護任務,甚至是一個普通的bash命令。如果要結束任>務的話,可以按ctrl+d。
另外,你可以使用atq命令產看當前用戶的所有任務,或者使用sudoatq查看所有用戶的任務。它將會展示出所有排定好的任務,並且每一個任務都有一個ID。如果>你想取消一個排定好的任務,可以使用atrm命令,並且以任務ID作爲參數
17.shred
1.粉碎一個test.txt的文件命令是:
$shredtest.txt
2.粉碎多個文件的命令是:
$shredtest1.txt test2.txt
這兩條命令的效果是文件依舊存在,但不再是原來的文件了,對比測試可以通過先編輯一個文本文件後保存,然後使用shred命令覆蓋此文件,再打開該文本文件即可看出>內容不再是原有內容了。如果想要覆蓋的同時刪除文件(這纔是粉碎的表現麼),加上參數-u,命令變爲:
$shred–u test.txt
3.覆蓋一個掛載分區的文件命令是:
$shred/dev/hda0 //覆蓋IDE接口的第一個磁盤設備的第一分區
$shred/dev/sda2 //覆蓋SCSI或SATA接口的第一個磁盤設備的第三分區
在終端下使用shred命令來進行文件粉碎操作實在不方便,得益於Nautilus的可擴展性,我們可以給Ubuntu的Nautilus添加右鍵菜單來執行shred操作:
在終端下輸入命令安裝Nautilus-actions(中文名被漢化爲“Nautilus動作配置”):
$sudoapt-get install nautilus-actions
然後單擊“系統”–>“首選項”–>“Nautilus動作配置”->單擊“Definea new action”按鈕
然後在“添加新動作”窗口中輸入以下信息:
ContextLabel: Shred粉碎//你可以隨便想一個名字,這裏是顯示在右鍵菜單的名字
Tooltip: Shred粉碎機//一樣可以隨便想一個描述,這是停留在右鍵菜單的提示
Icon:gtk-dialog-warning //可以單擊Browse或者下拉菜單中選擇一個圖標
路徑:shred
參數:-f -u -v -z %M
然後單擊“Recordall themodified”標籤卡,如果只需要這個粉碎右鍵菜單出現在僅處理文件的時候,那麼就單擊“僅文件”單選框,同理如果需要出現在僅處理文件夾的>時候就單擊“僅文件夾”單選框,如果需要文件和文件夾上右鍵都能出現該粉碎菜單,那麼單擊“Both”單選框。另外勾選“Appearsif selection has multiple files or folders”複選框
18.lsof
1.信息含義
每行顯示一個打開的文件,若不指定條件默認將顯示所有進程打開的所有文件。lsof輸出各列信息的意義如下:
COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
TYPE:文件類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱
常用的參數列表: lsof filename 顯示打開指定文件的所有進程 lsof -a 表示兩個參數都必須滿足時才顯示結果 lsof -c string 顯示COMMAND列中包含指定字符的進程所有打開的文件 lsof -u username 顯示所屬user進程打開的文件 lsof -g gid 顯示歸屬gid的進程情況 lsof +d /DIR/ 顯示目錄下被進程打開的文件 lsof +D /DIR/ 同上,但是會搜索目錄下的所有目錄,時間相對較長 lsof -d FD 顯示指定文件描述符的進程 lsof -n 不將IP轉換爲hostname,缺省是不加上-n參數 lsof -i 用以顯示符合條件的進程情況 lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 --> IPv4 or IPv6 protocol --> TCP or UDP hostname --> Internet host name hostaddr --> IPv4地址 service --> /etc/service中的 service name (可以不只一個) port --> 端口號 (可以不只一個) 例如: 查看22端口現在運行的情況 # lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME sshd 1409 root 3u IPv6 5678 TCP *:ssh (LISTEN) 查看所屬root用戶進程所打開的文件類型爲txt的文件: # lsof -a -u root -d txt COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root txt REG 3,3 38432 1763452 /sbin/init mingetty 1632 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1633 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1634 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1635 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1636 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1637 root txt REG 3,3 14366 1763337 /sbin/mingetty kdm 1638 root txt REG 3,3 132548 1428194 /usr/bin/kdm X 1670 root txt REG 3,3 1716396 1428336 /usr/bin/Xorg kdm 1671 root txt REG 3,3 132548 1428194 /usr/bin/kdm startkde 2427 root txt REG 3,3 645408 1544195 /bin/bash ... ...
19.netstat
常用參數
-a (all)顯示所有選項,默認不顯示LISTEN相關
-t(tcp)僅顯示tcp相關選項
-u(udp)僅顯示udp相關選項
-n拒絕顯示別名,能顯示數字的全部轉化成數字。
-l僅列出有在 Listen(監聽)的服務狀態
-p 顯示建立相關鏈接的程序名
-r顯示路由信息,路由表
-e顯示擴展信息,例如uid等
-s按各個協議進行統計
-c每隔一個固定時間,執行該netstat命令。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
更多內容,請點擊:http://blog.csdn.net/weixin_37977062?viewmode=contents