第五章 呈現資料

2021-10-19 15:20:47 字數 2191 閱讀 7762

在指令碼中重定向輸出

建立自己的重定向

列出開啟的檔案描述符

阻止命令輸出

建立臨時檔案

兩種顯示指令碼輸出的方法:

linux系統將每個物件當做檔案處理。這裡包括輸入和輸出程序。linux用檔案描述符(file descriptor)來標識每個物件。檔案描述符是乙個非負整數,可以唯一標識會話中開啟的檔案。每個程序一次最多可以有9個檔案描述符。bash shell保留了前三個檔案描述符(0、1、2)。

檔案描述符

縮寫描述

0stdin

標準輸入

1stdout

標準輸出

2stderr

標準錯誤

stdin

代表shell的標準輸入。對終端介面來說,標準輸入是鍵盤。shell從stdin檔案描述符對應的鍵盤獲得輸入,在使用者輸入時處理每個字元。

stdout

stdout代表shell的標準輸出。在終端介面上,標準輸出就是終端顯示器。shell的所有輸出會被定向到標準輸出中,也就是顯示器。

stderr

處理錯誤訊息。stderr檔案描述符代表shell的標準錯誤輸出。shell或者shell中執行的程式和指令碼出錯時生成的錯誤訊息都會傳送到這個位置。

只重定向錯誤

2> errfile

重定向錯誤和資料

1> outfile 2> errfile

也可以將stderr和stdout的輸出重定向到同乙個檔案輸出。為此bash shell提供了特殊的重定向符號 &>

當使用&>時,命令生成的所有輸出都會傳送到同一位置。bash shell自動賦予了錯誤訊息更高的優先順序。

[wanghao@iz2ze20vl8jnph0si0n7jsz test]$ cat test.sh 

#!/bin/bash

echo

"this is an error"

>

&2echo

"this is normal output"

[wanghao@iz2ze20vl8jnph0si0n7jsz test]$ ./test.sh

this is an error

this is normal output

[wanghao@iz2ze20vl8jnph0si0n7jsz test]$ ./test.sh 2> errfile

this is normal output

[wanghao@iz2ze20vl8jnph0si0n7jsz test]$ cat errfile

this is an error

預設情況下,linux會將stderr導向stdout。

可以用exec命令告訴shell在指令碼執行期間重定向整個檔案描述符。

在指令碼中重定向輸入

exec 0< testfile

在shell中最多可以有9個開啟的檔案描述符。其他6個從3-8的檔案描述符均可用做輸入或輸出重定向。可以將這些檔案描述符中的任意乙個分配給檔案,然後在指令碼中使用他們。

如果建立了新的輸入或輸出檔案描述符,shell會在指令碼退出時自動關閉它們。然而在有些情況下需要在指令碼結束前手動關閉檔案描述符。

要關閉檔案描述符,將它重定向到&-

一旦關閉了檔案描述符,就不能再指令碼中向它寫入任何資料,否則shell會生成錯誤訊息。

lsof

lsof會列出整個linux系統開啟的所有檔案描述符。該命令會產生大量的輸出。會顯示當前linux系統上開啟的每個檔案的有關資訊。包括後台執行的所有程序以及登入到系統的任何使用者。

有時候,不想顯示指令碼的輸出。這在將指令碼作為後台程序執行時很常見。如果執行在後台的指令碼出現錯誤資訊,shell會通過電子郵件將它們發給程序的屬主。

可以將stderr重定向到乙個叫做null檔案的特殊檔案。null檔案跟它的名字很像,檔案裡什麼都沒有。shell輸出到null 檔案的任何資料都不會儲存,全部都被丟掉了。

在linux系統上null檔案的標準位置是/dev/null。重定向該位置的任何資料都會被丟掉,不會顯示。

ls -al > /dev/null

ls -al badfile 2> /dev/null

cat /dev/null > testfile 快速清除現有檔案的資料

linux系統有特殊的目錄,專供臨時檔案使用。linux使用/tmp 目錄來存放不需要永久保留的檔案。

python第五章 Python學習(第五章)

記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...

第五章 雜湊

雜湊表adt,只支援二叉樹查詢所允許的一部分操作。比如插入,刪除,查詢等。那些需要元素間排序資訊的操作將不會得到支援。比如findmin,findmax和線性時間按排序順序列印整個表的操作時不支援的。雜湊函式在理想狀態是能將任何兩個不同的關鍵字對映到不同的單元,但是這是不可能,因為關鍵字是無窮的,但...

第五章 函式

第五章 函式 1 函式的定義 shell函式定義可以放在 bash profile 檔案中,也可以在使用該函式的指令碼中,還可以在命令列中 通過 source 或 執行bash profile檔案,使修改能夠立即生效 function 函式名 declare f 顯示定義的函式清單 export f...