1. 程式人生 > >Linux:命令執行順序控制與管道

Linux:命令執行順序控制與管道

# 命令執行順序控制與管道 ## 順序執行 簡單的順序命令可以使用符號“;”完成,如:sudo apt-get update;sudo apt-get install some-tool;some-tool。 ## 有選擇的執行命令 符號"&&"就是用來實現選擇性執行的,它表示如果前面的命令執行結果(不是表示終端輸出 的內容,而是表示命令執行狀態的結果)返回0則執行後面的,否則不執行,你可以從境變“ 量“$?”獲取上一次命令的返回結果。 which cowsay>/dev/null && cowsay -f head-in ohch~ 學習過 C 語言的使用者應該知道在 C 語言裡面&&表是邏輯與,而且還有一個||表示邏輯或, 同樣 Shell 也有一個||,它們的區別就在於,shell中的這兩個符號除了也可用於表示邏輯 與和或之外,就是可以實現這裡的命令執行順序的簡單控制。||在這裡就是與&&相反的控制 效果,當上一條命令執行結果為≠0($?≠0)時則執行它後面的命令。 ## 管道 管道是什麼,管道是一種通訊機制,通常用於程序間的通訊(也可通過socket進行網路通訊 ),它表現出來的形式就是將前面每一個程序的輸出(stdout)直接作為下一個程序的輸入(s tdin)。 管道又分為匿名管道和具名管道(這裡將不會討論在源程式中使用系統呼叫建立並使用管道 的情況,它與命令列的管道在核心中實際都是採用相同的機制)。我們在使用一些過濾程式 時經常會用到的就是匿名管道,在命令列中由|分隔符表示,|在前面的內容中我們已經多次 使用到了。具名管道簡單的說就是有名字的管道,通常只會在源程式中用到具名管道。下面 我們就將通過一些常用的可以使用管道的"過濾程式"來幫助你熟練管道的使用。 常見用法: ### less ls -al /etc | less 列印/etc/passwd檔案中以:為分隔符的第1個欄位和第6個欄位分別表示使用者名稱和其家目錄: ### cut $ cut /etc/passwd -d ':' -f 1,6 列印/etc/passwd檔案中每一行的前N個字元: 前五個(包含第五個) cut /etc/passwd -c -5 前五個之後的(包含第五個) cut /etc/passwd -c 5- 第五個 cut /etc/passwd -c 5 2到5之間的(包含第五個) cut /etc/passwd -c 2-5 ### grep 我們搜尋/home/shiyanlou目錄下所有包含"shiyanlou"的所有文字檔案,並顯示出現在文字 中的行號: $ grep -rnI "shiyanlou" ~ -r 引數表示遞迴搜尋子目錄中的檔案,-n表示列印匹配項行號,-I表示忽略二進位制檔案。這 個操作實際沒有多大意義,但可以感受到grep命令的強大與實用。 檢視環境變數中以"yanlou"結尾的字串 $ export | grep ".*yanlou$" ### wc,簡單小巧的計數工具 分別只輸出行數、單詞數、位元組數、字元數和輸入文字中最長一行的位元組數: 行數 wc -l /etc/passwd 單詞數 wc -w /etc/passwd 位元組數 wc -c /etc/passwd 字元數 wc -m /etc/passwd 最長行位元組數 wc -L /etc/passwd ### sort 排序命令 預設為字典排序: $ cat /etc/passswd | sort 反轉排序: $ cat /etc/passwd | sort -r 按特定欄位排序: $ cat /etc/passwd | sort -t':' -k 3 上面的-t引數用於指定欄位的分隔符,這裡是以":"作為分隔符;-k 欄位號用於指定對哪一 個欄位進行排序。這裡/etc/passwd檔案的第三個欄位為數字,預設情況下是一字典序排序 的,如果要按照數字排序就要加上-n引數:

相關推薦

Linux命令執行順序控制管道

# 命令執行順序控制與管道 ## 順序執行 簡單的順序命令可以使用符號“;”完成,如:sudo apt-get update;sudo apt-get install

7、linux命令執行順序控制管道

cut,grep,wc,sort命令的使用 管道的理解 簡單的順序執行你可以使用;來完成,比如上述操作你可以: sudo apt-get update;sudo apt-get insatll some-tool;some-tool 結合&&am

命令執行順序控制管道

