什麼是shell指令碼,為什麼要使用它

除了能夠以互動方式接受和執行命令外,shell還可以執行儲存在檔案中的命令。這稱為shell指令碼。這裡我們將介紹shell指令碼的基礎知識。...

shell是Linux或Unix操作系統中的一個程序,它允許您輸入命令供系統執行。當在linux計算機上打開終端窗口時,它啟動shell程序,該程序提供一個輸入命令的界面。此接口稱為命令行接口。輸入命令後,shell將執行該命令,並在屏幕上顯示輸出。

shell-scripting

除了能夠以交互方式接受和執行命令外,shell還可以執行存儲在文件中的命令。這種執行模式稱為shell腳本,本文將介紹shell腳本的基礎知識。

1貝殼的歷史

從20世紀70年代的Unix開始,Ken Thomson開發了一個名為v6shell的shell程序。它是一個交互式shell,缺乏腳本能力。

1977年,bourneshell緊隨其後,至今仍作為root帳戶的默認Shell使用。這個shell增加了腳本能力,這在多年的實踐中證明是非常有用的。

殼牌在20世紀80年代的進一步發展催生了許多流行的殼牌變種,其中最流行的是C-shell和Korn shell。這些shell中的每一個都有自己的語法,在某些情況下,這些語法與原始shell截然不同。

今天最流行的Shell之一是Bash Shell。Bash代表Bourne Shell,是原始Bourne Shell的一個大大改進的變體。

在本文中,我們將描述bashshell的shell腳本。

2執行shell腳本

如何執行shell腳本?很簡單。只需將腳本路徑作為參數傳遞給shell:

示例shell腳本:

echo "hello world"

按如下方式運行:

$ bash hello.sh# printshello world

注意:shell要求行以LF字符結尾(換行符)。如果您在Windows上編寫shell腳本,並試圖直接在Linux系統上執行,則可能會出錯。Windows使用CR-LF組合(回車換行)進行換行。這隻需要轉換成LF。請檢查您的Windows編輯器,以瞭解執行此操作的方法。

還有另一種方法可以直接作為命令執行shell腳本。**以下行(hashbang聲明)作為shell腳本的第一行。

#!/bin/bash

通過此更改,我們的簡單shell腳本現在是:

#!/bin/bashecho "hello world"

現在,您需要使腳本文件可執行,如下所示:

$ chmod +x hello.sh

此時,可以直接執行腳本文件,而不必顯式引用shell。

$ hello.sh# printshello world

現在讓我們看看使用shell腳本的一些優點。

三。任務自動化

使用shell腳本的第一個優點是自動化頻繁執行的任務。假設你每天都要做一件事。如果您每天需要在linux系統上執行多個命令,可以將這些命令存儲在一個文件中並運行腳本。示例包括:

  • 每天歸檔並上傳一個文件或文件夾到一個雲存儲設施,比如S3。
  • 壓縮每天都在增長的日誌文件。
  • 獲取股票價格,解析獲取的數據,並在滿足某些條件(價格過高或過低)時觸發電子郵件或短信。

4組合多個命令

除了自動化頻繁的任務外,您還可能發現將多個命令序列組合到一個命令中是一種優勢。記住一個命令要比記住多個命令簡單得多,更不用說執行命令的順序了。

一個例子是Linux操作系統本身的啟動順序。作為引導的一部分,操作系統執行許多命令,以使系統進入正確的狀態。這些命令實際上是位於/etc目錄下的shell腳本。如果您看一下這些shell腳本中的一個,您將意識到引導系統的複雜性,在沒有shell腳本的情況下,您可能不得不手動執行。

下面是一個示例shell腳本/etc/profile,每次用戶登錄時都會執行該腳本。想象一下用手輸入這些命令!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).if [ "$PS1" ]; then if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fifi# The default umask is now handled by pam_umask.# See pam_umask(8) and /etc/login.defs.if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset ifi

5更容易開發

在C/C++中編寫的常規程序中,可以執行與shell腳本相同的操作。但是,編寫和調試shell腳本比C/C++程序要容易得多。特別是對於系統管理任務,包括執行外部命令、創建和刪除文件和目錄、重定向輸出等。

C/C++程序對於較低的操作水平更好,例如調用系統調用、操作數據結構等。

6透明度

