搜尋檔案或目錄:find ./ -name "core*" | xargs file
查詢目標資料夾中是否有obj檔案:find ./ -name '*.o'
遞迴當前目錄及子目錄刪除所有.o檔案:find ./ -name "*.o" -exec rm {} \;
locate會為檔案系統建立索引資料庫,如果有檔案更新,需要定期執行更新命令來更新索引庫:updatedb
ls /proc && echo suss! || echo failed.
與上述相同效果的是:
if ls /proc; then echo suss; else echo fail; fi
重定向:
ls proc/*.c > list 2> &l
將標準輸出和標準錯誤重定向到同一檔案;等價的是:ls proc/*.c &> list
清空檔案::> a.txt
重定向:echo aa >> a.txt
簡單bash
-ctl-u
刪除游標到行首的所有字元,在某些設定下,刪除全行
-ctl-w
刪除當前游標到前邊的最近乙個空格之間的字元
-ctl-h
backspace,刪除游標前邊的字元
-ctl-r
匹配最相近的乙個檔案,然後輸出
查詢record.log中包含aaa,但不包含bbb的記錄的總數:cat -v record.log | grep aaa | grep -v bbb | wc -l
查詢txt和pdf檔案:find . \( -name "*.txt" -o -name "*.pdf" \) -print
正則方式查詢.txt和pdf:find . -regex ".*\(\.txt|\.pdf\)$"
-iregex
: 忽略大小寫的正則
否定引數 ,查詢所有非txt文字:find . ! -name "*.txt" -print
指定搜尋深度,列印出當前目錄的檔案(深度為1):find . -maxdepth 1 -type f
file命令可以檢查檔案具體型別(二進位制或文字):所以,可以用以下命令組合來實現查詢本地目錄下的所有二進位制檔案:
ls -lrt | awk ''|xargs file|grep elf| awk ''|tr -d ':'
grep match_patten file
// 預設訪問匹配行
在多級目錄中對文字遞迴搜尋(程式設計師搜**的最愛):grep "class" . -r -n
將日誌中的所有帶where條件的sql查詢查詢出來:
cat log.* | tr a-z a-z | grep "from " | grep "where" > b
xargs 能夠將輸入資料轉化為特定命令的命令列引數;這樣,可以配合很多命令來組合使用。比如grep,比如find; - 將多行輸出轉化為單行輸出
cat file.txt| xargs
引數說明
cat file.txt | xargs -i
{} ./command.sh -p {} -1
#統計程式行數
find source_dir/ -type f -name "*.cpp" -print0 |xargs -0 wc -l
#redis通過string儲存資料,通過set儲存索引,需要通過索引來查詢出所有的值:
./redis-cli smembers $1 | awk ''|xargs -i
{} ./redis-cli get {}
消除重複行sort unsort.txt | uniq
找出重複行sort unsort.txt | uniq -d
cat text| tr '\t' ' '
//製表符轉空格
tr刪除字元
cat file | tr -d '0-9'
// 刪除所有數字
-c 求補集
cat file | tr -c '0-9'
//獲取檔案中所有數字
cat file | tr -d -c '0-9 \n'
//刪除非數字資料
tr壓縮字元
tr -s
壓縮文字中出現的重複字元;最常用於壓縮多餘的空格:
cat file | tr -s ' '
可用字元類:
使用方法:tr [:class:] [:class:]
tr '[:lower:]' '[:upper:]'
首處替換
sed 's/text/replace_text/' file
//替換每一行的第一處匹配的text
全域性替換
sed 's/text/replace_text/g' file
直接替換原檔案不輸出替換後的內容,使用-i:
sed -i 's/text/repalce_text/g' file
移除空白行
sed '/^$/d' file
字串插入字元:將文字中每行內容(abcdef) 轉換為 abc/def:
sed 's/^.\/&\//g' file
awk指令碼結構
awk ' begin statements2 end '
工作方式
1.執行begin中語句塊;
2.從檔案或stdin中讀入一行,然後執行statements2,重複這個過程,直到檔案全部被讀取完畢;
3.執行end語句塊;
列印每一行的第二和第三個字段awk '' file
統計檔案的行數`awk 』 end 』 file「
awk結合grep找到指定的服務,然後將其kill掉
ps -fe| grep msv8 | grep -v mforward | awk '' | xargs kill -9;
awk常用內建函式
檢視磁碟空間利用大小:df -h
-h: human縮寫,以易讀的方式顯示結果(即帶單位:比如m/g,如果不加這個引數,顯示的數字以b為單位)
檢視當前目錄所佔空間大小:du -sh
-h 人性化顯示
-s 遞迴整個目錄的大小
任何程序都與檔案關聯;我們會用到lsof工具(list opened files),作用是列舉系統中已經被開啟的檔案。在linux環境中,任何事物都是檔案,裝置是檔案,目錄是檔案,甚至sockets也是檔案。用好lsof命令,對日常的linux管理非常有幫助。
查詢7902埠現在執行什麼程式,分為兩步
第一步,查詢使用該埠的程序的pid;
$lsof -i:
7902
command
piduser
fdtype
device
size
node
name
wsl447684086
tcp10.6.50.37
:tnos-dp (listen)
查到30294
使用ps工具查詢程序詳情:
$ps -fe | grep
30294
tdev5 30294
26160
0 sep10 ? 01:10:50 tdesl -k 43476
root 22781
22698
000:54 pts/20
00:00:00
grep
11554
bashrc與profile都用於儲存使用者的環境資訊,bashrc用於互動式non-loginshell,而profile用於互動式login shell。
/etc/profile,/etc/bashrc 是系統全域性環境變數設定
~/.profile,~/.bashrc使用者目錄下的私有環境變數設定
當登入系統獲得乙個shell程序時,其讀取環境設定指令碼分為三步:
1.首先讀入的是全域性環境變數設定檔案/etc/profile,然後根據其內容讀取額外的文件,如/etc/profile.d和/etc/inputrc
2.讀取當前登入使用者home目錄下的檔案~/.bash_profile,其次讀取~/.bash_login,最後讀取~/.profile,這三個文件設定基本上是一樣的,讀取有優先關係
3.讀取~/.bashrc
~/.profile與~/.bashrc的區別:
1、這兩者都具有個性化定製功能
2、~/.profile可以設定本使用者專有的路徑,環境變數,等,它只能登入的時候執行一次
3、~/.bashrc也是某使用者專有設定文件,可以設定路徑,命令別名,每次shell script的執行都會使用它一次
做減法 Linux工具快速教程 高階篇
一般源 提供的程式安裝需要通過配置 編譯 安裝三個步驟 1.配置做的工作主要是檢查當前環境是否滿足要安裝軟體的依賴關係,以及設定程式安裝所需要的初始化資訊,比如安裝路徑,需要安裝哪些元件 配置完成,會生成makefile檔案供第二步make使用 2.編譯是對原始檔進行編譯鏈結生成可執行程式 3.安裝...
Linux工具快速教程
linux下有很多命令列工具供我們使用,每個工具總是提供了大量引數供我們選擇 實際工作中,我們用到的工具,最常用的總是那麼幾個引數組合 為此,我寫了這本書相對實用的書 這本書專注於linux工具的最常用用法,以便讀者能以最快時間掌握,並在工作中應用 全書分為三個部分 同時,這個教程也可當作linux...
發布 《Linux工具快速教程》
linux下有很多命令列工具供我們使用,每個工具總是提供了大量引數供我們選擇 實際工作中,我們用到的工具,最常用的總是那麼幾個引數組合 為此,我寫了這本書相對實用的書 這本書專注於linux工具的最常用用法,以便讀者能以最快時間掌握,並在工作中應用 全書分為三個部分 第一部分為基礎篇,介紹我們工作中...