天天看點

Linux指令

檔案相關:

磁盤與目錄: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]} 執行結果為空

上一篇: linux 指令
下一篇: Linux指令