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允許您更改文件的所有者。...

Linux介紹

Linux是一個作業系統,就像macOS或Windows一樣。 它也是最受歡迎的開源和自由軟體作業系統。 它在構成互聯網的絕大多數服務器上運行。它是一切建立的基礎。但不僅如此,Android也是基於(修改過的)Linux。 Linux的「核心」(稱為核心)於1991年在芬蘭誕生,從其謙卑的開始開始發展。它成為GNU作業系統的核心,創建了GNU/Linux這個二元組。 Linux有一點是微軟和蘋果,或者谷歌這樣的公司永遠無法提供的:你可以隨心所欲地對電腦進行操作。 事實上,它們正在相反的方向發展,在移動端尤甚。 Linux是終極自由。 它由志願者開發,一些人受資助於依賴它的公司,一些人獨立開發,但沒有單一商業公司能夠指定Linux的規範或專案優先順序。 Linux也可以作為您的日常電腦系統。我使用macOS,因為我真的喜歡應用程序和設計,而且我曾經是一名iOS和Mac應用程序開發人員,但在使用它之前,我將Linux用作我的主要電腦作業系統。 沒有人可以指定您可以運行哪些應用程序,或使用“追蹤”您、追蹤您位置等功能的應用程序。 Linux也很特殊,不像Windows或macOS那樣只有“一個Linux”。相反,我們有各種各樣的「發行版」。 「發行版」由公司或組織製作,將Linux核心與其他程序和工具打包在一起。 例如,您有Debian、Fedora和Ubuntu,可能是最受歡迎的發行版。 還有更多的發行版。您也可以創建自己的發行版。但最有可能的是使用一個流行的發行版,一個擁有大量用戶和社區人員的發行版,這樣您就可以快速解決常見問題,而不會浪費太多時間重新發明輪子。 一些桌面電腦和筆記本電腦已預裝有Linux。或者您可以在基於Windows的電腦或Mac上安裝它。 但您無需為了瞭解Linux的工作原理而改變現有計算機配置。 我沒有一台Linux計算機。20世紀初,我曾經有一台Linux計算機,但後來意識到Mac對桌面(筆記本電腦)更適合我的需求,而且Linux在服務器上表現出色(您的觀點可能有所不同)。 如果您使用Mac,您需要知道macOS在底層是一個UNIX作業系統,它與GNU/Linux系統使用的大部分思想和軟體相同,因為GNU/Linux是UNIX的一個自由替代品。它不是Linux,但幾乎相似,大多數命令是相同的。 UNIX是一個總括70年代以來大型公司和機構使用的許多作業系統的總稱。 微軟擁有官方的Windows子系統(WSL),您可以(也應該)在Windows上安裝它。這將使您能夠以非常簡單的方式在PC上運行Linux。 但大多數情況下,您將通過虛擬私有服務器(VPS)在雲上運行Linux計算機。 Shell是一個命令解釋器,它將用於與底層作業系統交互的介面呈現給用戶。 它允許您使用文本和命令執行操作,並為用戶提供像創建腳本這樣的高級功能。 這很重要:shell讓您以比GUI(圖形用戶界面)更優化的方式執行操作。命令行工具可以提供許多不同的配置選項,而不會變得過於複雜。 各種不同類型的shell都存在。本文重點介紹Unix shell,這是您在Linux和macOS計算機上常見的shell。 多年來,為這些系統創建了許多不同類型的shell,其中一些佔據了主導地位:Bash、Csh、Zsh、Fish等等! 所有shell都起源於Bourne Shell,稱為sh。 「Bourne」是因為它的創造者史蒂夫·伯恩。 Bash表示Bourne-again shell,sh是專有的並且不開源,而Bash是在1989年為GNU專案和自由軟體基金會創建的免費替代品。由於項目必須支付費用才能使用Bourne shell,所以Bash變得非常流行。 如果您使用Mac,請嘗試打開Mac終端。默認情況下,它運行的是ZSH(或在Catalina以前運行的是Bash)。 您可以設置系統運行任何類型的shell,例如我使用的是Fish shell。 每個shell都有其獨特的功能和進階用法,但它們都共享一個共同功能:它們可以讓您執行程序,並且可以被編程。 這只是一個介紹。我即將推出更深入的Linux教程。

Linux指令:export

快速指南介紹了“export”指令,該指令用於將變量導出到子進程中 “export”指令用於將變量導出到子進程中。 這意味著什麼呢? 假設您以以下方式定義了一個名為TEST的變量: TEST="test" 您可以使用echo $TEST來打印其值: 但是,如果您嘗試在名為script.sh的文件中定義一個包含上述命令的Bash腳本: 然後,您設置chmod u+x script.sh,並使用./script.sh執行此腳本,echo $TEST將不打印任何內容! 這是因為在Bash中,TEST 變量是在shell本地定義的。在執行shell腳本或其他命令時,將啟動一個子shell來執行它,該子shell不包含當前shell的本地變量。 為了使該變量在子shell中可用,我們需要使用以下方式定義TEST變量: export TEST="test" 嘗試這樣做,現在運行./script.sh應該會打印出“test”: 有時您需要將內容附加到變量中。這在 PATH變量中經常使用。您可以使用以下語法: export PATH=$PATH:/new/path 通常在以這種方式創建新變量時使用export,同樣地,當使用Bash在.bash_profile或.bashrc配置文件中創建變量時,或者使用Zsh在.zshenv中創建變量時也要使用export。 要刪除一個變量,可以使用 -n 選項: export -n TEST 調用export而不帶任何選項將列出所有導出的變量。 export指令適用於Linux、macOS、WSL以及任何具有UNIX環境的地方。

