Bash shell介紹
Bash是目前大多數系統上的默認shell,包括Linux、macOS以及Windows 10上的WSL。 註:自Catalina(2019年秋季)以來,macOS使用Zsh 有一些歷史原因使得Bash成為世界上最受歡迎的shell。在1989年,當Bash首次發布時,技術世界與現在相去甚遠。當時,UNIX世界中的大多數軟件都是封閉源碼的。Unix本身是專有的,也是封閉源碼的。 要使用Unix系統,您必須使用一個shell。 當時最受歡迎的shell是封閉源碼的,您需要支付費用才能使用它。它被稱為“Bourne shell”,在/bin/sh命令下可用。它之所以被稱為“Bourne”是因為它的創作者是Steve Bourne。 在那些年,Richard Stallman與GNU項目(後來又是Linux)即將引起革命,開始了開源革命。 GNU項目需要一個shell,於是Bash應運而生。Bash受到Bourne Shell的極大啟發,Bash代表“Bourne再次shell”,它是GNU項目的一個重要組成部分,也是該項目最成功的軟件之一,我們仍然在今天使用。 Bash可以執行所有為sh編寫的腳本,這對於其采用是一個必要的功能,它還引入了更多功能,從最早的版本開始,為其用戶提供更好的體驗。從那時以來,Bash獲得了很多改進。本教程介紹了您可以使用Bash執行的最常見和有用的操作。 Bash的第一步 由於Bash是許多系統的默認shell,您只需要開始bash shell就只需以下操作: 登錄到系統(如果是服務器)。 打開終端(如果是您的計算機)。 開始shell後,您應該看到一個提示符(通常以$結尾)。 如何確定shell正在運行bash?請嘗試輸入help並按Enter。 看到了嗎?我們剛才告訴Bash執行help命令。該命令顯示您正在運行的Bash版本以及您可以使用的命令列表。 警告:看到我那裡有的版本了嗎?這是macOS隨附的默認Bash版本,由於許可問題,它不包含更高版本。這個Bash版本來自於2014年。輸入brew install bash使用Homebrew安裝最新的Bash 5.x。 除非您正在創建shell腳本或進行高級操作,否則您通常不會使用bash說明中列出的任何命令。 99%的日常shell使用是在文件夾之間導航和執行像ls,cd和其他常見UNIX實用程序的程序。 瀏覽文件系統 要瀏覽文件系統,您將使用ls命令。它在/bin/ls中可用,並且由於Bash將/bin文件夾列在其路徑列表中,因此您只需輸入ls即可使用它。 ls會列出當前文件夾中的文件。您通常從您的主文件夾開始,它取決於系統,但在macOS下位於/Users下。我的主文件夾位於/Users/flavio。這與Bash無關,而是有關UNIX文件系統的事情,但參數重疊,如果您從未使用過shell,了解這些是很有益的。 要導航到其他文件夾,請使用cd命令,後跟要移動到的文件夾的名稱: cd Documents cd ..會返回到上級文件夾。 根據您的Bash配置,您將在提示符($符號)之前看到您當前的文件夾。或者,您可能不會看到它,但您始終可以通過輸入“pwd”並按Enter來知道您的位置。 pwd表示“工作目錄的路徑名” 命令行編輯 在shell中編寫命令時,請注意您可以使用箭頭鍵向左或向右移動。這是一個shell特性。您可以移動到命令周圍,按退格鍵進行修正。按下Enter鍵會告訴shell繼續並讓系統執行該命令。 這是正常且可接受的行為,但這可能使早期的UNIX用戶感到“驚訝”。 通過鍵盤組合,您可以快速進行編輯,而無需使用箭頭鍵: ctrl+d 刪除當前選定的字符 ctrl+f 跳轉到右邊的字符 ctrl+b 跳轉到左邊的字符 自動完成 Bash在移動文件系統時具有自動完成的功能。嘗試輸入cd Doc 然後按tab鍵,Bash會自動將其完成為cd Documents。如果這些首個字符有多個選擇,Bash將返回列表,以便您可以輸入一些其他字符以幫助它刪除歧義,然後再次按tab鍵以完成。 Shell命令 使用shell,我們可以執行系統中可用的命令。我們可以在命令前綴中使用完整路徑(例如/bin/ls以列出文件夾中的文件),但是shell具有“路徑”的概念,因此我們可以只輸入ls,它就知道大多數命令都在哪裡(我們還可以通過配置它來添加文件夾到這個路徑)。 命令接受參數。例如,ls /bin將列出/bin文件夾中的所有文件。 參數以破折號-為前綴,例如ls -a 告訴 ls 顯示隱藏文件。按照約定,隱藏文件以點(.)開頭。 常見的shell命令 任何系統上都預先安裝了許多命令,這些命令因具體的系統(Linux/macOS)或甚至所用的Linux發行版而異。 然而,讓我們簡單回顧一下您可以運行的最常用shell命令。這些不是shell本身提供的命令,而是通過shell調用的命令行命令。 每當您遇到問題時,例如您不知道一個命令的作用,或者不知道如何使用它,使用man命令。它可以讓您獲得我將列出的所有命令以及更多的命令的幫助。例如,運行man ls。 這些是可以查看、操作文件的命令。 ls:列出文件 cd:更改目錄 rm:刪除文件或文件夾 mv:將文件移動到另一個目錄或更改文件名 cp:複製文件 pwd:顯示當前工作目錄 mkdir:創建文件夾 Unix文件系統中的每個文件都有權限。chmod允許您更改權限(我們現在不深入討論),chown允許您更改文件的所有者。...