在我們日常系統運維中,經常需要利用shell寫一些自動化腳本,這些腳本寫的好壞很大程度上取決於linux的高級操作命令掌握的是否熟練,那麼我們看看工作中使用頻率最高的一些命令。
cat -n a.txt 給輸入的文本編號
cat a.sh
cat > /etc/yum.repos.d/test.repo <<ok
[yumtest]
name=my home
baseurl=file:///yumtest/
enabled=1
gpgcheck=0
ok
./a.sh --->配置yum
tac
tac /etc/passwd 倒序顯示
wc
統計文本內容的行數量 字符數 單詞數
cat /etc/passwd | wc
wc -l 統計行數
-w 統計單詞數
-c 統計字符數
cut
數列爲單位切換
cut -b 按照字節切
-c 按照字符切
-d : 以冒號爲分割符
切出/etc/passwd中redhat用戶中的shell信息
cat /etc/passwd | grep redhat | cut -d: -f7
/bin/bash
cat /etc/passwd | cut -d ":" -f1,3,4 取出用戶的第1、3、 4 列
cat /etc/passwd | cut -d ":" -f1-4 取出用戶連續的4列
cat /etc/passwd | cut -d ":" -f -5 取出第5列前的所有列 包含第5列
cat /etc/passwd | cut -d ":" -f 5- 取出第5列後的所有列
cat /etc/passwd | cut -d ":" -f1,5-7 取出1 5 6 7
[root@server1 tmp]# cat /etc/passwd | grep jim | cut -b 5 切第五個字節
x
split
拆分文件
split -5 passwd 按照文本內容以5行爲單位切割 每5行一個文件
split -1 -a 3 a.txt 以1行爲單位切割 且切割後的文件後綴程度爲3
split -l 5 a.txt 以5行爲單位切割
split -b 1k passwd 默認單位爲字節 以1kb爲單位切割
(KB 1000,K 1024,MB 1000*1000,M 1024*1024,還有 G、T、P、E、Z、Y)
split -d a.txt 以數字作爲切割後的後綴名
----------------------------------------------
tr
cat a.txt | tr "a" "A" 把文件中所有小寫的a換爲A
cat a.txt | tr "a-z" "A-Z" 把所有的小寫字母換爲大寫字母
cat a.txt | tr "a-b" "A-C" a b ---> A B
cat a.txt | tr -s "\n" 去掉空白行
cat a.txt | tr -s "abcd" 把連續重複的字符替換爲一個字符
sort
排序命令
sort -n a.txt 第一列以數字方式排序
-r a.txt
-k, --key=位置1[,位置2]
-t 指定分割符
-u, --unique 去掉重複行
sort -t " " -k 2.2 a.txt 以空格爲分割符 取分割後的第2塊的第2列
uniq
去掉連續重複行
uniq a.txt
uniq -c a.txt 統計每行重複的次數且重複的行要是連續重複
uniq -d a.txt 只輸出重複的行(連續重複)
-i 忽略大寫小
diff
文件差異對比
[root@server1 test]# cat a.txt
111
[root@server1 test]# cat b.txt
111
222
diff a.txt b.txt
1a2
> 222
diff -u a.txt b.txt > ab.patch -u標準格式 以標準格式製作補丁
patch < ab.patch a.txt 打補丁
du
du -h /etc/ 統計整個目錄文件總大小
which
查看二進制命令的絕對路徑
which cat
/bin/cat
stat
stat /etc/passwd 查看文件類型和三個時間
Access: 最後一次被訪問時間
Modify: 最後一次修改屬性時間
Change: 最後一次內容的改變
touch /etc/passwd 刷新三個時間
系統有一種保護機制 當Modify比Access時間舊 舊不頻繁刷新access時間
lsof
lsof -i:80 通過端口號查看服務是否在運行
fuser
fuser -km /mnt 如果卸載分區的時候 有人佔用掛載點 強制踢掉
fuser -km /dev/pts/3