數據流和重定向

1、數據流

不管正確或錯誤的數據都是默認輸出到屏幕上,所以屏幕是混亂的。所以就需要用數據流重定向將這兩 條數據分開。數據流重定向可以將標準輸出和標準錯誤輸出分別傳送到其他的文件或設備去

標準輸入(standard input,簡稱stdin):默認情況下,標準輸入指從鍵盤獲取的輸入 標準輸出(standard output,簡稱stdout):默認情況下,命令執行所回傳正確的信息會輸出到 屏幕上 標準錯誤輸出(standard error output,簡稱stderr):默認情況下,標準錯誤輸出可理解為命令 執行失敗后,所回傳的錯誤信息會輸出到屏幕上

NumberChannel nameDescriptionDefault connectionUsage
0stdinStandard inputKeyboardread only
1stdoutStandard outputTerminalwrite only
2stderrStandard errorTerminalwrite only
3+filenameOther filesnoneread and/or write
  1. Number 0(stdin)

    • 含義:標準輸入,是程序獲取輸入數據的通道。
    • 默認連接:通常關聯鍵盤,用戶通過鍵盤輸入數據。
    • 使用方式:只讀(程序通過此通道讀取輸入內容)。
  2. Number 1(stdout)

    • 含義:標準輸出,程序正常運行時輸出結果的通道(如命令執行結果)。
    • 默認連接:關聯終端,結果直接顯示在終端界面。
    • 使用方式:只寫(程序向此通道寫入輸出內容)。
  3. Number 2(stderr)

    • 含義:標準錯誤,程序運行錯誤或警告信息的輸出通道。
    • 默認連接:同樣關聯終端,錯誤信息默認顯示在終端。
    • 使用方式:只寫(程序向此通道寫入錯誤信息)。
  4. Number 3+(filename)

    • 含義:代表除 stdin、stdout、stderr 外的其他文件描述符,用于操作普通文件、自定義文件等。
    • 默認連接:無默認關聯對象,需手動指定文件。
    • 使用方式:可讀、可寫或讀寫結合,根據實際文件操作需求而定(如打開文件讀寫數據)。

例如:

命令 -- ip a

查看目錄屬性 -- ll /root

2、重定向操作符

重定向操作符可以將命令輸入和輸出數據流從默認設備重定向到其他位置。重定向操作符本身不是命令,而是命令中附加的可改變命令的輸入和輸出對象的特殊符號

  • 輸出重定向操作符:>、>>

  • 輸入重定向操作符:<、<<

輸出重定向

  • 標準輸出重定向: 1> 或>、 1>> 或>>
  • 標準錯誤輸出重定向:2>、 2>>
案例1:輸出重定向(覆蓋)

