Ascii
組合多個命令,如 tr、iconv 和 dd
shell 腳本的新手,我很少有這樣的命令。擁有這樣的臨時文件是最佳選擇還是應該嘗試組合所有這些命令?如果是後者,您能幫我將輸出從 dd 命令重定向到 tr 命令,然後再重定向到 iconv。謝謝。
dd if=abcd.dat cbs=38 conv=block of=abcd.temp
貓 abcd.temp | tr -d “\n” | tr -d “\r” > abcd.輸出
iconv -f ASCII -t EBCDIC-US <abcd.output > abcd.ebcdic
您可以通過使用管道來避免各種中間文件,就像
tr
在現有命令中一樣。dd
的預設輸出(如果of
未指定)可以重定向:dd if=abcd.dat cbs=38 conv=block | tr -d "\n" | tr -d "\r" | iconv -f ASCII -t EBCDIC-US > abcd.ebcdic
這兩個
tr
命令可以組合:dd if=abcd.dat cbs=38 conv=block | tr -d "\n\r" | iconv -f ASCII -t EBCDIC-US > abcd.ebcdic
通常,避免臨時文件通常更快,因為管道輸出到第二個程序可以允許兩個程序重疊處理。
但是,如果腳本使用臨時文件更具可讀性,那麼它應該是完全可以接受的(假設腳本在完成這些文件後會刪除它們)。
我傾向於將其
dd
視為例外,因為它能夠以錯誤的參數造成如此巨大的破壞。我會盡量避免在腳本中使用它。很高興看到好的舊 EBCDIC 仍在使用!