第九课预习笔记
8.1 shell介绍
8.2 命令历史
8.3 命令补全和别名
8.4 通配符
8.5 输入输出重定向
8.6 管道符和作业控制
8.7/8.8 shell变量
8.9 环境变量配置文件
扩展
bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719
Linux shell 基础
查看是否安装zsh和ksh
命令历史
历史命令保存在用户家目录下的.bash_history文件中
使用history查看之前的历史命令
查看最多可以存多少条
history -c 清空内存中的命令缓存,但是不会删除.bash_history
修改最大历史命令数量
可以改成5000
发现并没有生效
需要source一下,才能生效。
查看命令运行的具体时间
从另外一个终端查看这个变量,发现没有生效。说明只对当前终端生效,如果想对所有终端生效。可以编辑配置文件/etc/profile
然后source一下
从新打开一个终端,成功!
万一别人删除了这个文件,就看不到过去的命令了,那么怎么办呢?可以赋予此文件一个a权限,只能追加。
如果没有logout或者exit退出,而是直接关闭终端的话,那么内存中的命令,不会全部保存到.bash_history中。
!!表示最后一条命令
!n表示运行指定一条命令
例如
!echo表示从命令历史中的最后一条开始,往前找以echo开头的命令。
命令补全和别名
若命令是唯一的,按一下tab键就可以补全
若不是唯一,按一下tab键没有反应,按两下可以列出所有以此开头的所有命令。
tab一下,自动补全。
安装一个参数补全的包,重启生效。
重启后,查看包已经安装好
成功实现参数补全
如果命令太长,可以使用alias重命名
用户家目录下的.bashrc下有三条
但是这些远远不够,还有一些存在于/etc/profile.d/下
取消自定义别名
通配符
*表示通配,不限制长度
?表示通配一个字符
[0-9] 指定数字范围,作用和[0123456789]一样
还有[a-z] [A-Z]。
{0,1,2,3,4}花括号需要用逗号间隔开来
>把前面正确内容覆盖到后面文件
2>错误信息覆盖到后面文件
>>把前面正确内容追加到后面文件
2>>错误信息追加到后面文件
>+2> == &> 把正确和错误的信息都覆盖到后面文件
&>>把正确和错误的信息都追加到后面文件
也可以将正确和错误信息分开输出到不同文件中
< 输入重定向
管道符和作业控制
管道符的作用是将前方的结果输出给后方
统计1.txt有多少行
过滤1.txt中包含root的信息
暂停一个任务
fg 继续执行暂停的任务
列出停止的任务
继续某一个任务
可以使用bg命令后台运行
命令后加入&,表示直接在后台运行此命令
在其余终端,无法查看当前终端的后台任务
但是可以在其他终端通过 ps aux |grep sleep查看到进程
shell变量
env获取系统变量
set也可以查看变量,除系统自带的以外,还有用户自定义的变量。
自定义变量
变量名规则:字母、数字和下划线都可以,但是首位不能是数字
变量值如果有特殊符号,需要用单引号括起来。
那么能不能用双引号呢?有时候会出问题
所以这里用单引号。
变量的叠加的时候用双引号
对比单引号和双引号的区别。
单引号中的内容不变,不识别为变量。双引号中的内容可以识别为变量。
w查看当前系统有哪些用户登录
找到自己是哪个终端登录的
在1终端中定义一个变量
在2终端中不生效
pstree是linux很有用的一个命令,可打印系统当前各个进程父子关系
首先安装pstree,然后使用此命令
在1终端中做如下设置,可以使1终端的子shelle也可以显示这个变量
但是在2终端中还是无法查看此变量。
只对红框内的bash生效
对红框下方的shell不起作用。
而且对同一终端中,变量是从父shell往子shell生效。
如果在子shell中定义变量,那么在父shell中并不生效。
取消变量
全局变量只在子shell中生效,如何打开子shell呢,直接运行bash命令。
环境变量配置文件
编辑用户的.bash_profile,变量只对该用户生效。
source和.的作用一样,但是不能放在sh 后面 只能放在最前面
系统的环境变量有两大类:一个是系统层次的,即/etc下的。另一个是用户层次的,即用户家目录下的.bash_profile或.bashrc。
.bash_profile是用户登录时,自动加载profile,profile会自动调用.bashrc
.bashrc用户无需登录,可以在系统中执行shell脚本,执行时可以自动调用.bashrc中的配置。
用户在logout时候执行哪些命令
PS1在/etc/bashrc中定义
root是用户名 localhost是主机名 ~是所在目录
格式如下
将W改为w
所在目录变为绝对路径
也可以不加[]
也可以改成<>
还可以带颜色显示
用户登录进来就是PS1。除了PS1还有PS2。
执行某些命令的时候会进入此状态
也可以重定义PS2