天天看点

第九课预习笔记

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

第九课预习笔记
第九课预习笔记