Linux之bash介绍

Shell的介绍

shell是一个程序,可以称之为壳程序,用于用户与操作系统进行交互。用来区别与核,相当于是一个命令解析器,Shell有很多中,这里列出其中几种

  • Bourne SHell(sh)
  • Bourne Again SHell(bash)
  • C SHell(csh)
  • KornSHell(ksh)
  • zsh

各个shell的功能都差不太多,在某些语法的下达下面有些区别,Linux预设就是bash。这里主要介绍bash

bash

bash命令是sh命令的超集,大多数sh脚本都可以在bash下运行,bash主要有如下这些功能

bash功能

  • 记录历史命令:bash可以记录曾经的命令,保持在~/.bash_history文件中,只保存上次注销登录之后的命令
  • tab键自动补全:使用tab见可以自动不全命令或者目录i
  • alias命令别名:可以使用alias ll='ls -al'来设置命令的别名
  • 工作控制:可以将某些任务放在后台去运行,这里不多种介绍
  • 程序脚本:可以执行shell脚本文件
  • 通配符:在查找相关文件或者执行相关命令时,可以使用通配符*
  • 内建命令type:可以使用type 命令来查看某个命令是否为内建在bash当中的命令「

bash变量

bash中变量有两种,分别是环境变量和自定义变量,可以理解为全局变量和局部变量,在理解他们的区别前,需要知道父程序和子程序,举个例子,当前的bash我们称之为父程序,而在这个bash下执行的任何程序,都称之为子程序。那全局变量和局部变量的区别就是,全局变量在子程序中仍然有效,局部变量只在当前程序中生效。(注意,一旦退出父程序这个bash的话,无论是全局变量还是局部变量都失效了,再次打开bash时,该变量是不存在的)

变量范围

变量的设定

变量的设定有几个规则,这里列举如下:

  • 设定变量通过=来链接,例如name=sujinzhou,两边不能有空格,如果有空格的话,需要用引号
  • 变量名只能是英文名和数字,只能是英文开头
  • 如果变量内容被引号扩起来的话,双引号和单引号是有区别的
  • 双引号里面的特殊字符,会保持原有的特性。
  • 单引号里面的特殊字符,只会是字符
  • 使用\将特殊字符转换为一般字符
  • 使用``这个符号扩起来的命令会先计算这个命令里面的内容,这个指令等价于$()
  • 给原有的变量添加值时,使用 变 量 , " {变量}," ,"变量"再加具体的内容

变量类型

bash中变量类型有两种,一种是普通的字符串,一种是整数;设置变量的类型使用的是declare命令,delcare的命令格式如下

declare -[axir] variable

参数的意思:

  • -a:将variable定义为数组
  • -i:将后面的变量设置为整数类型
  • -x:与export一样,将后面的变量设置为环境变量
  • -r:将后面的变量设置为只读变量
    如果declare命令没有接任何变量的话,则表示显示所哟的

定义数组

var[index]=content
变量的删除

删除变量使用如下命令

  • unset 变量名
变量的查看

查看单个命令的内容,可以使用echo命令,使用echo $变量名就可以查看变量内容,另外如果要查看所有变量有3个命令,分别是如下几个命令,每个命令又有区别。

  • echo $变量名:用于显示制定变量
  • env:用来查询环境变量,
  • set:显示shell变量,包括私有变量与用户变量,不同的shell有不同的私有变量,在shell中设置变量之后,可以通过set查到
  • export:显示当前导出成用户变量的shell变量,也是用来查询环境变量的,shell的私有变量不会出现
Bash shell的操作环境

在shell中设置的变量,无论是环境变量还是自定义变量,在bash中注销登录之后,就失效了。下次登录时,是没有这些变量的,如果想要这些变量永久生效,是需要下如配置文件的,bash在启动时,会读取这个配置文件,来设置当前shell的各种变量。shell分为两种,分别是login shell和nonlogin shell,这里先说login shell;login shell是需要输入用户名和密码的,一般情况下,login shell在登录之后,会去读取两个文件,来设置当前shell的环境变量,分别是

  1. /etc/profile:这个配置文件是默认配置文件,是系统整体的设置
  2. ~/.bash_profile或者~/.bash_login或者~/.profile:这个是用户的自定义设置文件

shell在读取/etc/profile中的文件之后,会去读取用户自定义的设置文件,按照顺序读取上文中所说的自定义设置文件,只要找到其中任何一个,就不再继续。在用户自定义的配置文件中,都会调用~/.bashrc这个文件,来配置当前的这个shell

/etc/profile或者~/.bash_profile都是在登录的时候才去读取,如果将自己的一些设置到这些文件之后,一般都需要重新登录一次shell才会生效,也可以使用source这个命令,来读取配置文件的内容到当前的这个shell

数据流重导向

数据重导向,表示将数据从一个地方导向到另外一个地方,在linux的bash中,有两种输出,分别是

  • 标准输出:输出在屏幕当中的正常的提示信息,或者正常的返回值
  • 错误输出:命令执行出错时,显示在屏幕当中的出错信息

有时候,我们需要将标准输出或者错误输出保留到某个文件中,方便以后你查询,这种情况下,就需要数据流重导向,也就是将输出到屏幕的信息导向到一个文件中。而导向又分为标准输出导向和错误输出导向

  • 标准输出重导向:代码为1,使用>或者>>
  • 错误输出重导向:代码为2,使用2>或者2>>

