標準出錯也定位到這個文件中
創新互聯是一家專業提供大姚企業網站建設,專注與網站設計制作、成都網站建設、H5場景定制、小程序制作等業務。10年已為大姚眾多企業、政府機構等服務。創新互聯專業網站設計公司優惠進行中。
2代表標準出錯,如果文件不存在,如果不加上21則會打印出錯信息,
加上以后就不會打印了,也進入那個文件了
1代表標準輸出定向到的地方,這句相當于
cat cities cities.copy 2 cities.copy
或者
cat cities 1 cities.copy 2 cities.copy
或者
cat cities 2 cities.copy 1 2
0:標準輸入,1:標準輸出,2:標準出錯
1.列出文件清單命令:ls
ls命令能夠列出當前目錄下的所有內容。ls 命令的執行方式為:
# ls [-選項] [文件名或者目錄名]
進入到Linux命令行中后,我們至少要知道當前所處的位置有哪些內容,這些信息就可以使用ls命令來獲得。
在Linux中,ls命令是最常使用的命令之一,因為在命令行下要隨時查看目錄內容。如果不加任何選項的話,ls命令僅列出當前目錄下的文件和目錄名,例如,想要查看/etc目錄下的內容,可以使用下列命令:
# ls /etc
如果想要列出當前目錄下所有文件,則可以使用下列命令:
# ls -a
2、cat命令
功能:在標準輸出上顯示文件。
語法:cat [-vTEuAte] 文件
例子: cat example.txt
cat -A exam2.txt
cat file1 file2 file2
3、more命令
功能:在終端屏幕按屏顯示文本文件。
語法: more [-pcdls] 文件
例子: more example.c
more -dc example.c
more -c -10 example.c
4、less命令
less命令的功能幾乎和more命令一樣,也是用來按頁顯示文件,不同之處在于less命令在顯示文件時允許用戶既
可以向前又可以向后翻閱文件。
5、head命令
功能:顯示指定文件的前若干行。缺省設置為顯示10行
語法:head [-n] 文件
例子: head example.c
head -3 example.c
6、tail命令
功能:顯示指定文件的末尾若干行。缺省設置為顯示10行
語法:tail [+ / - num ] [參數] 文件
+num 從第num行以后開始顯示。- num 從距文件尾num行處開始顯示。
例子: tail example.c
tail -4 example.c
7、grep、fgrep和egrep命令
功能:
這組命令以指定模式搜索文件,并通知用戶在什么文件中搜索到與指定的模式匹配的字符串,并打印出所有包含該字符串的文本行,在該文本行的最前面是該行所在的文件名。grep命令一次只能搜索一個指定的模式;egrep命令檢索擴展的正則表達式(包括表達式組和可選項);fgrep命令檢索固定字符串,它不識別正則表達式,是快速搜索命令。
語法:
grep [-EFbcihlnvxef] [查找模式] [文件名1,文件名2,……]
egrep [選項] [查找模式] [文件名1,文件名2,……]
fgrep [選項] [查找模式] [文件名1,文件名2,……]
例子: grep "text file" example
grep data *
grep goto *.c
1 /dev/null 21
對于/dev/null設備一般不存在附加的說法,雖然這么寫沒錯。一般寫成:
1/dev/null 21
1/dev/null 含義是把標準輸出重定向到/dev/null,其實就是屏蔽標準輸出。
21 是把標準錯誤重定向到標準輸出,也就是fprintf(stderr, "error msg");的信息會被打印到stdout上。
結合起來就是屏蔽所有輸出信息。
至于為什么采用,以及這些符號,我也不清楚,前兩者還算直觀,這個我也是理解不能。
可以查看sh實現源碼,通過代碼了解這些符號的實現,希望注釋中能有一些蛛絲馬跡描述為什么采用這個符號。
一個進程默認會打開標準輸入、標準輸出、錯誤輸出三個文件描述符
文件描述符為0,小于號表示數據由文件流入命令
usage:
命令 file
#加入輸入重定向,對輸入文件進行計數
wc -l /etc/passwd
文件描述符為1,大于號表述數據由命令流入文件
所以: echo "hello" t.log 也可以寫成 echo "hello" 1 t.log
會把文件的內容清空,再輸入到新的文件
會把當前內容保持不變,然后在下一行進行追加
2 錯誤重定向,如果當前命令產生了錯誤,會把錯誤重定向到文件中,而不會打印到屏幕
無論內容正確還是錯誤都會把文件輸出到文件中。
stderr的文件描述符為2,Unix程序會向stderr流中寫入錯誤信息。
默認情況下, command file 將stdout 重定向到 file, command file 將stdin 重定向到 file。
如果希望 stderr 重定向到 file,可以這樣寫:
$ command 2file
如果希望 stderr 追加到 file 文件末尾,可以這樣寫:
$ command 2file 2 表示標準錯誤文件(stderr)
如果希望將 stdout 和 stderr 合并后重定向到 file,可以這樣寫:
$ command file 21 或者 $ command file 21
如果希望對 stdin 和 stdout 都重定向,可以這樣寫:
$ command file1 file2
command 命令將 stdin 重定向到 file1,將 stdout 重定向到 file2。
含義:將標準錯誤輸出 重定向到 標準輸出。
符號是一個整體,不可分開,分開后就不是上述含義了。
比如有些人可能會這么想:2是標準錯誤輸入,1是標準輸出,是重定向符號,那么"將標準錯誤輸出重定向到標準輸出"是不是就應該寫成"21"就行了?是這樣嗎? 如果是嘗試過,你就知道21的寫法其實是將標準錯誤輸出重定向到名為"1"的文件里去了
bash環境作了如下實驗:
[root@s253
~]#
balabala
-bash:
balabala:
command
not
found
[root@s253
~]#
balabala
/dev/null
[root@s253
~]#
balabala
/dev/null
21
[root@s253
~]#
balabala
/dev/null
21
[root@s253
~]#
兩條命令等價。
網友給出ksh和bash對比
/home/lee#echo
$0
-ksh
/home/lee#ls
abc
/dev/null
21
/home/lee#ls
abc
/dev/null
ls:
abc:
沒有那個文件或目錄
[1]
1524
[1]
Done
(1)
ls
--color=tty
abc
/home/lee#bash
/home/lee#echo
$0
bash
/home/lee#ls
abc
/dev/null
21
/home/lee#ls
abc
/dev/null
顯然在ksh就不一樣了,所以推薦使用/dev/null
21
27
后記:
21
和
的解釋
Linux的IO輸入輸出有三類
Standard
Input
代碼
Standard
Output
代碼
1
Standard
Error
代碼
2
ls
thereisno
1
out.txt
標準輸出重定向
也可以不加1寫成
ls
thereisno
out.txt
ls
thereisno
2
out.txt
標準錯誤重定向
ls
thereisno
out.txt
21
把錯誤定向到標準輸出,然后統一重定向
ls
thereisno
out.txt
所有IO重定向(中的可以代表任意,0,1,2,3……)
當前標題:linux命令2>1,LInux命令設置參數
網站路徑:http://vcdvsql.cn/article42/hsedhc.html
成都網站建設公司_創新互聯,為您提供用戶體驗、手機網站建設、品牌網站設計、建站公司、外貿網站建設、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