linux-命令-書籍

澹泊csdn發表於2020-10-31

需要記住的命令
Tab鍵,提示
ctrl+c 停止某個正在執行的命令
ctrl+z 掛起某個正在執行的命令, 並不會結束.執行fg 命令可以重新啟動這個被掛起的命令.
比如vi修改檔案時需要執行其他命令,執行後按fg回到vi
ctrl+d 退出文字,相當於輸入exit

man page 線上求助page命令, 空格鍵下一頁,q退出

一、基礎命令
date
date +%y/%m/%d 20/07/10
date +%H:%M 15:43

cal
cal 2020 整年的日曆
cal 10 2020 2020年10月份的日曆

bc 計算器
scale=3 輸錯3位小數

who 連線當前伺服器的客戶端地址

mkdir test 新建test目錄
touch test 新建空的檔案test

7.1 檔案與目錄管理
. 當前目錄
… 上層目錄

  • 代表前一個工作目錄
    ~ 代表“目前使用者身份”所在主資料夾
    ~account 代表account使用者所在主資料夾
    pwd 顯示當前目錄
    pwd -P 顯示出當前的路徑,而非使用連線路徑
    mkdir 新建一個新的目錄
    mkdir -p test1/test2 可以建立多層目錄
    mkdir -m 711 test2 同時可授權
    rmdir 刪除一個空的目錄
    rmdir -p test1/test2 可以刪除多層空目錄

ll 或者 ls 檢視檔案目錄(以下引數可以組合使用)
-a 全部檔案,包括隱藏檔案
-h 以GB/M/KB 顯示檔案大小
-r 將排序結果反向輸出,預設以檔名由小到大
-R 連同子目錄一起列出來
-S 以檔案容量大小排序
-t 依時間排序
–full-time 以完整時間模式輸出

cp 複製檔案或者目錄 cp -i test /temp/test (將當前test目錄複製到/temp重新命名為test)
-a 相當於 -pdr
-f force的意思,若目標檔案已存在切無法開啟,則刪除後再嘗試一次
-i 若目標檔案已存在,在覆蓋時先詢問操作的進行 (常用)
-p 連同檔案的屬性一起復制過來,而非使用預設屬性 (備份常用)
-r 遞迴持續複製,用於目錄的複雜行為 (常用)
-s 複製成為符合連結檔案,即 快捷方式 檔案
-u 當目標檔案比原始檔舊才更新

rm 刪除檔案
-f force,忽略不存在的檔案,不會出現警告
-i 在刪除前會詢問使用者是否操作,預設
-r 遞迴刪除。非常危險、慎用
rm -i aa* 刪除所有以aa開頭的檔案
rm ./-aa 刪除帶有-開頭的檔案,必須加上./字首,因為 - 是引數,系統會誤判

mv 移動檔案
-f force,已存在直接覆蓋
-i 目標檔案已存在提示
-u 目標檔案已存在,原始檔比較新才會更新
mv aaa bbb 相當於重新命名
mv aaa bbb test 同時將aaa/bbb檔案移動到 test資料夾,最後一個必須是目錄

basename /etc/sysconfig/network 返回network,取最後的檔名
dirname /etc/sysconfig/network 返回/etc/sysconfig,取得目錄名稱

7.3 檔案內容查閱
cat 從第一行開始顯示檔案內容
-b 列出行號,僅針對非空白行
-E 將結尾的斷行字元$S顯示出來
-n 列出行號,包括空白行
-T 將【Tab】鍵以 ^I顯示出來
tac 從最後一行開始顯示, cat的倒寫形式
nl 顯示的時候順便輸出行號
more 一頁一頁的顯示檔案內容
空格鍵 向下翻頁
Enter 向下滾動一行
/字串 向下字串搜尋
:f 立刻顯示出檔名以及目錄顯示的行數
q 立刻離開more
b或 ctrl-b 往回翻頁
less 與more類似,可以往前翻頁
空格鍵 向下翻頁
【PageDown】 向下翻動一頁
【PageUp】 向上翻動一頁
/字串 向下字串搜尋
?字串 向上字串搜尋
n 重複前一個查詢
N 反向重複前一個查詢
q 退出
head 只看頭幾行,預設顯示10行
head -n 20 a 顯示20行資料
tail 只看結尾幾行,預設顯示10行
-n 後面截數字,表示幾行
-f 持續監測後面的內容,如日誌檔案監控, 按ctrl-c離開
od 以二進位制的方式讀取檔案內容

