linux-command-pwd
#Linux命令:pwd pwd 命令的快速指南,用於檢查當前工作目錄 每當您在文件系統中感到迷失時,請調用 pwd 命令以了解您所在的位置: pwd 它將顯示當前文件夾路徑。 此命令適用於Linux、macOS、WSL和任何您擁有UNIX環境的地方。
#Linux命令:pwd pwd 命令的快速指南,用於檢查當前工作目錄 每當您在文件系統中感到迷失時,請調用 pwd 命令以了解您所在的位置: pwd 它將顯示當前文件夾路徑。 此命令適用於Linux、macOS、WSL和任何您擁有UNIX環境的地方。
我在一台 Linux Ubuntu 伺服器上遇到一些奇怪的問題,於是我登入了伺服器並查看了 Apache 的錯誤日誌,路徑在 /var/apache2/error.log。 裡面充滿了 裝置中沒有足夠的空間 的錯誤訊息。 😱 “這怎麼可能??” 這是我第一個想法。 我嘗試執行 df,是的,磁碟已經滿了 100%。 為了找出是什麼原因導致這個問題,我使用以下命令釋放了一些空間: sudo apt-get clean 並安裝了 ncdu 工具: sudo apt-get install ncdu 然後在路徑 / 下運行它,我發現有一個特定的資料夾佔據了 90% 的資料空間。 其中一個備份腳本正在將數據庫日誌寫入該資料夾,然後再將其發送到另一台伺服器,每個日誌檔大約 80MB。每天一個.. 你可以想像這麼多 GB 的空間是如何被填滿的。 這花了一段時間才填滿,幾乎一整年。但它確實填滿了。 我刪除了所有這些檔案,沒錯!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教程。
快速指南:echo命令,用於打印傳遞給它的參數。 echo命令只有一個簡單的功能:將傳遞給它的參數打印到輸出中。 以下是一個示例: echo "hello" 將在終端打印hello。 我們可以將輸出附加到一個文件中: echo "hello" >> output.txt 我們可以插值環境變量: echo "The path variable is $PATH" 請注意,特殊字符需要使用反斜線 \ 進行轉義。例如,$: 這僅僅是一個開始。當涉及與shell功能的交互時,我們可以做一些有趣的事情。 我們可以輸出當前文件夾中的文件: echo \* 我們可以輸出以字母 o 開頭的當前文件夾中的文件: echo o\* 這裡可以使用任何有效的Bash(或您使用的任何shell)命令和功能。 您可以打印您的主目錄路徑: echo ~ 您還可以執行命令並將結果打印到標準輸出(或文件,正如您所見): echo $(ls -al) 請注意,預設情況下不會保留空格。如果需要保留,則需要將命令用雙引號括起來: 您可以生成一個字符串列表,例如範圍: echo {1..5} echo命令適用於Linux、macOS、WSL以及任何具有UNIX環境的地方。
快速指南kill命令,用於向當前運行的進程發送信號 Linux進程可以接收信號並對其作出反應。 這是我們與運行中的程序互動的一種方式。 kill程序可以向程序發送各種信號。 它不僅僅用於終止程序,正如其名所示,但這是它的主要工作。 我們可以這樣使用: kill <PID> 默認情況下,這會向指定的進程ID發送TERM信號。 我們可以使用標誌來發送其他信號,包括: kill -HUP <PID> kill -INT <PID> kill -KILL <PID> kill -TERM <PID> kill -CONT <PID> kill -STOP <PID> HUP表示掛斷。在終止進程之前,當終端窗口關閉時,它會自動發送。 INT表示中斷,它發送與我們在終端中按ctrl-C時使用的相同信號,通常用於終止進程。 KILL不是發送給進程,而是發送給操作系統核心,立即停止並終止進程。 TERM表示終止。進程將接收到該信號並終止自身。這是kill發送的默認信號。 CONT表示繼續。可以用於恢復已停止的進程。 STOP不會發送給進程,而是發送給操作系統核心,立即停止(但不終止)進程。 您可能會看到使用數字的示例,例如kill -1 <PID>。在這種情況下, 1對應到HUP。 2對應到INT。 9對應到KILL。 15對應到TERM。 18對應到CONT。 15對應到STOP。 此命令在Linux、macOS、WSL和任何有UNIX環境的地方都可用
ps命令是用於列出當前正在系統中運行的進程的快速指南。 您的計算機始終運行著大量不同的進程。 您可以使用ps命令檢查它們: 這是當前會話中正在運行的由用戶啟動的進程列表。 這裡有幾個fish shell實例,大多數是在編輯器內部由VS Code打開的,還有一個運行Hugo的實例,用於開發預覽網站。 這些只是分配給當前用戶的命令。要列出所有進程,我們需要向ps傳遞一些選項。 我最常用的是ps ax: a選項用於列出其他用戶的進程,而不僅僅是我們自己的進程。x顯示未與任何終端鏈接的進程(並非通過終端使用者啟動)。 如您所見,較長的命令被截斷了。使用命令ps axww以換行方式繼續命令列表,而不是截斷它: 我們需要兩次指定w以應用此設置,這不是錯別字。 您可以使用grep和管道來搜索特定的進程,就像這樣: ps axww | grep "VS Code" ps返回的列代表一些關鍵信息。 第一個信息是PID,即進程ID。這在您想在另一個命令中引用這個進程時很重要,例如要終止它。 然後,我們有TT,告訴我們所使用的終端ID。 然後,STAT告訴我們進程的狀態: I表示空閑的進程(睡眠時間超過約20秒) R表示可運行的進程 S表示睡眠的進程(睡眠時間不到約20秒) T表示停止的進程 U表示不可中斷等待的進程 Z表示死亡的進程(僵尸進程) 如果有多個字母,第二個字母表示進一步的信息,這可能非常專業。 通常會出現+,它表示進程在其終端中處於前景。s表示該進程是會話領導者。 TIME告訴我們進程運行的時間。 這個命令適用於Linux、macOS、WSL以及任何具有UNIX環境的地方。
本文將介紹uname命令,該命令用於打印有關當前機器和運行在上面的操作系統的詳細信息。 在不使用任何選項的情況下調用uname將返回操作系統的代號: m選項顯示硬件名稱(本例中為x86_64),p選項打印處理器架構名稱(本例中為i386): s選項打印操作系統名稱,r打印發佈版號,v打印版本號: n選項打印節點網絡名稱: a選項打印所有可用的信息: 在macOS上,您還可以使用sw_vers命令打印有關macOS操作系統的更多信息。請注意,這與上面的Darwin(內核)版本不同,後者為19.6.0。 Darwin是macOS的內核名稱。內核是操作系統的"核心",而整個操作系統被稱為macOS。在Linux中,Linux是內核,GNU/Linux將是操作系統名稱,儘管我們都稱之為"Linux"。 uname命令在Linux、macOS、WSL和所有有UNIX環境的地方都可用。
一個快速指南,介紹如何使用env指令運行指令並與環境變量進行互動。 env指令可用於傳遞環境變量,而無需在外部環境(即當前shell)中設置它們。 假設您想要運行一個Node.js應用程序並將USER變量設置給它。您可以運行以下命令: env USER=flavio node app.js 這樣,Node.js應用程序可以通過Node的process.env接口訪問USER環境變量。 您還可以運行清除所有已經設置的環境變量的命令,使用-i選項: env -i node app.js 在這種情況下,您將收到一個錯誤,顯示env: node: No such file or directory,這是因為命令node無法被訪問,因為外殼使用的PATH變量未設置,用於在常用路徑中查找命令。 因此,您需要傳遞到node程序的完整路徑: env -i /usr/local/bin/node app.js 嘗試使用一個擁有以下內容的簡單的app.js文件: console.log(process.env.NAME) console.log(process.env.PATH) 您將看到輸出結果為: undefined undefined 您可以傳遞一個環境變量: env -i NAME=flavio node app.js 輸出結果將是: flavio undefined 刪除-i選項將使PATH在程式內再次可用: 如果不帶任何選項運行env指令,則可以打印出所有環境變量: env 它將返回一個已設置的環境變量列表,例如: HOME=/Users/flavio LOGNAME=flavio PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin PWD=/Users/flavio SHELL=/usr/local/bin/fish 您還可以使用-u選項在運行的程式內讓某個變量無法訪問,例如以下代碼會從命令環境中刪除HOME變量: env -u HOME node app.js env指令可在Linux、macOS、WSL以及任何具有UNIX環境的地方使用。
快速指南介紹了“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環境的地方。
gzip指令是用來壓縮檔案的快速指南,它使用gzip壓縮協議(也稱為LZ77)。 以下是最簡單的使用方式: gzip 檔案名稱 這個指令會將檔案壓縮,並在檔案名稱後面加上.gz的擴展名,同時刪除原始檔案。如果不想刪除原始檔案,可以使用-c選項並使用輸出重定向將輸出寫入檔案名稱.gz檔案中: gzip -c 檔案名稱 > 檔案名稱.gz -c選項指定輸出將被寫入標準輸出,並且保留原始檔案不變。 或者可以使用-k選項: gzip -k 檔案名稱 gzip有不同的壓縮等級。壓縮等級越高,壓縮(和解壓縮)所需時間越長。等級範圍從1(最快、壓縮率最差)到9(最慢、壓縮率較好),預設為6。 可以使用-<數字>選項選擇指定的壓縮等級: gzip -1 檔案名稱 可以列出多個檔案進行壓縮: gzip 檔案名稱1 檔案名稱2 使用-r選項可以遞迴地壓縮目錄中的所有檔案: gzip -r 目錄名稱 -v選項可以輸出壓縮的百分比資訊。以下是使用-k(保留)選項的範例: gzip指令還可以使用-d選項來解壓縮檔案: gzip -d 檔案名稱.gz gzip指令可以在Linux、macOS、WSL以及任何擁有UNIX環境的地方使用。