Linux指令:type

快速介紹type指令,它用於確定指令的類型。 指令可以分為以下4種類型: 可執行檔 Shell內建程式 Shell函數 別名 使用type指令可以幫助我們確定指令的類型,不論是出於好奇還是其他需求。它會告訴你指令將如何解釋和解析。 輸出結果取決於所使用的Shell。這是Bash的輸出: 這是Zsh的輸出: 這是Fish的輸出: 其中一個最有趣的地方是,對於別名,它會告訴你它所對應的指令。你可以在Bash和Zsh的輸出中看到ll別名,但Fish默認提供它作為內建Shell函數。 type指令可在Linux、macOS、WSL和任何UNIX環境中使用

Unix殼層教程

Unix殼層介紹及其使用方法 殼層是一個命令解釋器,它向底層操作系統提供一個接口。 它允許您使用文本和命令執行操作,並提供了像創建腳本這樣的高級功能。 這很重要:通過殼層,您可以以比GUI(圖形用戶界面)更優化的方式執行操作。命令行工具可以提供許多不同的配置選項,而不會過於復雜。 有很多不同種類的殼層。本文專注於Unix殼層,這些是您在Linux和macOS計算機上常見的殼層。 多年來,為這些系統創建了許多不同種類的殼層,其中有幾種在這個領域佔據主導地位:Bash、Csh、Zsh、Fish等等! 所有殼層都源於Bourne殼層,稱為sh。因為它的創造者是Steve Bourne,所以被稱為“Bourne”。 Bash表示* Bourne-again shell *。 sh是專有的且不是開源的,Bash在1989年被創建為GNU項目和自由軟件基金會的免費替代品。由於項目必須付費使用Bourne殼層,Bash變得非常流行。 試著打開您的Mac終端。默認情況下,它運行的是Bash,這是最常見的殼層。 更新:自Catalina以來,macOS的默認殼層是zsh。 您可以設置系統運行任何種類的殼層,例如我使用Fish殼層。 每個殼層都有其獨特的功能和高級用法。 查看有關每個特定殼層的文章,以獲取更多有關其用法的信息: Bash Fish

使用 Bash 建立多個資料夾

我有一個需要從 1 到 30 建立 30 個資料夾的需求。在建立了前 4 個資料夾後,我開始覺得手動建立太煩了。 所以我上了 Google,找到了這個 Bash 的一行指令: mkdir {1..30} 這個指令在 Zsh 上也可以運行,但在我使用的 Fish shell 上則不行。

如何使用 macOS 终端

终端是编程装备中不可或缺的一员。它允许您执行其他无法实现的任务。 您可以在 Spotlight 中搜索 Terminal,或者转到 应用程序 文件夹,打开 实用工具 子文件夹,找到 终端 应用程序。 打开后,您会看到以下屏幕,或者非常相似: bash-3.2 指示了 shell 的类型和版本。在这里出现了一个新词 - shell。什么是 shell?Shell 是一种允许我们与操作系统及其应用程序进行交互的程序。 注意:当前 macOS 自 Catalina 版本开始使用 zsh。这个教程与此无关。 有不同类型的 shell,Bash 是最受欢迎的之一。有些人使用 Fish(像我一样),有些人使用 Z Shell,还有其他类型的。 Shell 基本上是允许我们输入命令的程序。 文件系统命令 我们可以从输入 ls 命令开始,当我们按下 Enter 键后,shell 会显示当前文件夹中的文件。 Shell 通常从您的主文件夹开始,这在 Mac 上位于 /Users/yourname。 我们如何知道我们当前在哪个文件夹中?您可以使用 pwd 命令获取当前文件夹的路径。 您可以使用 cd 命令更改当前文件夹。 如果只输入 cd,shell 将返回到您的主文件夹。 您可以使用 mkdir 命令创建新文件夹。 运行命令 在 shell 中,您可以访问计算机上安装的所有程序和文件。非常丰富的资源。 您可能需要执行的一个任务是在 Node 和 JavaScript 中进行编程时使用 npm。 npm 不是一个开箱即用的命令,您需要从 https://www....

如何在 bash 和 zsh 中設置環境變數

在Bash和zsh上操作是相同的,唯一的區別是要分別使用.bashrc和.zshrc來保存它們。 在 shell 中設置環境變數的方法是一樣的: $ export VARIABLE=something 要確定已設置成功,輸入以下命令: $ $VARIABLE 如果你編輯了一個點文件,要使更改應用於當前的 shell,可以使用source .dotfile。 這適用於 Bash 和 Zsh。 對於 Fish,你需要在前面加上 env: env API\_KEY=123123 node app.js

如何在Bash中循環遍歷數組

了解如何在Bash中循環遍歷數組 我有一個包含3個字符串的數組: list=( "first" "second" "third" ) 我想在Bash Shell腳本中對它們進行循環遍歷。 下面是我的實現方式: for i in "${list[@]}" do : echo $i done