mtime 檔案內容更新時間,預設
ctime 狀態改變時間,如許可權和屬性,
atime 改檔案被讀取的時間, 如使用了cat命令. 使用舉例: ll --time=atime /etc/man.config
touch 命令可以修改上述的時間

7.5 命令與檔名查詢
which ll 檢視ll命令的路徑,根據PATH環境變數所規範的路徑去查詢
whereis 檔名查詢 whereis ifconfig
-b 只查詢二進位制檔案
find [PATH] [option] [action] 較慢
1、與時間有關的引數 -atime -ctime -mtime
-mtime n n為數字,在n天之前的“一天之內”被更改過的檔案
find /tmp -mtime 0 查詢從現在開始到24小時前tmp目錄下有改動過的檔案
-mtime +n 在n天之前(不含n天本身)被更改過的檔案
-mtime -n 在n天之內(含n天本身)被更改過的檔案
-newer file file為一個已存在檔案,列出表file還要新的檔案
2、與使用者和使用者組相關的引數
3、與檔案許可權及名稱有關的引數
find / -name passwd 查詢檔名為passwd 的檔案
find / -type p 查詢怪異的檔案比較實用 正規檔案(f)、裝置檔案(b、c)、目錄(d)、 連線檔案(l)、socket檔案(s)、FIFO(p)
find / -size +1000k 查詢大於1M的檔案
find /tmp -name ‘aa 查詢tmp目錄下檔名包含aa 的檔案

