Bash (Bourne Again Shell)

本文介绍了Bash Shell的特点及优势,包括命令编辑、别名设置、环境变量管理等功能,并详细解释了路径、命令重定向及管线命令的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说一个关系,kernel控制硬件工作(内部的东西人看不懂),而kernel相想让硬件干什么需要用户来说明,用户(人的语言kernel也看不懂)没法直接告诉kernel,于是通过一个shell来传达指令,按照定义好的标准,即计算机指令来沟通。

Bash是一种shell,是sh的加强版本,免费。

1.bash的优点

1) 命令编修能力,可以记录你输入过的指令,按上下键就可以使用
2) 比对补全功能,其实就是联想功能,只要输入指令或者文件路径的前面部分,使用Tab就可以自动显示出来
3) 可以设定别名,你在shell里面输入alias就可以看到当前设定了的一些别名,比如clear太长,你可以直接在shell里面输入alias cl=‘clear’,从此以后,如果你输入cl就能进行清除
4) 可以使用ctrl+c来停止当前程序,这样做可以带来很多方便
5) shell script的强大功能,就是说,你可以把要常用的一些连续指令写成shell script,然后分类等等,这样就可以很方便的进行管理,也可以实现快速和多次调试

2.变量

1)在shell里面输入env就可以知道这个电脑上主要设置了多少环境变量,通常来说,在linux的预设中,使用大写字母来设定的变量一般为系统内定需要的变量,比如说 $PATH,$HOME等等

使用set就能知道系统中全部设置的变量内容

2)设置变量

为什么要设置变量呢???

首先我举一个自己的例子,我的ONE Simulation的文件夹路径是 /Desktop/DTN/simulations/one,很烦啊,每次都要输那么多,想这种东西是天天用,一会儿就要进去一下的,所以这样岂不是浪费生命。于是呢,要是设置一个变量 one=Desktop/DTN/simulations/one,然后以后每次直接输 cd $DTN,这样是不是节约时间了啊,哈哈。

但是呢,有2点需要注意,第一是变量的设置需要遵循一定的规则,第二是,你如果这样设置的话,只是说明在当前这个窗口你可以这样用,如果你新开了一个窗口,这个就无效了。包括alias也是这样。

怎么样才能一劳永逸呢???

答案是export

所以说,如果你要写scripts的话,常常会有一个环境的引用另一个环境的变量,记住一定使用export。
具体怎么用还没有搞清楚

3)
一些符号,主要说4个万用符号

a. 第一个  *,它的作用就是,比如你写了 ls Desktop*,那么不管后面是什么,有多少,都全部显示出来

b. 第二个 ?,它的作用是,代表一个字母 (注意,和*不同的是,它只代表“一个"字母),那么使用了几个就必须是接了几个字母的才能被显示或者找到,比如 test???,说明只有test后面接了3个字母的名字才能被找到

c. 第三个 [],举例子吧,cp  test[1-5]  /tmp,那么如果有test1,test2,test3,test4,test5,统统拷贝到/tmp目录下

d. 第四个 ‘  ’ ,单引号,被它标记的最先被执行。

举一个组合的例子,cp  *[A-Z]*  /tmp,表明,只要这个变量含有任意一个大写字母,就被复制过去

e. &&,举例: command1 && command2,意思是command1若执行成功,就接着执行command2,2个结果都会显示出来

f. ||,举例: command1 || command2,意思是command1执行成功,就不执行command2了

3.绝对路径和相对路径

绝对路径:以根目录开始写入到档案的一种命令写定方式

4.命令重导向

举个例子先   ls -l > test.sh

如果没有右边的部分,那么屏幕上将显示当前文件目录,加了大于符号和test.sh以后,屏幕上将没有输出,而原本属于屏幕的输出将全部被写入test.sh文件中,如果原来test.sh中本身有数据,将会被覆盖。使用2个大于符号不会覆盖,而是接着原来的数据后面写入数据。

使用小于符号,表示从符号右边的文档将参数读入屏幕。这个东西主要是用于script,有一些命令需要你输入,但是如果太多了的话很麻烦。所以你可以写一个脚本,然后让它自己去读脚本显示。

通常来说,符号左边是命令,右边是文档。

但是,说到这里,信息也分为2种,一种是正确的输出,一种是错误的输出。很多用户应该都不想把错误的信息输入到文档中去吧,所以呢?可以通过如下的例子进行操作

ls -al  1> list.txt 2> list.err      这样代表的意思就是,如果是正确的就输入到list.txt里面去,错误的就输入到list.err

ls -al  1>list.txt 2> /dev/null       错误的直接舍弃掉

ls -al  1>list.txt 2>&1     无论正确错误都输入到list.txt中去


这样的话,当屏幕输出的信息很重要时,我们可以存下来;当不希望执行干扰屏幕时,我们可以存到文件中去;正确错误信息需要分类时,我们也可以使用这个。


5.管线命令 (pipe)

既然要往文档中写数据,但是数据也许需要加工几次才有用,比如说last命令显示最近的登录记录,但是也许我只对某一个用户的登录情况感兴趣,于是你得将第一个的结果传给第二个命令,处理以后,你发现原来你感兴趣的只有该用户登录的次数,于是再次传给第三个命令,计算出次数。而起传递作用的,正是管线 “ | "
 
比如上述例子得到次数的命令就应该是 last  |  grep joshua  |  wc -l

介绍一些相关的指令,具体语法暂时不深究,等用到的时候再说

1) cut ,它的作用就是将一些字符或者数据切割一下,通常一般都是前面执行一个啥,然后就得到一份数据,通过管线传给cut

