做減法 Linux工具快速教程 基礎篇

2021-07-15 06:26:23 字數 4801 閱讀 4211

搜尋檔案或目錄: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-hbackspace,刪除游標前邊的字元

-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工具的最常用用法,以便讀者能以最快時間掌握,並在工作中應用 全書分為三個部分 第一部分為基礎篇,介紹我們工作中...