【Linux】Bash是什么?怎么使用?

李升偉 整理

什么是 Bash?

BashBourne Again Shell)是一種 命令行解釋器(Shell),廣泛用于 UnixLinux 操作系統。它是 Bourne Shellsh) 的增強版,提供了更多的功能和特性。Bash 允許用戶通過輸入命令與操作系統交互,執行腳本,以及自動化任務。

Bash 的主要功能

  • 執行命令:

用戶可以通過 Bash 輸入命令來操作文件、運行程序、管理系統等。

  • 腳本編程:

Bash 支持編寫腳本(Script),用于自動化任務或執行復雜的操作。

  • 環境變量:

Bash 允許用戶設置和使用環境變量,用于存儲配置信息或臨時數據。

  • 管道和重定向:

支持將多個命令通過管道(|)連接,或將命令的輸入/輸出重定向到文件。

  • 作業控制:

支持后臺運行任務、暫停任務、恢復任務等。

  • 自定義配置:

用戶可以通過配置文件(如 .bashrc.bash_profile)自定義 Bash 的行為。

如何使用 Bash?

1. 啟動 Bash
LinuxmacOS 上,打開 終端(Terminal) 即可使用 Bash。

Windows 上,可以通過安裝 Git BashWindows Subsystem for Linux (WSL) 或 Cygwin 來使用 Bash。

2. 基本命令
以下是一些常用的 Bash 命令:
在這里插入圖片描述
示例:

ls -l  # 列出文件的詳細信息
cd /home/user/Documents  # 切換到 Documents 目錄
pwd  # 顯示當前目錄

3. 環境變量

  • 查看所有環境變量:
printenv

4. 輸入/輸出重定向

  • 將命令輸出保存到文件:
echo "Hello" > output.txt
  • 將命令輸出追加到文件:
echo "World" >> output.txt
  • 從文件讀取輸入:
cat < input.txt

5. 管道

  • 將一個命令的輸出作為另一個命令的輸入:
ls -l | grep ".txt"  # 列出文件并過濾出 .txt 文件

6. 腳本編程
Bash 腳本是包含一系列命令的文本文件,通常以 .sh 為擴展名。以下是一個簡單的 Bash 腳本示例:

#!/bin/bash
echo "Hello, World!"
  • 保存為 hello.sh。
  • 賦予執行權限:
chmod +x hello.sh
  • 運行腳本:
./hello.sh

7. 條件判斷和循環

  • 條件判斷:
if [ "$VAR" == "value" ]; thenecho "Match found!"
elseecho "No match."
fi
  • For 循環:
for i in {1..5}; doecho "Iteration $i"
done
  • While 循環:
count=1
while [ $count -le 5 ]; doecho "Count: $count"count=$((count + 1))
done

8. 函數

  • 定義函數:
greet() {echo "Hello, $1!"
}
  • 調用函數:
greet "Alice"

9. 作業控制

  • 在后臺運行命令:
sleep 10 &
  • 查看后臺任務:
jobs
  • 將后臺任務切換到前臺:
fg %1

10. 自定義 Bash

  • 編輯 ~/.bashrc~/.bash_profile 文件來自定義 Bash 環境。
  • 示例:
alias ll='ls -la'
export PATH=$PATH:/custom/path

示例 Bash 腳本

以下是一個簡單的 Bash 腳本,用于列出文件并檢查某個文件是否存在:

#!/bin/bash# 列出當前目錄下的文件
echo "Files in the current directory:"
ls# 檢查文件是否存在
if [ -f "example.txt" ]; thenecho "example.txt exists!"
elseecho "example.txt does not exist."
fi

總結

  • Bash 是一個強大的命令行解釋器,廣泛用于 Unix 和 Linux 系統。

  • 你可以通過 Bash 執行命令、編寫腳本、管理文件等。

  • 通過學習 Bash,你可以更高效地與操作系統交互,并自動化任務。

(來自deepseek問答。)

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

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

相關文章

Qt Creator入門

1.創建項目 選擇創建項目-Application&#xff08;Qt&#xff09;-Qt Widgets Application-修改名稱即可 默認創建有窗口類&#xff0c;myWidget,基類有三種選擇&#xff1a;QWidget&#xff0c;QMainWindow&#xff0c;QDialog 注意&#xff1a; 名稱和創建路徑不能有中文、…

C語言經典代碼練習題

1.輸入一個4位數&#xff1a;輸出這個輸的個位 十位 百位 千位 #include <stdio.h> int main(int argc, char const *argv[]) {int a;printf("輸入一個&#xff14;位數&#xff1a;");scanf("%d",&a);printf("個位&#xff1a;%d\n"…

cls(**dict(data, id=id))靈活地從一個字典生成實例,同時確保某些關鍵字段(如 id)被正確設置或覆蓋

示例代碼&#xff1a; classmethoddef from_mongo(cls: Type[T], data: dict) -> T:"""Convert "_id" (str object) into "id" (UUID object)."""if not data:raise ValueError("Data is empty.")id data.pop…

MyBatis XMLMapperBuilder 是如何將 SQL 語句解析成可執行的對象? 如何將結果映射規則解析成對應的處理器?

1. XMLMapperBuilder 如何將 SQL 語句解析成可執行對象 (MappedStatement): XMLMapperBuilder 解析 <select>, <insert>, <update>, <delete> 等 SQL 語句元素時&#xff0c;并不僅僅是簡單地讀取 SQL 文本&#xff0c;而是要將 SQL 語句和相關的配置…

咖啡點單小程序畢業設計(JAVA+SpringBoot+微信小程序+完整源碼+論文)

?全網粉絲20W,csdn特邀作者、博客專家、CSDN新星計劃導師、java領域優質創作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取項目下載方式&#x1f345; 一、項目背景介紹&#xff1a; 隨著社會的快速發展和…

