59、深入了解BASH shell

深入了解BASH shell

1. BASH shell简介

Linux系统中广泛使用BASH shell,这很大程度上是因为Linux是UNIX的克隆版本。在UNIX早期,基于文本的shell是用户控制计算机的唯一方式。直接输入命令是控制计算机最基本的方式之一。

BASH shell历史可追溯到UNIX早期,但这并不意味着它很原始,相反,它是与计算机交互最有效和直接的方式之一。很多人认为命令行shell是使用计算机的快速、高效方法,至今仍未被更好的方法取代。

大多数Linux发行版都提供多种shell程序供选择,但大多数Linux系统的默认shell是BASH,Ubuntu也是如此。BASH代表Bourne Again SHell,它是对Bourne shell的重写。

除了BASH,还有其他shell,如PDKSH(基于Korn Shell)和ZSH。这些通常被用于Linux编程或对BASH不满意的用户。

BASH shell被认为是兼顾各方的最佳选择,它易于初学者学习,还能随着用户的成长提供更多功能,例如支持脚本编写,用户可以创建自己的简单程序。

1.1 为什么要使用shell

虽然现代Linux发行版倾向于让用户使用图形用户界面(GUI)完成各种任务,但掌握一些命令行shell技能仍非常有必要,原因如下:
- 简单快速 :shell是与Ubuntu交互最简单、最快的方式。例如,更改网卡IP地址,使用GUI可能需要几分钟,而在shell中只需输入 ifconfig eth0 192.168.0.15 up
- 功能多样 :从删除文件、配置硬件到创建MP3,所有操作都可以通过shell完成。很多GUI应用程序实际上依赖于shell程序。
- 跨发行版一致 :所有Linux系统都有shell,并且基本命令通用。但不同发行版的GUI配置工具不同,掌握shell命令可以在不同系统间快速上手。
- 故障排除关键 :当系统出现问题无法启动GUI时,几乎总能启动到shell。shell只需要基本的屏幕显示和键盘输入功能,因此大多数救援磁盘或CD都提供shell来修复系统。
- 远程访问有用 :通过ssh等程序,用户可以远程登录并使用shell控制计算机。这也是许多服务器系统选择Linux的原因之一。
- 社区认可 :在Linux社区中,使用shell会获得其他用户的认可,因为它能提供更大的控制权。

不过,命令行shell并非完全直观。例如, ifconfig eth0 192.168.0.15 up 命令,对于初学者来说可能难以理解。实际上,该命令是让名为eth0的网卡采用指定的IP地址,最后的 up 表示激活网卡。

学习shell需要掌握一些术语,但日常使用只需学习10 - 20个命令。就像学习一门新语言,通过练习,这些命令会变得自然。而且,shell提供了很多内置帮助。

2. 何时使用shell

Linux shell的使用频率因人而异。一些Linux爱好者离不开它,他们用它来阅读和撰写电子邮件、浏览网页。

大多数人则用它来管理文件、查看文本文件(如程序文档)、运行程序和管理系统。所有类型的程序(包括GUI和命令行程序)都可以从shell启动。在Ubuntu上安装程序后,程序不一定会自动出现在应用程序菜单中,除非安装程序是专门为当前Linux版本设计的。

使用shell运行程序的另一个原因是可以在启动前指定程序的运行方式。例如,要以全屏模式启动Totem电影播放器并播放 myvideofile.mpg 文件,只需输入 totem --fullscreen myvideofile.mpg ,这样可以节省时间。

当习惯使用shell后,可能会经常在其他程序窗口后面打开它。

3. 开始使用shell

启动shell有多种方式,最常见的是使用终端模拟器程序。以GNOME Terminal为例,通过点击“Applications -> Accessories -> Terminal”即可启动。

启动后会看到一个空白的紫色窗口,类似于简单的文本编辑器窗口。首次运行时,窗口顶部会有几行关于 sudo 命令的说明,目前无需担心。

窗口中最重要的部分是命令提示符,通常是用户名、主机名、当前目录和美元符号($)。例如, ubuntu@ubuntu-desktop:~$ ,其中 ubuntu 是用户名, ubuntu-desktop 是主机名, ~ 代表用户的 /home 目录, $ 表示以普通用户身份登录。

