LinuxShell——特殊符號

来源:https://www.cnblogs.com/shamao/archive/2019/07/16/11195517.html
-Advertisement-
Play Games

LinuxShell——特殊符號 摘要:本文主要學習了Shell命令中具有特殊功能的一些符號。 多命令執行 順序執行“;” 如果使用“;”連接多條命令,那麼這些命令會依次執行,但是各命令之間沒有任何邏輯關係,也就是說,不論哪條命令報錯了,後面的命令仍會依次執行。 舉個例子: 可以看到即便有命令執行錯 ...


LinuxShell——特殊符號

摘要:本文主要學習了Shell命令中具有特殊功能的一些符號。

多命令執行

順序執行“;”

如果使用“;”連接多條命令,那麼這些命令會依次執行,但是各命令之間沒有任何邏輯關係,也就是說,不論哪條命令報錯了,後面的命令仍會依次執行。

舉個例子:

1 [root@localhost ~]# ls; cd /demo; pwd
2 anaconda-ks.cfg
3 -bash: cd: /demo: 沒有那個文件或目錄
4 /root
5 [root@localhost ~]# 

可以看到即便有命令執行錯誤,後面的命令仍然執行了。

邏輯與“&&”

如果使用“&&”連接多條命令,那麼這些命令之間就有邏輯關係了。只有第一條命令正確執行了,第二條命令才會執行。如果$?返回值是0,則證明上一條命令正確執行,如果$?返回值不是0,則證明上一條命令執行錯誤。

舉個例子:

1 [root@localhost ~]# cd /demo && pwd
2 -bash: cd: /demo: 沒有那個文件或目錄
3 [root@localhost ~]# 

因為第一個命令執行失敗了,所以後面的命令不予執行。

邏輯或“||”

如果使用“||”連接多條命令,則只有前一條命令執行錯誤,後一條命令才能執行。

舉個例子:

1 [root@localhost ~]# cd /demo || pwd
2 -bash: cd: /demo: 沒有那個文件或目錄
3 /root
4 [root@localhost ~]# cd /home || pwd
5 [root@localhost home]# 

可以看到只有在第一個命令執行錯誤的情況下,第二個命令才會執行。

管道

應用場景

在執行shell命令的時候,會有數據輸出到屏幕上,在某些情況下還需要對輸出到屏幕上的數據進行處理,這時就需要用到管道了。

定義

管道命令是一種能接收標準輸出數據,併進行處理的命令。

管道命令使用“|”作為界定符,在界定符後面的命令就是管道命令,界定符前面的命令可以為非管道命令,但這個非管道命令必須要有標準輸出。

管道命令只能處理標準輸出,對於標準錯誤輸出會進行忽略,但可以在非管道命令里通過數據流重定向進行處理。

管道命令和多命令

管道命令要求前面一個命令必須要有標準輸出,而且要求後面一個命令必須能接收標準輸出。多命令對是否有標準輸出沒有要求。

舉例

如果想查看目錄下占用容量最大的5個目錄,就可以使用管道符實現:

1 [root@localhost /]# ls -lh -S | head -5
2 總用量 28K
3 drwxr-xr-x.  76 root root 8.0K 7月  15 12:07 etc
4 dr-xr-xr-x.   4 root root 4.0K 7月   3 16:17 boot
5 dr-xr-x---.   2 root root 4.0K 7月   7 00:47 root
6 drwxr-xr-x.  13 root root 4.0K 7月   3 16:09 usr
7 [root@localhost /]# 

通配符

在BASH中,如果需要模糊匹配文件名或目錄名,就要用到通配符。

常用的通配符如下:

1 ?:匹配一個任意字元。
2 *:匹配0個或任意多個任意字元,也就是可以匹配任何內容。
3 []:匹配中括弧中任意一個字元。例如,[abc]代表一定匹配一個字元,或者是a,或者是b,或者是c。
4 [-]:匹配中括弧中任意一個字元,-代表一個範圍。例如,[a-z]代表匹配一個小寫字母。
5 [^]:邏輯非,表示匹配不是中括弧內的一個字元。例如,[^0-9]代表匹配一個不是數字的字元。

括弧

如果用於一串命令的執行,那麼小括弧和大括弧主要區別在於:

1 ()執行一串命令時,需要重新開啟一個子Shell來執行。{}執行一串命令時,在當前Shell中執行。
2 ()最後一條命令可以不用分號,{}最後一條命令要用分號。
3 ()里的各命令不必和括弧有空格,{}的第一條命令和左括弧之間必須有一個空格。
4 ()和{}都是把一串命令放田括弧裡面,並且命令之間用“;”隔開。
5 ()和{}中括弧裡面的某條命令的重定向隻影響該命令,但括弧外的重定向則會影響到括弧里的所有命令。

