亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

linux進程標準輸入/輸出/錯誤及重定向

2023-10-26 05:44:33
116
0

標準輸入/輸出/錯誤

linux下每個進程在運行的過程中都會打開一系列的文件,可以通過lsof -p $pid來查看進程號為pid打開的文件,在/proc/pid/fd/下是該進程打開的文件的鏈接。其中有三個比較特殊的文件是每個進程都會打開,其文件描述符分為0,1,2,默認分別鏈接到標準輸入(STDIN_FILENO)設備(/dev/stdin)、標準輸出(STDOUT_FILENO)設備(/dev/stdout)、標準錯誤(STDERR_FILENO)(/dev/stderr)設備。

進程在運行的過程中默認情況下產生的輸出會寫到stdout文件,產生的錯誤信息寫到stderr文件,默認這兩個文件會鏈接到屏幕設備,許多進程從標準輸入stdin獲取輸入,默認鏈接為鍵盤設備。如果更改這幾個文件的鏈接位置,就可以實現對其他文件的輸入輸出。

更換標準輸入/輸出/錯誤

  • >: 輸出重定向到一個文件或設備,覆蓋原來的內容
  • >>:輸出重定向到一個文件或設備,追加到末尾
  • <: 輸入重定向一個程序
  • <<
  1. 輸出
# echo hello > out.log
# echo hello 1> out.log 

這兩個命令的作用是相同的,都是講echo進程的輸出重定向到out.log文件,在這里>左邊的1可以省略。

  1. 錯誤
# echo hello 2> err.log
hello
# echoo hello 2> err.log 

2>表示將進程的錯誤信息重定向到err.log文件,第一行的命令沒有錯誤信息,因此會輸出hello到標準輸出,即會顯示到屏幕上,第二行輸出了一個不存在的指令,這時的錯誤輸出信息會輸入到err.log中。

如果需要把輸出信息和錯誤信息都重定向到某個文件:

# echoo hello 1> err.log 2>&1

這里的1>和前面的用法相同,2>&1是將錯誤信息追加到標準輸出中。>&是一個整體,不可分開。

一些例子:

# 錯誤信息重定向到標準輸出,輸出重定向到out.log
# cat file 2>&1 >out.log
# 將輸出重定向到out.log,錯誤定向到輸出
# cat file >out.log 2>&1
# 將錯誤和輸出重定向更簡單的寫法
# cat file &> out.log 
  1. 輸入

將一個命令的輸入重定向為其他文件。

# cat < file.in

另外還有一種<<的方式,稱為here文檔,它會從標準輸入中持續讀入字符,直到匹配到指定的token讀取結束。例如cat命令:

cat << EOF > out.log
> hello
> world
> EOF

這種方式是將cat 命令的輸出重定向到out.log中,其內容是從第二行開始到EOF之前結束,EOF是結束token,可以人為指定為其他字符,例如:

cat << ENDOFFILE > out.log
> 1
> 2
> 3
> ENDOFFILE 

另一種寫法是

cat > out.log << EOF
> 1
> 2
> 3
> ENDOFFILE

結果和上面的一致。

0條評論
0 / 1000
cactusii
15文章數
0粉絲數
cactusii
15 文章 | 0 粉絲
原創

linux進程標準輸入/輸出/錯誤及重定向

2023-10-26 05:44:33
116
0

標準輸入/輸出/錯誤

linux下每個進程在運行的過程中都會打開一系列的文件,可以通過lsof -p $pid來查看進程號為pid打開的文件,在/proc/pid/fd/下是該進程打開的文件的鏈接。其中有三個比較特殊的文件是每個進程都會打開,其文件描述符分為0,1,2,默認分別鏈接到標準輸入(STDIN_FILENO)設備(/dev/stdin)、標準輸出(STDOUT_FILENO)設備(/dev/stdout)、標準錯誤(STDERR_FILENO)(/dev/stderr)設備。

進程在運行的過程中默認情況下產生的輸出會寫到stdout文件,產生的錯誤信息寫到stderr文件,默認這兩個文件會鏈接到屏幕設備,許多進程從標準輸入stdin獲取輸入,默認鏈接為鍵盤設備。如果更改這幾個文件的鏈接位置,就可以實現對其他文件的輸入輸出。

更換標準輸入/輸出/錯誤

  • >: 輸出重定向到一個文件或設備,覆蓋原來的內容
  • >>:輸出重定向到一個文件或設備,追加到末尾
  • <: 輸入重定向一個程序
  • <<
  1. 輸出
# echo hello > out.log
# echo hello 1> out.log 

這兩個命令的作用是相同的,都是講echo進程的輸出重定向到out.log文件,在這里>左邊的1可以省略。

  1. 錯誤
# echo hello 2> err.log
hello
# echoo hello 2> err.log 

2>表示將進程的錯誤信息重定向到err.log文件,第一行的命令沒有錯誤信息,因此會輸出hello到標準輸出,即會顯示到屏幕上,第二行輸出了一個不存在的指令,這時的錯誤輸出信息會輸入到err.log中。

如果需要把輸出信息和錯誤信息都重定向到某個文件:

# echoo hello 1> err.log 2>&1

這里的1>和前面的用法相同,2>&1是將錯誤信息追加到標準輸出中。>&是一個整體,不可分開。

一些例子:

# 錯誤信息重定向到標準輸出,輸出重定向到out.log
# cat file 2>&1 >out.log
# 將輸出重定向到out.log,錯誤定向到輸出
# cat file >out.log 2>&1
# 將錯誤和輸出重定向更簡單的寫法
# cat file &> out.log 
  1. 輸入

將一個命令的輸入重定向為其他文件。

# cat < file.in

另外還有一種<<的方式,稱為here文檔,它會從標準輸入中持續讀入字符,直到匹配到指定的token讀取結束。例如cat命令:

cat << EOF > out.log
> hello
> world
> EOF

這種方式是將cat 命令的輸出重定向到out.log中,其內容是從第二行開始到EOF之前結束,EOF是結束token,可以人為指定為其他字符,例如:

cat << ENDOFFILE > out.log
> 1
> 2
> 3
> ENDOFFILE 

另一種寫法是

cat > out.log << EOF
> 1
> 2
> 3
> ENDOFFILE

結果和上面的一致。

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
1
0