bash技巧

bash
grep查找關鍵字
grep -n root /etc/passwd 顯示/etc/passwd文件全部包含root關鍵字的行並顯示關鍵字處於文本中哪一行
cut提取文件內容中指定的字段(列)
cut [選項]... [文件]...
選項:
-b 按照字節切,utf-8編碼中每一個漢字佔3個字節,例如 4個漢字就得取12個字節。
-c 按照字符切
-d 指定分割符
-f 指定以分割符分割的哪一個字段node

head -5 /etc/passwd > /tmp/pass
cat /tmp/pass
cut -d: -f 6 /tmp/pass 顯示/tmp/pass文件中以:分隔的第6列的內容,家目錄內容
cut -d: -f 6,7,8 /tmp/pass取6,7,8列
cut -d: -f 6- /tmp/pass 取6列至最後一列
cut -d: -f -6 /tmp/pass 取第一列至第6列
cut -c 1-3 /tmp/pass 取第一到第3個字符
echo '×××' | cut -b 1-12 取1-12個字節(3個字節爲一個字)
seq按順序打印一些數字
用法:seq [選項]... 尾數
 或:seq [選項]... 首數 尾數
 或:seq [選項]... 首數 增量 尾數linux

seq 10按順序輸出1到10
seq 5 11按順序輸出5到11
seq 1 2 10輸出1到10之間的奇數
seq 2 2 10 輸出1到10之間的偶數
seq -w 1 50 200 用前導零填充使寬度相等vim

sort 排序(升序、降序)默認是按升序排列
-n, --numeric-sort 根據數值比較,默認是按單個字符來比較
-r, --reverse 逆序輸出排序結果
-t 指定分割符(separator)
-k 排序鍵(key,即排序的列字段)
-u 去掉重複行,u是uniq惟一的縮寫
例:執行以下命令。熟悉soft排序的基本用法
seq 1 5
seq 1 5|sort
seq 1 5|sort -n
seq 1 5|sort -nr

cat > a.txt <<EOF
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
EOF
查文件內容 cat a.txt
sort a.txt //默認按升序排列
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
sort -r a.txt// 逆序輸出排序結果(按第一列字符排)
tom:102:10:bash
root:1:0:bin
jim:10:300:bash
bin:2:200:bash
sort -t: -k 2 -n a.txt//分割開的以第2列的數值大小排序(用得最多)
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bashbash

echo "bin:2:200:bash" >> a.txt 將echo命令後的文本追加到a.txt文件中
cat a.txt
bin:2:200:bash
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash編輯器

sort -u a.txt 去掉重複行
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
wc統計行數 單詞數 字節數
wc統計行數 單詞數 字節數
wc /etc/passwd會出現3個結果
wc -l /etc/passwd 統計行數
wc -c /etc/passwd 統計字節數
wc -w /etc/passwd 統計單詞數
wc -m /etc/passwd 統計字符數
統計/bin目錄下有多少個命令
ls /bin | wc -l
1690
uniq 合併連續重複的行
-u 只顯示沒有連續重複的行
-c 統計連續重複行的次數
-d 只顯示連續重複行一次,哪一行連續重複了就顯示哪行
-i 忽略大小寫
cat > a.txt <<EOF
jim tom root
aa bb cc
aa bb cc
jim
aa bb cc
tom
tom abc
tom
tom abc
EOFide

uniq -u a.txt 不顯示連續重複的行

jim tom root
jim
aa bb cc
tom
tom abc
tom
tom abc

uniq -c a.txt 統計連續出現的次數
1 jim tom root
2 aa bb cc
1 jim
1 aa bb cc
1 tom
1 tom abc
1 tom
1 tom abc編碼

uniq -d a.txt 僅顯示連續出現的內容一次

aa bb cc

sort a.txt | uniq -c 同上,並統計次數,結果以下
3 aa bb cc
1 jim
1 jim tom root
2 tom
2 tom abc
diff文件差別的對比
準備要比較差別的文件:
head -3 /etc/passwd > /tmp/pas3
head -5 /etc/passwd > /tmp/pas5
vimdiff比較兩個文件的差別,不一樣塗紅色
cd /tmp 切換到/tmp目錄
vimdiff pas3 pas5 說明: 用:qa!強制關閉全部文件並退出vimdiff命令
注:在vimdiff中能夠按i鍵進入vim的編輯模式修改文件內容。按Esc鍵退出編輯模式,用:wq保存並退出vim編輯器。(用ctrl+w放手後再按w 在窗口之間切換)
diff 文件差別的對比
diff 文件1 文件2
diff pas3 pas5 > 35.patch 製做補丁(增長內容)
diff pas5 pas3 > 53.patch 製做補丁(減小內容)
patch打補丁
要先安裝patch
yun -y install patch
用法:patch 原文件 補丁文件
cd /tmp
patch pas3 35.patch 給pas3文件打補丁,提示以下
patching file pas3排序

cat -n pas3 讀pas3文件並顯示行號,發現文件中多了2行內容索引

patch pas3 53.patch 給pas3文件打補丁,提示以下
cat pas3 發現文件中少了2行內容
stat命令:查看文件的狀態信息(即詳細屬性)
stat命令:查看文件的狀態信息(即詳細屬性),包括文件的路徑、大小、訪問時間(atime)、修改時間(mtime)、屬性修改時間(ctime)、索引號(inode)等屬性。
stat /etc/passwd
進程管理的命令
查進程pstree ps top pidof pgrep
進程狀態信息:R運行 S休眠 Z殭屍 T暫停 s包含子進程 +進程組 < 高優先級 n低優先級
殺進程:kill pkill killall xkill
調優先級:renice nice 謙讓nice值範圍-20~19,nice值越小優先級(PR)越高,PR默認值是20進程

linux高級命令:
grep匹配關鍵字 cut取出字符 sort排序 wc統計單詞 uniq去重
diff比較差別 patch打補配 which查文件路徑 stat查文件狀態
tr替換字符 被替換的字符與替換的字符數必須是相等的
tr 舊字符 新字符
cat > a.txt <<EOF
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
bin:2:200:bash
EOF

cat a.txt | tr 20 89 將cat a.txt結果中的20替換成89。
root:1:9:bin
bin:8:899:bash
jim:19:399:bash
tom:198:19:bash
bin:8:899:bash

cat a.txt | tr "a-z" "A-Z" 在替換的時候是一一對應的替換

ROOT:1:0:BIN
BIN:2:200:BASH
JIM:10:300:BASH
TOM:102:10:BASH
BIN:2:200:BASH
\n 換行符

cat a.txt | tr "\n" "+" 將換行符(\n)換成+號

root:1:0:bin+bin:2:200:bash+jim:10:300:bash+tom:102:10:bash+bin:2:200:bash+

cat a.txt | tr -s "\n" 去掉空白行

相關文章
相關標籤/搜索