Linux 常用命令與 Shell 簡介

文章目錄

  • **Linux 常用命令與 Shell 簡介**
    • **Shell 簡介**
      • **什么是 Shell?**
      • **Shell 的工作原理**
      • **常見 Shell 類型**
      • **命令行基礎**
        • **Tab 補全與通配符**
    • **Linux 常用命令**
      • **1. 入門必備命令**
        • **1.1 尋求幫助 - `man` 命令**
        • **1.2 用戶間切換 - `su` 命令**
        • **1.3 特權命令 - `sudo`**
      • **2. 文件操作常用命令**
        • **2.1 顯示當前目錄與改變目錄**
        • **2.2 列出目錄內容 - `ls` 命令**
        • **2.3 創建目錄 - `mkdir` 命令**
        • **2.4 移動、復制和刪除文件**
        • **2.5 查看文件內容 - `cat`, `more`, `less` 命令**
        • **2.6 編輯文件 - `vim` 編輯器**
        • **2.7 文件權限管理 - `chmod`, `chown`, `chgrp` 命令**
        • **2.8 創建文件鏈接 - `ln` 命令**
      • **3. 查找和定位常用命令**
        • **3.1 查找文件 - `find` 命令**
        • **3.2 快速定位文件 - `locate` 命令**
        • **3.3 查找文件內容 - `grep` 命令**
      • **4. 開啟 Linux 編程之旅**
        • **4.1 編譯 C 程序 - `gcc` 命令**
        • **4.2 編譯 C++ 程序 - `g++` 命令**
      • **總結**

Linux 常用命令與 Shell 簡介

Linux 是一個開源操作系統,以其高效性、穩定性和強大的命令行工具而受到開發者和系統管理員的青睞。作為一名 Linux 用戶,熟悉并掌握基本的 Shell 命令是必不可少的。本文將詳細介紹 Linux 中常用的 Shell 命令、Shell 的基本概念以及如何通過 Shell 完成各種操作任務。

Shell 簡介

什么是 Shell?

Shell 是一個命令行界面(CLI)工具,它是用戶與操作系統之間的橋梁。通過 Shell,用戶可以直接輸入命令,并且這些命令被傳遞到操作系統內核執行。Shell 的作用不僅僅是命令解釋器,它還是一個功能強大的腳本語言,可以用于自動化系統管理任務。Linux 系統通常配備有多個不同類型的 Shell,最常用的 Shell 是 Bash,即 Bourne Again Shell,它是基于傳統的 Bourne Shell (sh)發展而來的。

Shell 是交互式的,它可以響應用戶輸入,并根據這些輸入執行不同的操作。Linux 的 Shell 允許用戶進行各種操作,包括文件管理、進程控制、系統管理等。

Shell 的工作原理

Shell 的工作原理非常簡單,用戶通過命令行界面(CLI)向 Shell 提交命令,Shell 會解釋這些命令并將其傳遞給操作系統的內核。操作系統執行命令后,將結果返回給 Shell,Shell 會將結果顯示給用戶。這一過程大致分為以下幾步:

  1. 用戶輸入命令:用戶在命令行界面輸入命令,按下回車鍵。
  2. 命令解釋執行:Shell 解析命令,并通過系統調用將命令傳遞給操作系統內核。
  3. 輸出結果:操作系統執行命令后,將執行結果返回給 Shell,Shell 將結果輸出到屏幕。

常見 Shell 類型

在 Linux 系統中,有幾種常見的 Shell 類型,它們各具特色,適用于不同的需求。以下是幾種常見的 Shell 類型:

  • Bash(Bourne Again Shell):Bash 是最常用的 Shell 類型,功能強大且廣泛應用。它支持編寫腳本,且是大多數 Linux 發行版的默認 Shell。
  • Zsh(Z Shell):Zsh 是一種增強型 Shell,支持智能補全、更豐富的語法高亮和插件系統,適合開發者和高級用戶使用。Zsh 提供了比 Bash 更高的生產力。
  • Tcsh(Tenex C Shell):Tcsh 是 C Shell 的一種增強版本,它的語法與 C 語言類似,適合那些熟悉 C 語言編程的用戶。
  • Fish(Friendly Interactive Shell):Fish 是一種友好的交互式 Shell,自動補全和高亮功能非常強大,且不需要復雜的配置。

命令行基礎

Linux 命令行界面是與用戶交互的主要方式。命令行可以用來執行命令、管理文件、處理文本以及控制系統。

在 Linux 中,我們通常會看到兩種命令提示符:

  • $:表示普通用戶的命令提示符。
  • #:表示 root 用戶的命令提示符,root 用戶擁有系統管理員權限,能夠執行任何操作。

