8.1 shell介绍
每个用户都可以有自己的shell
8.2 命令历史
查看命令历史
[root@linux-01 ~]# history
1 head
2 id
3 bind
4 cd /etc/grub.conf
5 ls -l /etc/grub
6 ls -l /etc
7 yum install -y lrzsz
# 命令历史配置文件
[root@linux-01 ~]# ls /root/.bash_history
/root/.bash_history
[root@linux-01 ~]# cat /root/.bash_history
yum install zsh --downloadonly
ls /var/cache/yum/x86_64/7/
yum list zsh
ls /var/cache/yum/x86_64/7/base
ls /var/cache/yum/x86_64/7/base/packages/
yum install zsh --downloadonly --downloaddir=/tmp/
ls /tmp/
# 命令保存数是由环境变量决定暂时保存在内存中
[root@linux-01 ~]# echo $HISTSIZE
1000
[root@linux-01 ~]# history -c #清空内存中的命令历史 但不会清空命令历史配置文件
命令历史只有在退出终端是才会保存到。bash_history 文件里
环境变量HISTSIZE修改
修改完后需要重新进入终端或者使用命令
指定历史时间格式
永久保存命令历史
添加隐藏属性 只允许追加
!!
重复上一条命令
! n
运行第n条命令
! word 重复历史中最近 ‘word’ 开头的命令
874 2019/07/11 20:46:02 echo $HISTTIMEFORMAT
875 2019/07/11 20:46:06 vim /etc/profile
876 2019/07/11 20:46:29 logout
877 2019/07/11 20:46:55 history
[root@linux-01 ~]# !ls
ls /usr/local/apache2/
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@linux-01 ~]# ! echo
[root@linux-01 ~]# !echo
echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
命令补全 按两下tab 键
安装参数补全
[root@linux-01 ~]# yum install bash-completion
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 6.8 kB 00:00:00
* epel: mirrors.tuna.tsinghua.edu.cn
重启后可以使用
添加别名
删除自定义别名
自定义多数放在这
> 把前面命令的输出 直接输到后面的文件里
>> 不会把前面的删除 是追加
2> 会把前面的错误输出 放后后面的文件 里
错误和正确的输出
输入重定向
ctrl + z 暂停一个任务
使用fg恢复任务
[root@linux-01 ~]# vim 1233.txt
[1]+ 已停止 vim 1233.txt
[root@linux-01 ~]# fg
vim 1233.txt
jobs 查看已停止后台任务
fg +任务编号
bg 2 添加后台任务
[root@linux-01 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 546000 2200 304580 0 0 33 11 58 73 0 0 99 0 0
0 0 0 545976 2200 304580 0 0 0 0 54 53 0 0 100 0 0
0 0 0 545976 2200 304580 0 0 0 0 45 38 0 0 100 0 0
^Z
[1]+ 已停止 vmstat 1
# 暂停任务
[root@linux-01 ~]# fg
#恢复到前台
vmstat 1
3 0 0 545976 2200 304580 0 0 0 0 349 348 0 0 100 0 0
0 0 0 545976 2200 304580 0 0 0 0 40 40 0 1 99 0 0
0 0 0 545976 2200 304580 0 0 0 0 44 44 0 0 100 0 0
0 0 0 545976 2200 304580 0 0 0 0 42 47 0 0 100 0 0
^Z
[1]+ 已停止 vmstat 1
[root@linux-01 ~]# bg
#放到后台运行
[1]+ vmstat 1 &
[root@linux-01 ~]# 0 0 0 545976 2200 304580 0 0 0 0 51 58 0 0 100 0 0
0 0 0 545976 2200 304580 0 0 0 0 39 44 0 0 100 0 0
1 0 0 545976 2200 304580 0 0 0 0 35 38 0 0 100 0 0
0 0 0 545976 2200 304580 0 0 0 0 41 40 0 0 100 0 0
0 0 0 545976 2200 304580 0 0 0 0 49 50 0 1 99 0 0
0 0 0 545976 2200 304580 0 0 0 0 49 56 0 0 100 0 0
f 0 0 0 545976 2200 304580 0 0 0 0 40 46 0 0 100 0 0
g
#恢复到前台
vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 545976 2200 304580 0 0 0 0 53 67 0 0 100 0 0
1 0 0 545976 2200 304580 0 0 0 0 37 38 0 1 99 0 0
^C
#停止任务
[root@linux-01
暂停1000秒
获取系统常用变量
[root@linux-01 ~]# env
XDG_SESSION_ID=9
HOSTNAME=linux-01
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.96.1 13371 22
SSH_TTY=/dev/pts/0
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.96.1 13371 192.168.96.135 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env
自定义的变量
变量命名规则:字母、数字下划线,首位不能为数字
变量值有特殊符号时需要用单引号括起来
变量叠加
/etc/ 文件为系统层的 ~/.bash 为用户登录是会加载
/.bash_logout
用户定义用户退出时做的操作 例如退出时删除命令历史 就可以将删除命令历史的命令放/.bash_logout
PS1='\ [\033[01;32m\] \u@\h\ [\033[00m\] :\ [\033[01:36m\] \W\ [\033[00m\]\$'
Linux系统下的终端命令提示符设置(PS1)_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2016-10/136597.htm
Linux下PS1、PS2、PS3、PS4使用详解 - CSDN博客 https://blog.csdn.net/rainharder/article/details/54573021
shell特殊符_cut命令
“$” 调用变量
注释字符
命令前加“#” 号 代表后面的内容已变为注释,命令不会执行
脱义符
管道符
cut命令
sort
以ASCII码表为排序方式
特殊符号排在最前面,前面相同时以后一位为排序
-n 以数字由小到大排序、特殊符号、字母视为零
-r 以数字由大到小排序
wc -m 统计字符数
cat -A 可以查看换行符“$”
wc -w 统计词 #以空格区分
先排序再去重
sort、 uniq、wc、 cat、head 等只对文件做排序操作不会改变文件
使用“tee” 会将文件进行排序并保存修改
清空文件
tee -a 追加
将小写a 替换成大写 支持写多个
将所有 小写替换成大写
将所有 小写替换成数字
-b:值为每一输出档案的大小,单位为 byte。
-C:每一输出档中,单行的最大 byte 数。
-d:使用数字作为后缀。
-l:值为每一输出档的行数大小
实验准备
分割成100k 一个文件
以abc 为命名前缀
以行数作为分割条件
分号
“||” 在shell 代表或
第一个命令失败时执行第二个命令
第一个命令成功时不会执行第二个命令
“&&”
第一个命令成功时才会执行第二个命令
例:
判断目录是否存在