shell指令碼零散筆記

2021-09-18 07:21:44 字數 3271 閱讀 3698

1、列印檔案的第一列(域)                 : awk '' filename

2、列印檔案的前兩列(域)                 : awk '' filename

3、列印完第一列,然後列印第二列          : awk '' filename

4、列印文字檔案的總行數                    : awk 'end' filename

5、列印文字第一行                       : awk 'nr==1' filename

6、列印文字第二行第一列                    : sed -n "2, 1p" filename | awk 'print $1'

1. -e filename 如果 filename存在,則為真 如: [ -e /var/log/syslog ]     

2. -d filename 如果 filename為目錄,則為真 如: [ -d /tmp/mydir ] 

3. -b 塊裝置

4.-h filename 如果 filename存在且是乙個軟鏈結時,則為真

5. -f filename 如果 filename為常規檔案,則為真 如: [ -f /usr/bin/grep ] 

6. -l filename 如果 filename為符號鏈結,則為真 如: [ -l /usr/bin/grep ] 

7. -r filename 如果 filename可讀,則為真 如: [ -r /var/log/syslog ] 

8. -w filename 如果 filename可寫,則為真 如: [ -w /var/mytmp.txt ] 

9. -x filename 如果 filename可執行,則為真 如: [ -l /usr/bin/grep ] 

10. filename1-nt filename2 如果 filename1比 filename2新,則為真 如: [ 

/tmp/install/etc/services -nt /etc/services ] 

11. filename1-ot filename2 如果 filename1比 filename2舊,則為真 如: [ 

/boot/bzimage -ot arch/i386/boot/bzimage ]

1. -z string  如果 string長度為零,則為真 如:  [ -z "$myvar" ]

2. -n string  如果 string長度非零,則為真  如: [ -n "$myvar" ]

3. string1= string2  如果 string1與 string2相同,則為真 如:  ["$myvar" = "one two three"]

4. string1!= string2  如果 string1與 string2不同,則為真 如:  ["$myvar" != "one two three"]

1. num1-eq num2  等於         如: [ 3 -eq $mynum ]

2. num1-ne num2  不等於     如: [ 3 -ne $mynum ]

3. num1-lt num2  小於         如: [ 3 -lt $mynum ]

4. num1-le num2  小於或等於如: [ 3 -le $mynum ]

5. num1-gt num2  大於      如: [ 3 -gt $mynum ]

6. num1-ge num2  大於或等於如: [ 3 -ge $mynum ]

!    非運算,表示式為 true 則返回 false,否則返回 true。    [ ! false ] 返回 true。

-o    或運算,有乙個表示式為 true 則返回 true。    [ $a -lt 20 -o $b -gt 100 ] 返回 true。

-a    與運算,兩個表示式都為 true 才返回 true。    [ $a -lt 20 -a $b -gt 100 ] 返回 false。

&&    邏輯的 and    [[ $a -lt 100 && $b -gt 100 ]] 返回 false

||    邏輯的 or    [[ $a -lt 100 || $b -gt 100 ]] 返回 true

輸出重定向 標準資訊數字

1>/dev/null 2>&1

>前面的數字:

0代表標準輸入

1代表stdout標準輸出,預設值為1,所以」1>/dev/null」可以簡寫為」>/dev/null」,全部輸入

2代表stderr標準錯誤輸出,只有命令返回異常的錯誤資訊才會輸入到後面,正常的資訊會列印出來

2>&1

代表把stderr標準錯誤輸出 重定向 到1表示的stdout標準輸出所在的地方,也就是 /dev/null

注意2>1這裡的1表示的是檔名,而不是標準輸出

/dev/null 代表空裝置檔案

所以,1>/dev/null 2>&1的解釋就是

將stdout標準輸出重定向到空裝置檔案/dev/null ,同時將stderr標準錯誤輸出的重定向跟stdout標準輸出重定向一致,也輸出到空裝置檔案/dev/null。

$0    指令碼名

$n    引數

$#    引數個數

$*    所有引數內容

$@    所有引數

$?    上個命令或函式的返回值

[ "$show_detail" == "1" ] && echo "&&" || echo "||"

裡面為真就執行&&後面的,為假就執行||後面的

[ "$show_detail" == "1" ] || echo "||"

單獨乙個條件也適用

[ "$show_detail" == "1" ] && ||

條件中多行語句使用{}包括

#!/bin/bash

i=1sum=0

while [ $i -le 100 ]

do let sum=sum+$i

let i++

done

#!/bin/sh

dev=sdb1

n=$1

a=1while true

do dd if=/dev/zero of=$n-$a.img bs=1m count=16 2>/dev/null

# sync

if [ $a -eq 66 ]; then

a=1else

a=`expr $a + 1`

fi done

C 零散筆記

關於控制項 控制項實質就是乙個類 屬性中的name就是它例項後的變數名 屬性中的其他東西就是類中的變數或函式 例如 可以直接通過name.backcolor color.yellow 來直接操作控制項的背景顏色 color類 裡面封裝的大量的顏色變數 r,g,b 通過color.blue呼叫 col...

Unity零散筆記

1 預處理 在c 中的預處理功能很弱。除了使用 if else end 之外,還可以嘗試使用 system.diagnostics.conditional unity editor 這種屬性條件。2 carontefx外掛程式 這個外掛程式很好,但是不適合做遊戲,它的物理模擬應該是給做電影用的。好像...

零散的shell使用小結

入職這段時間大量使用shell,有一些零散的點,記在這裡備忘。一 shell種的if shell中的if與c中的if用法有很大區別,一般是結合 使用 目前我只這麼用過 例如if a eq 0 then do done。中括號實際上起真正的判斷作用,需要特別注意的是,和 兩邊都需要有空格。中,與數字比...