1.shell介绍与命令历史
什么是shell
- shell 是一个命令解释器,提供用户和机器之间的交互
- 支持特定语法,比如逻辑循环,判断
- 每一个用户都可以有自己的特定shell
- Centos7默认shell为bash
- 还有zsh,ksh等
命令历史
- history命令,可以查看以前输入过的所有命令,.bash_history 用来存放命令历史记录
- history -c ,清空当前内存的命令历史,不过已经保存在文件的命令历史,不会删除
- echo $HISTSIZE 用来查看可以存放的命令条数
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S 给我们命令历史加上显示使用日期的时间,这里只是临时更改。
- chattr +a ~/.bash_history 给我们的历史命令文件夹加上特殊权限这样别人就不能删除了,就算我们的变量设置的2000,就算到2000了系统也无法删除,永久保存
- !!从新使用上一条命令,然后再次使用
- !n使用命令历史中的第几条命令,然后再次使用
- !world从后往前数找到最近以world开头的命令,然后再次使用
2.命令补全和别名
yum install -y bash-completion 安装参数补全软件
- unalias 自定义之后的别名 取消别名的命令
- vi .bashrc.bashrc 这个系统自带的文件
- vi colorls.sh还有两个文件是在目录/etc/profile.d/里面,分别是colorls.sh和colorgrep.sh
3.通配符 输入输出重定向
- *表示任意字符
- ?表示一个任意的字符
- ls [0-9].txt ,包含在方括号里的范围任选其一都会显示出来
- ls {1,2}.txt , 包含在花括号里的任选其一
输入输出重定向
- >将前面命令的输出输入到后面的文件里,而且是重写
- >>将前面命令的输出输入到后面的文件里,它是追加内容,不会删除里面的内容
- > 将这个命令的正常信息输出到一个文件里
- 2> 将这个命令的错误信息输出到一个文件里
- 可以一条命令分别指定正确和错误的信息输出到指定的文件
- wc -l <1.txt 将文件的内容输入重定向到前面的命令里面去,只能输入到命令里
4.管道符与作业控制
- | 把一个文件输出的内容传递给后面的一个命令
- ctrl+z 可以暂停当前任务,其实他是放在后台运行了
- fg 将后台运行任务调到前台来
- jobs 查看后台运行的任务
- bg 把任务调到后台去运行
- &命令后面直接加&会将运行的命令直接丢到后台去运行
- sleep 1000暂停1000秒
5.shell变量
- env 获取变量信息,查看系统内置的变量
- set 获取变量信息,不仅查看系统内置的变量,而且包含用户自定义的变量
- 自定义变量 ,可以在set里找到
- 变量名的规则:字母,数字下划线,首位不能是数字
- 变量值有特殊符号的时候,要用单引号括起来(最好用单引号)
- 变量的累加,用你双引号引起来
全局变量
- w 查看当前有几个用户登录系统
- echo $SSH_TTY 查看自己当前在哪个下
- bash 打开另外一个bash,相当于打开一个新的终端
- pstree 查看
- 配置全局变量,只需要export一下,就行
- 这个所谓全局变量是向下全局变量的,不会在上级shell生效
- unset 用来取消变量
6.环境变量配置文件
-
分为两个维度,分别是系统层次,用户层次
-
系统层次
-
etc/profile 用户环境变量,交互,登录才执行
-
etc/bashrc 用户不用登录,执行shell就生效
-
用户层次
-
~/.bashrc
-
~/.bash_profile
-
~/.bash_history
-
~/.bash_logout
-
一般都是编辑用户下的配置文件
-
想让自定义环境变量全局生效就写在/etc/profile文件里面
- /bash_logout 用来编辑用户退出的时候,执行哪些命令
- PA1变量是在 /etc/.bashrc里面定义的
7.bash_profile和bashrc区别
- 【.bash_profile 与 .bashrc 的区别】
.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.
- 【login shell 与 non-login shell 的区别】
- 当你直接在机器login界面登陆、使用ssh登陆或者su切换用户登陆时,.bash_profile 会被调用来初始化shell环境
- Note:.bash_profile文件默认调用.bashrc文件
- .bash_profile中有如下内容
- if [ -f ~/.bashrc ]; then
- . ~/.bashrc
- fi
- 当你不登陆系统而使用ssh直接在远端执行命令,.bashrc 会被调用
- 当你已经登陆系统后,每打开一个新的Terminal时,.bashrc 都会被再次调用