LINUX中的命令

2021-09-12 03:09:17 字數 4134 閱讀 2308

獲取檔案的第m行到最後一行

cat *** | tail -n +m

獲取檔案的第n行 第n列

#獲取第五行資料

cat *** |

sed -n '5p'

#獲取第n列資料

cat *** |

awk''

字串分割

使用ifs分割字串時。分割完及時將ifs的值還原。否則每次獲取變數的時候都會分割。(多麼痛的領悟)

#舊ifs備份

old_ifs=

$#指定新的分割符

ifs=

","#切割字串

strarr=($

)#還原ifs的值

ifs=

$

xargs命令

本命令原帖:

一下記錄是便於自己理解的整理。

簡單來說,就是將管道符前傳遞過來的資料當成引數(大約可以這麼理解)。例如:echo 「–help」 | cat 這個命令會輸出–help。但是,當寫成這樣:echo 「–help」|xargs cat執行後,會輸出cat的使用文件。原因是,將–help標準輸入當成cat的引數來使用。

-d:指定標準輸入資料的間隔

例:echo 「123@123」 | xargs -d 『@』 echo會輸出123 123。不指定-d的時候直接輸出123@123

-n:指定引數數量。

例:echo"123@123@123@123" | xargs -d 『@』 -n 2 echo管道符後的echo命令會執行兩次。前乙個echo標準輸入的引數123 123 123 123會被xargs每兩個呼叫後乙個echo命令一次。

-e:用於搜尋標準輸入的資料。不能與-d一起使用。

例:echo 「123 123 33 123 123」 | xargs -e 『33』 echo時。只會輸出123 123。忽略33及之後的資料。

-i/-l:用於填充資料。區別在於-i不需要指定替換的位置,直接替換在{}中。-l需要指定替換的內容。

例:find . -type f -name 「* .log」 | xargs -i cp {} /tmp/

find . -type f -name 「* .log」 | xargs -i {} cp {} /tmp/

:>/tmp/test.txt

檔案test.txt如果存在就清空檔案中內容,如果不存在就建立檔案。

處理資料管道符後接head命令要注意

類似sed命令、tr命令之類的處理資料的命令,後銜接head命令可能會導致報錯。可以將兩個命令位置對調解決。原因貌似是因為前乙個命令沒有將資料處理完,head擷取時導致的錯誤,如果有大大知道原因,歡迎點出。

linux中各種判斷

[ -a file ]  如果 file 存在則為真。  

[ -b file ] 如果 file 存在且是乙個塊特殊檔案則為真。

[ -c file ] 如果 file 存在且是乙個字特殊檔案則為真。

[ -d file ] 如果 file 存在且是乙個目錄則為真。

[ -e file ] 如果 file 存在則為真。

[ -f file ] 如果 file 存在且是乙個普通檔案則為真。

[ -g file ] 如果 file 存在且已經設定了sgid則為真。

[ -h file ] 如果 file 存在且是乙個符號連線則為真。

[ -k file ] 如果 file 存在且已經設定了粘制位則為真。

[ -p file ] 如果 file 存在且是乙個名字管道(f如果o)則為真。

[ -r file ] 如果 file 存在且是可讀的則為真。

[ -s file ] 如果 file 存在且大小不為0則為真。

[ -t fd ] 如果檔案描述符 fd 開啟且指向乙個終端則為真。

[ -u file ] 如果 file 存在且設定了suid (set user id)則為真。

[ -w file ] 如果 file 如果 file 存在且是可寫的則為真。

[ -x file ] 如果 file 存在且是可執行的則為真。

[ -o file ] 如果 file 存在且屬有效使用者id則為真。

[ -g file ] 如果 file 存在且屬有效使用者組則為真。

[ -l file ] 如果 file 存在且是乙個符號連線則為真。

[ -n file ] 如果 file 存在 and has been mod如果ied since it was last read則為真。

[ -s file ] 如果 file 存在且是乙個套接字則為真。

[ file1 -nt file2 ] 如果 file1 has been changed more recently than file2, or 如果 file1 exists and file2 does not則為真。

[ file1 -ot file2 ] 如果 file1 比 file2 要老, 或者 file2 存在且 file1 不存在則為真。

[ file1 -ef file2 ] 如果 file1 和 file2 指向相同的裝置和節點號則為真。

[ -o optionname ] 如果 shell選項 「optionname」 開啟則為真。

[ -z string ] 「string」 的長度為零則為真。 字串為空即null時為真。

[ -n string ] or [ string ] 「string」 的長度為非零 non-zero則為真。加-n與不加-n結果相同。

[ string1 == string2 ] 如果2個字串相同。 「=」 may be used instead of 「==」 for strict posix compliance則為真。

[ string1 != string2 ] 如果字串不相等則為真。

[ string1 < string2 ] 如果 「string1」 sorts before 「string2」 lexicographically in the current locale則為真。

[ string1 > string2 ] 如果 「string1」 sorts after 「string2」 lexicographically in the current locale則為真。

迴圈檔案
find /***x/xx/xx/***/*** -type f |

while

read line ;

do#資料處理

done

#管道中迴圈資料

echo

"1 2 3"

|while

read line ;

doecho$;

done

shell獲取時間用
# 獲取一年前的當前時間

date -d "-1 year" +%y%m%d

date -d "-1 month" +%y%m%d

date -d "-1 day" +%y%m%d

#獲取當月一年前的第一天

date -d "-1 year" +%y%m"01"

#獲取當前時間

date +%y%m%d

json格式文字處理

使用jq命令讀取及修改json資料

#從json文字中讀取資料

#讀取結果為純文字

cattest

| jq -r ".key"

#讀取結果為帶格式文字

cattest

| jq ".key"

#更換json文字中的資料;value可以是變數$

cattest

| jq ".key=value"

#或者;當key為paramname時,替換值為value

cattest

| jq 'to_entries |map (if .key=="paramname" then . + else . end )|from_entries'

Linux中的In命令

ln是 linux 中乙個非常重要命令。它的功能是為某乙個檔案在另外乙個位置建立乙個同步的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案 s 是 symbolic的意思。例 ln s lib lsb usr lj 即 在usr目錄下建立指向 lib lsb目錄的lj檔案。當...

Linux中的In命令

ln是 linux 中乙個非常重要命令。它的功能是為某乙個檔案在另外乙個位置建立乙個同步的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案 s 是 symbolic的意思。例 ln s lib lsb usr lj 即 在usr目錄下建立指向 lib lsb目錄的lj檔案。當...

Linux中的In命令

ln是linux中乙個非常重要命令。它的功能是為某乙個檔案在另外乙個位置建立乙個同步的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案 s 是 symbolic的意思。例 ln s lib lsb usr lj 即 在usr目錄下建立指向 lib lsb目錄的lj檔案。當我們...