使用bash能更好的完成linux工作
CentOS 默认shell为bash,echo $SHELL获得当前系统使用的shell
shell作为命令行终端,有叫多的版本可供使用,常见的shell有bash csh zsh fish等
bash shell也是经常能听到的一种shell,学习使用bash能更好的完成linux上各种工作
特性不完全总结(一)
命令行展开
~ 波浪号在bash中是用户家目录的作用
{} 花括号中以逗号隔开,将多个元素列出,根据前面的命令分别执行
[root@localhost tmp]# cd ~
[root@localhost ~]#
[root@localhost ~]# mkdir -v /tmp/{a,b,c}
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/b’
mkdir: created directory ‘/tmp/c’
命令历史
bash进程保存会话过程中用户执行过发命令,错误也进行保存
[root@localhost ~]# history
1 ls
2 ifconfig
3 ip addr
4 cd /etc/sysconfig/
history除了能记住敲过的命令,应该是这样来用
!# 调用历史中的第#条命令
!! 调用历史中上一条命令,多次重复使用一个命令时经常使用
!关键字 调用历史中以 关键字开头的命令
快捷键ESC. 调用上一条命令的最后一个参数,经常使用
在写脚本时可以使用 !$ 来调用上一条命令的最后一个参数
命令补全
键入命令时不需要完整键入命令,键入命令前几位字母且唯一时通过使用TAB键自动补全
那些命令在什么时候能进行TAB键命令补全,完全靠使用经验
路径补全
键入某些较长路径时,给出路径前几位字母且唯一时,可以使用TAB键自动补全
命令别名
通过自定义的方式将命令简写,例如系统内默认的命令别名ls
[root@localhost ~]# alias
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
在使用ls命令时会对不同的文件进行颜色区分,实际上是因为在ls命令的基础上增加了 --color=auto的参数,在实际使用过程中这个参数使用率非常高,与其每次键入,不如将其自定义简写,这就是命令别名的作用
命令别名定义方式
alias 简写命令=‘具体的命令’
[root@localhost ~]# alias cdt='cd /tmp'
[root@localhost ~]# cdt
[root@localhost tmp]#
这里的定义时临时定义,用户退出后就无法再使用cdt来进入/tmp,取消是unalias 简写命令
永久自定义可以在.bashrc进行编辑
[root@localhost ~]# vim .bashrc
cdt='cd /tmp`'
[root@localhost ~]# source .bashrc
最常用快捷键
Ctrl+a 光标跳转至命令行行首,最前面
Ctrl+e 光标跳转至命令行行尾,最后面
Ctrl+u 将光标前面的所有字符删除
Ctrl+k 将光标后面的所有字符删除
Ctrl+l 清屏,和键入命令clear效果一致
命令执行状态结果
bash通过数值方式告诉用户键入命令是否执行成功,需要用户自行查看,一般多用于脚本
成功表示0,失败表示1-255,不同命令有不同说明
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]# echo $?
0
[root@localhost ~]# lls
-bash: lls: command not found
[root@localhost ~]# echo $?
127
变量
最最最最简单的方式来说下我理解的变量是什么
变量有很多,为了区分,需要给变量添加名字,这就是变量名
变量是一些具体的值,需要将这些值存放起来方便以后使用,这就是值存放的内存空间
变量=变量名+值的内存空间
如何使用变量?首先进行变量赋值
[root@localhost ~]# dog=1 dog是变量名,将1赋值给dog,变量dog的值就是1
[root@localhost ~]# echo ${dog}
1
使用echo ${dog}查看变量具体的值,删除变量 unset 变量名即可
bash变量还有许多类型用在不同的地方
bash本地变量,仅在当前shell中有效
bash环境变量,当前shell中有效,新开的shell也生效,这叫shell进程及其子进程有效
bash局部变量,一般出现在脚本中
bash位置参数变量,向shell脚本传递参数时使用
特殊变量,$?,这个就是特殊变量