在命令行中,## 被視為注釋的開始,后面的內容不會被執行。注釋對于腳本編寫非常重要,能幫助用戶理解代碼的功能。值得注意的是,Linux 命令行是區分大小寫的,因此在輸入命令時要特別小心。例如,lsLS 是兩個不同的命令,大小寫不同的命令可能有不同的功能。

Tab 補全與通配符

Linux 命令行支持多種提高輸入效率的技巧,其中 Tab 補全通配符 是最常用的功能之一。

  • Tab 鍵補全:按 Tab 鍵可以自動補全文件名、目錄名或命令。這樣可以減少錯誤的發生,并加快輸入速度。例如,如果你輸入 cd /ho,按下 Tab 鍵后,它會自動補全為 cd /home/

  • 通配符:通配符用于匹配文件名,可以快速選擇多個文件或目錄。Linux 中有幾種常用的通配符:

    • *:匹配任意長度的字符。例如,ls *.txt 會列出所有以 .txt 結尾的文件。
    • ?:匹配一個字符。例如,ls file?.txt 會列出文件名為 file1.txtfile2.txt 等的文件。
    • []:匹配方括號內的任意字符。例如,ls file[a-c].txt 會列出文件名為 filea.txtfileb.txtfilec.txt 的文件。

這些技巧使得命令行操作更加高效和便捷。


Linux 常用命令

1. 入門必備命令

1.1 尋求幫助 - man 命令

Linux 系統中的 man 命令是查看命令幫助文檔的工具,它為每個命令提供了詳細的使用說明。通過 man 命令,用戶可以查看命令的語法、參數以及使用示例。

用法

man [命令]

例如,查看 ls 命令的幫助文檔:

man ls

man 頁通常包括以下內容:

  • NAME:命令的名稱和簡短描述。
  • SYNOPSIS:命令的語法格式。
  • DESCRIPTION:命令的詳細描述。
  • OPTIONS:命令的可用選項。
  • EXAMPLES:命令的使用示例。

man 頁中,用戶可以使用 JK 鍵進行上下滾動,按空格鍵翻頁,按 Q 鍵退出。

1.2 用戶間切換 - su 命令

su(Switch User)命令用于切換到其他用戶,特別是切換到 root 用戶。root 用戶具有系統管理權限,能夠執行系統范圍內的操作。

用法

su [用戶名]

例如,切換到 root 用戶:

su

切換到其他用戶(例如 xiaohu):

su martin

注意:在某些 Linux 發行版(如 Ubuntu)中,root 用戶是禁用的,無法直接使用 su 切換到 root。這時需要使用 sudo 來獲取管理員權限。

1.3 特權命令 - sudo

sudo(Super User Do)命令是 Linux 系統中用來執行特權操作的命令。通過 sudo,普通用戶可以在需要管理員權限的操作中臨時獲取 root 權限。

用法

sudo [命令]

例如,以管理員身份刪除文件:

sudo rm test.txt

sudo 提供了更高的安全性,因為它記錄每個命令的執行,同時可以限制特定用戶的權限。


2. 文件操作常用命令

2.1 顯示當前目錄與改變目錄
  • pwd:顯示當前工作目錄的完整路徑。

用法

pwd
  • cd:改變當前工作目錄。cd 命令可以用來在文件系統中導航,支持相對路徑和絕對路徑。

用法

cd [目錄路徑]

常見的目錄導航方式:

  • cd ~:進入用戶的主目錄。
  • cd ..:返回上級目錄。
  • cd /:進入根目錄。
2.2 列出目錄內容 - ls 命令

ls 命令用于列出當前目錄下的文件和子目錄。ls 命令可以加上一些選項,定制顯示內容。

常用選項

  • -F:在文件名后添加標識符(如 / 表示目錄,* 表示可執行文件)。
  • -a:顯示所有文件,包括隱藏文件(以 . 開頭的文件)。
  • -l:顯示文件的詳細信息,如權限、所有者、大小等。

用法

ls -l
2.3 創建目錄 - mkdir 命令

mkdir 是用于創建目錄的命令。它可以創建一個或多個目錄,甚至可以遞歸創建多級目錄。在創建目錄時,如果父目錄不存在,mkdir 會返回錯誤;如果希望同時創建父目錄,必須使用 -p 選項。

用法

mkdir [目錄名]

例如:

mkdir new_directory
  • -p 選項:如果父級目錄不存在,創建父級目錄。

例如:

mkdir -p /home/user/docs/project