數據流重定向

平常我們在輸入的命令或者在屏幕上顯示的信息就是數據流。數據流重定向就是使輸入的命令信息來自於文件而不是終端的輸入,或者將輸出的數據傳輸到文件中而不在屏幕上顯示。

分類

輸入流重定向:將原本需要從鍵盤的輸入中獲取數據,改由從文件的內容中獲取。

輸出流重定向:將原本需要輸出到終端的數據,輸出到文件中,文件不存在則創建。

輸出流重定向

輸出流有兩種,分別是標準輸入和標準錯誤輸出:

1 標準輸出(stdout):輸出的信息是正確信息。代碼為1。使用>將導致文件內容被覆蓋,使用>>將在文件尾部追加。
2 標準錯誤輸出(stderr):輸出的信息是錯誤信息。代碼為2。使用>將導致文件內容被覆蓋,使用>>將在文件尾部追加。

舉個例子,將文件列表寫入trueFile,錯誤的結果將會顯示在屏幕上:

1 [root@localhost ~]# ls a b > trueFile

舉個例子,將正確的結果寫入trueFile,將錯誤的結果寫入falseFile:

1 [root@localhost ~]# ls a b > trueFile 2> falseFile

舉個例子,將正確的結果寫入trueFile,將錯誤的結果丟棄:

1 [root@localhost ~]# ls a b > trueFile 2> /dev/null

輸入流重定向

1 標準輸入(stdin):從鍵盤中輸入的信息。代碼為0。使用<後面接想要輸入的文件,使用<<後面接終止輸入的結束符。

舉個例子,將test文件中的內容輸入到file文件中:

1 [root@localhost ~]# cat > file < test

舉個例子,將鍵盤輸入的內容保存在file文件中,並且當輸入end的時候終止輸入,end不會被保存:

1 [root@localhost ~]# cat > file << end

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

-Advertisement-
Play Games
更多相關文章
  • 當我傻啊,用戶在電商網站購買成功,還在微服務中,那肯定就是有一套微服務架構的電商系統。 設計一套電商系統還不簡單 簡單想象一下,既然是一個電商系統,有用戶去購買,就肯定得有一個用戶模塊,購買什麼東西總不是西北風吧,購買肯定是商品吧,省掉購物車,就得有商品模塊吧,商品總得有庫存吧,庫存就暫時跟商品放一 ...
  • string path = "test.txt"; FileStream mystream = new FileStream(path, FileMode.OpenOrCreate); StreamWriter myWrite = new StreamWriter(mystream); myWrit ...
  • 本項目採用ASP.Net Core微服務技術,搭建博客和Saas平臺。 全文將圍繞(1)設計模式 (2)敏捷開發 目的: 結構足夠合理,代碼足夠優美,擴展性、可讀性、易維護性做到最優。 以下目錄僅為整體思路,後期逐漸完善補充。 1.配置linux環境實現持續集成 2.快速搭建 ASP.net cor ...
  • LinuxShell——正則表達式 摘要:本文主要學習了Shell中的正則表達式。 簡介 含義 正則表達式,也稱作正規表示法,是用於描述字元排列和匹配模式的一種語法規則,它主要用於字元串的模式分割、匹配、査找及替換操作。 正則表達式是用來匹配文件中的字元串的方法,它會先把整個文本分成一行一行的字元串 ...
  • 本文主要介紹了 cgroup 的一些基本概念,包括其在 CentOS 系統中的預設設置和控制工具,以 CPU 為例闡述 cgroup 如何對資源進行控制。 ...
  • 我所使用的Contiki系統是contiki-sensinode。理解該文需要有cc2530里uart的相關知識,具體寄存器的用法不做介紹。 先放上所有代碼,然後再仔細分析。 首先是包含的頭文件,就不多說了。 然後是一個巨集定義,#if UART0_ENABLE,若該巨集未被定義,則uart0_init ...
  • 參考博客: https://blog.csdn.net/lidonghat/article/details/55004280 https://blog.csdn.net/u012247418/article/details/83684052 1.syslog是 Unix 系統的一個常見組件,用於執行 ...
  • [toc] 操作系統 人與電腦硬體之間的中介 類別 window7,8,10 linux unix mac 32位和64位有什麼區別 設計定位不同 運算能力不同 定址能力不同,32位支持4G,64位支持128G物理記憶體 安裝要求不同 磁碟管理 磁碟的基本概念 磁碟 磁碟就像是森林,是所有硬式存儲的 ...
一周排行
    -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# ...