通常情況下,我們每次只能在終端輸入一條命令,按下回車執行,執行完成後,我們再輸入第二條命令,然後再按回車執行……,當有時候我們會一次輸入多條命令,這個時候的執行過程又是如何的呢? 當我們需要使用apt-get安裝一個軟體,然後安裝完成後立即執行安裝的軟體(或命令

LINUX 筆記-命令執行順序 && ,||

word 筆記 linu file ech bak 格式 說明 目錄 && 格式:命令1 && 命令2 說明:命令1返回真(即返回0,成功被執行)後,命令2才能夠被執行 例:/apps/bin目錄將會被移到/apps/dev/bin目錄下,如

linux xargs命令的使用及其exec、管道的區別

1、作用: (1)將前一個命令的標準輸出傳遞給下一個命令,作為它的引數,xargs的預設命令是echo,空格是預設定界符 (2)將多行輸入轉換為單行 2、使用模式:front command | xargs -option later command front comm

linux命令執行順序管理

sleep 文件 done 命令 執行 管理 let grep color bi.sh文件內容如下: #!/bin/bash date1=$1 round=$2 if [ "$date1" == "" ];then date1=$(date "+%

***Linux chmod命令修改文件文件夾權限命令代碼

ima linu 容易 添加 情況 操作符 的人 即使 屬性。   在Unix和Linux的各種操作系統下,每個文件(文件夾也被看作是文件)都按讀、寫、運行設定權限。 在Linux中要修改一個文件夾或文件的權限我們需要用到linux chmod命令來做,下面我寫了幾個簡

Linux 使用命令執行java -jar xxx.jar 在連接數據庫時發生 java.sql.SQLRecoverableException: IO Error: Connection reset 錯誤

res 修改配置文件 表示 SQ 論壇 connect linux 通過 rain 一、問題描述 1. jar 包在未打包之前執行沒有問題 2.應用啟動慢,並且此問題是一個偶爾性質的,也就是時有時無, 3.數據庫連接數夠用 4.發生錯誤的該連接是一個新的連接,不是服

linux下的IO重定向管道相關的知識簡析

io操作 簡單的 先來 兩個 整數 指令 cpu director 文件描述 一、bash重定向部分簡單翻譯 1.1、bash手冊關於重定向短短的註解(因為過於經典,所以摘錄出來) 我的翻譯要開始毀經典啦... 參考:https://blog.csdn.net/spch2

Linux程序間通訊(匿名管道命名管道)(共享記憶體,訊息佇列,訊號量)

目錄 程序間通訊的介紹 管道 匿名管道 原理: 程式碼實現 匿名管道特性 實現管道符 |  命名管道 命名管道特性 程式碼實現 管道讀寫規則 作業系統中ipc的相關命令 共享記憶體(重點) 生命週期: 程式碼實現 程式碼實現獲

Linux Bash 命令執行的判斷依據

cmd;cmd 不考慮命令相關性的連續指令下達 $? (指令回傳值) 與&& 或|| 指令下達情況 說明 cmd1 && cmd2 若 cmd1 執行完

struts2面試題struts2執行原理&&interceptorFilter

struts2執行原理 1、客戶端初始化一個指向servlet容器的請求。 2、這個請求經過一系列的過濾器(到FilterDispatcher初始化dispatch類)。 3、接著FilterDispatcher被呼叫,詢問ActionMapper來決定這個請求

Linux可重入函式不可重入函式

可重入函式          一個函式在執行的過程中被打斷,然後會再被從頭執行一次,執行完後,再回來把剛才沒執行完的部分執行完。這就相當於巢狀的執行了。函式是公共程式碼,這樣的執行是允許的。函式的執行可以被打斷,打斷之後還可以再從頭執行,執行完後接著執行剛才沒有執行的程式

Linux 操作命令 less 以及less cat 和 more 的區別

inux 目錄 通過 自動 -- ESS 百分比 文件內容 文件 1、簡介 ????linux 正統查看文件內容的工具,功能極其強大???? 2、主要功能 ????less 工具也是對文件或其它輸出進行分頁顯示的工具???? 3、用法/命令格式 less [選項]

linux命令執行時間統計工具time使用小結

http://blog.csdn.net/wangjianno2/article/details/50452919 http://codingstandards.iteye.com/blog/798788

Linux系統命令&術語之縮寫全稱,你知道幾條?

Linux系統的命令和常用術語,相信大家已經是按照慣性思維在使用了,而且大家也都知道這些命令和術語幾乎都是以簡短的縮寫來呈現,其原因是什麼呢?這些縮寫的全稱及其含義是什麼呢?下面就給大家介紹下: 作業系統的構建有針對圖形化介面和命令列這兩類,前者的代表是Windows,使用滑鼠作為主輸入裝置,所以是

linux tcp多執行緒伺服器客戶端程式設計例項

伺服器端: #include<iostream> #include<arpa/inet.h> #include<sys/socket.h> #include<cstdlib> #include<cstdio> #i

java中執行執行順序控制

一:join()方法. thread.Join把指定的執行緒加入到當前執行緒,可以將兩個交替執行的執行緒合併為順序執行的執行緒。比如線上程B中呼叫了執行緒A的Join()方法,直到執行緒A執行完畢後,才會繼續執行執行緒B。 public class JoinTest

Java--執行緒的先後執行順序控制

說明 一般在多執行緒程式設計時,需要控制執行緒的先後執行順序,比如:主執行緒中寫了子執行緒t1,想要的效果是需要t1先執行,然後再執行接下來的主執行緒操作,但是預設的是主執行緒先執行,所以問題就出現了

shell命令執行順序

&&,||,(),{} 四個符號的運用shell指令碼執行命令的時候,有時候會依賴於前一個命令是否執行成功。而&&和||就是用來判斷前一個命令執行效果的。1  &&   使用方法:命令1 &&  命令2