Shell的介绍


 Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制

  zsh、ksh(yum list |grep zsh 进行查看,然后可以相应的进行安装

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_02

        

                 命令历史

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_03

1. /root/.bash_history  (此文件存放着我们敲过的命令)



2. history (可以查看到我们之前使用过的命令有多少条。最大可以存1000条)

使用环境变量可以查看到存放了多少条命令 echo $HISTSIZE 

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_04


3. history -c 此命令是清除内存中我们敲过的缓存命令(当我们在当前终端敲命令时,它并不会立马保存到配置文件中,而是缓存在内存里) ,但这个命令是不会删除 /root/.bash_history 这个配置文件的内容。


4.敲过的命令什么时候才会保存在配置文件中?

 只有我们在正常退出终端的时候才能保存到配置文件中,否则只是暂时的保存到内存里(正常退出的命令:exit、logout)

5.环境变量$HISTSIZE 

在配置文件 /etc/profile 修改环境变量 $HISTSIZE

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_05

修改了变量的大小后,需要执行 source /etc/profile 或者重新进入终端才会生效

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_06

6.查看敲过命令是什么时候运行记录下来 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

 (1)定义一下:HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

 (2)查看一下变量: echo $HISTTIMEFORMAT

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_07

但是此时我们定义的环境变量 $HISTTIMEFORMAT 仅仅是在当前的终端生效,如果重启仍然是不存在的

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_08

(3)永久生效,修改 /etc/profile

vi /etc/profile

添加内容:HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_09

7.命令历史永久保存 不让别人删除-->添加隐藏条件 -a 只能追加不能删除

 执行命令:chattr +a ~/.bash_history

条件+a 只能追加不能删除


8. exit / logout 为正常退出终端

不正常的退出终端时,使用过的命令就不会记录完全

!! 表示上一条命令

!n 表示历史第n条命令

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_10

!字符串 表示从下往上找最近使用过“字符串”的命令并执行



             命令补全和别名

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_11

1.tab键 不仅可以不全命令,也可以不全文件


2.参数不全

(yum install -y bash-completion)

3.alias别名:

设置自定义的别名:

alias 要起的名字='要代替的名字'

alias restartnet='systemctl restart network.service '

取消自定义的别名:

ualias restartnet



alias定义的地方

 各用户都有自己配置别名的文件 ~/.bashrc

 ls /etc/profile.d/


 

                 通配符

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_12


1.  *  :表示零个或者多个任意字符

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_13

2.  ?  :表示一个任意的字符

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_14

3.ls [0-3].txt

[范围]任意一个满足的条件,只取一个。

4.ls {1,2,3,a}.txt 取一个1或2或3或a


                   

                   输入输出重定向

1.> 重定向 cat 1.txt>2.txt (把1.txt的内容输入到2.txt)

2.>> 追加  cat 1.txt>>2.txt (不会把原来的内容删除,把1.txt的内容追加到2.txt)

3.ls aaa.txt 2>err  把前面的错误的信息输入到后面的文件中

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_15

3.ls aaa.txt 2>>err  把前面的错误的信息输入到后面的文件中

>+2 == &>

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_16

把[12]txt 正确的输入到a.txt ,把 aaa.txt错误信息写到b.txt


4.wc -l < 1.txt



                管道符、作业控制

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_作业控制_17

管道符 | :把前面命令的的输出交给后面命令的输入

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_18


暂停任务:ctrl+ z  (临时暂停,仍到后台 ,调回前台 fg


jobs 可以把暂停的任务列出来。

Shell基础:介绍、历史命令、命令不全和别名、通配符、输入输入重定向、管道发和作业控制_管道符_19

fg +id号就能把相应暂停任务调回前台。 fg 2


bg 把任务放到后台


sleep 1000 暂停1000秒

sleep 100 &  加上&可以把运行任务如直接放到后台执行