Linux里的21究竟是什么

原文連接:http://blog.csdn.net/ggxiaobai/article/details/53507530

---------------------------------------------------------


我們在Linux下經常會碰到nohup command>/dev/null 2>&1 &這樣形式的命令。首先我們把這條命令大概分解下首先就是一個nohup表示當前用戶和系統的回話下的進城忽略響應HUP消息。&是把該命令以后臺的job的形式運行。那么就剩下command>/dev/null 2>&1,command>/dev/null較好理解,/dev/null表示一個空設備,就是說吧command的執行結果重定向到空設備中,說白了就是不顯示任何信息。那么2>&1又是什么含義?

2>&1

幾個基本符號及其含義

  • /dev/null 表示空設備文件
  • 0 表示stdin標準輸入
  • 1 表示stdout標準輸出
  • 2 表示stderr標準錯誤

從command>/dev/null說起

其實這條命令是一個縮寫版,對于一個重定向命令,肯定是a > b這種形式,那么command > /dev/null難道是command充當a的角色,/dev/null充當b的角色。這樣看起來比較合理,其實一條命令肯定是充當不了a,肯定是command執行產生的輸出來充當a,其實就是標準輸出stdout。所以command > /dev/null相當于執行了command 1 > /dev/null。執行command產生了標準輸出stdout(用1表示),重定向到/dev/null的設備文件中。

說說2>&1

通過上面command > /dev/null等價于command 1 > /dev/null,那么對于2>&1也就好理解了,2就是標準錯誤,1是標準輸出,那么這條命令不就是相當于把標準錯誤重定向到標準輸出么。等等是&1而不是1,這里&是什么?這里&相當于等效于標準輸出。這里有點不好理解,先看下面。

command>a 2>a 與 command>a 2>&1的區別

通過上面的分析,對于command>a 2>&1這條命令,等價于command 1>a 2>&1可以理解為執行command產生的標準輸入重定向到文件a中,標準錯誤也重定向到文件a中。那么是否就說command 1>a 2>&1等價于command 1>a 2>a呢。其實不是,command 1>a 2>&1command 1>a 2>a還是有區別的,區別就在于前者只打開一次文件a,后者會打開文件兩次,并導致stdout被stderr覆蓋。&1的含義就可以理解為用標準輸出的引用,引用的就是重定向標準輸出產生打開的a。從IO效率上來講,command 1>a 2>&1command 1>a 2>a的效率更高。

舉個栗子

來個shell

//test.sh
#!/bin/sh
t
date

chmod +x test.sh為test.sh增加執行權限。這里我們弄了兩條命令,其中t指令并不存在,執行會報錯,會輸出到stderr。date能正常執行,執行會輸出當前時間,會輸出到stdout。

執行./test.sh > res1.log結果為

我們發現stderr并沒有被重定向到res1.log中,stderr被打印到了屏幕上。這也進一步證明了上面說的./test.sh > res1.log等價于./test.sh 1>res1.log

執行./test.sh>res2.log 2>&1結果為

這次我們發現stdout和stderr都被重定向到了res2.log中了。上面我們未對stderr也就是2說明如何輸出,stderr就輸出到了屏 幕上,這里我們不僅對stdout進行說明,重定向到res2.log中,對標準錯誤也進行了說明,讓其重定向到res2.log的引用即 res2.log的文件描述符中。

再思考一下

為何2>&1要寫在command>1的后面,直接用2可以么。比如ls 2>a。其實這種用法也是可以的,ls命令列出當前的目錄,用stdout(1)表示,由于這個時候沒有stderr(2),這個時候執行ls 2>a也會正常產生一個a的文件,但是a的文件中是空的,因為這時候執行ls并沒有產生stderr(2)。



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

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

相關文章

安陽師范學院計算機與信息工程學院吳琴霞,基于甲骨文字形動態描述庫的甲骨文輸入方法...

【摘要】該文分析了目前常用的甲骨文字在編碼和輸入方面的問題和不足,給出了一種甲骨文字形動態描述的方法.該方法在現代漢字的編碼和書寫規范基礎上,使用有向筆段和筆元對甲骨文進行描述,用擴展的編碼區域和外部描述字形庫相結合的方式,解決了甲骨文字特別是異體字和沒有識別的…

【leetcode】590. N-ary Tree Postorder Traversal

題目如下: 解題思路:湊數題2,做完先序做后序。湊數博2。 代碼如下: class Solution(object):def postorder(self, root):""":type root: Node:rtype: List[int]"""if root None:return []res []s…

dubbo控制臺安裝

為什么要安裝這個控制臺? 當我們的服務很多的時候,需要監管,查看,當項目變大的時候,會深深感謝它! 管理原理 對注冊中心Zookeeper中注冊的服務進行管理 安裝步驟 1、下載dubbo源碼,要與使用的…

Js中的基本概念

前言:剛畢業的應屆生,學習前端時間并不長,昨天參加面試,一輪筆試,兩輪技術面試。尤其在技術面試的時候感覺到自己基礎知識還是搞的有些亂,也突然明白到了一個扎實的Js基礎對于之后的路是有多重要。準備把Js…

oracle 查詢時間點數據_oracle統計時間段內每一天的數據(推薦)

下面給大家介紹oracle統計時間段內每一天的數據&#xff0c;具體sql語句如下所示&#xff1a;1. 生成1000個隨機數SELECT ROWNUM RN,DBMS_RANDOM.VALUE(0, 1000) RANDOMFROM DUALCONNECT BY ROWNUM < 1000;注&#xff1a;DBMS_RANDOM.VALUE(A, B)是隨機數產生函數, A是區間的…

dubbo服務的運行方式

