Shell中呈現資料

2021-08-31 13:42:15 字數 2556 閱讀 9646

在linux中存在三個標準檔案描述符:

檔案描述符

縮寫描述

0stdin

標準輸入

1stdout

標準輸出

2stderr

標準錯誤

stdin代表標準輸入,對於終端來說,標準輸入是鍵盤,我們可以使用"

stdout代表標準輸出,對於終端來說,標準輸出是終端顯示器,shell中的所有輸出包括shell中執行的程式和指令碼都預設輸出到顯示器,我們可以通過">"來重定向輸出

stderr在linux中標準輸出和錯誤輸出是不相同的,但是在執行shell的時候錯誤輸出會和標準輸出同時顯示在顯示器上,那麼他是因為:linux會將stderr導向stdout

目錄下只包含test檔案,沒有testt檔案,所以標準輸出被重定向到了testout中,而錯誤資訊被重定向到了testerror中,那麼將兩個重定向到乙個檔案中要使用:

為了避免錯誤資訊散落在檔案中,相較於標準輸出,bash shell會自動賦予錯誤資訊跟高的優先順序,所以錯誤資訊一般會在標準輸出之上

#!/bin/bash

echo "this is an error" >&2

echo "this is a normal output"

在指令碼中重定向的格式就是如上面所示,但是在執行指令碼的時候,沒有將「this is an error」重定向到stderr,因為linux會將stderr導向stdout,所以,如果我們這樣測試,就會得到我們想要的結果

上面所說的方法只是臨時重定向,當然我們還有永久重定向,需要使用exec命令告訴shell在指令碼執行期間重定向指向某個特定的檔案描述符。

同樣,為了防止將stderr導向stdout,我們要在裡面使用">&2"表示將輸出重定向到stderr。

可以看到read命令的輸入部分,被重定向到了testfile中

在shell中最多有9個開啟的檔案描述符,0-2上面提到的,3-8檔案描述符均可作為輸入或者輸出重定向。

也可以在檔案後追加內容,使用:

exec 3>>testout
我們知道了怎麼重定向到對應的檔案,但是怎麼恢復重定向的檔案描述符?可以分配一另外乙個檔案描述符給標準檔案描述符,也就是可以將stdout的原來位置重定向到另外乙個檔案描述符,然後再利用該檔案描述符重定向會stdout

可以看到在使用exec 1>3&之後,stdout又回到了顯示器,也就是之前的值

現在,看一下,如何建立標準輸入檔案描述符(和上面不同的是:使用'

MVC中View介面資料呈現示例

using system.text model list 接收控制器傳遞的資料 viewbag.username 顯示model的名稱 html.displaynamefor model model 0 啟用狀態 viewbag.title 多行c html內容和razor混排 viewbag.ti...

python資料呈現 pygal

資料爬取到之後,就要分析呈現了。爬蟲還在學習中,偶爾開拓一下思路,看看圖和表。本節關於簡單的資料呈現,世界人口地圖。pygal官方庫pygal 官方文件,雖是英文,但講的還是很詳細的,多讀多查多用。自取吧,裡面公開了很多資料 裡面有注釋,不是很複雜,用到的就是字典。coding utf 8 crea...

pycharm中import呈現灰色原因的解決方法

1.問題描述 同目錄下,當多個檔案之間有相互依賴的關係的時候,import無法識別自己寫的模組,pycharm中提示no module.2.解決步驟 1 開啟file setting 開啟 console下的python console,把選項 add source roots to pythonp...