如果以root用户登录,提示符将是哈希符号(#)。在一些杂志和计算机手册中,命令前的哈希符号表示该命令需要以root用户身份运行。

4. 运行程序

在shell中输入的命令实际上是小的程序。shell的主要功能是让用户运行程序,包括内置程序(如文件操作程序)和其他复杂程序。

shell知道程序可能存储的位置,这些信息在安装Ubuntu时设置并存储在系统变量中。其中, PATH 变量存储了程序的存储位置。可以通过以下命令查看 PATH 变量的内容:

echo $PATH

在测试系统中,输出可能是:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

当输入程序名时,shell会按顺序在 PATH 变量列出的目录中查找。例如,输入 ls 时,shell会从列表中的第一个目录开始查找 ls 程序,找到后就会运行它。

如果要运行的程序不在 PATH 变量列出的目录中,需要指定程序的完整路径,例如 /home/ubuntu/myprogram 。如果已经在程序所在的目录中,可以输入 ./myprogram

一些基本命令是BASH内置的,如 cd echo 。可以通过 type 命令来判断一个命令是否是内置命令,例如 type cd

5. 获取帮助

每个命令通常都有内置帮助,可以通过 --help 选项查询。例如,要获取 ifconfig 命令的帮助,输入:

ifconfig --help

大多数程序都支持 --help 选项,有时可能需要使用单破折号。

此外,大多数命令还有技术手册(man pages),可以通过以下命令访问:

man <command>

不过,man pages通常是为有经验的Ubuntu用户编写的。

有些命令还有info页面,提供更通俗易懂的指南。可以通过以下命令阅读:

info <command>

如果命令没有info页面,会显示关于 info 命令的基本说明。

man info 命令本身也有对应的man和info页面,可以通过 man man info info 查看。

6. 通过虚拟控制台运行shell

Linux爱好者常用的启动shell的方式是通过虚拟控制台。按下 Ctrl + Alt ,然后按 F1 - F6 中的一个功能键即可访问虚拟控制台。

使用虚拟控制台就像切换到另一台完全不同的计算机。按下 Ctrl + Alt + F1 会使GUI消失,屏幕被命令行提示符取代(不用担心,GUI仍在后台运行)。此时需要输入用户名和密码登录。

6.1 总结

BASH shell是Linux系统中强大而重要的工具。它具有简单快速、功能多样、跨发行版一致等优点,虽然学习曲线较陡,但通过练习和利用内置帮助,用户可以逐渐掌握它。无论是日常操作、故障排除还是远程访问,shell都能发挥重要作用。

6.2 操作流程总结

操作 步骤
启动GNOME Terminal 点击“Applications -> Accessories -> Terminal”
查看PATH变量 输入 echo $PATH
获取命令帮助 输入 <command> --help
查看命令技术手册 输入 man <command>
查看命令info页面 输入 info <command>
访问虚拟控制台 按下 Ctrl + Alt ,然后按 F1 - F6 中的一个功能键

6.3 流程图

graph TD;
    A[开始] --> B[选择启动方式];
    B --> C{使用终端模拟器};
    B --> D{使用虚拟控制台};
    C --> E[点击“Applications -> Accessories -> Terminal”];
    E --> F[出现命令提示符];
    D --> G[按下Ctrl + Alt + F1 - F6];
    G --> H[输入用户名和密码登录];
    F --> I[运行程序];
    I --> J{程序在PATH中};
    J --> K[直接输入程序名];
    J --> L[指定程序完整路径];
    I --> M[获取帮助];
    M --> N{使用--help选项};
    M --> O{查看man页面};
    M --> P{查看info页面};
    N --> Q[输入<command> --help];
    O --> R[输入man <command>];
    P --> S[输入info <command>];

7. 常用命令示例

7.1 文件和目录操作

  • 创建目录 :使用 mkdir 命令可以创建新的目录。例如,要在当前目录下创建一个名为 new_folder 的目录,输入:
mkdir new_folder
  • 切换目录 cd 命令用于切换当前工作目录。若要进入刚刚创建的 new_folder 目录,输入:
cd new_folder

若要返回上一级目录,输入:

cd ..
  • 列出目录内容 ls 命令用于列出目录中的文件和子目录。输入 ls 会显示当前目录的内容,若要显示详细信息,可使用 ls -l
ls -l
  • 删除文件和目录 :使用 rm 命令删除文件,若要删除一个名为 test.txt 的文件,输入:
rm test.txt

若要删除目录,需要使用 rm -r 选项,例如删除之前创建的 new_folder 目录:

rm -r new_folder

7.2 文本处理

  • 查看文件内容 cat 命令可以查看文件的内容。若要查看 test.txt 文件的内容,输入:
cat test.txt

如果文件较大,可以使用 less 命令分页查看:

less test.txt
  • 查找文本 grep 命令用于在文件中查找特定的文本。例如,在 test.txt 文件中查找包含“example”的行,输入:
grep "example" test.txt

7.3 系统信息

  • 查看系统信息 uname 命令可以查看系统的基本信息。输入 uname -a 会显示详细的系统信息:
uname -a
  • 查看磁盘使用情况 df 命令用于查看磁盘的使用情况。输入 df -h 会以人类可读的格式显示磁盘使用信息:
df -h
  • 查看内存使用情况 free 命令可以查看系统的内存使用情况。输入 free -m 会以兆字节为单位显示内存信息:
free -m

8. 脚本编写基础

BASH shell支持脚本编写,通过编写脚本可以自动化执行一系列命令。以下是一个简单的脚本示例,用于显示当前日期和时间:

#!/bin/bash
# 这是一个注释,说明脚本的功能
date

8.1 脚本编写步骤

  1. 创建脚本文件 :使用文本编辑器(如 nano vim )创建一个新的文件,例如 date_script.sh
nano date_script.sh
  1. 编写脚本内容 :将上述脚本代码复制到文件中。
  2. 赋予执行权限 :使用 chmod 命令赋予脚本执行权限:
chmod +x date_script.sh
  1. 运行脚本 :在终端中输入脚本的路径来运行它:
./date_script.sh

8.2 变量和参数

在脚本中可以使用变量来存储数据。例如,以下脚本使用变量来存储用户名并输出欢迎信息:

#!/bin/bash
username="John"
echo "Welcome, $username!"

脚本还可以接受命令行参数。例如,以下脚本接受一个参数并输出相应的信息:

#!/bin/bash
echo "You entered: $1"

运行脚本时,输入一个参数,如:

./script.sh test

脚本会输出:

You entered: test

9. 管道和重定向

9.1 重定向

重定向可以将命令的输入或输出导向到文件或其他设备。
- 输出重定向 :使用 > 符号将命令的输出重定向到文件。例如,将 ls 命令的输出保存到 output.txt 文件中:

ls > output.txt
  • 追加输出重定向 :使用 >> 符号将命令的输出追加到文件末尾。例如,将新的 ls 输出追加到 output.txt 文件:
ls >> output.txt
  • 输入重定向 :使用 < 符号将文件内容作为命令的输入。例如,将 input.txt 文件的内容作为 grep 命令的输入:
grep "example" < input.txt

9.2 管道

管道( | )用于将一个命令的输出作为另一个命令的输入。例如,将 ls 命令的输出通过管道传递给 grep 命令,查找包含“test”的文件:

ls | grep "test"

10. 总结与展望

10.1 总结

BASH shell是Linux系统中一个强大且灵活的工具,它提供了丰富的命令和功能,涵盖了文件操作、文本处理、系统信息查看、脚本编写等多个方面。通过掌握BASH shell,用户可以更高效地控制和管理Linux系统,无论是日常操作、故障排除还是自动化任务都能轻松应对。

10.2 操作流程总结

操作 步骤
创建目录 输入 mkdir <目录名>
切换目录 输入 cd <目录路径>
列出目录内容 输入 ls ls -l
删除文件 输入 rm <文件名>
删除目录 输入 rm -r <目录名>
查看文件内容 输入 cat <文件名> less <文件名>
查找文本 输入 grep "<文本>" <文件名>
查看系统信息 输入 uname -a
查看磁盘使用情况 输入 df -h
查看内存使用情况 输入 free -m
创建脚本 使用编辑器创建文件,编写脚本内容
赋予脚本执行权限 输入 chmod +x <脚本名>
运行脚本 输入 ./<脚本名>
输出重定向 输入 <命令> > <文件名>
追加输出重定向 输入 <命令> >> <文件名>
输入重定向 输入 <命令> < <文件名>
使用管道 输入 <命令1> | <命令2>

10.3 流程图

graph TD;
    A[开始] --> B{操作类型};
    B --> C{文件和目录操作};
    B --> D{文本处理};
    B --> E{系统信息查看};
    B --> F{脚本编写};
    B --> G{管道和重定向};
    C --> H[创建目录];
    C --> I[切换目录];
    C --> J[列出目录内容];
    C --> K[删除文件和目录];
    H --> L[输入mkdir <目录名>];
    I --> M[输入cd <目录路径>];
    J --> N[输入ls或ls -l];
    K --> O[输入rm <文件名>或rm -r <目录名>];
    D --> P[查看文件内容];
    D --> Q[查找文本];
    P --> R[输入cat <文件名>或less <文件名>];
    Q --> S[输入grep "<文本>" <文件名>];
    E --> T[查看系统信息];
    E --> U[查看磁盘使用情况];
    E --> V[查看内存使用情况];
    T --> W[输入uname -a];
    U --> X[输入df -h];
    V --> Y[输入free -m];
    F --> Z[创建脚本];
    F --> AA[赋予执行权限];
    F --> AB[运行脚本];
    Z --> AC[使用编辑器创建文件,编写脚本内容];
    AA --> AD[输入chmod +x <脚本名>];
    AB --> AE[输入./<脚本名>];
    G --> AF[重定向];
    G --> AG[管道];
    AF --> AH[输出重定向];
    AF --> AI[追加输出重定向];
    AF --> AJ[输入重定向];
    AH --> AK[输入<命令> > <文件名>];
    AI --> AL[输入<命令> >> <文件名>];
    AJ --> AM[输入<命令> < <文件名>];
    AG --> AN[输入<命令1> | <命令2>];

随着对BASH shell的深入学习,用户可以进一步探索其高级功能,如函数、循环、条件语句等,从而编写更复杂和强大的脚本,实现更多自动化和高效的任务。同时,不断实践和积累经验也是提高使用BASH shell能力的关键。希望本文能帮助读者更好地理解和掌握BASH shell,在Linux系统中发挥出更大的作用。

数据集介绍:垃圾分类检测数据集 一、基础信息 数据集名称:垃圾分类检测数据集 图片数量: 训练集:2,817张图片 验证集:621张图片 测试集:317张图片 总计:3,755张图片 分类类别: - 金属:常见的金属垃圾材料。 - 纸板:纸板类垃圾,如包装盒等。 - 塑料:塑料类垃圾,如瓶子、容器等。 标注格式: YOLO格式,包含边界框和类别标签,适用于目标检测任务。 数据格式:图片来源于实际场景,格式为常见图像格式(如JPEG/PNG)。 二、适用场景 智能垃圾回收系统开发: 数据集支持目标检测任务,帮助构建能够自动识别和分类垃圾材料的AI模型,用于自动化废物分类和回收系统。 环境监测与废物管理: 集成至监控系统或机器人中,实时检测垃圾并分类,提升废物处理效率和环保水平。 学术研究与教育: 支持计算机视觉与环保领域的交叉研究,用于教学、实验和论文发表。 三、数据集优势 类别覆盖全面: 包含三种常见垃圾材料类别,覆盖日常生活中主要的可回收物类型,具有实际应用价值。 标注精准可靠: 采用YOLO标注格式,边界框定位精确,类别标签准确,便于模型直接训练和使用。 数据量适中合理: 训练集、验证集和测试集分布均衡,提供足够样本用于模型学习和评估。 任务适配性强: 标注兼容主流深度学习框架(如YOLO等),可直接用于目标检测任务,支持垃圾检测相关应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值