該命令將創建 /home/user/docs/project 目錄,同時也會創建其父目錄 /home/user/docs,如果這些目錄不存在。

2.4 移動、復制和刪除文件
  • mv:用于移動文件或目錄,也可以用于重命名文件。

用法

mv source_file destination

例如,將 file1.txt 移動到 /home/user/documents/ 目錄:

mv file1.txt /home/user/documents/

如果目標是一個目錄,文件會被移動到該目錄;如果目標是一個文件名,則會重命名源文件。

  • cp:用于復制文件或目錄。

用法

cp source_file destination

例如,將 file1.txt 復制到 /home/user/documents/ 目錄:

cp file1.txt /home/user/documents/
  • rm:用于刪除文件或目錄。需要小心使用,尤其是在管理員權限下。

用法

rm file.txt

常用選項:

  • -r:遞歸刪除目錄及其中的內容。
  • -f:強制刪除文件,不進行提示。

例如,刪除一個目錄及其中的所有文件:

rm -r /home/user/docs
2.5 查看文件內容 - cat, more, less 命令
  • cat:用于一次性查看文件的全部內容。適合查看小文件,若文件很大,建議使用分頁工具(如 moreless)。

用法

cat file.txt
  • more:分頁查看文件內容。適用于文件內容較多的情況。按空格鍵翻頁,按回車鍵滾動一行,按 Q 退出。

用法

more file.txt
  • less:與 more 類似,但更加靈活,支持向前翻頁,且可以使用搜索功能。

用法

less file.txt
2.6 編輯文件 - vim 編輯器

vim 是 Linux 上最常用的文本編輯器之一,功能強大,適用于編寫和編輯腳本、配置文件等。vimvi 編輯器的增強版,提供了更多的功能,如語法高亮、自動縮進等。

啟動 vim

vim filename
  • 模式vim 有兩種基本模式:

    • 命令模式:用于執行命令,如保存文件、搜索、復制、刪除等。
    • 插入模式:用于編輯文件內容,輸入文本。

常用操作

  • i:進入插入模式,在光標所在位置插入文本。
  • Esc:退出插入模式,返回命令模式。
  • :w:保存文件。
  • :q:退出 vim
  • :wq:保存并退出 vim
  • /search:在文件中搜索指定的文本。
  • u:撤銷操作。
  • yy:復制一行。
  • dd:刪除一行。
  • p:粘貼剪切或復制的內容。
2.7 文件權限管理 - chmod, chown, chgrp 命令

Linux 系統中每個文件和目錄都有與之關聯的權限。文件的權限可以通過 chmodchownchgrp 命令進行修改。

  • chmod:用于更改文件或目錄的權限。權限包括讀(r)、寫(w)和執行(x)權限。

用法

chmod [權限] [文件/目錄]

常見的權限模式:

  • r:讀權限,允許讀取文件內容。
  • w:寫權限,允許修改文件內容。
  • x:執行權限,允許執行文件。

示例:

chmod +x file.sh  # 添加執行權限
chmod 755 file.sh  # 設置文件權限為 rwxr-xr-x
  • chown:用于改變文件或目錄的所有者。

用法

chown owner:group [文件/目錄]

例如,修改文件 file.txt 的所有者為 user,組為 group

chown user:group file.txt
  • chgrp:用于修改文件或目錄的所屬組。

用法

chgrp group [文件/目錄]
2.8 創建文件鏈接 - ln 命令

ln 命令用于創建文件的鏈接,有兩種類型的鏈接:硬鏈接和軟鏈接(符號鏈接)。

  • 硬鏈接:硬鏈接是指多個文件名指向同一個物理文件。刪除其中一個鏈接不會影響其他鏈接。

用法

ln source_file link_name
  • 軟鏈接:軟鏈接類似于 Windows 中的快捷方式。軟鏈接會指向原始文件,如果原始文件刪除,軟鏈接將無法訪問。

用法

ln -s source_file link_name

例如:

ln -s /home/user/file.txt /home/user/link_to_file

3. 查找和定位常用命令

3.1 查找文件 - find 命令

find 是一個非常強大的命令,用于在指定目錄及其子目錄中查找文件。find 命令支持通過多種條件(如文件名、修改時間、大小等)進行篩選。

用法

find [路徑] -name [文件名]

例如,查找當前目錄下所有以 .txt 結尾的文件:

find . -name "*.txt"

find 命令支持多種條件,例如:

  • -type f:查找普通文件。
  • -type d:查找目錄。
  • -mtime -n:查找最近 n 天內修改的文件。
3.2 快速定位文件 - locate 命令

