day 23 Linux Shell基础
8.1 shell介绍
- shell 是一个命令解释器,提供用户和机器之间的交互
- 支持特定语法,比如逻辑判断、循环
- 每个用户都可以有自己特定的shell
- CentOS7 默认shell为bash
- 历史命令存放在当前用户家目录下.bash_history文件中
- #history --#可以查看历史命令,环境变量HISTSIZE的值为1000,表示历史命令最大可存1000条,有时候通过history查看时,会显示大于1000的历史命令,此时这些命令只是暂时存在内存中,只有退出终端后,内存中的历史命令才会保存到.bash_history文件中去
- #history -c --#将当前内存中的历史命令清空,但不能清空.bash_history中的历史命令
- 环境变量HISTSIZE在/etc/profile中定义,若修改该变量要使之生效,需要退出终端重新登录或者执行命令#source /etc/profile
- 使用命令HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 可以记录命令执行的时间,若使之在其它终端中也生效,只需编辑/etc/profile,将其加到变量HISTSIZE下一行即可,并运行#source /etc/profil
- 若想永久保留历史命令,不想被删除与破坏,可以给.bash_history文件增加一个隐藏权限a,使该文件只能增加内容,不能删除: #chattr +a ~/.bash_history, 如果输入了很多命令,但是没有执行exit或logput退出终端,而是直接关闭终端,那么刚才输入的一系列命令会记录不全
- !! --#表示上一条命令(历史命令中最近一条命令)
- !n --#表示运行历史命令中第n条命令
- !cmd --#会在历史命令倒着向上搜寻,第一个以该命令(关键字)开头的命令执行
- tab键 --#敲一下,匹配命令或参数, 敲两下,显示匹配信息供选择
- #yum install -y bash-completion --#安装bash-completion,实现命令的参数补全,重启系统生效,例如systemctl restart
- #alias --#列出系统所有别名,包括自定义的别名
- #alias 命令别名='原命令' --#给命令取一个别名,例如alias restartnet=‘systemctl restart network.service’
- 通常系统默认的别名配置文件存在于~/.bashrc文件和/etc/profile.d/目录下各对应文件(比如colorls.sh、colorgrep.sh)中
- 各用户都有自己配置别名的文件: ~/.bashrc,自定义的别名放置到该文件中
- #unalias 命令别名 --#取消某个命令的别名设置
- * --#任意多个字符
- ? --#一个任意的字符
- [ ] --#方括号中的字符任选其一,可以是一个字段或数字范围,比如:[0-9]、[a-zA-Z]、[234]、[cgkn]、[0-9a-zA-Z]
- { } --#花括号当中的一个,或的关系,其中内容用逗号“,”隔开,如{1,2,a}
8.5 输入输出重定向
- > --#输出重定向,“cmd > 文件”,将前一个命令执行成功的输出结果重写到文件当中
- >> --#追加重定向,“cmd >> 文件”, 将前一个命令执行成功的输出结果追加到文件当中
- 2> --#错误重定向, “cmd 2> 文件” ,将前一个命令执行错误的结果重写到文件当中
- 2>> --#错误追加重定向, “cmd 2>> 文件” ,将前一个命令执行错误的结果追加到文件当中
- &> --#结合了命令执行成功和错误的输出结果,重写到同一个文件中,如下图
- &>> --#结合了命令执行成功和错误的输出结果,追加到同一个文件中,如下图
- cmd> file12> file2 --#将前一个命令执行成功与错误的输出结果分别重写到对应的文件中
- < --#输入重定向,“cmd < file” ,将后面文件中的内容输出到前面的命令或文件中,前面必须是命令