文件描述符與重定向

来源:https://www.cnblogs.com/hongbo-tao/archive/2019/10/26/11722113.html
-Advertisement-
Play Games

文件描述符簡介:文件描述符在形式上是一個非負整數,每一個文件描述符會與一個打開文件相對應,內核利用文件描述符來訪問文件,最廣為人知的文件描述符有stdin(標準輸入),stdout(標準輸出),stderr(標準錯誤),系統分別事先為它們保留了三個文件描述符0,1,2,我們也可以通過特殊命令給我們的 ...


文件描述符簡介文件描述符在形式上是一個非負整數,每一個文件描述符會與一個打開文件相對應,內核利用文件描述符來訪問文件,最廣為人知的文件描述符有stdin(標準輸入),stdout(標準輸出),stderr(標準錯誤),系統分別事先為它們保留了三個文件描述符0,1,2,我們也可以通過特殊命令給我們的的文件指定文件描述符。

重定向的意思:Linux中,IO重定向是將某一個文件描述符的內容轉移到另一個指定的文件描述符中,通常與文件描述符有關。

最常用的我們可以將標準輸出的內容重定向到指定文件中。通過重定向操作符(>和>>)可以將輸出發送到文件中,而不是終端。>和>>略有差異,儘管兩者都可以將文本重定向到文件,但是前者會清空文件,再寫入內容,後者會將內容追加到現有的文件的尾部,預設情況下,重定向操作符針對的是標準輸出,所以>等同於1>,類似的>>等同與1>>。

 

1:標準輸出和標準錯誤重定向

2:利用<操作符將文件讀入stdin

3:自定義文件描述符

4:tee命令

 

1:例如echo命令就是將指定的字元串送到標準輸出,那麼我們就可以結合echo命令將指定字元串發送到指定的文件:

 在這裡就是將文件描述符stdout(1)的內容通過重定向操作符重定向到了test.txt文件里。

 

在處理錯誤時,來自stderr的輸出被傾倒入了文件/dev/null中,/dev/null是一個特殊的設備文件,他會丟棄接收到的任何數據。也常被稱為黑洞,因為但是進入其中的數據都將一去不復返。同樣的我們可以將標準錯誤輸出也重定向到文件中,以供保存。

接下來這個命令會將stderr文本列印到屏幕上,而不是重定向到文本中,因為預設情況下重定向操作符針對的是標準輸出,而這裡stdout並沒有輸出,而是stderr輸出

在重定向操作符前指定stderr文件描述符,就可以重定向stderr了

 

2: 從stdin讀取輸入的命令能以多種方式接收數據:

藉助小於符號,我們可以像使用stdin那樣讀取文件中數據: cmd<file; (cmd命令需要文件數據)

還有使用管道時,經常將前一個命令的標準輸出重定向成下一個命令的標準輸入,cmd1 | cmd2。

 

3:使用exec命令創建一個用於讀取的文件描述符(符號&表明後邊的數字是一個文件描述符):

 

 

創建一個用於寫入的文件描述符:

 

4:標準輸出既可以被重定向到文件,也可以通過管道傳入其他程式,但不能同時進行,命令tee可以實現這個操作,tee命令從stdin讀取,將數據重定向到文件中,然後還將數據重定向到標準輸出(stdout)中:cmd | tee file1 file2 | othercmd

例如ls命令列出和cat命令查看文件內容的結果均為標準輸出:

-a 指定以追加的方式保存到文件

 

本知識點需瞭解exec命令,以及對文件的打開模式,標準輸入輸出的初步瞭解。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 本文將描述 ,記憶體碎片整理技術。 記憶體碎片分為內碎片和外碎片: 內碎片:記憶體頁裡邊的碎片; 外 ...
  • 對於現在版本,安裝過程中沒有提示該使用哪些鍵,現簡單總結: Space:選中/取消選中; Tab:切換,特別是分區界面時不用它選擇不了輸入行; Enter:確定(併進入下一頁); 其他沒有什麼難辦的,按handbook一步步來就行。 ...
  • Linux 文件和目錄結構 windows 單用戶 Linux 多用戶 Linux 沒有盤符概念,都是用文件夾. "/"本目錄 home 目錄 下的目錄代表各個用戶. 樹狀 Linux 主要目錄速查表 可以去網上找 /etc 保存配置文件 /bin 保存執行的二進位文件目錄,也就是終端命令. 常用L ...
  • 經過昨天的一番折騰,我的電腦一開機就可以進入deepin的引導界面,也可以登錄到deepin,但是訪問windows直接報錯。我的windows已經使用PE安裝完了win10,還是打不開。 當我在研究完BIOS下UEFI模式的理論後,就進行了以下神奇的操作。看明白了硬碟分區中GPT分區表是和UEFI ...
  • Linux基礎系統優化 引言沒有,只有一張圖。 Linux的網路功能相當強悍,一時之間我們無法瞭解所有的網路命令,在配置伺服器基礎環境時,先瞭解下網路參數設定命令。 ifconfig 查詢、設置網卡和ip等參數 ifup,ifdown 腳本命令,更簡單的方式啟動關閉網路 ip 符合指令,直接修改上述 ...
  • 一般情況下直接mount 設備路徑 目錄路徑,就可以了。umount 設備名,就可以卸載這個設備了使用lsblk -f可以查看掛載的設備,以及這些設備的文件系統。 這個是我的移動硬碟,/dev/sdb1 就一個分區,掛載到了/media/tao/Elements目錄sdb └─sdb1 ntfs E ...
  • 這兩天因為在linux進行測試,先是搞壞了linux的系統,然後在重裝linux系統後搞壞了引導。在修複引導的過程中,搞壞了本機的win8系統,再次修複引導與重裝linux後,linux可以訪問了,windows系統重裝後還是不行,引導部分也還是不行。從我的經歷可以體現出,使用linux作為日常系統 ...
  • 1. VMware虛擬機 VMWare虛擬機軟體是一個“虛擬PC”軟體,它使你可以在一臺機器上同時運行二個或更多Windows、DOS、LINUX系統。 1.1. vmware15安裝配置 Workstation 15 Pro 中新增了以下支持:支持新的客戶機操作系統 Windows 10 1803 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...