2)sort,排序

3)wc,计算行数,字数,字符数

4)uniq,消除重复行

5)tee

6)tr,用于替换,比如大小写

7)split,也是用于切割,它是用来将文件切割成为文件



<think>好的,我需要回答用户关于在不同操作系统上安装Bash shell的问题。首先,我得确保自己了解Bash在不同系统上的安装步骤。用户提到了参考引用,虽然这些引用主要是关于Linux发行版的默认shell和配置,但可能对安装有帮助。 首先,对于Debian/Ubuntu系统,我记得通常Bash已经预装了,但可能需要更新。用户引用[4]提到使用`sudo dpkg-reconfigure dash`来配置dash,这可能与设置默认shell有关,但安装Bash的话,可能需要用apt命令安装。 然后,CentOS/Fedora系统,应该使用yum或dnf来安装Bash,同样可能默认已安装,但可以更新。 macOS方面,新版本默认使用zsh,但Bash应该仍然存在,不过版本可能较旧。用户可以通过Homebrew安装最新版Bash,并修改shell配置。 至于Windows,用户可以通过WSL安装Linux子系统,这样就能使用Bash。另外还有Git Bash和Cygwin的选项,这些可能更适合不需要WSL的情况。 需要确保步骤准确,比如在修改默认shell时使用`chsh`命令,或者在macos中添加到/etc/shells。同时,提醒用户谨慎操作,避免系统问题。 可能用户还会遇到问题,比如权限不足或者路径错误,所以在回答时要包括sudo的使用和路径检查。另外,引用中的信息如引用[2]提到修改shell路径,引用[3]提到初始化可能需要时间,这些可以作为补充说明。 最后,生成的相关问题需要围绕安装后的配置、问题解决和不同系统使用Bash的方法,这样用户可以有进一步了解的途径。要确保引用标记正确,比如引用[4]在配置dash时提到,可能与设置Bash为默认shell有关联。</think>### 如何在不同操作系统上安装Bash Shell #### 1. **Linux系统(Debian/Ubuntu)** - **安装步骤**: - 大多数Linux发行版(如Ubuntu)默认预装Bash。可通过以下命令验证: ```bash $ bash --version ``` - 若需重新安装或更新: ```bash $ sudo apt update && sudo apt install bash ``` - 配置Bash为默认Shell(若系统使用其他Shell如`dash`): ```bash $ sudo dpkg-reconfigure dash # 选择“否”以保留Bash为默认Shell[^4] ``` #### 2. **Linux系统(CentOS/Fedora)** - **安装步骤**: - 使用`yum`或`dnf`包管理器: ```bash $ sudo yum install bash # CentOS $ sudo dnf install bash # Fedora ``` #### 3. **macOS系统** - **安装步骤**: - macOS默认使用`zsh`,但通常预装旧版Bash(如`bash 3.2`)。 - 通过Homebrew安装最新版Bash: ```bash $ brew install bash ``` - 修改默认Shell: 1. 将Bash路径添加到`/etc/shells`: ```bash $ echo "/usr/local/bin/bash" | sudo tee -a /etc/shells ``` 2. 使用`chsh`命令切换: ```bash $ chsh -s /usr/local/bin/bash ``` #### 4. **Windows系统** - **通过WSL(推荐)**: 1. 启用WSL功能: ```powershell > wsl --install ``` 2. 从Microsoft Store安装Ubuntu等Linux发行版,Bash将自动包含在内[^3]。 - **通过Git Bash或Cygwin**: - 下载Git Bash(包含简化版Bash环境)或Cygwin(完整Unix工具链)。 #### 5. **验证安装** - 输入以下命令确认Bash版本及路径: ```bash $ which bash # 查看Bash路径 $ echo $SHELL # 查看当前Shell ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值