本文主要是介绍Linux Shell介绍,history, tab,alias, 通配符,重定向,管道符, 作业控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
shell介绍
-
Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
-
不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
-
每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。
-
同Linux本身一样,Shell也有多种不同的版本,主要有下列版本的Shell:
Bourne Shell:是贝尔实验室开发的。
BASH:是GNU的Bourne Again Shell,是GNU操作系统(centOS7)上默认的shell。
Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
Z Shell:The last shell you’ll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。 -
可以通过yum安装zsh, ksh等。
命令历史记录
-
history命令可查看输入过的命令记录,可记录1000条;
-
记录保存在以下文件里:
~/.bash_history #实际上保存的命令是上一次退出shell时保存的命令,当前使用过的命令保存在内存里,在退出时更新进去;不正常退出shell,命令记录不全;
history -c #清除内存里保存的命令记录,.bash_history的内容不变;
- 可以修改保存的记录数,由变量HISTSIZE决定,在/etc/profile文件中修改
[root@tanyvlinux ~]# vim /etc/profile
[root@tanyvlinux ~]# echo $HISTSIZE
1000
[root@tanyvlinux ~]# source /etc/profile #使修改的配置生效;
[root@tanyvlinux ~]# echo $HISTSIZE
5000
[root@tanyvlinux ~]# 登出
Connection to 192.168.31.133 closed.
TanydeMacBook-Air:local tanytan$ ssh root@192.168.31.133
Last login: Tue Sep 10 16:37:58 2019 from 192.168.31.101
[root@tanyvlinux ~]# echo $HISTSIZE
5000
- 可以设置history把命令的运行时间也保存下来,设置环境变量HISTTIMEFORMAT
[root@tanyvlinux ~]# echo $HISTTIMEFORMAT[root@tanyvlinux ~]# vim /etc/profile
[root@tanyvlinux ~]# echo $HISTTIMEFORMAT #原来为空“[root@tanyvlinux ~]# vim /etc/profile #添加HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S";
[root@tanyvlinux ~]# source /etc/profile
[root@tanyvlinux ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[root@tanyvlinux ~]# history #记录了时间;1 2019/09/10 16:42:10mkdir /tmp22 2019/09/10 16:42:10chmod 777 /tmp2
- 可以设置让记录永久保存,添加a权限;
chattr +a ~/.bash_history
命令补全及别名
例子:
[root@tanyvlinux profile.d]# which ^C #拼写whic按tab一下,补全;
[root@tanyvlinux profile.d]# whi #拼写whi按tab一下,没反应,按两下,出现所有选择;路径和参数使用方法一样;
which while whiptail
- 如果是centos7以前系统版本,不带参数补全,可安装包增加这个支持;
yum install -y bash-completion
reboot
- 别名 - 可以将长命令用自定义的词表达;
查看所有别名命令
alias
alias定义在~/.bashrc文档里, /etc/profile.d里面的文档里;
- 创建别名(重启后失效);
alias viens33=‘vi /etc/sysconfig/network-scripts/ifcfg-ens33’
- 取消别名;
unalias viens33
- 让别名可以多个帐户使用:(只在本帐户实施,修改到~/.bashrc文件)(重启后也有效);
[root@tanyvlinux ~]# echo "alias tany='ls -lia'" >> /etc/bashrc
[root@tanyvlinux ~]# source /etc/bashrc
通配符
- 通配符*可代表一个或多个字符
- 通配符?代表一个任意字符
- 通配符[]
- 通配符{}
输入输出重定向
cat 1.txt > 2.txt #将1.txt内容写入2.txt,原来内容被覆盖;
cat 1.txt >> 2.txt #将1.txt内容追加到2.txt里,原来内容还在;
-
将错误信息重定向2>, 2>>;
-
将正确与错误信息同时重定向&>, &>>;
- 将返回信息和错误返回信息分别重定向;
- 输入重定向<, <左边必须为命令;
管道符
管道符左边命令运行的结果,交给右边的命令处理(感觉右边都是文本处理工具,左边传过来的都是一行行的数据)
作业控制
- 暂停一个工作,做其他操作,再恢复原来的工作
[root@tanyvlinux ~]# vi 11.txt[1]+ 已停止 vi 11.txt #按ctrl + z暂停工作;
[root@tanyvlinux ~]# fg #恢复工作;
vi 11.txt[1]+ 已停止 vi 11.txt #按ctrl + z暂停工作;
[root@tanyvlinux ~]# vi aaa.txt #再开始多一个工作;[2]+ 已停止 vi aaa.txt #按ctrl + z暂停工作;
[root@tanyvlinux ~]# jobs #显示暂停的工作;
[1]- 已停止 vi 11.txt
[2]+ 已停止 vi aaa.txt
[root@tanyvlinux ~]# fg #恢复刚刚中断的工作;
vi aaa.txt[2]+ 已停止 vi aaa.txt #按ctrl + z暂停工作;
[root@tanyvlinux ~]# fg #恢复vi aaa.txt,并退出;
vi aaa.txt
[root@tanyvlinux ~]# vim aaa.txt #再开始一个工作;[2]+ 已停止 vim aaa.txt #按ctrl + z暂停工作;
[root@tanyvlinux ~]# jobs
[1]- 已停止 vi 11.txt
[2]+ 已停止 vim aaa.txt
[root@tanyvlinux ~]# fg 1 #使用序号进入想要进入的工作;
vi 11.txt
-
jobs命令
上面显示了jobs的用法; -
将一个工作放在后台运行,前台可以继续操作
[root@tanyvlinux ~]# sleep 10 #按ctrl + z暂停工作;
^Z
[4]+ 已停止 sleep 10
[root@tanyvlinux ~]# bg 4 #转到后台工作,fg命令使用例子;
[4]+ sleep 10 &
[root@tanyvlinux ~]# date #目前时间;
2019年 09月 10日 星期二 22:02:09 CST
[root@tanyvlinux ~]# date #10秒后
2019年 09月 10日 星期二 22:02:20 CST
[4] 完成 sleep 10 #显示在后台完成;
-
新建的终端使用jobs命令不会显示当前终端暂停或后台运行的命令(可以用ps命令查看进程)
-
直接让命令后台执行 + &
[root@tanyvlinux ~]# sleep 5 &
[4] 62764
[root@tanyvlinux ~]# date
2019年 09月 10日 星期二 22:07:33 CST
[root@tanyvlinux ~]# date
2019年 09月 10日 星期二 22:07:40 CST
[4] 完成 sleep 5
这篇关于Linux Shell介绍,history, tab,alias, 通配符,重定向,管道符, 作业控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!