locate 命令通過查詢預先建立的文件數據庫,快速查找文件的位置。locate 的速度非常快,但它依賴于一個定期更新的數據庫,因此可能不會顯示最近創建的文件。

用法

locate [文件名]

例如:

locate file.txt
3.3 查找文件內容 - grep 命令

grep 命令用于查找文件中的指定字符串。它支持正則表達式,可以非常靈活地進行文本搜索。

用法

grep "pattern" [文件名]

例如,查找文件中所有包含 “error” 的行:

grep "error" log.txt

grep 支持多種選項,如:

  • -r:遞歸查找目錄及其子目錄中的文件。
  • -i:忽略大小寫。
  • -v:反向查找,即顯示不匹配的行。

4. 開啟 Linux 編程之旅

4.1 編譯 C 程序 - gcc 命令

gcc(GNU Compiler Collection)是 Linux 系統上用于編譯 C 語言程序的標準工具。通過 gcc,用戶可以將 C 語言源代碼編譯為可執行文件。

用法

gcc [源文件] -o [可執行文件]

例如,將 hello.c 編譯為可執行文件 hello

gcc hello.c -o hello

運行編譯后的程序:

./hello
4.2 編譯 C++ 程序 - g++ 命令

g++ 是 GNU 提供的 C++ 編譯器,它可以將 C++ 語言源代碼編譯為可執行文件。g++gcc 非常相似,但 g++ 會自動鏈接 C++ 標準庫。

用法

g++ [源文件] -o [可執行文件]

例如,將 hello.cpp 編譯為可執行文件 hello

g++ hello.cpp -o hello

總結

通過這篇詳細的博客,我們已經覆蓋了 Linux 系統中常用的 Shell 命令和基本操作。無論是在日常的文件管理、用戶權限控制,還是在編程開發、查找文件方面,Linux 提供了豐富的命令和工具來滿足各種需求。掌握這些常用命令和技巧,可以幫助我們更加高效地使用 Linux 系統,提升工作效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83658.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83658.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83658.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于51單片機的超聲波智能避障小車仿真

