shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向

简介:

shell介绍

shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西——系统内核。

用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

Redhat、Centos 默认安装的shell版本是bash,它是sh的增强版。



历史命令

我们执行过的命令Linux都会记录,预设可以记录1000条历史命令。这些命令保存在用户家目录的.bash_history文件中。但是只有当用户正常退出shell时,在当前shell中运行的命令才会保存至.bash_history文件中(正常退出即使用命令exit或logout退出终端,直接关闭远程界面不属于正常退出)。

root用户的命令保存在:/root/.bash_history

普通用户的命令保存在:/home/用户名/.bash_history


可以通过cat /root/.bash_history 来查看历史命令,也可以通过history命令查看历史命令。不过要注意的是,history查看的历史命令与cat/root/.bash_history查看的历史命令可能会不同,因为history命令存放的命令是暂时存在于内存中,只有当你正常退出shell时,在当前shell中运行的命令才会被保存至./bash_history中。


echo $HISTSIZE 可以查看目前可以保存多少条历史命令

74b3288f16625c5993f3829b26f54245.png

history-c 清空内存中的历史命令。但是./root/.bash_history中的历史命令还是存在。


可以通过修改HISTSIZE环境变量来修改命令保存条数。

修改 /etc/profile 文件中的 HISTSIZE 参数可以修改命令保存条数。

fa46e654f37e59e5f7387dfb20f761f1.png

修该HISTSIZE后面的数字,可以修改命令保存的条数。

将历史命令保存数量改成5000,保存并退出,执行echo $HISTSIZE发现历史命令保存数量还是1000条。这时需要重启终端,或则执行命令source /root/profile才能生效。

166eca564e92fb08e39b2df84f1845dd.png


记录命令的运行时间

执行命令:HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"

执行之后只是临时生效,如果换一个终端或重启终端后失效。

如要要永久生效,需要将HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S" 命令放到/etc/profile 文件中。

50ce87bd34f12a2720f5872a8af0e3bc.png

查看历史命令时就会显示使用命令的时间。

5134a4de38ab0c4de0d750a2cb410011.png


永久保存输入的命令历史

给文件加上隐藏权限a(只能追加,不能删除修改。)

chattr +a /root/.bash_history



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

7d87d88152c3c6109a82cf284b9f8fd0.png


!n:n表示数字,表示执行命令历史的第n条指令。

1a1b56833e0116172c94247813dc7d53.png


!字符串(字符串大于等于1):!pw执行命令历史中最近一次以pw开头的命令:

6a90071fbe8bc97a7270749ada9c21a9.png


命令补全

tab键可以补全命令、路径、文件名。连续按两下tab键,系统则会把所有的命令或者文件都列出来。


当前仅仅支持命令补全,参数是不支持补全的。例如:systemctl restart network.service 命令,第一个system是可以用tab补全的,但之后的restart network.service 是不能补全的。需要安装包 yum install -y bash_completion。重启之后生效。



别名alias

通过alias把一个常用的并且很长的指令另取名为一个简单易记的指令。unalias可以解除别名功能。

只输入alias 可以查看哪些命令用了别名。

27752e51400db1325969154b5cd9d2aa.png


alias 别名='具体命令'。  临时有效。

e6679c9433ad5779c6cb096cf65c3980.png


用户文件下的.bashrc文件下配置了几个alias。还有一些在/etc/profile.d/目录下的一些脚本中定义。


删除别名unalias

c146518807f767771a3227df81bd4701.png


通配符

在bash下,可以使用*来匹配零个或多个字符,用?匹配一个字符。

e62b10e85aa07d3f147c3ed5cfcfcf3e.png


输入输出重定向

输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是<,输出重定向的命令是>。错误重定向的命令是2>,追加重定向的命令是>>。

spacer.gif479febe7a96f6b4ccf09057b03d7151d.png



本文转自 豆渣锅 51CTO博客,原文链接:http://blog.51cto.com/754599082/1982024

相关文章
|
6天前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
40 7
|
12天前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
27 1
|
1月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
66 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
Unix Shell Linux
Shell 输入/输出重定向
10月更文挑战第4天
25 8
|
1月前
|
Shell 知识图谱
Shell printf 命令
10月更文挑战第3天
21 1
|
1月前
|
Shell PHP
Shell echo命令
10月更文挑战第3天
21 0
|
1月前
|
JSON Java Shell
Dockerfile中RUN、CMD、ENTRYPOINT、SHELL命令的区别
理解这些指令的差异和应用场景,有助于构建高效、灵活且易于管理的Docker镜像。在实际应用中,根据需要选择合适的指令,可以有效地控制镜像构建和容器运行的行为。
170 0
|
1月前
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
66 0
|
存储 Shell
Shell脚本攻略04-玩转文件描述符及重定向
Shell脚本攻略04-玩转文件描述符及重定向
181 0