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

简介:

shell介绍

shell是一个命令解释器,提供用户和机器之间的交互

 

 支持特定语法,比如逻辑判断、循环

 

 每个用户都可以有自己特定的shell

 

 CentOS7默认shellbashBourne Agin Shell

 

 还有zshksh

 

命令历史

history命令

-d 行号  删除该行

[root@localhost ~]# vi /root/.bash_history  //history命令存放文件

.bash_history

 

[root@localhost ~]# echo $HISTSIZE  //变量HISTSIZE最大1000

1000

 

[root@localhost ~]# history -c  //清空内存命令历史

 

[root@localhost ~]# history -w  //保存文件到文件里去

 

[root@localhost ~]# vi /etc/profile  // /etc/profile中修改HISTSIZE

[root@localhost ~]# source /etc/profile

 

 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

[root@localhost ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

[root@localhost ~]# echo $HISTTIMEFORMAT

%Y/%m/%d %H:%M:%S

[root@localhost ~]# history

   62  2017/10/26 21:34:47 history

   63  2017/10/26 21:34:57 vi /etc/profile

   64  2017/10/26 21:36:31 echo $HISTSIZE

 

[root@localhost ~]# chattr +a /root/.bash_history

 永久保存 chattr +a ~/.bash_history

 

 !!   执行历史命令最后一个命令

 !n   执行历史命令的某个命令(n数字)

 !word历史命令从下往上找以word开头的第一个命令

 

命令补全和别名

tab

敲一下:命令补全

敲两下:列出以某些字符开头的命令

 

 参数补全,安装bash-completion

[root@localhost ~]# yum install -y bash-completion

[root@localhost ~]# reboot  //重启

[root@localhost ~]# rpm -q bash-completion

bash-completion-2.1-6.el7.noarch

 

 alias别名给命令重新起个名字

[root@localhost ~]# alias resrenet='systemctl restart network'

 

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

[root@localhost ~]# vi .bashrc

 

其他的别名所在

 ls /etc/profile.d/

[root@localhost ~]# ls /etc/profile.d/

 自定义的alias放到~/.bashrc

 

通配符

ls *.txt

[root@localhost profile.d]# ls *.sh  //*通配.sh结尾的脚本文件

256term.sh          colorgrep.sh  lang.sh  vim.sh

bash_completion.sh  colorls.sh    less.sh  which2.sh

 

[root@localhost profile.d]# ls *.cs*  //不分字符、不分几个

256term.csh    colorls.csh  less.csh  which2.csh

 

 ls ?.txt

[root@localhost profile.d]# ls *.?sh  //一个任意的字符

256term.csh    colorls.csh  less.csh  which2.csh

 

 ls [0-9].txt

[root@localhost ~]# ls [0-2].txt  //0-2任意一个都满足

1.txt  2.txt

 

 ls {1,2}.txt

[root@localhost ~]# ls {0,1,2}.txt  //大括号里的必须要有,没有会报错。类似[0-2]但是要,隔开

ls: 无法访问0.txt: 没有那个文件或目录

1. txt  2.txt

 

输入输出重定向

cat 1.txt >2.txt

[root@localhost ~]# echo "22">2.txt

[root@localhost ~]# echo "11">1.txt

[root@localhost ~]# cat 1.txt > 2.txt  重定向覆盖

[root@localhost ~]# cat 2.txt

11

 

cat 1.txt >> 2.txt

[root@localhost ~]# cat 2.txt

11

[root@localhost ~]# echo "22">1.txt

[root@localhost ~]# cat 1.txt >> 2.txt //追加重定向

[root@localhost ~]# cat 2.txt

11

22

 

 ls aaa.txt 2>err

[root@localhost ~]# ls aaa.txt 2>1.txt  //2错误重定向

[root@localhost ~]# cat 1.txt

 

 ls aaa.txt 2>>err

[root@localhost ~]# cat 1.txt

ls: 无法访问aaa.txt: 没有那个文件或目录

[root@localhost ~]# ls aaa.txt 2>>1.txt //错误追加重定向

[root@localhost ~]# cat 1.txt

ls: 无法访问aaa.txt: 没有那个文件或目录

ls: 无法访问aaa.txt: 没有那个文件或目录

 

[root@localhost ~]# > >> 2> 2>> >+2>=== &>

[root@localhost ~]# ls {1,3,2,0}.txt &> >lsx.txt //正确输出和错误输出都到lsx.txt里去

[root@localhost ~]# cat lsx.txt

ls: 无法访问3.txt: 没有那个文件或目录

ls: 无法访问0.txt: 没有那个文件或目录

1.txt

2.txt

 

 wc -l < 1.txt

[root@localhost ~]# cat 1.txt

ls: 无法访问aaa.txt: 没有那个文件或目录

ls: 无法访问aaa.txt: 没有那个文件或目录

[root@localhost ~]# wc -l < 1.txt //输入重定向

2

 

 command >1.txt 2>&1

[root@localhost ~]# ls {1,3,2,0}.txt >> lsx.txt 2>>lshx.txt //正确的输入到lsx.txt 错误的输入到lshx.txt

[root@localhost ~]# cat lshx.txt

ls: 无法访问3.txt: 没有那个文件或目录

ls: 无法访问0.txt: 没有那个文件或目录




本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/1980878,如需转载请自行联系原作者
相关文章
|
9天前
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
2月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
80 20
|
2月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
96 12
|
4月前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
476 7
|
4月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
105 1
|
5月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
128 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
5月前
|
Unix Shell Linux
Shell 输入/输出重定向
10月更文挑战第4天
47 8
|
5月前
|
Shell 知识图谱
Shell printf 命令
10月更文挑战第3天
43 1
|
5月前
|
Shell PHP
Shell echo命令
10月更文挑战第3天
39 0
|
5月前
|
JSON Java Shell
Dockerfile中RUN、CMD、ENTRYPOINT、SHELL命令的区别
理解这些指令的差异和应用场景,有助于构建高效、灵活且易于管理的Docker镜像。在实际应用中,根据需要选择合适的指令,可以有效地控制镜像构建和容器运行的行为。
344 0