Linux常用shell命令總結
原創 dudu
目錄
- 常用檔案shell命令
- 常用網路shell命令
- 常用行程shell命令
- 常用文本shell命令
- 小結
一、常用檔案shell命令###
- 改變目錄
1、cd
# 進入到/tmp目錄下
$ cd /tmp/
# 回退一個路徑
$ cd …
# 回退到根目錄
$ cd ~
# ~ 表示:root目錄,# 表示:超級管理員 - 查看當前路徑
1、pwd
# 用pwd命令來查看當前的路徑
$ cd work
$ pwd
/home/dudu/work - 創建目錄
1、mkdir
# 在 /tmp下創建一個test的檔案夾
$ mkdir /tmp/test
$ ls
test
# 諾tmp檔案夾不存在,上述命令就會出錯,需要加上 -p屬性
$ mkdir -p tmp2/test
# 創建多個檔案夾
$ mkdir a b c
$ ls
a b c
# -p 確保目錄名稱存在,不存在的就建一個, - 創建檔案
1、touch
# touch命令用于修改檔案或者目錄的時間屬性,包括存取時間和更改時間,若檔案不存在,系統會建立一個新的檔案,ls -l 可以顯示檔案的時間記錄,
# 諾 test檔案不存在,touch將創建一個新的空白檔案
$ touch test
# 查看檔案的時間屬性
-rw-r–r-- 1 hdd hdd 55 2020-09-21 19:02 test
# 諾 test檔案存在,touch將修改檔案"testfile"的時間屬性為當前系統時間
$ touch test
# 查看檔案的時間屬性
$ ls -l test
-rw-r–r-- 1 hdd hdd 55 2020-09-21 19:09 test
# 如果需要創建的空白檔案不存在,touch創建一個新的空白檔案.否則,touch將修改檔案"testfile"的時間屬性為當前系統時間,及時間戳均修改為當前時間
- 洗掉檔案或檔案夾
1、rm
# 洗掉檔案前逐一詢問確認
*$ rm test.txt *
rm:是否洗掉 一般檔案 “test.txt”? y
# 直接洗掉,無需逐一確認
$ rm -f test.txt
# 將目錄及以下之檔案亦逐一洗掉,
$ rm -r work
rm:是否洗掉 目錄 “homework”? y
# 將該目錄和目錄下的檔案都洗掉,不需要確認
$ rm -rf work
# 一般洗掉檔案用 -rf - 復制檔案
1、cp
# 復制/root/ 目錄下的 a.txt 檔案到 /tmp 下
$ cp /root/a.txt /tmp/
# 復制/root/ 目錄下的 所有 檔案到 /tmp 下
$ cp /root/ /tmp/*
$ cp /root/? /tmp/
# 通配符
# * :表示所有檔案和檔案夾
# ?:表示一個字符 - 移動和改名
1、mv
# 將 /root 下的 dir 移動到 /home下
$ mv dir/ /home/
# 把 /home/ 下的dir目錄改名為directory
$ cd /home/
$ mv dir/ directory - 查看檔案內容
1、cat
# cat 命令直接顯示一個文本的所有內容,有利于查看篇幅較短的文本
# 命令格式:查看/etc/services的內容
*$ cat /etc/services *2、tail
# tail 命令可用于查看檔案的內容,有一個常用的引數 -f 常用于查閱正在改變的日志檔案,tail -f filename 會把 filename 檔案里的最尾部的內容顯示在螢屏上,并且不斷重繪,只要 filename 更新就可以看到最新的檔案內容
# 顯示 notes.log 檔案的最后 10 行
$ tail notes.log
# 蹤名為 notes.log 的檔案的增長情況
$ tail -f notes.log
# 此命令顯示 notes.log 檔案的最后 10 行,當將某些行添加至 notes.log 檔案時,tail 命令會繼續顯示這些行, 顯示一直繼續,直到您按下(Ctrl-C)組合鍵停止顯示,
# 檔案 notes.log 的內容,從第 20 行至檔案末尾
$ tail +20 notes.log
# 顯示檔案 notes.log 的最后 10 個字符
$ tail -c 10 notes.log3、more
# more 命令類似 cat ,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明檔案,請按 h
# 逐頁顯示 test 檔案內容,如有連續兩行以上空白行則以一行空白行顯示,
$ more -s test
# 從第 20 行開始顯示 testfile 之檔案內容
$ more +20 test4、less
# less 與 more 類似,但使用 less 可以隨意瀏覽檔案,而 more 僅能向前移動,卻不能向后移動,而且 less 在查看之前不會加載整個檔案,
# 查看檔案
$ less notes.log
# ps查看行程資訊并通過less分頁顯示
$ ps -ef |less
# 查看命令歷史使用記錄并通過less分頁顯示
$ history | less
二、常用網路shell命令
- hostname
# 顯示主機名字
$ hostname
# 顯示機器所屬域名
$ hostname –d
# 顯示完整的主機名和域名
$ hostname –f
# 顯示當前機器的 ip 地址
$ hostname –i - ping
# ping 將資料包發向用戶指定地址,當包被接收,目標機器發送回傳資料包,ping 主要有兩個作用:
# 1、 用來確認網路連接是暢通的,
# 2、 用來查看連接的速度資訊,
# 得到ip 地址,通過 ctrl+C 來停止命令
$ ping dudu.net // ping主機
# -c 引數可以定義 ping 的次數,如:比如 ping -c 3 dudu.net 就是 ping dudu博客3次 - ifconfig
# 查看用戶網路配置,它顯示當前網路設備配置,對于需要接識訓者發送資料錯誤查找,這個工具極為好用,
# 顯示當前網路設備配置
$ ifconfig
三、常用行程shell命令
- ps
# ps 命令用于顯示當前行程的狀態,類似于 windows 的任務管理器,
# 顯示行程資訊
$ ps -A
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
…
# 顯示指定用戶資訊
PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
…
# 顯示所有行程資訊,連同命令列
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:22 ? 00:00:02 /sbin/init
root 2 0 0 10:22 ? 00:00:00 [kthreadd]
root 3 2 0 10:22 ? 00:00:00 [migration/0]
root 4 2 0 10:22 ? 00:00:00 [ksoftirqd/0]
… - kill
# kill 命令用于洗掉執行中的程式或作業,kill 可將指定的資訊送至程式,預設的資訊為 SIGTERM(15),可將指定程式終止,若仍無法終止該程式,可使用 SIGKILL(9) 資訊嘗試強制洗掉程式,程式或作業的編號可利用 ps 指令或 jobs 指令查看
# 殺死行程
$ kill 12345
# 強制殺死行程
$ kill -KILL 123456
# 發送SIGHUP信號,可以使用一下信號
& kill -HUP pid
# 徹底殺死行程
$ kill -9 123456 - sudo
# sudo命令以系統管理者的身份執行指令,也就是說,經由 sudo 所執行的指令就好像是 root 親自執行,
# 指定用戶執行命令
$ sudo -u userb ls -l
# 以root權限執行上一條命令
$ sudo !!!
# 列出目前的權限
$ sudo -l-l*
# 列出 sudo 的版本資訊
$ sudo -V-V
四、常用文本shell命令
- awk
# AWK 是一種處理文本檔案的語言,是一個強大的文本分析工具,
1、選項引數
# 指定輸入檔案折分隔符,fs是一個字串或者是一個正則運算式,如-F:
-F fs or --field-separator fs # 指定輸入檔案折分隔符,fs是一個字串或者是一個正則運算式,如-F
-v var=value or --asign var=value # 賦值一個用戶定義變數
-f scripfile or --file scriptfile # 從腳本檔案中讀取awk命令
-W copyleft or --copyleft, -W copyright or --copyright # 列印簡短的著作權資訊,
-W posix # 打開兼容模式,但有以下限制,不識別:/x、函式關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;運算子和=不能代替和=;fflush無效,
-W re-interval or --re-inerval # 允許間隔正則運算式的使用
-W source program-text or --source program-text # 使用program-text作為源代碼,可與-f命令混用1、基本用法
# 創建檔案log.txt,內容如下:
2 this is a test
3 Are you like awk
This’s a test
10 There are orange,apple,mongo
# 每行按空格或TAB分割,輸出文本中的1、4項
KaTeX parse error: Can't use function '$' in math mode at position 15: awk '{print $?1,$4}' log.txt*… awk '{printf “%-8s %-10s\n”,$1,KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}?' log.txt*<br> …$ awk -va=1 '{print $1,KaTeX parse error: Expected 'EOF', got '}' at position 4: 1+a}?' log.txt*<br> …$ awk 'KaTeX parse error: Expected 'EOF', got '#' at position 20: … log.txt*<br> *#? 過濾第一列大于2并且第二列等…$ awk '$1>2 && $2==“Are” {print $1,$2,KaTeX parse error: Expected 'EOF', got '}' at position 2: 3}?' log.txt*<br> …$ awk ‘BEGIN{printf “%4s %4s %4s %4s %4s %4s %4s %4s %4s\n”,“FILENAME”,“ARGC”,“FNR”,“FS”,“NF”,“NR”,“OFS”,“ORS”,“RS”;printf “---------------------------------------------\n”} {printf “%4s %4s %4s %4s %4s %4s %4s %4s %4s\n”,FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}’ log.txt
FILENAME ARGC FNR FS NF NR OFS ORS RS
log.txt 2 1 5 1
log.txt 2 2 5 2
log.txt 2 3 3 3
log.txt 2 4 4 4
# 使用正則,字串匹配
# 輸出第二列包含 “th”,并列印第二列與第四列
$$ awk ‘$2 ~ /th/ {print $2,$4}’ log.txt
this a
五、小結
- Linux系統強大的控制臺、終端和shell的關系,在控制臺終端登錄或在圖形界面下開啟“終端”,默認都會啟動一個shell來接待使用者,(added by smsong:可以認為終端是父行程getty先啟動,該getty會執行login程式,以處理登錄的動作,登陸完成以后,login就會執行用戶的 shell,這時就是為用戶默認分配了一個shell,該shell執行用戶鍵入的命令,同樣該shell也可以開啟其子shell來執行用戶輸入,當該 子shell結束時,它會送一個信號給其父行程,所以當用戶離開系統時候,它的登陸shell會告訴init,而init知道了以后會為那個終端產生一個 新的getty行程,然后這個回圈就不斷的重復下去,注意:如果用戶登陸失敗,則login行程推出,它向其父行程init發送一個信號,指明應當為終端創建一個新的getty行程,重復上面的動作,
- 終端本質上對應著linux上的/dev/tty設備,linux的多用戶登錄就是通過不同的/dev/tty設備完成的,linux默認提供了6個純命令列界面的’‘terminal’’(準確的說這里應該是6個虛擬控制臺)來讓用戶登錄,在物理機系統上你可以通過ctrl+alt+F1~F6進行切換,當切換到其中一個終端后,想要切換回圖形界面,可以按下ctrl+alt+F7來完成,
- @author: dudu
- @email : 2065150945@qq.com
- @time :2020/9/21 23:54
- 說明: 轉載請宣告作者
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/261827.html
標籤:其他
上一篇:Linux進階使用