在linux中一个特殊的装置,是/dev/null,所有将导向到这个装置的数据都会被丢弃,相当与删除数据。

有时候,我们需要将标准输出和错误输出导出到文件中,则可以使用符号 2>&1,这个符号是连在一起的,表示将错误和标准输出一起输出。

除了输出之外,还有输入,

  • 标准输入重导向:代码为0,使用<
    某些由键盘输入的数据,可以使用标准输入重导向,从文件中输入数据。
管线命令

常用的关系命令有如下几个,具体的用法可以查询man文件

  • 选择命令
    • cut
    • grep
  • 排序命令
    • sort
    • wc
    • uniq
  • 双向重导向
    • tee
  • 字符转换命令
    • tr
    • col
    • join
    • paste
    • expand
  • 分割命令
    • split
其他

命令别名

alias             //显示所有的命令别名
alias rm='rm -i'  //设置命令别名
unalias rm        //删除命令别名

历史命令

使用history命令,可以显示当前shell的内存中保存的历史记录命令,这里每个shell的历史记录命令是独立的,bash在退出的时候会自动将内存中的历史命令写入到histfiles中,也可以手动将当前shell内存中的历史命令同步回histfiles中,如果想从当前shell A读取另一个shell B中的历史命令了,需要在B这个Shell中先使用命令history -w将内存中的命令写入到histfiles中,然后在A这个shell中使用history -r来将histfiles中的命令读取到内存中

history n     //显示最近的n笔命令的意思
history -c    //将shell中所有的history命令全部删除
history -a    //将目前新增的指令加入到histfiles中,如果不存在,则加入到~/.bash_history中
history -w    //将内存中的history指令保持到histfile中
history -r    //将histfile中的指令读取到这个shell中

历史命令的读取与记录如下:

  • 当使用bash登录后,去~/.bash_history中读取历史命令
  • 注销当前bash时,会将最近的HISTFILESIZE笔命令更新到~/.bash_history中,也可以使用history -w命令来强制更新

可以使用!来执行历史命令,如下:

!2          //执行历史命令中的第二个命令
!command    //从最见的命令往前搜,查找以command开头的命令
!!          //执行上一个指令
  • 34
    点赞
  • 186
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux是一种操作系统,而-bashLinux中的一种shell(命令行解释器),它允许用户在命令行中输入命令并执行它们。-bashLinux默认的shell之一,它提供了许多有用的功能和命令,使用户能够更轻松地管理和操作系统。 ### 回答2: Linux -bash 是指 Linux 系统中的 Bash(Bourne Again SHell)终端或命令行界面。 Bash 是一种常用的 Unix shell,它是用于管理和执行命令行操作的基础工具。它允许用户在 Linux 系统上输入和执行各种命令,与系统进行交互,并管理文件和文件夹。 Linux -bash 提供了一个交互式环境,用户可以在其中执行各种命令。它可以用于执行系统管理任务,如安装软件包、配置网络设置、管理用户和权限等。此外,还可以使用 bash 脚本编写批量处理任务,实现自动化和脚本化操作。 在 -bash 终端中,用户可以使用各种命令来探索文件系统、浏览文件和文件夹、编辑文本文件等。用户可以通过输入命令和参数,实现不同的操作和功能,比如复制、移动、删除文件,修改文件权限等等。 -bash 终端也提供了强大的命令行编辑和历史纪录功能。用户可以使用上下箭头键浏览之前输入的命令,并进行修改和再次执行。此外,可以使用 Tab 键进行自动完成操作,节省输入命令的时间和工作量。 总而言之,Linux -bashLinux 系统中常用的命令行界面,在系统管理、文件操作和批处理方面提供了丰富的功能和灵活性,是 Linux 用户和系统管理员必不可少的工具之一。 ### 回答3: Linux的-bash是一种命令行解释器,也称为Bourne Again SHellBash是Unix操作系统中最常用的shell之一,由于Linux是基于UNIX的,因此Bash也成为了Linux中最常用的shell。 -bash表示当前用户所使用的shell环境是Bash。在Linux系统中,当我们打开终端或者SSH登录到服务器时,会自动进入一个shell环境,这个环境中我们可以使用各种命令来执行各种操作。 Bash是一个功能强大且灵活的shell,它支持大量的命令,可以用于管理和操作文件、目录、进程、权限、网络等各个方面。通过Bash,我们可以输入命令并执行,也可以编写shell脚本来进行自动化操作。 在-bash下,我们可以使用各种命令来管理Linux系统,比如ls命令用于列出当前目录下的文件和子目录,cd命令用于切换目录,pwd命令用于显示当前所在的目录,mkdir命令用于创建新的目录,rm命令用于删除文件和目录,等等。 此外,Bash还支持各种运算符和控制结构,允许我们编写复杂的shell脚本来自动化任务。我们可以使用if语句来进行条件判断,使用for和while循环来进行重复操作,还可以通过管道(|)来连接多个命令,实现更复杂的操作。 总之,Linux的-bash是一种强大的命令行解释器,它为我们提供了丰富的命令和功能,使我们能够高效地管理和操作Linux系统。无论是日常使用还是系统管理,熟练掌握-bash都是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值