目錄 具體實現功能 設計介紹 資料內容 全部內容 資料獲取 具體實現功能 (1)超聲波實時測量小車與障礙物間的距離,并用LCD1602顯示。 (2)當測得的距離超過50時,前進電機轉動(模擬后輪&#…

AIGC工具平臺-GPT-SoVITS-v4-TTS音頻推理克隆

聲音克隆與語音合成的結合,是近年來生成式AI在多模態方向上的重要落地場景之一。隨著預訓練模型能力的增強,結合語音識別、音素映射與TTS合成的端到端系統成為初學者可以上手實踐的全流程方案。 圍繞 GPT-SoVITS-v4-TTS 模塊,介紹了其在整合…

Android7 Input(十)View 處理Input事件pipeline

概述: 本文主要描述View對InputEvent事件pipeline處理過程。 本文涉及的源碼路徑 frameworks/base/core/java/android/view/ViewRootImpl.java InputEvent事件處理 View處理input事件是調用doProcessInputEvents方法,如下所示: void doProcessInputEvents() {//…

Neo4j 完全指南:從入門到精通

第1章:Neo4j簡介與圖數據庫基礎 1.1 圖數據庫概述 傳統關系型數據庫與圖數據庫的對比圖數據庫的核心優勢圖數據庫的應用場景 1.2 Neo4j的發展歷史 Neo4j的起源與演進Neo4j的版本迭代Neo4j在圖數據庫領域的地位 1.3 圖數據庫的基本概念 節點(Node)與關系(Relat…

網心云 OEC/OECT 筆記(1) 拆機刷入Armbian固件

目錄 網心云 OEC/OECT 筆記(1) 拆機刷入Armbian固件網心云 OEC/OECT 筆記(2) 運行RKNN程序 外觀 內部 PCB正面 PCB背面 PCB背面 RK3566 1Gbps PHY 配置 OEC 和 OECT(OEC-turbo) 都是基于瑞芯微 RK3566/RK3568 的網絡盒子, 沒有HDMI輸入輸出. 硬件上 OEC 和 OECT…

攝像機ISP處理流程

1.Bayer:生成raw圖,添加色彩數據(RGB),一般會將G的占比設置為R和B的和,實例: 2.黑電平矯正:減去暗電流造成的誤差; 3.鏡頭矯正:對四周的亮度進行矯正&#x…

【后端架構師的發展路線】

后端架構師的發展路線是從基礎開發到技術領導的系統性進階過程,需融合技術深度、架構思維和業務洞察力。以下是基于行業實踐的職業發展路徑和關鍵能力模型: 一、職業發展階梯? 初級工程師(1-3年)? 核心能力?:掌…

Unity VR/MR開發-VR開發與傳統3D開發的差異

視頻講解鏈接:【XR馬斯維】VR/MR開發與傳統3D開發的差異【UnityVR/MR開發教程--入門】_嗶哩嗶哩_bilibili

RabbitMQ如何保證消息可靠性

RabbitMQ是一個流行的開源消息代理,它提供了可靠的消息傳遞機制,廣泛應用于分布式系統和微服務架構中。在現代應用中,確保消息的可靠性至關重要,以防止消息丟失和重復處理。本文將詳細探討RabbitMQ如何通過多種機制保證消息的可靠…

批量圖片管理軟件介紹

軟件介紹 本文介紹一款功能全面的圖片處理軟件 - FastStone Image Viewer。 軟件功能概述 FastStone Image Viewer不僅支持圖片查看,還具備編輯、批量重命名和批量轉換等多種實用功能。 用戶授權說明 該軟件對個人用戶完全免費,企業用戶只需輸入用戶…

Playwright 測試框架 - Java

??【Playwright + Java 實戰教程】從零到一掌握自動化測試利器! ?? 本文專為 Java 開發者量身打造,通過詳盡示例帶你快速掌握 Playwright 自動化測試。涵蓋基礎操作、表單交互、測試框架集成、高階功能及常見實戰技巧,適用于企業 UI 測試與 CI/CD 場景。 ??? 一、環境…

nvidia系列教程-Usb otg模式修改為host模式

目錄 前言 一、了解 USB OTG 模式與 Host 模式 二、host模式切換 總結 前言 在 NVIDIA 設備的使用過程中,有時我們需要將 USB OTG(On-The-Go)模式切換為 Host 模式,以滿足連接外部設備(如 U 盤、鼠標、鍵盤等)的需求。本文將詳細介紹如何在 NVIDIA 設備上進行這一模式…

二叉樹-104.二叉樹的最大深度-力扣(LeetCode)

一、題目解析 這里需要注意根節點的深度是1,也就是說計算深度的是從1開始計算的 二、算法原理 解法1:廣度搜索,使用隊列 解法2:深度搜索,使用遞歸 當計算出左子樹的深度l,與右子樹的深度r時,…

Calendar類日期設置進位問題

背景 報表需求,需要傳遞每組數據中最小的日期,后臺根據傳遞的最小日期,向前取參數傳遞的月份的上個月為結束時間的近五個月數據 例:參數傳:2025/02,則需返回2025/01, 2024/12, 2024/11, 2024/10, 2024/09這五個年月數據…

編程筆記---問題小計

編程筆記 qml ProgressBar 為什么valuemodel.progress / 100 在QML中,ProgressBar的value屬性用于表示進度條的當前進度值,其范圍通常為0到1(或0%到100%)。當使用model.progress / 100來設置value時,這樣做的原因是為…

【STL】函數對象+常用算法

文章目錄 STL- 函數對象函數對象函數對象使用 謂詞一元謂詞二元謂詞內建函數對象算術仿函數關系仿函數 STL- 常用算法常用遍歷算法for_eachtransform 常用查找算法findfind_ifadjacent_findbinary_searchcountcount_if 常用排序算法sortrandom_shufflemergereverse 常用拷貝和替…

[JVM] JVM內存調優

🌸個人主頁:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵?熱門專欄: 🧊 Java基本語法(97平均質量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection與…

Spring Boot 從Socket 到Netty網絡編程(下):Netty基本開發與改進【心跳、粘包與拆包、閑置連接】

上一篇:《Spring Boot 從Socket 到Netty網絡編程(上):SOCKET 基本開發(BIO)與改進(NIO)》 前言 前文中我們簡單介紹了基于Socket的BIO(阻塞式)與NIO(非阻塞式&#xff0…

python編寫賽博朋克風格天氣查詢程序

工具介紹 這個天氣查詢工具是一個基于 Python 的桌面應用程序,使用了tkinter庫來創建圖形用戶界面(GUI),并通過requests庫調用 Open - Meteo API 獲取天氣數據。它具有賽博朋克風格的界面設計,提供了當前天氣信息、15 天天氣預報以及詳細的天氣數據展示,同時還包含溫度趨…

從二叉樹到 STL:揭開 set 容器的本質與用法

前言: 上次介紹完二叉搜索樹后,更新中斷了一段時間,先向大家致歉。最近學習狀態有些起伏,但我正在努力調整,相信很快會恢復節奏。今天我們繼續深入探討——關聯容器,它在算法和工程中都非常常見和重要。 1…