赞
踩
shell是一个程序,可以称之为壳程序,用于用户与操作系统进行交互。用来区别与核,相当于是一个命令解析器,Shell有很多中,这里列出其中几种
各个shell的功能都差不太多,在某些语法的下达下面有些区别,Linux预设就是bash。这里主要介绍bash
bash命令是sh命令的超集,大多数sh脚本都可以在bash下运行,bash主要有如下这些功能
alias ll='ls -al'
来设置命令的别名*
type 命令
来查看某个命令是否为内建在bash当中的命令「bash中变量有两种,分别是环境变量和自定义变量,可以理解为全局变量和局部变量,在理解他们的区别前,需要知道父程序和子程序,举个例子,当前的bash我们称之为父程序,而在这个bash下执行的任何程序,都称之为子程序。那全局变量和局部变量的区别就是,全局变量在子程序中仍然有效,局部变量只在当前程序中生效。(注意,一旦退出父程序这个bash的话,无论是全局变量还是局部变量都失效了,再次打开bash时,该变量是不存在的)
变量范围
变量的设定有几个规则,这里列举如下:
$()
变量类型
bash中变量类型有两种,一种是普通的字符串,一种是整数;设置变量的类型使用的是declare命令,delcare的命令格式如下
declare -[axir] variable
参数的意思:
-a
:将variable定义为数组-i
:将后面的变量设置为整数类型-x
:与export一样,将后面的变量设置为环境变量-r
:将后面的变量设置为只读变量定义数组
var[index]=content
删除变量使用如下命令
查看单个命令的内容,可以使用echo命令,使用echo $变量名
就可以查看变量内容,另外如果要查看所有变量有3个命令,分别是如下几个命令,每个命令又有区别。
echo $变量名
:用于显示制定变量env
:用来查询环境变量,set
:显示shell变量,包括私有变量与用户变量,不同的shell有不同的私有变量,在shell中设置变量之后,可以通过set查到export
:显示当前导出成用户变量的shell变量,也是用来查询环境变量的,shell的私有变量不会出现在shell中设置的变量,无论是环境变量还是自定义变量,在bash中注销登录之后,就失效了。下次登录时,是没有这些变量的,如果想要这些变量永久生效,是需要下如配置文件的,bash在启动时,会读取这个配置文件,来设置当前shell的各种变量。shell分为两种,分别是login shell和nonlogin shell,这里先说login shell;login shell是需要输入用户名和密码的,一般情况下,login shell在登录之后,会去读取两个文件,来设置当前shell的环境变量,分别是
shell在读取/etc/profile中的文件之后,会去读取用户自定义的设置文件,按照顺序读取上文中所说的自定义设置文件,只要找到其中任何一个,就不再继续。在用户自定义的配置文件中,都会调用~/.bashrc这个文件,来配置当前的这个shell
/etc/profile或者~/.bash_profile都是在登录的时候才去读取,如果将自己的一些设置到这些文件之后,一般都需要重新登录一次shell才会生效,也可以使用source这个命令,来读取配置文件的内容到当前的这个shell
数据重导向,表示将数据从一个地方导向到另外一个地方,在linux的bash中,有两种输出,分别是
有时候,我们需要将标准输出或者错误输出保留到某个文件中,方便以后你查询,这种情况下,就需要数据流重导向,也就是将输出到屏幕的信息导向到一个文件中。而导向又分为标准输出导向和错误输出导向
在linux中一个特殊的装置,是/dev/null,所有将导向到这个装置的数据都会被丢弃,相当与删除数据。
有时候,我们需要将标准输出和错误输出导出到文件中,则可以使用符号 2>&1,这个符号是连在一起的,表示将错误和标准输出一起输出。
除了输出之外,还有输入,
常用的关系命令有如下几个,具体的用法可以查询man文件
命令别名
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中
历史命令的读取与记录如下:
history -w
命令来强制更新可以使用!来执行历史命令,如下:
!2 //执行历史命令中的第二个命令
!command //从最见的命令往前搜,查找以command开头的命令
!! //执行上一个指令
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。