將ip a的標準輸出重定向到 /root/file1 -- ip a >/root/file1?(覆蓋了file1里面原本的內容,如果file1原本不存在,在重定向時創建了file1,> 命令也可以寫成 1>,1可以省略

?案例2:輸出重定向(追加)

將ip a的標準輸出重定向到 /root/file1 -- ls /root?>>?/root/file3(追加到已有內容后面,不會覆蓋已有內容)

案例3:錯誤輸出重定向

標準錯誤輸出重定向到/root/file3???2>/root/file1
(由下圖可知?,同時前者的內容覆蓋了后者原本的內容,2>? 2不能省略

案例4: 正確和錯誤都輸入到相同位置

?ls /home/ ?/aaaaaaaaa &>list.txt ?

案例5: 正確和錯誤都輸入到相同位置

?ls /home/ ?/aaaaaaaaa >list1.txt 2>&1?

2>&1和 &>的區別

1.?2>&1

  • 含義2>&1?是一種手動的重定向操作,它的作用是將標準錯誤輸出(stderr)重定向到標準輸出(stdout)。這里的?2?代表標準錯誤輸出,1?代表標準輸出,&?用于明確表示后面跟著的是一個文件描述符,而不是文件名。

2.?&>

  • 含義&>?是一種簡寫形式,它的功能是同時將標準輸出和標準錯誤輸出重定向到同一個文件。它等同于?> file 2>&1

區別總結

  • 語法簡潔性&>?是更簡潔的寫法,能一次性完成標準輸出和標準錯誤輸出的重定向;而?2>&1?通常需要與單獨的標準輸出重定向操作(如?> file)配合使用。
  • 使用場景:如果只是單純想把標準輸出和標準錯誤輸出都重定向到同一個文件,使用?&>?更方便;如果需要更復雜的重定向操作,例如先將標準錯誤輸出重定向到標準輸出,再對合并后的輸出進行其他處理,那么使用?2>&1?更合適。
案例6:重定向到空設備/dev/null

一般將標準錯誤輸出重定向到空文件(黑洞),這樣標準錯誤輸出不會輸出在屏幕上,也不會有新文件產生。例如:

輸入重定向操作符:<<<(追加重定向)

使用形式

功能

命令 >文件命令 1>文件

將命令執行后的標準輸出信息不在默認的屏幕上顯示,而是以覆蓋的方式寫入到指定文件中,若指定的文件不存在,則自動創建該文件

命令 2>文件

將命令執行后所產生的錯誤信息不在默認的屏幕上顯示,而是以覆蓋的方式寫入到指定文件中,若指定的文件不存在,則自動創建該文件

命令

2>/dev/null

將命令執行后所產生的錯誤信息不在默認的屏幕上顯示,而是寫入到空設備文件中,即將輸出的錯誤信息丟棄掉

命令 &>文件

命令 >&文件

將命令執行后的正確輸出信息和錯誤信息不在默認的屏幕上顯示,而是以覆蓋的方式寫入到指定文件中,若指定的文件不存在,則自動創建該文件

命令 >>文件

將命令執行后的正確輸出信息以追加的方式寫入到指定的文件中,不覆蓋原文件內容,若指定的文件不存在,則自動創建該文件

命令 <文件

使命令從指定的文件中讀取數據作為輸入

命令 <<結束標識字符串

在命令行讀取數據作為輸入,直到遇到指定的結束標識字符串

標準輸入重定向:< 0<0<<<<

案例1:從文件讀取數據作為cat命令的輸入
[root@master ~]echo  test > file    
[root@master ~]cat < filetest

案例2:標準輸入重定向<<并不表示追加,而是表示輸入結束的意思,即作為一個結束符
[root@localhost ~]cat > file3 << file\> hello\> file# 利用<<右側的控制字符,我們可以終止輸入,不必輸入ctrl+d來結束。
[root@localhost ~]cat file3hello

將標準輸出重定向到文件?

echo命令

語法格式為:“echo [字符串] [$變 量]”

echo命令用于在終端設備上輸出字符串或變量提取后的值,執行“echo 字符串”或“echo $變量”就可以,其中$符號意思是提取變量的實際值,以便后續的輸出操作。

指定字符串輸出到終端屏幕

例如:

root@rrl-virtual-machine:~# echo bugagihia.com
bugagihia.com

使用“$變量”的方式提取出變量SHELL的值,并將其輸出到屏幕上

例如:

root@rrl-virtual-machine:~# echo $SHELL
/bin/bash

bash shell提示符

PS1?是 Linux 系統中 Bash shell 的環境變量,用于定義命令行提示符的顯示格式。通過設置?PS1,可自定義提示符展示的內容,例如當前用戶、主機名、工作目錄、時間等信息。

root@rrl-virtual-machine:~# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$PS1常用的參數含義如下:
\d :#代表日期,格式為weekday month date,例如:"Mon Aug 1"\H :#完整的主機名稱
\h :#僅取主機的第一個名字
\t :#顯示時間為24小時格式,如:HH:MM:SS\T :#顯示時間為12小時格式
\A :#顯示時間為24小時格式:HH:MM\u :#當前用戶的賬號名稱
\v :#BASH的版本信息
\w :#完整的工作目錄名稱
\W :#利用basename取得工作目錄名稱,所以只會列出最后一個目錄
\# :#下達的第幾個命令
\$ :#提示字符,如果是root時,提示符為:# ,普通用戶則為:$

默認root用戶?PS1?本身的格式定義:[root@localhost ~]#? ?-- [\u@\h \W]\$

臨時修改?PS1格式:
export命令

執行后,提示符會按?[\u@\h \A] \w \$?規則顯示,包含:

  • \u:當前用戶名;
  • \h:主機名簡稱;
  • \A:24 小時制簡化時間(HH:MM);
  • \w:完整工作目錄;
  • \$:提示符符號(root?用戶顯示?#,普通用戶顯示?$)。

例如:這里修改了PS1格式,多了[ ]和時間?

永久生效(修改配置文件)?

若需永久應用,編輯用戶配置文件(如?~/.bashrc):

echo 'export PS1="[\u@\h \A] \w \$ "' >> ~/.bashrc  
source ~/.bashrc  # 使配置立即生效  
將標準輸出重定向到文件(這也是將內容寫入文件的一種方法)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76767.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76767.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76767.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

詳解 MySQL 索引的最左前綴匹配原則

MySQL 的最左前綴匹配原則主要是針對復合索引&#xff08;也稱為聯合索引&#xff09;而言的。其核心思想是&#xff1a;只有查詢條件中包含索引最左側&#xff08;第一列&#xff09;開始的連續一段列&#xff0c;才能讓 MySQL 有效地利用該索引。 一、 復合索引的結構 復合…

MyBatis注解開發增刪改查基礎篇

本文是MyBatis注解開發的基礎篇&#xff0c;將通過實際場景&#xff0c;詳細介紹MyBatis注解式開發的使用&#xff0c;這是MyBatis很強大的一個特性&#xff0c;可以直接在接口方法上定義 SQL 語句&#xff0c;從而實現數據庫的增刪改查操作。 本文目錄 一、環境依賴二、創建對…

周末總結(2024/04/05)

工作 人際關系核心實踐&#xff1a; 要學會隨時回應別人的善意&#xff0c;執行時間控制在5分鐘以內 堅持每天早會打招呼 遇到接不住的話題時拉低自己&#xff0c;抬高別人(無陰陽氣息) 朋友圈點贊控制在5min以內&#xff0c;職場社交不要放在5min以外 職場的人際關系在面對利…

【HTML】純前端網頁小游戲-戳破彩泡

分享一個簡單有趣的網頁小游戲 - 彩色泡泡爆破。玩家需要點擊屏幕上隨機出現的彩色泡泡來得分。 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

如何實現單例模式?

一、模式定義與核心價值 單例模式&#xff08;Singleton Pattern&#xff09;是一種創建型設計模式&#xff0c;保證一個類僅有一個實例&#xff0c;并提供全局訪問點。其核心價值在于&#xff1a; ??資源控制??&#xff1a;避免重復創建消耗性資源&#xff08;如數據庫連…

Three.js 系列專題 1:入門與基礎

什么是 Three.js? Three.js 是一個基于 WebGL 的 JavaScript 庫,它簡化了 3D 圖形編程,讓開發者無需深入了解底層 WebGL API 就能創建復雜的 3D 場景。它廣泛應用于網頁游戲、可視化、虛擬現實等領域。 學習目標 理解 Three.js 的核心組件:場景(Scene)、相機(Camera)…

藍橋云客---藍橋速算

3.藍橋速算【算法賽】 - 藍橋云課 問題描述 藍橋杯大賽最近新增了一項娛樂比賽——口算大賽&#xff0c;目的是測試選手的口算能力。 比賽規則如下&#xff1a; 初始給定一個長度為 N 的數組 A&#xff0c;其中第 i 個數字為 Ai?。隨后數組會被隱藏&#xff0c;并進行 Q 次…

Oracle遷移達夢遇中斷?試試SQLark的斷點續遷功能!

在企業級數據遷移項目中&#xff0c;如果遷移單表數據量超過億行、占用空間超過100GB時&#xff0c;一旦遇到網絡中斷或遷移報錯&#xff0c;往往需要整表重新遷移&#xff0c;導致效率低下&#xff0c;嚴重影響項目進度。針對這一痛點&#xff0c;SQLark 支持對 Oracle→DM 的…

【C/C++算法】藍橋杯之遞歸算法(如何編寫想出遞歸寫法)

緒論&#xff1a;沖擊藍橋杯一起加油&#xff01;&#xff01; 每日激勵&#xff1a;“不設限和自我肯定的心態&#xff1a;I can do all things。 — Stephen Curry” 緒論?&#xff1a; ———————— 早關注不迷路&#xff0c;話不多說安全帶系好&#xff0c;發車啦&am…

[ctfshow web入門] web5

前置知識 引用博客&#xff1a;phps的利用 當服務器配置了 .phps 文件類型時&#xff0c;訪問 .phps 文件會以語法高亮的形式直接顯示 PHP 源代碼&#xff0c;而不是執行它。.phps被作為輔助開發者的一種功能&#xff0c;開發者可以通過網站上訪問xxx.phps直接獲取高亮源代碼 …

day 8 TIM定時器

一、STM32 定時器概述 1. 定時器的概述定時器的基本功能&#xff0c;但是 STM32 的定時器除了具有定時功能之外&#xff0c;也具有定時器中斷功能&#xff0c;還具有輸入捕獲&#xff08;檢測外部信號&#xff09;以及輸出比較功能&#xff08;輸出不同的脈沖&#xff09;&…

Spring Boot 中使用 Redis:從入門到實戰

&#x1f31f; 前言 歡迎來到我的技術小宇宙&#xff01;&#x1f30c; 這里不僅是我記錄技術點滴的后花園&#xff0c;也是我分享學習心得和項目經驗的樂園。&#x1f4da; 無論你是技術小白還是資深大牛&#xff0c;這里總有一些內容能觸動你的好奇心。&#x1f50d; &#x…

hi3516cv610通過menuconfig關閉的宏記錄

hi3516cv610通過menuconfig關閉的宏記錄 defconfig為 hi3516cv610_debug_defconfig或hi3516cv610_new_defconfig 1、 變為 2、 變為 3、 變為 4、 變為 5、 變為

WebSocket 詳解:構建一個復雜的實時聊天應用

文章目錄 一、前言二、WebSocket 基礎2.1 WebSocket 與 HTTP 的區別2.2 WebSocket 的優點 三、搭建 WebSocket 服務端3.1 安裝 ws 和 redis 庫3.2 創建 WebSocket 服務端3.3 創建用戶身份驗證 四、前端實現 WebSocket 客戶端4.1 創建 Vue 3 項目4.2 實現 WebSocket 連接和用戶注…

【JavaEE進階】Spring AOP入門

歡迎關注個人主頁&#xff1a;逸狼 創造不易&#xff0c;可以點點贊嗎 如有錯誤&#xff0c;歡迎指出~ AOP是Spring框架的第??核?(第??核?是 IoC) 什么是AOP&#xff1f; ? AspectOrientedProgramming&#xff08;?向切?編程&#xff09; 什么是?向切?編程呢? 切…

算法思想之雙指針(一)

歡迎拜訪&#xff1a;霧里看山-CSDN博客 本篇主題&#xff1a;算法思想之雙指針(一) 發布時間&#xff1a;2025.4.4 隸屬專欄&#xff1a;算法 目錄 雙指針算法介紹對撞指針&#xff1a;快慢指針&#xff1a; 例題移動零題目鏈接題目描述算法思路代碼實現 復寫零題目鏈接題目描…

【11408學習記錄】英語寫作黃金模板+語法全解:用FTC數據泄漏案掌握書信結構與長難句拆解(附思維導圖)

2025.04.04 英語寫作書信寫作第一段私人信件公務信函 語法總結——簡單句簡單句的核心&#xff1a;謂語動詞的變化詞性的拓展限定詞 形容詞與副詞介詞短語 成分的擴展同位語插入語 非謂語動詞 每日一句詞匯 第一步&#xff1a;辨別第二步&#xff1a;斷開第三步&#xff1a;簡化…

手機顯示5GA圖標的條件

最近有星友問在什么情況下才能顯示5G-A&#xff1f;雖然這個我也不知道&#xff0c;但是我有幾個運營商的5G終端白皮書&#xff0c;從上面就可以找到答案。 如上是幾個運營商顯示5G-A的條件&#xff0c;基本上考慮的都是3CC的情況&#xff0c;聯通還有考慮200M CA 2CC的場景&am…

網絡:華為數通HCIA學習:IP路由基礎

華為HCIA學習 IP路由基礎路由協議或路由種類以及對應路由的優先級按工作區域分類&#xff1a;按工作機制及算法分類&#xff1a;路由的優先級路由器選擇最優路由的順序是什么? 前言自治系統LAN和廣播域路由選路IP路由表路由度量建立路由表最長匹配原則路由器轉發數據包總結 IP…

Docker 鏡像相關的基本操作

一、Docker 鏡像基本操作 1. 查找鏡像 命令&#xff1a; docker search <鏡像名稱> 示例&#xff1a;查找 CentOS 鏡像&#xff1a; docker search centos 命令解釋&#xff1a; 默認從 Docker Hub 官方倉庫上搜索鏡像。搜索結果包含多個列&#xff1a; NAME&…