shell基础知识(历史命令)

1.2 历史命令

1.2.1 !在命令中的应用

当我们在linux中执行命令时,执行过的每一条命令都会被保存到家目录的.bash_history文件中,需要注意的是:只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中

!!:连续两个!表示执行上一条指令

[root@localhost ~]# pwd

/root

[root@localhost ~]# !!

pwd

/root

!n:表示执行命令历史中的第n条指令

[root@localhost ~]# history |grep 90

   90  bash 1.sh

  155  history |grep 90

[root@localhost ~]# !90

bash 1.sh

bash: 1.sh: 没有那个文件或目录

!字符串:表示执行命令历史中最近执行的一次以其开头的命令

[root@localhost ~]# !bash

bash 1.sh

bash: 1.sh: 没有那个文件或目录

1.2.2补全

一次TAB键可以补全一个指令、一个路径、一个文件名;连续两次TAB键,系统列出所有命令或文件名

1.2.3别名

在shell中,别名(alias)是一种将一个或多个命令绑定到一个自定义名称上的方法

创建别名: alias 别名=“实际命令”

[root@localhost ~]# alias ll="ls -l"

[root@localhost ~]# ll

总用量 552

-rw-------. 1 root root   1257 9月  21 17:25 anaconda-ks.cfg

drwxr-xr-x. 4 root root     75 10月  8 08:42 shell1

-rw-r--r--. 1 root root 560272 7月  13 09:34 wget-1.14-18.el7_6.1.x86_64.rpm

查看已有别名:alias

[root@localhost ~]# alias

alias cp='cp -i'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l.='ls -d .* --color=auto'

alias ll='ls -l'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

删除别名:unalias 别名

[root@localhost ~]# unalias ll

[root@localhost ~]# ll

-bash: ll: 未找到命令

1.2.4通配符

在shell中,通配符是一种特殊的字符,用于匹配文件名或路径中的特定模式,以下是常用通配符及其含义:

(1)星号*:代表零个或多个任意字符

例:

◎*.txt匹配所有扩展名为.txt的文件

◎a*匹配以字母a开头的所有文件

◎*b*匹配任何包含字母b的文件

  1. 问号?:代表一个单一的任意字符

例:

◎?.txt匹配单个字符后跟.txt扩展名的文件,如a.txt或1.txt

◎file?.log匹配file1.log,file2.log.不匹配file10.log

  1. 方括号[]:代表括号内的任何一个字符,可以指定范围

例:

◎[abc]匹配文件名中包含a、b、c中任意一个字符的文件

◎[a-c]同上,等价于[abc]

◎[0-9]匹配文件名中包含0到9之间任何一个数字的文件

◎[!abc]或[^abc]匹配不在a、b、c范围内的字符

1.2.5输入/输出重定向

在Shell中,输入/输出重定向是一种强大的功能,它允许你改变命令的标准输入(stdin)、标准输出(stdout)和标准错误(stderr)的流向。这可以让你将命令的输出保存到文件中,或者从文件读取输入,甚至可以将一个命令的输出作为另一个命令的输入。

输出重定向

◎>:将命令的输出写入到指定的文件中,如果文件已经存在,则会覆盖文件内容

[root@localhost ~]# echo "Hello,World" > output.txt

[root@localhost ~]# cat output.txt

Hello,World

◎>>:将命令的输出追加到指定的文件中,不会覆盖文件原有内容

[root@localhost ~]# echo "Another line" >> output.txt

[root@localhost ~]# cat output.txt

Hello,World

Another line

◎&>或>&:将标准输出和标准错误都重定向到同一个文件中

[root@localhost ~]# some_command &> combined_output.txt

[root@localhost ~]# cat combined_output.txt

-bash: some_command: 未找到命令

◎2>:将标准错误单独重定向到一个文件中

[root@localhost ~]# some_command 2> error_output.txt

[root@localhost ~]# cat error_output.txt

-bash: some_command: 未找到命令

输入重定向

◎<:从指定的文件中读取输入

假设input.txt文件中有如下未排序的行

[root@localhost ~]# vi input.txt

banana

apple

cherry

date

elderberry

执行命令

[root@localhost ~]# sort < input.txt

apple

banana

cherry

date

elderberry

输出的内容将会按字母顺序排序后输出到终端

1.2.6管道符

在shell中,管道符(|)允许你将一个命令的输出作为另一个命令的输入

[root@localhost ~]# cat /etc/passwd |wc -l

19

1.2.7作业控制

当运行进程时,你可以使它暂停(Ctrl+Z),然后使用fg(foreground的简写)命令恢复它,或者是使用bg(background的简写)命令使它到后台运行。此外,你也可以使它终止(Ctrl+C)

[root@localhost ~]# vi test1.txt

Testtestetstetste

#随便输入一些内容,按Esc键,使用Ctrl+Z暂停任务

  1. +  已停止               vi test1.txt

#此时提示进程已经停止,使用fg命令恢复,输入jobs,可以查看被暂停或在后台运行的任务

[root@localhost ~]# jobs

  1. +  已停止               vi test1.txt

#如果想把暂停的任务放在后台重新运行,就使用bg命令

[root@localhost ~]# bg

[1]+ vi test1.txt &

  1. +  已停止               vi test1.txt

#可以看出vi不支持在后台运行,换一个命令查看

[root@localhost ~]# vmstat 1 > /tmp/1.log

^Z

[2]+  已停止               vmstat 1 > /tmp/1.log

[root@localhost ~]# jobs

[1]-  已停止               vi test1.txt

[2]+  已停止               vmstat 1 > /tmp/1.log

[root@localhost ~]# bg 2

  1. + vmstat 1 > /tmp/1.log &

#在上面的例子中,出现一个新的知识点,就是多个被暂停的任务会有编号,使用jobs命令可以看到两个任务,使用bg命令或者fg命令时,需要在后面加上编号

[root@localhost ~]# jobs

[2]+  运行中               vmstat 1 > /tmp/1.log &

[root@localhost ~]# ps aux|grep vmstat

root       1591  0.0  0.1 152576  1376 pts/0    S    13:22   0:00 vmstat 1

root       1594  0.0  0.0 112720   968 pts/0    R+   13:25   0:00 grep --color=auto vmstat

[root@localhost ~]# kill -9 1591

#在kill命令后面直接加pid即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值