檔案相關:
磁盤與目錄:df、ls、cd、pwd、$PWD
檔案編輯:vim、sed
檔案權限:chmod、chown
檔案搜尋:find
檔案内容:cat、more、less、grep
df:
用于顯示目前在 Linux 系統上的檔案系統磁盤使用情況統計
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 29G 4.2G 23G 16% /
udev 1.5G 4.0K 1.5G 1% /dev
tmpfs 604M 892K 603M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.5G 156K 1.5G 1% /run/shm
-h選項,通過它可以産生可讀的格式df指令的輸出:顯示的數字形式的'G'(千兆位元組),"M"(兆位元組)和"K"(千位元組)
ls:
ls / ---列出根目錄下的所有目錄
-a 顯示所有檔案及目錄 (. 開頭的隐藏檔案不會列出)
-l 除檔案名稱外,亦将檔案型态、權限、擁有者、檔案大小等資訊詳細列出
cd:
跳到目前目錄的上一層:cd ..
跳到目前目錄的上上兩層 :cd ../..
cd [dirName]:dirName:要切換的目标目錄
跳到自己的 home 目錄 :cd ~
pwd:用于顯示工作目錄
chmod:
r=4,w=2,x=1
chmod 777 file
find:
将目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來
# find . -name "*.c"
将目前目錄及其子目錄下所有最近 20 天内更新過的檔案列出
# find . -ctime -20
cat:用于連接配接檔案并列印到标準輸出裝置上
把 textfile1 的文檔内容加上行号後輸入 textfile2 這個文檔裡:
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的文檔内容加上行号(空白行不加)之後将内容附加到 textfile3 文檔裡:
cat -b textfile1 textfile2 >> textfile3
清空 /etc/test.txt 文檔内容:
cat /dev/null > /etc/test.txt
more:以一頁一頁的形式顯示.最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示
逐頁顯示 testfile 文檔内容,如有連續兩行以上空白行則以一行空白行顯示:more -s testfile
從第 20 行開始顯示 testfile 之文檔内容:more +20 testfile
less:可以随意浏覽檔案,而 more 僅能向前移動,卻不能向後移動,而且 less 在檢視之前不會加載整個檔案。
檢視檔案:less log2013.log
ps檢視程序資訊并通過less分頁顯示:ps -ef |less
檢視指令曆史使用記錄并通過less分頁顯示:history | less
浏覽多個檔案:less log2013.log log2014.log
cat、more、less的差別:
cat是一次性顯示整個檔案的内容,還可以将多個檔案連接配接起來顯示,它常與重定向符号配合使用,适用于檔案内容少的情況;
more和less一般用于顯示檔案内容超過一屏的内容,并且提供翻頁的功能。more比cat強大,提供分頁顯示的功能,less比more更強大,提供翻頁,跳轉,查找等指令。而且more和less都支援:用空格顯示下一頁,按鍵b顯示上一頁。
程序:top、ps
top:用于實時顯示 process 的動态
顯示程序資訊:top
顯示指定的程序資訊:top -p 139 //顯示程序号為139的程序資訊,CPU、記憶體占用率等
顯示完整指令:top -c
以批處理模式顯示程式資訊:top -b
以累積模式顯示程式資訊:top -S
設定資訊更新次數:top -n 2 //表示更新兩次後終止更新顯示
設定資訊更新時間:top -d 3 //表示更新周期為3秒
ps:用于顯示目前程序的狀态
顯示程序資訊:ps -A
顯示指定使用者資訊:ps -u root //顯示root程序使用者資訊
顯示所有程序資訊,連同指令行:ps -ef //顯示所有指令,連帶指令行
ps看到的是指令執行瞬間的程序資訊,而top可以持續的監視
ps隻是檢視程序,而top還可以監視系統性能,如平均負載,cpu和記憶體的消耗
另外top還可以操作程序,如改變優先級(指令r)和關閉程序(指令k)
ps主要是檢視程序的,關注點在于檢視需要檢視的程序
top主要看cpu,記憶體使用情況,及占用資源最多的程序由高到低排序,關注點在于資源占用情況
netstat:用于顯示網絡狀态
顯示詳細的網絡狀況:netstat -a
顯示目前戶籍UDP連接配接狀況:netstat -nu
顯示UDP端口号的使用情況:netstat -apu
顯示網卡清單: netstat -i
顯示網絡統計資訊:netstat -s
顯示監聽的套接口:netstat -l
正規表達式:
一.比對字母:\b\b
例如:
1.找出所有的hi單詞
\bhi\b
2.hi單詞後面有lucy單詞
\bhi\b.*\blucy\b
二.比對數字:\d
例如:以0開頭然後是2個數字,然後是一個連字号'-',最後是8個數字
0\d{2}-\d{8}
實戰:
比對以字母a開頭的單詞:\ba\w*\b
比對剛好6個字元的單詞:\b\w{6}\b
比對1個或更多連續的數字:\d+
5位到12位QQ号:^\d{5,12}$
正規表達式練習位址(線上正規表達式測試):
linux指令練習工具:Git Bash
grep:用于查找檔案裡符合條件的字元串
查找檔案内容包含root的行
grep -n root test.txt
查找檔案内容不包含root的行
grep -nv root test.txt
查找檔案内容不包含root的行,不顯示行号
grep -v root test.txt
查找以s開頭的行
grep ^s -n test.txt
查找以n結尾的行
grep n$ -n test.txt 或者grep -n n$ test.txt (-n放在全面和後面都可以)
運作shell
chmod +x test.sh 給test.sh腳本賦予可執行的權限
執行腳本:
第一種方法:./test.sh
第二種方法:/bin/sh test.sh
vi/vim的用法
編輯并建立檔案:vim 檔案名
點選鍵盤Insert進入插入模式 可以進行編輯
編輯完之後點選Esc
:wq 儲存退出
:q! 不儲存強制退出
sed
sed是流編譯器,一次處理一行内容
常用動作
a:新增 如:實戰1、2
c: 取代 如:實戰5
d: 删除 如:實戰6
i: 插入 如:實戰7
s: 取代 如:實戰3
1.在第四行後添加新的字元串
sed '4a newline' test.txt
2.在第四行前添加新的字元串
sed '4i newline' test.txt
注意使用以上指令後,并沒有對檔案進行修改,使用cat test.txt檢視檔案時,檔案的内容沒有發生改變
3.替換檔案中的内容
替換檔案中的root為hello
sed 's/root/hello/' test.txt
當檔案中的某一行出現多個root時,如root h root ,則隻能替換第一個root,執行結果:hello h root
替換所有的root為hello
sed 's/root/hello/g' test.txt
替換之後再cat test.txt檢視檔案,檔案内容沒有變化
4.如果要對檔案真正進行修改 (加上-i)
sed -i 's/root/hello/g' test.txt
執行之後 再cat test.txt檢視檔案,檔案内容已經将root全部改為了hello
5.替換2到5行的内容
$ cat test.txt
root h root h root
aa
bb
cc
root
$ sed '2,5c hello' test.txt
hello
6.删除第2到5行的内容
sed '2,5d' test.txt
7.在第2行前插入一行内容
sed '2i newline' test.txt
awk
指令解析:
awk 'pattern + action' [filenames]
-pattern 正規表達式
-action 對比對到的内容執行的指令
常用參數:
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符
$0 整行的記錄
$1 表示目前行的第一個域。。。以此類推
BEGIN 處理文本之前要執行的操作
END 處理文本之後要執行的操作
FS 設定輸入域分隔符,等價于指令行-F選項
NF 浏覽記錄的域的個數(列數)
NR 已讀的記錄數(行數)
1.以冒号進行分隔,列印test.txt第二列的内容
$ cat test.txt
root:aa:bb:cc
bb:aa:cc:11
cc:aa:xx
root:cc:aa
$ awk -F: '{print $2}' test.txt
aa
cc
-F: 表示指定分隔符為冒号
2.列印包含root的所有行所有列的内容
$ awk -F: '/root/{print $0}' test.txt
$0 表示整條記錄
/root/ 表示正規表達式:包含root的内容
{print $0} 表示動作:列印整體記錄
3.列印第二行資訊
$ awk -F: 'NR==2{print $0}' test.txt
NR 指定行數
4.使用begin加入标題--在列印第1、2列之前列印begin
$ awk -F: 'BEGIN{print "Begin"}{print $1,$2}' test.txt
Begin
root aa
bb aa
cc aa
root cc
5.自定義分隔符 以|進行分隔,列印出所有的内容
$ echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0}'
111 222
333 444
555 666
bash程式設計
定義與使用變量
定義變量
a=1
b="abc"
使用變量
列印變量a: echo $a
列印變量b: echo $b
隻讀變量
a="123"
readonly a
删除變量
unset 變量名
注意:不能删除隻讀變量,想删除隻讀變量,直接關閉指令視窗即可,因為變量的有效範圍隻在目前指令視窗
定義數組:
a=(1 A B 2 "a")
列印數組中的第一個元素
echo ${a[0]}
列印數組中的所有元素
echo ${a[*]}
或者echo ${a[@]}
數組單個定義
b[0]=111
b[2]=333
$ echo ${b[0]}
111
$ echo ${b[2]}
333
echo ${b[1]} 執行結果為空