bash及基础特性
Shell:命令解释器,其程序存在于用户空间,是人机交互的屏障,对内核起保护作用。
(bash、ksh、csh)
Bash (GNU Bourne-Again Shell) 是大多数Linux系统以及Mac OS X默认的shell,是一个为GNU计划编写的Unix shell,是一个程序,是一个gun软件。它能运行于大多数类Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
bash基础特性之一:补全(命令补全、路径补全)
bash 基础特性之二:快捷键
ctrl+c 终止前台运行的程序 //ping 192.168.0.152
ctrl+d 退出 等价exit
ctrl+l 清屏
ctrl+a 光标移到命令行的最前端 //编辑命令
ctrl+e 光标移到命令行的后端 //编辑命令
ctrl+u 删除光标前所有字符 //编辑命令
ctrl+k 删除光标后所有字符 //编辑命令
ctrl+r 搜索历史命令,利用关键词
bash 基础特性之三:命令历史
(1)查看历史命令:
[[email protected] ~]# history
(2)历史命令将保存在用户家目录下的 .bash_history 文件中。
[[email protected] ~]# vim .bash_history
(3)不同用户将拥独立的历史命令。
(4)历史命令默认不会立即写入文件,当bash程序退出时,写入文件。
(5)保持历史命令存在安全隐患,系统默认保存1000条历史命令。
[[email protected] ~]# echo $HISTSIZE
修改历史命令保存条目:
临时:
[[email protected] ~]# HISTSIZE=10
永久:
[[email protected] ~]# vim /etc/profile
[[email protected] ~]# source /etc/profile
(6)如何给历史命令添加时间戳?
[[email protected] ~]# vim /etc/profile
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
[[email protected] ~]# source /etc/profile
/etc/profile
使用修改.bashrc文件(在用户的家目录下)进行环境变量的编辑,只对当前用户有用。使用修改 /etc/profile 文件进行环境变量的编辑,是对所有用户有用。
在profile文件添加或修改的内容需要注销系统才能生效。
常见的环境变量
PATH:决定了shell将到哪些目录中寻找命令或程序
HOME:当前用户主目录
MAIL:是指当前用户的邮件存放目录。
SHELL:是指当前用户用的是哪种Shell。
HISTSIZE:是指保存历史命令记录的条数。
LOGNAME:是指当前用户的登录名。
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
PS1:是基本提示符,对于root用户是#,对于普通用户是$。
PS2:是附属提示符,默认是“>”。
[[email protected] ~]# HISTFILE="/.xuankui" :修改历史命令的路径和文件名
[[email protected] ~]# echo $HISTFILE
/root/.bash_history
[[email protected] /]# echo $HISTTIMEFORMAT
[[email protected] /]# HISTTIMEFORMAT=`date` HISTTIMEFORMAT:打印时间戳
[[email protected] ~]# HISTFILESIZE=1024 HISTFILESIZE:限制历史命令文件大小
[[email protected] ~]# HISTSIZE=1000 HISTSIZE:历史条目
!108 #执行第108个历史命令
!+命令首字母:执行最近以本首字母开头的命令
!!:执行上条命令
.+ESC :取出上一条参数到命令行
!$:取出上一条参数并执行
echo $_:打印出上一条命令的参数
bash基础特性之四:别名机制
[[email protected] ~]# alias vimif="vim /etc/sysconfig/network-scripts/ifcfg-ens32" #定义别名
[[email protected] ~]# \vimif
[[email protected] ~]# ls
[[email protected] ~]# \ls #还原命令本身
[[email protected] ~]# \ls --color=auto
[[email protected] ~]# unalias vimif #取消别名
bash 基础特性之五:变量
变量是计算内存的单元,其中存放的值可以改变,当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用的信息,是系统获知用户相关设置,变量也可以用于保存暂时信息。在Linux系统中,变量分为了本地变量,局部变量,环境变量
本地变量:生效范围为当前shell进程中的某代码片段,通常指函数
局部变量:又称标准变量或普通变量,指生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
name=dada
环境(全局)变量:生效范围为当前shell进程及其子进程
export name=dada
sh test.sh #直接使用sh来执行脚本文件
以 .sh 为后缀的文件是Linux/Unix操作系统下的一种脚本文件
bash 基础特性之六:特殊重要符号
管道
管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间
进程管道
(0表示标准输入,1表示标准输出,2表示标准错误)
例:
进程间的通信方式:
管道、共享内存、消息队列、套接字(socket)
tee管道
在数据流的处理过程中将某段信息保存下来,使其既能输出到屏幕又能保存到某一个文件中。
[[email protected] ~]# ip addr |grep 'inet ' |tee ip.txt |awk -F"/" '{print $1}' |awk
'{print $2}'
127.0.0.1
192.168.1.151
[[email protected] ~]# cat ip.txt
inet 127.0.0.1/8 scope host lo
inet 192.168.1.151/24 brd 192.168.1.255 scope global eth0