由於shell腳本是一個文本文件,因此可以很容易地查看它執行的操作。相比之下,只有這樣,你才能知道用C++(如編譯為可執行文件)的語言編寫的程序是在選擇告訴你還是訪問源代碼。例如,可以檢查shell腳本是否正在刪除任何文件,如果需要這些文件,可以將它們複製到其他位置。

使用shell腳本診斷問題也比使用常規程序容易得多,因為您可以查看源代碼。腳本失敗是因為目錄不存在嗎?您可以查看腳本代碼並創建目錄(儘管行為良好的shell腳本應該檢查並創建它以避免此類錯誤)。

7便攜式的

shell腳本可以傳輸到其他Unix和類Unix操作系統並執行(如果存在shell本身)。即使在從X86、MIPS、SPARC等不同架構中傳輸shell腳本時,shell腳本也比C/C++程序更便攜。

C/C++程序可以在另一個系統上傳輸和使用的唯一方法是複製源代碼,構建程序,並嘗試運行它。即使如此,如果它使用特定於體系結構的代碼,它也可能無法按預期工作。

既然您已經知道了shell腳本是什麼以及它們的許多優點,您不想在任務中使用它們嗎?您在使用它們時遇到了哪些問題?請在下面的評論中告訴我們。

  • 發表於 2021-03-13 04:53
  • 閱讀 ( 54 )
  • 分類:程式設計

你可能感興趣的文章

使用簡單的shell指令碼修復html格式

... 為什麼使用shell指令碼?如果你是程式設計新手,從小事做起會更好。不僅你不太可能放棄,而且你還有機會停下來學習。也就是說,你的第一個程式可以非常有用,即使它...

  • 發佈於 2021-03-13 00:12
  • 閲讀 ( 47 )

頂級網站和書籍,讓您成為linux命令列英雄

... 什麼是命令列(the command line)? ...

  • 發佈於 2021-03-14 07:04
  • 閲讀 ( 58 )

VisualStudio程式碼是mac的完美文字和指令碼編輯器

... 為什麼選擇程式碼? ...

  • 發佈於 2021-03-14 07:11
  • 閲讀 ( 55 )

使用powershell而不是批處理指令碼的5個原因

... 那麼.NETAPI支援有什麼好處呢? ...

  • 發佈於 2021-03-15 16:49
  • 閲讀 ( 95 )

如何使用applescript將bash指令碼轉換為可單擊的應用程式

假設你是一個bash指令碼嚮導,喜歡為不太懂技術的朋友和家人自動化任務。即使你給了他們一個指令碼,完全解決了他們的問題,他們可能仍然擔心自己使用終端。在這種情況下,您不妨手動為它們執行所有操作。 ...

  • 發佈於 2021-03-21 09:39
  • 閲讀 ( 51 )

關於python程式設計最常見的問題

...文中,我們將帶您瞭解有關Python的所有知識,包括Python是什麼、它為什麼有用、如何開始用Python編寫程式碼,以及從何處著手。 ...

  • 發佈於 2021-03-25 18:32
  • 閲讀 ( 56 )

如何使用“helloworld”指令碼開始使用python

... 什麼是“你好,世界”(“hello, world”)? ...

  • 發佈於 2021-03-28 01:18
  • 閲讀 ( 51 )

在linux中,“bash”是什麼意思?

...終端模擬器絕對是兩個不同的應用程式。那麼Bash到底是什麼呢?在這篇短文中,我們將探討Bash是什麼,它做什麼,以及如何開始使用它。 ...

  • 發佈於 2021-03-28 13:14
  • 閲讀 ( 61 )

哪個linux shell最好?比較了5種常見的貝殼

... 什麼是linux shell(a linux shell)? ...

  • 發佈於 2021-03-30 18:45
  • 閲讀 ( 49 )

如何使用受限shell來限制linux使用者可以做什麼

受限的shell限制了使用者帳戶在Linux上可以做什麼。受限使用者不能更改其目錄,您可以控制他們可以訪問哪些命令。下面介紹如何在Linux上設定受限shell。 受限炮彈 受限shell不是另一個shell。這是標準外殼的另一種模式。Bash...

  • 發佈於 2021-03-31 10:57
  • 閲讀 ( 55 )
zxcb834
zxcb834

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