資料:
test.txt:
f1:f2:f3:0#1
shell:
#!/bin/bashwhile
read line
doecho
$line
result1=$(echo $line|awk -f ':'
'')echo
$result1
echo"1:
"$"test
"result=$(echo $line|awk -f ':'
''|tr -d '\r'
)echo"2:
"$"test
"result=$(echo $line|awk -f ':'
''|sed
's/\r//g')
echo"3:
"$"test
"#result=$(echo $line|awk -f ':'
''|cut -d "
\r" -f1)
#echo"4:
"$"test
"done
輸出:f1:f2:f3:0#1
0#1test1//這個輸出很奇怪,預期是1:0#1test2:0
#1test
3:0#1test
使用cut會報錯:
cut: the delimiter must be a single character
try `
cut --help'
for more information.
一些基本的概念:
i/o重定向所謂i/o重定向簡單來說就是乙個過程,這個過程捕捉乙個檔案,或者命令,程式,指令碼,甚至指令碼中的**塊(code block)的輸出,然後把捕捉到的輸出,作為輸入傳送給另外乙個檔案,命令,程式,或者指令碼;
fd(file descriptor檔案識別符號) 談到i/0重定向就不得不談到fd,
linux系統中,系統為每乙個開啟的檔案指定乙個檔案識別符號以便系統對檔案進行跟蹤,檔案識別符號是乙個大於0的整數, 不同數字代表不同的含義,
shell的fd通常為10個,即 0~9;通常系統預設占用了3個,也是我們常用的,
分別是:
0(stdin標準輸入),
1(stdout標準輸出),
2(stderr標準錯誤),
預設與keyboard、monitor、monitor有關;
其餘3-9是保留的識別符號,可以把這些識別符號指定成標準輸入,輸出或者錯誤作為臨時連線。
通常這樣可以解決很多複雜的
重定向請求;
<用來改變讀進的資料通道(stdin), 0 是 < 的預設值, 所以 < 與 0《是一樣的;
>用來改變送出的資料通道(stdout, stderr), 1是 > 的預設值,故》 與 1> 也是一樣的;
下面用乙個例子來解釋2>&1: $
./test.sh >test.log 2>&1
首先根據上面介紹的內容,我們知道上面的命令還可以寫為: $
./test.sh 1> test.log 2>&1
」1> test.log「就很容易理解了,就是將標準輸入定向到test.log
「2>&1」的意思是將錯誤輸出定向到和1一樣的輸出裝置,也是test.log
如果想讓輸出結果不僅在螢幕顯示,也寫入檔案,則可以使用tee命令
上面命令還可以寫為: $
./test.sh > test.log 2>test.log
同樣是將錯誤輸出到和1一樣的test.log
那為什麼我們要用2>&1呢?這是應為如果用
command > file 2>file的寫法,stdout和stderr都直接送到file中, file會被開啟兩次,這樣stdout和stderr會互相覆蓋,這樣寫相當使用了fd1和fd2兩個同時去搶占file 的管道,而
command >file 2>&1這條命令就將stdout直接送向file, stderr 繼承了fd1管道後,再被送往file,此時,file 只被開啟了一次,也只使用了乙個管道fd1,它包括了stdout和stderr的內容.
從io效率上,前一條命令的效率要比後面一條的命令效率要低;所以我們要使用2>&1
去掉vi中出現 M字元的方法
m符號是windows系統下的換行符,在windows下的文字通過bin模式ftp上傳到了unxi空間出現的。在test.txt檔案中有如下內容 insert into test values uuid f6d4d6b3 e6ea 11e7 9f02 00163e021d54 m md5值1 now...
C 去掉字串空格的方法
1 trim方法string tt aaa tt tt.trim 去字串首尾空格的函式 tt tt.trimend 去掉字串尾空格 tt tt.trimstart 去掉字串首空格 2 通過ascii碼值去掉字元中的空格 由於空格的ascii碼值是32,因此,在去掉字串中所有的空格時,只需迴圈訪問字串...
去掉ntlm的方法
相信大家都對telnet比較熟悉吧。hacking的時候經常用到的系統自帶shell尤其是注射的時候,但是最討厭的就是ntlm認證了,以前大家去掉ntlm的方法一般有2種。1 上傳ntml.exe 這種方法有很多缺點,比如 對方有防毒軟體,很多網段遮蔽了tftp.2 直接寫入telnet的配置資訊到...