003-掌控命令行-CLI11-C++開源庫108杰

首選的現代C風格命令行參數解析器! &#xff08;本課程包含兩段教學視頻。&#xff09; 以文件對象監控程序為實例&#xff0c;五分鐘實現從命令行讀入多個監控目標路徑&#xff1b;區分兩大時機&#xff0c;學習 CLI11 構建與解析參數兩大場景下的異常處理&#xff1b;區分三…

【leetcode hot 100 124】二叉樹中的最大路徑和

解法一&#xff1a;&#xff08;遞歸&#xff09;考慮實現一個簡化的函數 maxGain(node)&#xff0c;該函數計算二叉樹中的一個節點的最大貢獻值&#xff0c;具體而言&#xff0c;就是在以該節點為根節點的子樹中尋找以該節點為起點的一條路徑&#xff0c;使得該路徑上的節點值…

譜分析方法

前言 本文隸屬于專欄《機器學習數學通關指南》&#xff0c;該專欄為筆者原創&#xff0c;引用請注明來源&#xff0c;不足和錯誤之處請在評論區幫忙指出&#xff0c;謝謝&#xff01; 本專欄目錄結構和參考文獻請見《機器學習數學通關指南》 ima 知識庫 知識庫廣場搜索&#…

在圖像/視頻中裁剪出人臉區域

1. 在圖像中裁剪人臉區域 import face_alignment import skimage.io import numpy from argparse import ArgumentParser from skimage import img_as_ubyte from skimage.transform import resize from tqdm import tqdm import os import numpy as np import warnings warni…

【軟考-架構】11.3、設計模式-新

?資料&文章更新? GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目錄 項目中的應用設計模式創建型設計模式結構型設計模式行為型設計模式 &#x1f4af;考試真題題外話 項目中的應用 在實際項目中&#xff0c;我應用過多種設計模式來解決不同…

使用Redis如何實現分布式鎖?(超賣)

分布式鎖概念 在多線程環境下&#xff0c;為了保證數據的線程安全&#xff0c;鎖保證同一時刻&#xff0c;只有一個可以訪問和更新共享數據。在單機系統我們可以使用 synchronized 鎖、Lock 鎖保證線程安全。 synchronized 鎖是 Java 提供的一種內置鎖&#xff0c;在單個 JVM …

Linux的Shell編程

一、什么是Shell 1、為什么要學習Shell Linux運維工程師在進行服務器集群管理時&#xff0c;需要編寫Shell程序來進行服務器管理。 對于JavaEE和Python程序員來說&#xff0c;工作的需要。Boss會要求你編寫一些Shell腳本進行程序或者是服務器的維護&#xff0c;比如編寫一個…

使用React和google gemini api 打造一個google gemini應用

實現一個簡單的聊天應用&#xff0c;用戶可以通過輸入問題或點擊“Surprise me”按鈕獲取隨機問題&#xff0c;并從后端API獲取回答。 import { useState } from "react"; function App() {const [ value, setValue] useState(""); // 存儲用戶輸入的問題…

深入探討TK矩陣系統:創新的TikTok運營工具

TK矩陣的應用場景 TK矩陣系統適用于多個場景&#xff0c;尤其是在以下幾個方面有顯著優勢&#xff1a; 批量賬號管理與內容發布&#xff1a;對于需要管理多個TikTok賬號的內容創作者或營銷人員&#xff0c;TK矩陣提供了高效的賬號管理工具&#xff0c;支持批量發布視頻、評論、…

MTK Android12 應用在最頂端時,禁止拉起其他某個應用(一)

1、需求 近期&#xff0c;客戶要求應用在最頂端時&#xff0c;禁止拉起其他某個應用2、解決方法 diff --git a/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java b/frameworks/base/services/core/java/com/android/server/wm/ActivityStarte…

論文閱讀筆記:Deep Unsupervised Learning using Nonequilibrium Thermodynamics

1、來源 論文連接1&#xff1a;http://ganguli-gang.stanford.edu/pdf/DeepUnsupDiffusion.pdf 論文連接2(帶appendix)&#xff1a;https://arxiv.org/pdf/1503.03585v7 代碼鏈接&#xff1a;https://github.com/Sohl-Dickstein/Diffusion-Probabilistic-Models 代碼的環境配置…

7種數據結構

7種數據結構 順序表sqlite.hseqlite.c 單鏈表linklist.clinklist.h 雙鏈表doulinklist.cdoulinklist.h 鏈式棧linkstack.clinkstack.h 隊列SeqQueue.cSeqQueue.h 樹tree.c 哈希表hash.c 順序表 sqlite.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ typedef struct person…

Linux 查看及測試網絡命令

使用 ifconfig 命令查看網絡接口地址 查看指定的網絡接口信息 執行 ifconfig ens33 命令可以只查看網卡 ens33 的配置信息

ABAP語言的動態編程(4) - 綜合案例:管理費用明細表

本篇來實現一個綜合案例&#xff1a;管理費用明細表。報表在實際項目中&#xff0c;也有一定的參考意義&#xff0c;一方面展示類似的報表&#xff0c;比如管理費用、研發費用等費用的明細&#xff0c;使用業務比較習慣的展示格式&#xff1b;另一方面正好綜合運用前面學習的動…

【Redis】Redis的數據刪除(過期)策略,數據淘汰策略。

如果問到&#xff1a;假如Redis的key過期之后&#xff0c;會立即刪除嗎&#xff1f; 其實就是想問數據刪除(過期)策略。 如果面試官問到&#xff1a;如果緩存過多&#xff0c;內存是有限的&#xff0c;內存被占滿了怎么辦&#xff1f; 其實就是問&#xff1a;數據的淘汰策略。…