8.2 磁碟與目錄的容量:df du
df df -h /etc
-a 列出所有的檔案系統
-k 以KB顯示
-m 以MB顯示
-h 以易讀的GB/MB/KB等格式顯示 (常用)
-i 不用硬碟容量,以inode的數量顯示
du du -sm /*
-a 列出所有的檔案與目錄容量
-h 以易讀的GB/MB/KB等格式顯示
-s 列出總量而已,而不列出每個個別的目錄佔用量 (常用)
-S 不包括子目錄下的總計
-k 以KB顯示
-m 以MB顯示

9 檔案與檔案系統的壓縮與打包
9.2.2 gzip,zcat
gzip gzip -v /temp/test 壓縮 zcat test.gz 檢視壓縮檔案
-c 將壓縮的資料輸出到螢幕上,但不刪除原檔案 gzip -9 -c test > test.gz
-d 解壓檔案
-v 顯示原檔案/壓縮檔案的壓縮比
-# 壓縮等級,-1最快,但壓縮比最差, -9最慢,壓縮比最好,預設是 -6
bzip2, bzcat gzip的升級命令 yum -y install bzip2.x86_64 安裝命令
-c 將壓縮的資料輸出到螢幕上
-d 解壓檔案
-k 保留原檔案,不刪除原檔案
-z 壓縮的引數
-v 顯示原檔案/壓縮檔案的壓縮比
-# 壓縮等級,-1最快,但壓縮比最差, -9最慢,壓縮比最好,預設是 -6

9.3 tar 將目錄檔案打包,然後使用gzip/bzip2命令壓縮,-c,-t,-x同一個命令只能用到一個
-c 新建打包檔案,可搭配 -v 檢視過程中被打包的檔名
-t 檢視打包檔案的內容含有哪些檔名,重點在檢視檔名
-x 解打包或解壓縮,可以搭配 -C (大寫) 在特定目錄解開
-j 通過 bzip2 支援進行壓縮,檔名最好為 *.tar.bz2
-z 通過gzip 支援進行壓縮,檔名最好為 *.tar.gz
-v 將正在處理的檔名顯示出來
-f filename -f後面接被處理的檔名
-C 目錄 解壓時,若要在特定目錄解壓縮使用這個引數。

-P 保留備份資料的原本許可權與屬性,常用於備份(-c)重要的配置檔案
-p 保留絕對路徑,即允許備份資料中含有根目錄存在之意
--exclude=FILE 在壓縮的過程中,不要將FILE打包

常用例子,其中-j 可用 -z代替,表示使用不同的解壓工具
壓縮: tar -jcv -f filename.tar.bz2 filename
查詢: tar -jtv -f filename.tar.bz2
解壓縮: tar -jxv -f filename.tar.bz2 -C filename1

10 vi/vim
vi
有3種模式,一般模式、編輯模式、命令模式。
10.2.2 按鍵說明
一般模式
1、移動游標的方法
h/j/k/l 分別表示向左下上右移動一個字元,也可用箭頭替換, 注意:30j下移30行
Ctrl + f/b 分別表示 螢幕向下移動一頁、向上一定一頁 (常用)
Ctrl + d/u 分別表示 螢幕向下移動半頁、向上一定半頁
n 20表示游標向後移動20字元,類似20l
0或【Home】 跳到這一行的第一個字元 (常用)
或 【 E n d 】 跳 到 這 一 行 的 最 後 一 個 字 符 ( 常 用 ) H / M / L 光 標 移 動 到 這 個 屏 幕 的 最 上 方 第 一 行 / 中 央 行 / 最 下 方 行 的 第 一 個 字 符 G 移 動 到 文 件 的 最 後 一 行 ( 常 用 ) n G 移 動 到 文 件 的 第 n 行 g g 移 動 到 文 件 的 第 一 行 n [ E n t e r ] 光 標 向 下 移 動 n 行 2 、 查 找 與 替 換 / w o r d 向 下 查 找 w o r d 字 符 串 ? w o r d 向 上 查 找 w o r d 字 符 串 n / N 表 示 重 復 / 反 向 重 復 前 一 個 查 找 的 操 作 : n 1 , n 2 s / w o r d 1 / w o r d 2 / g 替 換 n 1 到 n 2 行 的 w o r d 1 字 符 串 為 w o r d 2 : 1 , 100 s / c p 100 / c p / g 將 1 到 100 行 的 c p 100 替 換 成 c p ( 常 用 ) : 1 , 或【End】 跳到這一行的最後一個字元 (常用) H/M/L 游標移動到這個螢幕的最上方第一行/ 中央行/ 最下方行 的第一個字元 G 移動到檔案的最後一行 (常用) nG 移動到檔案的第n行 gg 移動到檔案的第一行 n[Enter] 游標向下移動n行 2、查詢與替換 /word 向下查詢word字串 ?word 向上查詢word字串 n/N 表示 重複/反向重複 前一個查詢的操作 :n1,n2s/word1/word2/g 替換n1到n2行的word1字串為 word2 :1,100s/cp100/cp/g 將1到100行的cp100替換成cp (常用) :1, EndH/M/L//GnGnggn[Enter]n2/wordword?wordwordn/N/:n1,n2s/word1/word2/gn1n2word1word2:1,100s/cp100/cp/g1100cp100cp:1,s/word1/word2/g 替換第一行到最後一行的word1字串為 word2 (常用)
:1, s / w o r d 1 / w o r d 2 / g c 同 上 , 替 換 前 需 要 用 戶 確 認 3 、 刪 除 、 復 制 、 黏 貼 x , X x 向 後 刪 除 一 個 字 符 , X 向 前 刪 除 一 個 字 符 n x 連 續 向 後 刪 除 n 個 字 符 d d 刪 除 光 標 所 在 行 ( 常 用 ) n d d 刪 除 光 標 所 在 行 向 下 的 n 行 ( 常 用 ) d 1 G 刪 除 光 標 所 在 到 第 一 行 的 所 有 數 據 d G 刪 除 光 標 所 在 到 最 後 一 行 的 所 有 數 據 d s/word1/word2/gc 同上,替換前需要使用者確認 3、刪除、複製、黏貼 x,X x向後刪除一個字元,X向前刪除一個字元 nx 連續向後刪除n個字元 dd 刪除游標所在行 (常用) ndd 刪除游標所在行向下的n行(常用) d1G 刪除游標所在到第一行的所有資料 dG 刪除游標所在到最後一行的所有資料 d s/word1/word2/gc3x,XxXnxnddnddnd1GdGd 刪除游標所在到該行的最後一個字元
d0 刪除游標所在到該行的最前面一個字元

yy 複製游標那一行 ,只是複製,不會黏貼
nyy 複製游標向下那n行
y1G/yG/y0/y$ 參考上面刪除命令引數

p,P 將複製的行黏貼到游標下一行,大寫黏貼到上一行
J 將游標所在行和下一行資料結合成同一行
c 重複刪除對個資料,例如向下刪除10行, 10cj
u 復原前一個操作 (常用)
Ctrl+r 重做上一個操作 (常用)

一般模式切換到命令模式
:w 將編輯的資料寫入硬碟檔案中
:w! 強制將編輯的資料寫入硬碟檔案中
:q 離開vi
:q! 強制離開vi,不儲存檔案
:wq 儲存後離開

vim 環境更改
:set nu 顯示行號
:set nonu 取消顯示行號

5、儲存、恢復、開啟檔案的警告資訊
如果上次操作被意外情況中斷,重新開啟檔案會出現警告資訊
[O]pen Read-Only 只讀方式開啟
(E)dit anyway 正常開啟,不會載入上次快取檔案內容
(R)ecover 載入上次編輯快取檔案,恢復上次的修改內容。儲存資料離開vi後需要手動刪除快取檔案
(D)elete it 確定上次快取檔案無用,直接刪除快取檔案
(Q)uit 離開
(A)bort 忽略這個編輯行為,與quit類似

6、塊的選擇、複製、黏貼 (略)
7、多視窗操作(略)

11、bash
alias 別名 alias cp=‘cp -i’ 命令cp替換 cp -i
unalias 取消別名
history 歷史命令
n 列出最近的n條歷史命令
-c 清空歷史命令
!al 執行最近以al開頭的命令

11.5.2、資料量重定向
標準輸入:程式碼為0,使用<或<<
標準輸出:程式碼為1,使用>或>>
ll / > ~/rootfile 將/目錄的ll資訊輸出到 ~/rootfile檔案
檔案不存在會自動建立
>檔案存在會先清空資料,在寫入資料
>>在檔案最下方累加資料
標準錯誤輸出:程式碼為2,使用2>或2>>

/dev/null 表示將資料寫入黑洞裝置,即丟棄
ll /aaa > rootfile 2>errFile 將標準資料和錯誤資料分別寫入不同檔案
ll /aaa > rootfile 2>&1 將標準資料和錯誤資料都寫入rootfile檔案
ll /aaa &> rootfile 同上

11.6管道命令
11.6.1、選取命令 cut,grep
echo $PATH | cut -d ‘:’ -f 5 將環境變數以: 分割,顯示第5段資料,類似java split函式
echo $PATH | cut -d ‘:’ -f 3,5 同上,但會顯示第3段與第5段資料
-c 以行為單位,取出固定字元區間

grep
-c 計算找到 查詢字串的 次數
-i 忽略大小寫
-n 順便輸出行號
-v 反向選擇,及顯示出沒有 查詢字串 的行
11.6.2 排序命令 sort、 wc、uniq
cat /tmp/my | wc 輸出檔案的行數、字數、字元數
11.6.3 雙向重定向: tee
會將資料量傳送給檔案或裝置

12.4.3 檔案比較工具
diff [-bBi] file1 file2 (可以比較檔案 和 目錄)
-b 忽略一行當中僅有多個空白符的區別 ,如 “ni hao” 和 “ni hao” 視為相同
-B 忽略空白行的區別
-i 忽略大小寫的不同

17
將某個命令直接丟給後端處理,前端不需要等待,在命令後面加個 &
tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 & 配合管道將stout和stderr日誌傳輸到日誌檔案,並將任務丟到後臺
問題:如果當前bash關閉掉,那是不是後臺任務自動停止執行,相當父程式和子程式的關係。
答案:是的,如果是遠端連線,當連線中斷後,後臺任務就會終止
nohup 可以讓你在離線或登出系統後,還可以讓工作繼續進行
nohup 命令 或者 nohup 命令 &

[ctrl]+z 將目前的工作丟到後臺中 暫停
jobs [-lrs] 檢視目前後臺的工作狀態
-l 顯示PID的號碼
-r 僅列出正在後臺run的工作
-s 僅列出正在後臺暫停(stop) 的工作
第一列表示任務jobnumber,後面接的+表示最近丟到後臺的任務,fg命令會拿該任務
fg %jobnumber 將後臺任務拿到前臺來處理
bg %jobnumber 讓工作在後臺下的狀態變成執行中
kill -signal %jobnumber 管理後臺中的工作
-1 重新讀取一次引數的配置檔案
-2 代表與由鍵盤中輸入 [ctrl]+c 同樣的操作
-9 立刻強制刪除一個任務
-15 以正常的程式終止一個專案

17.3.1 程式的檢視
ps aux 檢視系統所有程式
ps -lA 同上
ps axjf 連同部分程式樹狀態
ps -l 僅檢視自己的bash相關程式
ps aux|egrep ‘(tomcat6-web|tomcat6-s)’ 查詢tomcat6-web 和tomcat6-s相關的程式

top 動態檢視程式的變化
-d 後面接秒數,預設5秒
-b 以批次的方式執行,通常搭配資料流重定向輸出到檔案
-n 與p搭配,執行幾次
-p 指定某個PID來進行檢視監控
top執行過程中可以使用的按鍵命令
? 顯示在top當中可以輸入的按鍵命令
P 以CPU的使用資源排序顯示
M 以記憶體的使用排序顯示
N 以PID順序顯示
k 給予某個PID一個訊號
r 給予某個PID重新制定nice值,與執行優先順序有關
q 離開top軟體
1 切換CPU的核心
top內容詳解
https://www.cnblogs.com/wangchen07026/p/7650688.html
注意點:
(1)第一行最後三個負載值最好不要超過0.8
(2)特別注意%wa,為IO等待。通常系統變慢是IO產生的問題
(3)swap儘量少用

23.2
rpm -ivh package_name 安裝軟體
-i install的意思
-v 檢視更詳細的安裝資訊
-h 以安裝資訊欄顯示安裝進度
-U 軟體未安裝過則安裝,已安裝舊版本則升級
-F 軟體未安裝過則不進行任何操作,已安裝舊版本則升級
rpm -ql jenkins 查詢jenkins安裝路徑

yum [option] [查詢工作專案] [相關引數]
-y 等待使用者輸入時,自動提供yes的響應
–installroot=/some/path 將軟體安裝在/some/path目錄,而不使用預設路徑
search 搜尋某個軟體名稱或者描述的重要關鍵字
list 列出目前yum管理的所有軟體名稱與版本 舉例:yum list jdk 列出所有jdk安裝軟體
info 同上
provides 從檔案去搜尋軟體
install 後面接需要安裝的軟體
update 後面接需要升級的軟體,若要整個系統都升級,直接update就可以
remove 刪除功能