1、使用Servlet容器運行&#xff08;Tomcat、Jetty等&#xff09;----不可取 缺點&#xff1a;增加復雜性&#xff08;端口、管理&#xff09; 浪費資源&#xff08;內存&#xff09; 假設1個服務模塊時&#xff0c;需要1臺tomcat&#xff0c;消耗3個端口&#xff0c;和200M…

Java讀取HTML傳人文件,java讀取html文件并獲取body中所有的標簽及內容的案例.pdf

java讀讀取取html文文件件,并并獲獲取取body中中所所有有的的標標簽簽及及內內容容的的案案例例這里的獲取的是html文件中body 中的所有標簽以及內容package com.lmt.service.file;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import j…

插件translator_Zotero Jasminum 插件的更新記錄

Jasminum 插件發布后 林知&#xff1a;簡單的Zotero CNKI 中文插件?zhuanlan.zhihu.com受到一些同學的關注&#xff0c;同時也收到許多反饋。我寫這個插件的初衷就是想讓大家在Zotero上能更方便的使用知網&#xff0c;尤其是人文社科相關專業的同學&#xff0c;他們尤其依賴中…

Tomcat的三個端口

8005 <Server port"8005" shutdown"SHUTDOWN"> 關閉tomcat通信接口 8009 <Connector port"8009" protocol"AJP/1.3" redirectPort"8443"/> 與其他http服務器通信接口&#xff0c;用于http服務器集合 8080…

計算機一級考試word題主要,2017年計算機一級考試word題及答案

1 / 7 2017 年計算機一級考試 及答案 計算機還是人們的學習工具和生活工具。借助家用計算機、個人計算機、計算機網、數據庫系統和各種終端設備&#xff0c;那么 2017 年計算機一級考試 及答案有哪一些 ?下面是 才小編收集整理的 2017 年計算機一級考試 及答案&#xff0c;歡迎…

ubuntu18.04 用xhell連接失敗

ifconfig命令有用之后&#xff0c;又發現xhell連接不上ubuntu18.04版本的虛擬機&#xff0c;原因是ubuntu18.04默認沒有安裝ssh服務。 使用以下命令安裝 sudo apt-get install openssh-server 安裝完成后,啟動ssh服務 sudo /etc/init.d/ssh start 查看ssh進程&#xff0c;若出現…

extjs中元數據_json – 如何配置ExtJS 4 Store(代理和閱讀器)來讀取元數據

我的問題是除了totalRecords之外如何獲取元數據,在我的例子中它是版本,代碼,searchquery(請查看json).{"result": {"version":"1","code":"200","searchquery": "false","totalRecords": &qu…

伍德里奇計量經濟學第五版第四章計算機操作,伍德里奇計量經濟學第四章

伍德里奇計量經濟學第四章2016年10?25? 星期? 下午10:21 Page 1User: ?建英name: log: /Users/wangjianying/Desktop/Chapter 4 Computer exercise.smcllog type: smclopened on: 25 Oct 2016, 22:20:411. do "/var/folders/qt/0wzmrhfd3rb93j2h5hhtcwqr0000gn/T//SD1…

2018百度之星程序設計大賽 - 資格賽 1002 子串查詢

子串查詢 Accepts: 1262 Submissions: 5335 Time Limit: 3500/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Problem Description 度度熊的字符串課堂開始了&#xff01;要以像度度熊一樣的天才為目標&#xff0c;努力奮斗哦&#xff01; 為了檢驗你是否…

mysql sleep詳解_MySQL中sleep函數的特殊現象示例詳解

前言MySQL中的系統函數sleep&#xff0c;實際應用的場景不多&#xff0c;一般用來做實驗測試&#xff0c;昨天在測試的時候&#xff0c;意外發現sleep函數的一個特殊現象。如果在查詢語句中使用sleep函數&#xff0c;那么休眠的時間跟返回的記錄有關。如下測試所示&#xff1a;…

使用maven構建dubbo服務的可執行jar包

maven 項目結構 <build><!-- 使用dubbo推薦的方法&#xff0c;打包成jar&#xff0c;調用main方法啟動 --><finalName>admin-service-user</finalName><resources><resource><targetPath>${project.build.directory}/classes</ta…

計算機網絡安全應具備的功能,2016計算機專業知識:網絡系統安全體系具備功能攻擊方法...

【導讀】為了幫助廣大考生更好的備考&#xff0c;中公事業單位考試網提供2016年計算機專業知識《網絡系統安全體系具備功能攻擊方法》學習&#xff0c;為考生定制計算機基礎知識復習計劃。一、網絡系統安全體系具備功能1.訪問控制;2.檢查安全漏洞;3.攻擊監控;4.加密通訊;5.認證…

Linux的標準I/O和管道

標準輸入輸出與管道 1、標準輸入和輸出程序&#xff1a;指令數據指令&#xff1a;計算、加減乘除數據&#xff1a;輸入數據、輸出數據2、在Linux中每一個打開的文件都會分配一個當前進程中唯一的文件描述符&#xff0c;用來標識文件的狀態fd:file descripor3、Linux提供給程序…

頁面url帶參數_微信小程序云開發教程微信小程序的JS高級頁面間數據傳遞

同學們大家好&#xff0c;我是小伊同學&#xff0c;上一節課我們講解了全局數據的讀寫方法&#xff0c;那么在頁面間同樣需要數據交互&#xff0c;今天我們就來學習這部分內容。在微信小程序中&#xff0c;我們常常需要將數據在頁面之間進行傳遞&#xff0c;比如用戶的身份信息…

軟件測試員對英語,軟件測試工程師英語面試題

以下是軟件測試工程師部分英語面試中的參考回答&#xff0c;僅提參考&#xff1a;Interview English&#xff1a;一&#xff0c;Why are you interested in working for our company?1。Because your company has a good sales record.2。Because your operations are global,…