Bash 简介

Bash (Bourne Again SHell)是 Linux 和 macOS 系统中最常用、最强大的命令行解释器(Shell)。它不仅是用户与操作系统内核交互的接口,也是脚本编程的重要工具。

1. 什么是 Bash

了解什么是Bash,需要理解与之相关的几个概念:

  • Shell:是操作系统的"外壳",负责接收用户输入的命令,将其翻译成内核能理解的指令,并返回结果。
  • Bash:是 GNU 项目开发的 Shell,是大多数 Linux 发行版的默认 Shell。它兼容早期的 Bourne Shell(sh),并增加了许多新功能(如命令历史、自动补全、脚本编程等)。
  • 终端(Terminal):是你输入 Bash 命令的软件界面(如 GNOME Terminal、iTerm2、Windows Terminal)。

✅ 简单理解:你在黑窗口里敲的每一行字,都是 Bash 在帮你执行。Bash将你输入的命令翻译成内核能理解的指令,并返回结果。


2. 常用 Bash 命令

2.1 📁 文件与目录操作

命令 全称 功能说明 示例
ls list 列出目录内容 ls -la(显示隐藏文件和详细信息)
cd change directory 切换目录 cd /home/usercd ..(返回上一级)
pwd print working directory 显示当前所在路径 pwd
mkdir make directory 创建新目录 mkdir my_folder
rm remove 删除文件或目录 rm file.txtrm -rf folder/(强制删除目录,⚠️谨慎使用)
cp copy 复制文件/目录 cp src.txt dest.txt
mv move 移动或重命名文件 mv old.txt new.txt
touch - 创建空文件或更新时间戳 touch new_file.txt

2.2 🔍 文件查看与搜索

命令 功能说明 示例
cat 一次性显示整个文件内容 cat config.yaml
less / more 分页查看大文件(支持上下滚动) less large_log.log(按 q 退出)
head / tail 查看文件开头/末尾几行 tail -f app.log(实时追踪日志变化)
grep 在文件中搜索特定文本 grep "error" app.log
find 按名称、大小、时间等查找文件 find . -name "*.py"

2.3 📊 系统信息与进程管理

命令 功能说明 示例
ps 查看当前运行的进程 ps aux
top / htop 实时监控系统资源(CPU、内存) top(按 q 退出)
kill 终止进程 kill 1234(1234 是进程 PID)
df 查看磁盘空间使用情况 df -h(以人类可读格式显示)
free 查看内存使用情况 free -h
uname 显示系统信息 uname -a

2.4 🌐 网络相关

命令 功能说明 示例
ping 测试网络连通性 ping google.com
curl 发送 HTTP 请求或下载文件 curl https://example.com
wget 从网络下载文件 wget https://example.com/file.zip
ssh 安全远程登录服务器 ssh user@192.168.1.100
scp 安全复制文件到远程主机 scp file.txt user@host:/path/

2.5 🔧 权限与管理

命令 功能说明 示例
chmod 修改文件权限 chmod +x script.sh(赋予执行权限)
chown 修改文件所有者 sudo chown user:group file.txt
sudo 以超级管理员(root)身份执行命令 sudo apt update

2.6 实用技巧与快捷键

快捷键 功能
Tab 自动补全命令或文件名(按两次可显示所有匹配项)
/ 浏览历史命令
Ctrl + C 中断当前正在运行的命令
Ctrl + Z 将当前命令挂起到后台
Ctrl + L 清屏(等同于 clear 命令)
!! 重复执行上一条命令(常用于忘记加 sudo 时:sudo !!
!$ 引用上一条命令的最后一个参数

3. Bash 的强大特性

管道与重定向 是 Bash 最精髓的部分,允许你将多个命令组合起来完成复杂任务。

3.1 管道

管道(Pipe |):将前一个命令的输出,作为后一个命令的输入。

bash 复制代码
# 示例:查找包含 "error" 的行,并统计数量
grep "error" app.log | wc -l

3.2 重定向

重定向(Redirect >>>):

  • **>:**将输出写入文件(覆盖原有内容)
  • **>>:**将输出追加到文件末尾
  • **<:**从文件读取输入
bash 复制代码
# >:将标准输出写入文件(覆盖模式);
# 如果文件已存在,原有内容会被完全清空并替换;如果文件不存在,则创建新文件 
# 将 "Hello World" 写入文件 output.txt; 
echo "Hello World" > output.txt

#------------------------------------------------------------
# >>:将标准输出追加到文件末尾(追加模式)
# 如果文件已存在,保留原有内容,新内容接在后面;如果文件不存在,则创建新文件。
echo "Hello World" >> output.txt

#------------------------------------------------------------
# <:从文件读取输入(输入重定向)
# 让命令从指定文件读取输入,而不是从键盘(标准输入 stdin)读取;配合需要交互式输入的命令,或用于数据处理工具(如 sort, wc, mail 等)。

# 正常用法:wc -l 从键盘等待输入,按 Ctrl+D 结束;使用 < 重定向:直接从文件读取
wc -l < myfile.txt 
# 输出: 42   (表示 myfile.txt 有 42 行)

3.3 Bash 脚本

可以将一系列命令保存为 .sh 文件,实现自动化任务。

bash 复制代码
#!/bin/bash
# 这是一个简单的 Bash 脚本示例

echo "开始备份..."
cp important_data.txt backup_$(date +%Y%m%d).txt
echo "备份完成!"

运行方式:

bash 复制代码
chmod +x backup.sh   # 赋予执行权限
./backup.sh          # 执行脚本

3.4 Bash里调用Python解释器

当你在 Bash 中输入:

bash 复制代码
python3 script.py arg1 arg2

Bash 会:

  1. 找到 python3 可执行文件(通常在 /usr/bin/python3 或通过 PATH 查找)
  2. 启动它,并把 script.py, arg1, arg2 作为参数传给它
  3. Python 解释器读取并执行 script.py

用户是在 Bash 终端里输入的命令,看起来像"Bash 命令",但并不是 "Bash 执行了Python 脚本",而是 在 Bash 终端中调用 Python 解释器去执行 Python 脚本。

这里Bash 是"外壳",Python 是"程序":

  • Bash 是命令行解释器(Shell),它负责接收你的输入,然后启动其他程序。
  • python3 是一个独立的可执行程序(Python 解释器)。

类似的还有:

bash 复制代码
gcc hello.c -o hello
./hello

也不是"Bash 编译 C 语言",而是 Bash 调用了 gcc./hello 这两个程序。

相关推荐
Soari2 小时前
Ziggo-CaaS-Switch软件配置教程
bash·powershell·tsn 交换机
爱吃烤鸡翅的酸菜鱼2 小时前
【Java】封装位运算通用工具类——用一个整数字段替代几十个布尔列,极致节省存储空间
java·开发语言·设计模式·工具类·位运算·合成复用原则
xinhuanjieyi2 小时前
php给30支NBA球队添加logo图标,做好对应关系
android·开发语言·php
菜菜小狗的学习笔记2 小时前
八股(三)Java并发
java·开发语言
一晌小贪欢2 小时前
PyQt5 开发一个 PDF 批量合并工具
开发语言·qt·pdf
神仙别闹2 小时前
基于 MATLAB 实现的图像信号处理
开发语言·matlab·信号处理
swift192212 小时前
Qt多语言问题 —— 静态成员变量
开发语言·c++·qt
それども3 小时前
Spring Bean @Autowired自注入空指针问题
java·开发语言·spring
沐知全栈开发3 小时前
JavaScript for 循环
开发语言