發表文章

目前顯示的是有「Shell」標籤的文章

深入了解bash shell script

圖片
深入了解bash shell script 前言 相信所有玩過 Unix的人都會同意 shell script 是一個十分強大的工具,可以用來幫助自已在短時間內解決許多枯\躁而乏味的工作,而且讓工作變得有趣。 對於 shell script 要怎麼寫,為什麼會想到這麼寫?對於這個問題,我個人的答案是:用多了,就知道了。有時很聰明的想法,往往是靈機一動,就想到了。我會建議大家,如果寫了好用的 script 就把他留下來,給個好名字。有時候用得上時,就會很高興有這個自製的工具。 寫 script 之前,要先了解: 1. 資料流 >、>>、<、| , #&># ..... 2. 一些好用的指令 cat ,grep,awk,sed,find,more........... 3. 變數 4. 運算式 5. 判斷式 if ,if else,if elif else,case ... esac 6. 迴圈 for,while,until 7.函式 參考 : 如何撰寫Shell Script 資料流 UNIX是第一個支援資料流的作業系統。什麼是資料流呢? 就是把程式的輸入和輸出想像成一個串流,在 Unix 之下,任和一個一般的程式都會直接開三個檔案。 0. stdin 1. stdout 2. stderr 這三個檔案分別是 資料流的 輸入和輸出,及錯誤輸出。在 default 之下,stdin 是接著 keyboard,stdout 是接著 tty (你想成 monitor 就好了),stderr 也是接著 tty 資料流既然是"流",那當然可以轉向。 "<"  這個指令呢就是把 stdin 接上後面的檔案,如: $cat < test.txt ">" 是把 stdout 寫入後面的 file。 如檔案內有東西,會把檔案內的東西清空才寫入。 ">>" 和 ">" 相同 ,但不會把檔案內的東西清空,而是寫在檔尾,如: $cat test.txt >> foo "|" (pipe) 這個呢則是把前面的stdout 接到後面程式的 stdin,如: cat test.tx...

如何撰寫Shell Script

圖片
如何撰寫Shell Script 前言 Shell 是一種讓使用者可以和作業系統 Kernel(核心用來控制 CPU、記憶體、硬碟等硬體)互動溝通的橋樑。Shell Script 主要是使用在 Linux 和 MacOS 等 Unix-like 作業系統的自動化操作指令的程式語言。其透過 Shell 命令列直譯器來執行(我們這邊主要使用 bash shell,其他的 Unix shell 觀念大致類似)。 一般情況 Shell Script 常用於系統管理、自動化操作檔案、自動化重複的指令碼、分析 log 等文件檔案、列印呈現我們想要的資料等,透過程式語言的使用來減少重複瑣碎的工作,所以若能妥善使用將提升不少開發者和軟體工程師的日常工作效率。 流程步驟 1. 編輯檔案 一般我們會使用 .sh 副檔名來命名 Shell Script 檔案。然後將該檔案設定為可執行: 這邊以demo.sh 為範例。 更改檔案 +x 的執行權限。 chmod +x demo.sh 可以透過檢視檔案詳細資料觀看是否已有 +x 的執行權限 $ls -l demo.sh # -rwxr-xr-x 1 user staff 106 Nov 16 10:41 demo.sh 2. 第一行: 宣告 # 宣告使用 /bin/bash 這是Linux預設的Shell 為bash,若你使用的是其他的Shell,如: csh, sh, ksh,請改為 /bin/bash=> /bin/csh....。 3. 程式內容直接使用Shell Command 接著,我們先利用一個簡單的範例:將目前執行 process 的 PID 依照數字大小排序,取出前 10 名,來了解撰寫 Shell Script 的基本架構。 # 宣告使用 /bin/bash #!/bin/bash echo "=== 將目前執行 process 的 PID 依照數字大小排序,取出前 10 名 === " # ps 為列出 process 相關資訊,透過 | pipe 管線傳遞資料。awk 可以根據 pattern 進行資料處理(這邊印出第一欄 PID)而 sort 是進行排序,其排序時,預設都是把資料當作字串來排序,若想讓資料根據實際數值的大小來排序,可以加上 -n 參數。-r 則是由大到小排序,預設是...

什麼是Shell? Command指令?Shell Script?

圖片
什麼是Shell? Command指令?Shell Script? 什麼是Shell?  Shell 是外殼的意思,就是作業系統的外殼。我們可以通過shell命令來操作和控制作業系統。 Shell的版本與路徑 那麼目前我們的 Linux (以 CentOS 7.x 為例) 有多少我們可以使用的 shells 呢? 你可以檢查一下 /etc/shells 這個檔案,至少就有底下這幾個可以用的 shells : /bin/sh (已經被 /bin/bash 所取代) /bin/bash (就是 Linux 預設的 shell) /bin/tcsh (整合 C Shell ,提供更多的功能) /bin/csh (已經被 /bin/tcsh 所取代) 雖然各家 shell 的功能都差不多,但是在某些語法的下達方面則有所不同,因此建議你還是得要選擇某一種 shell 來熟悉一下較佳。 Linux 預設就是使用 bash 。 查看Shell Shell是一個程序,一般都是放在/bin或者/usr/bin目錄下,當前Linux系統可用的Shell都記錄在/etc/shells文件中。/etc/shells是一個純文本文件,你可以在圖形界面下打開它,也可以使用cat命令查看它。 通過cat命令來查看當前Linux系統的可用Shell: $ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh 在現代的Linux上,sh已經被bash代替,/bin/sh往往是指向/bin/bash的符號鏈接。如果你希望查看當前Linux的默認Shell,那麼可以輸出SHELL環境變量,輸出結果表明默認的Shell是bash。 $ echo $SHELL /bin/bash 什麼是Command指令碼? 指令碼就是由Shell命令組成的檔案,這些命令都是可執行程式的名字。 Shell Script Shell script 就像是早期 DOS 年代的批次檔 (.bat) ,最簡單的功能就是 "將許多指令彙整" 寫在一起, 讓使用者很輕易的就能夠 one touch 的方法去處理複雜的...