Mac开发基础知识02:bash命令

322 阅读6分钟

1、是什么?

Bash 的英文全称是 “Bourne Again SHell”,它是一种对早期的 Bourne shell(sh)进行了扩展和改进的 shell 程序。

含义及相关解释

  • 作为命令解释器:Bash 是 Unix 和类 Unix 系统(包括 macOS)中的一种命令行解释器,它允许用户通过输入文本命令与操作系统进行交互。用户在终端中输入的各种命令,如文件操作、进程管理、程序执行等,都由 Bash 来解析和执行。例如,当你在 macOS 的终端中输入 ls 命令来列出当前目录下的文件和文件夹时,Bash 会接收这个命令,理解其含义,并调用相应的系统功能来完成操作。
  • 脚本编程语言:Bash 不仅可以作为交互式的命令解释器,还支持编写脚本程序。用户可以将一系列的命令组合在一起,形成一个脚本文件,以实现自动化的任务。这些脚本可以完成文件备份、系统配置、批量处理等各种复杂的工作。例如,以下是一个简单的 Bash 脚本示例,用于创建一个新的目录并在其中创建一个文本文件:
#!/bin/bash # 创建一个名为 new_directory 的目录 
mkdir new_directory # 进入新创建的目录 
cd new_directory # 创建一个名为 test.txt 的文本文件 
touch test.txt

在这个脚本中,#!/bin/bash 是脚本的起始行,它告诉系统该脚本使用 Bash 来解释执行。后续的命令依次完成了创建目录、进入目录和创建文件的操作。 Bash 在 Unix 和类 Unix 系统中非常流行,因为它具有丰富的功能、良好的兼容性和广泛的社区支持,是系统管理员、开发者和高级用户进行系统管理和自动化任务的重要工具。在 macOS 中,Bash 长期以来一直是默认的 shell,不过从 macOS Catalina(10.15)开始,默认 shell 已改为 Zsh。但用户仍然可以通过一些设置继续使用 Bash。

2、怎么用?

执行文件的步骤

1. 赋予文件执行权限

在执行 Bash 脚本前,需要确保文件具有可执行权限。可以使用 chmod 命令为脚本文件添加执行权限,在终端中使用以下命令:

chmod +x 脚本文件名.sh
2. 执行脚本

有多种方式可以执行这个脚本,下面介绍常见的两种:

./脚本文件名.sh

通过 bash 命令执行
也可以不赋予脚本执行权限,直接使用 bash 命令来执行脚本,这种方式不需要文件有执行权限,命令格式为:

bash 脚本文件名.sh

3、常用命令

文件和目录操作

1. ls - 列出目录内容
  • 功能:显示指定目录下的文件和文件夹。

  • 案例

    • 列出当前目录内容:ls
    • 列出指定目录(如 /etc)内容:ls /etc
    • 以长格式列出当前目录内容(显示文件权限、所有者、大小等详细信息):ls -l
    • 列出所有文件(包括隐藏文件):ls -a
2. cd - 切换目录
  • 功能:改变当前工作目录。

  • 案例

    • 进入 Documents 目录:cd Documents
    • 返回上一级目录:cd ..
    • 回到用户主目录:cd ~
3. mkdir - 创建目录
  • 功能:创建新的目录。

  • 案例

    • 创建名为 new_folder 的目录:mkdir new_folder
    • 创建多层嵌套目录(如 parent/child):mkdir -p parent/child
4. rm - 删除文件或目录
  • 功能:删除指定的文件或目录。

  • 案例

    • 删除名为 test.txt 的文件:rm test.txt
    • 强制删除只读文件:rm -f read_only_file.txt
    • 删除目录及其所有内容:rm -r my_directory
5. cp - 复制文件或目录
  • 功能:将文件或目录从一个位置复制到另一个位置。

  • 案例

    • 复制 file.txt 到 backup 目录:cp file.txt backup/
    • 递归复制目录 source 到 destinationcp -r source/ destination/
6. mv - 移动或重命名文件或目录
  • 功能:移动文件或目录,也可用于重命名。

  • 案例

    • 移动 file.txt 到 new_location 目录:mv file.txt new_location/
    • 将 old_name.txt 重命名为 new_name.txtmv old_name.txt new_name.txt

文件查看和编辑

1. cat - 查看文件内容
  • 功能:连接文件并打印到标准输出,常用于查看小文件内容。
  • 案例:查看 example.txt 文件内容:cat example.txt
2. more 和 less - 分页查看文件内容
  • 功能:用于查看大文件内容,more 逐页显示,less 功能更强大,支持向前和向后翻页等操作。

  • 案例

    • 使用 more 查看 large_file.txtmore large_file.txt
    • 使用 less 查看 large_file.txtless large_file.txt
3. nano 和 vim - 文本编辑器
  • 功能:用于创建和编辑文本文件。nano 简单易用,适合初学者;vim 功能强大,但学习曲线较陡。

  • 案例

    • 使用 nano 编辑 config.txt 文件:nano config.txt
    • 使用 vim 编辑 script.sh 文件:vim script.sh

系统信息和进程管理

1. pwd - 显示当前工作目录
  • 功能:打印当前所在的工作目录。
  • 案例:查看当前所在目录:pwd
2. df - 显示磁盘使用情况
  • 功能:显示文件系统的磁盘使用情况。
  • 案例:查看磁盘使用情况:df -h-h 选项以人类可读的格式显示)
3. du - 估算文件空间使用量
  • 功能:估算文件或目录的磁盘使用量。
  • 案例:查看 my_directory 目录的磁盘使用情况:du -sh my_directory-s 显示汇总信息,-h 以人类可读的格式显示)
4. ps - 显示当前进程状态
  • 功能:报告当前系统的进程状态。
  • 案例:显示当前用户的所有进程:ps -u $USER
  • 显示所有进程并以树状结构展示:ps -ef --forest
5. top - 动态显示系统进程信息
  • 功能:实时显示系统中各个进程的资源占用情况。
  • 案例:启动 top 命令查看系统进程信息:top

网络相关命令

1. ping - 测试网络连通性
  • 功能:向目标主机发送 ICMP 回显请求包,测试与目标主机的网络连通性。
  • 案例:测试与 google.com 的连通性:ping google.com
2. ifconfig 或 ip - 查看和配置网络接口
  • 功能ifconfig 用于查看和配置网络接口信息,ip 是新一代的网络配置工具。

  • 案例

    • 使用 ifconfig 查看网络接口信息:ifconfig
    • 使用 ip 查看网络接口信息:ip addr show
3. curl - 传输数据
  • 功能:用于从网络上传输数据,可以下载文件、发送 HTTP 请求等。

  • 案例

    • 下载 example.com 上的 file.zip 文件:curl -O http://example.com/file.zip
    • 发送 GET 请求到 api.example.comcurl http://api.example.com

权限管理

1. chmod - 改变文件或目录权限
  • 功能:修改文件或目录的访问权限。

  • 案例

    • 给 script.sh 文件添加可执行权限:chmod +x script.sh
    • 将 file.txt 文件的权限设置为所有者可读可写,组用户和其他用户只读:chmod 644 file.txt
2. chown - 改变文件或目录的所有者
  • 功能:更改文件或目录的所有者和所属组。
  • 案例:将 my_file.txt 文件的所有者改为 user1chown user1 my_file.txt
3. chgrp - 改变文件或目录的所属组
  • 功能:更改文件或目录的所属组。
  • 案例:将 my_directory 目录的所属组改为 group1chgrp group1 my_directory