Linux 學習記錄 四(Bash 和 Shell scirpt)

来源:http://www.cnblogs.com/jmcui/archive/2017/07/17/7194627.html
-Advertisement-
Play Games

一、什麼是 Shell? 狹義的shell指的是指令列方面的軟體,包括基本的Linux操作視窗Bash等,廣義的shell則包括 圖形介面的軟體,因為圖形介面其實也可以操作各種驅動程式來呼叫核心進行工作。 系統合法的 shell 均寫在 /etc/shells 文件中。 二、Bash Shell 的 ...


一、什麼是 Shell?

       狹義的shell指的是指令列方面的軟體,包括基本的Linux操作視窗Bash等,廣義的shell則包括 圖形介面的軟體,因為圖形介面其實也可以操作各種驅動程式來呼叫核心進行工作。

       系統合法的 shell 均寫在 /etc/shells 文件中。

二、Bash Shell 的基本操作技巧

1、查看前一次登錄執行過的命令:vim ~/.bash_history 2、命令和文件補全功能(Tab鍵) tab 接在一串指令的第一個字後面,則為命令補全 tab 接在一串指令的第二個字後面,則為文件補全 3、命令別名設定功能:alias alias lm='ls -al' 4、程式化腳本(shell scripts) 5、通配符   6、換行輸入 \ +[enter] 7、從游標向前或者向後刪除字元串 [crtl]+u / [crtl] +k 8、從游標移動到整個指令串的最前面/最後面 [crtl] +a / [crtl]+e 9、使用 env 和 export 可觀察環境變數;set 可以觀察目前 bash 環境下的所有變數 10、連續命令中 ; 可以讓兩個命令連續執行:
  • && 前一個指令必須沒有錯誤信息
  • || 如果正確就不執行第二條。錯誤接著執行第二條
 11、編碼問題:LANG 或者 是 LC_ALL設置; locale 列出當前語種。  12、查看別名的原代碼 : type -a 別名命令  13、列出所有的按鍵和按鍵內容:stty -a  14、設定按鍵功能:stty erase ^h  : 設定crtl + h 向後刪除字元  15、獲取核心版本:echo $(uname -r)   三、Shell Script         概念:Shell script 是利用shell 的功能 所寫的一個程式,這個程式是使用純文本文件。將一些 shell 的語法與指令寫在裡面,搭配正則表達式、管線命令與數據流重導向等功能,以達到我們的處理命令。         個人理解:其實Shell script 就是window 中的批處理命令,它將shell 指令、再加上一點腳本的語法 寫出來的程式。shell script 用在系統管理上面是很好的一項工具,但是用在處理大量數值運算上,就不夠好了,因為shell scripts的速度較慢,且使用的CPU資源較多,造成主機資源的分配不良。         變數:  變數類型:bash變數類型預設為字元串,可以是整型或數組類型,沒有浮點型,所以沒有小數,1/3 結果是0.    變數聲明:預設為字元串,可以 直接聲明為 變數名=變數內容(x=123)這樣,如果要聲明為數組或者整型可以:
  • 變數和變數內容以一個等號=連接,a=123
  • 等號兩邊不能直接接空格符
  • 由英文字母和數字組成,但開頭不能是數字
  • 變數內容中如果有特殊字元,可以用""或''將變數內容結合起來
  • " "中 $變數,可以保留原本的特性
  • ' ' 中$變數,當成一般字元來處理
  • 可以用跳脫字元 \ 來使不認識的特殊字元來當成一般字元
  • ``或者()的意義:``或者()裡面的指令先被執行,作為外部的輸入信息
  • 將 - 變成 + 可以進行[取消]動作:declare +x sum :
  • 單獨列出變數的類型:declare -p sum
  • 升級成環境變數:export PATH
  • 取消變數 :unset a
  • 數組定義:var[1]="123" var[2]="456" var[3]="789"
  • ``或者()的意義:``或者()裡面的指令先被執行,作為外部的輸入信息
  • 變數 $$:出現的數字就是你的PID號碼
  • 變數 ?:上一個錯誤指令的錯誤代碼,如果沒有錯誤就為0

 

  變數交互:read -p "請輸入你的名字:" -t 30 name (-p表示提示世界,-t 表示30秒的輸入時間)   變數內容的擴展:PATH="$PATH":/home/bin   變數內容的刪除:echo ${path#/*:} 這句話的意思是從/開始到:之間刪除掉最短的字元

 

變數內容的替換

 

執行:  1、直接絕對路徑和相對路徑執行,執行者必須要有腳本的執行許可權。 2、全局變數的話 可以通過 bash shell.sh 或 sh shell.sh來執行   source、 sh script 的執行方式差異?     sh script 或者 bash script 都會使用一個新的bash環境來執行腳本中的命令,當子程式完成後,子程式完成後,在子程式內的各個變數或者動作將會結束而不會傳回父程式中     source script 會在父程式中執行,因此各項動作都會在原本的bash 內生效   流程式控制制(順序):shell scripts 依照 從上到下、從左到右 的順序執行。   流程式控制制(條件)
  • test -e file 文件名是否存在
  • test -f file 文件名是否存在 且為file
  • test -d directory 文件名是否存在且為目錄
  • test -r -w -x filename 是否具有可讀可寫可執行的許可權
  • test n1 -eq n2 兩數值相等
  • test n1 -ne n2 兩數值不等
  •             -gt  n1大於n2
  •             -lt   n1小於n2
  •             -ge  大於等於
  •             -le   小於等於

 

腳本的變數交互還可以用 ${0}、${1}、${2}、${3} 來進行,${0} 表示執行的腳本名、${1} 表示輸入的第一個變數、${2}表示輸入的第二個變數、${3} 表示輸入的第三個變數 

 

if 條件判斷

 

 case 條件判斷

 

流程式控制制(迴圈):

while 迴圈

 

 for 迴圈

 

for 迴圈

 

函數: 

        註意點:和傳統語言不同,函數必須定義在腳本最前面,以便程式執行的時候可以認識函數。函數 形參 也是用${1}、${2}、${3} 來傳參,也就是說函數內的${1}/${2}/${3} 辨認的調函數時傳進去的實參。而不是 執行腳本傳遞時的參數

 

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

-Advertisement-
Play Games
更多相關文章
  • 1、Makefile偽目標的格式: 2、Makefile偽目標的作用: 第一種情況: 如果我們需要書寫這樣的一個規則:規則所定義的命令不是去創建目標文件,而是通過make命令行明確指定它來執行一些特點的命令,就像例題中的clean。當文件夾中沒有clean這個文件的時候,我們輸入“make clea ...
  • 菜鳥的linux上手之路,由於最近要學習python,得有點linux的基本知識,所以......把這玩意兒裝上了到底該怎麼玩啊! 設置Ubuntu Nat連接: 1. 在虛擬機端輸入 如果進程列表裡有/user/sbin/sshd -D,則表明SSH守護進程已經啟動。 如果沒有該進程,需要手動安裝 ...
  • zookeeper安裝 單機模式 首先,下載zookeeper-3.4.8.tar.gz 創建/usr/zookeeper,解壓到zookeeper目錄 [root@localhost zookeeper]# tar -zxvf zookeeper-3.4.8.tar.gz 配置環境變數: 為了今後 ...
  • 大致理順了一下ubuntu整個環境變數的“流通過程”,如有錯誤,歡迎指正。 ...
  • 1.在/usr/目錄下創建java目錄 [root@localhost ~]# mkdir /usr/java[root@localhost ~]# cd /usr/java 2.複製jdk1.8到java目錄下,解壓到當前目錄 [root@localhost java]# tar -zxvf jd ...
  • ############ Linux 配置多個Tomcat要修改的地方 ############### ### tomcat2/conf/server.xml 改3處<Server port="8005" shutdown="SHUTDOWN"><Connector port="8080" prot ...
  • 本機環境: 1.更新軟體列表 2.安裝pip工具包 3.安裝ss 4.ss配置: (1)可以直接啟動:sudo ssserver -p 8388 -k password -m aes-256-cfb -d start (2)創建配置文件啟動: 單用戶的配置文件: /etc/shadowsocks.j ...
  • 1.打開graylog2官方文檔,地址如下:http://docs.graylog.org/en/2.0/pages/installation/docker.html#configuration 2.從文檔中找有用的信息,進行安裝,這裡採用的安裝方式是docker安裝,包含的組件有graylog2/ ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...