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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...