文档章节

5-3 8 shell介绍 命令历史 补全 别名 通配符 重定向

阿想
 阿想
发布于 2017/08/30 11:24
字数 972
阅读 15
收藏 0

8.1 shell介绍

什么是shell

  • shell是一个命令解释器,提供用户和机器之间的交互(命令行终端)
    • 脚本shell是一种表现形式
    • passwd中最后一段即是用户的shell
  • shell支持特定语法,比如逻辑判断、循环
  • 每个用户都可以有自己特定的shell
  • CentOS7默认shell为bash(Bourne Again Shell)
  • 还有zsh ksh等。大体一样,细节有差异。
    • 默认没有安装
[root@lixiang01 ~]# yum list |grep zsh
autojump-zsh.noarch                     22.3.0-3.el7                   epel     
zsh.x86_64                              5.0.2-25.el7_3.1               updates  
zsh-html.x86_64                         5.0.2-25.el7_3.1               updates  
zsh-lovers.noarch                       0.9.0-1.el7                    epel     
[root@lixiang01 ~]# yum list |grep ksh
ksh.x86_64                              20120801-26.el7                base     
mksh.x86_64                             46-5.el7                       base       

8.2 命令历史

[root@ax-01 ~]# history
  • history命令,记录历史命令
  • 用户的家目录下的.bash_history,记录上一次正常退出后的命令历史
    • 非正常退出保存不完整

修改命令历史保存数量

[root@ax-01 ~]# echo $HISTSIZE  //默认命令历史最大1000条
1000
[root@ax-01 ~]# vim /etc/profile  //可以在此调整环境变量

[root@ax-01 ~]# source !$
source /etc/profile
[root@ax-01 ~]# echo $HISTSIZE
5000
  • 由环境变量控制$HISTSIZE保存最大保存命令。运行时内存可以保存多于1000条
  • history -c 可以清空内存中的命令历史
  • 退出终端后保存至.bash_history

修改命令历史显示格式

[root@ax-01 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
[root@ax-01 ~]# history
    2  2017/08/30 09:51:25echo $HISTSIZE
    3  2017/08/30 09:51:44vim /etc/profile
    4  2017/08/30 09:53:37echo $HISTSIZE
[root@ax-01 ~]# !vim
vim /etc/profile 

[root@ax-01 ~]# source /etc/profile
[root@ax-01 ~]# !echo
echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
  • HISTTIMEFORMAT="%Y/%m/%d % H:%M:%S" //需要注意大小写 修改profile永久生效

命令历史永久保存

[root@ax-01 ~]# chattr +a .bash_history 
[root@ax-01 ~]# lsattr .bash_history 
-----a-------e-- .bash_history
  • 不受环境变量 HISTSIZE影响

叹号常见用法

[root@ax-01 etc]# cd /etc/yum.repos.d/
[root@ax-01 yum.repos.d]# cd ..
[root@ax-01 etc]# !!  再次执行上一条命令
cd ..
[root@ax-01 /]#
[root@ax-01 /]# cd
[root@ax-01 ~]# history | tail -n4
 1051  cd /etc/yum.repos.d/
 1052  cd ..
 1053  cd
 1054  history | tail -n4
[root@ax-01 ~]# !1051  //照history编号运行
cd /etc/yum.repos.d/

  • !! // 最后一条命令
  • !n // n是数字 按照history编号运行
  • !xx //执行最近一次以xx字符开头的命令

8.3 命令补全和别名

  • tab键命令补全,
    • 敲一下如果后续字符唯一则自动补全
    • 如果不唯一,敲两下看可选后续字符

参数补全

[root@ax-01 ~]# yum install -y bash-completion  //安装参数补全包,需要重启
[root@ax-01 ~]# reboot
[root@ax-01 ~]# systemctl restart network
network-online.target  network.service
  • CentOS7新加入的支持参数补全。很实用

alias别名

[root@ax-01 ~]# alias renet='systemctl restart network'
[root@ax-01 ~]# echo "alias renet='systemctl restart network'" >> .bashrc
[root@ax-01 ~]# unalias renet 取消
[root@ax-01 ~]# vim .bashrc 删除定义别名
  • 部分系统别名在/etc/profile.d/目录下的文件里
  • 每个用户都有自己的别名配置文件

8.4 通配符

  • ls *.txt //表示任意
  • ls ?.txt //表示任意1个
  • ls [0-9].txt //表示范围中任意1个
  • ls {1,3}.txt //同上

实验

[root@lixiang01 ~]# ls *txt*
1_heard.txt.bak  1.txt  22.txt  2.txt.bak  test.txt  word1.txt  记录.txt
[root@lixiang01 ~]# ls 1*
123.tar.bz2  1_heard.txt.bak  1.txt

111:
22.txt
[root@lixiang01 ~]# ls ?.txt
1.txt
[root@lixiang01 ~]# touch 2.txt
[root@lixiang01 ~]# touch 3.txt
[root@lixiang01 ~]# ls ?.txt
1.txt  2.txt  3.txt
[root@lixiang01 ~]# ls [0-3].txt
1.txt  2.txt  3.txt
[root@lixiang01 ~]# ls [123].txt
1.txt  2.txt  3.txt
[root@lixiang01 ~]#  ls [0-9].txt
1.txt  2.txt  3.txt
[root@lixiang01 ~]#  ls [0-9a-zA-Z].txt
1.txt  2.txt  3.txt
[root@lixiang01 ~]# touch d.txt
[root@lixiang01 ~]#  ls [0-9a-zA-Z].txt
1.txt  2.txt  3.txt  d.txt
[root@lixiang01 ~]# ls {1,3,d}.txt
1.txt  3.txt  d.txt

8.5 输入输出重定向

> 输出重定向
>> 追加
2> 错误重定向,支持追加2>>
&> 全部重定向,支持追加&>>

区分输出正确与错误信息

[root@ax-01 ~]# cat /etc/passwd nosuchthing.txt > right.log 2> err.log
[root@ax-01 ~]# cat err.log 
cat: nosuchthing.txt: No such file or directory

© 著作权归作者所有

共有 人打赏支持
阿想
粉丝 0
博文 72
码字总数 69742
作品 0
私信 提问
Shell基础知识(上)

shell介绍 1.其他的shell:zsh,ksh 命令历史 1.存放地址: 2.最多储存1000条,由标量控制: 3.history -c命令: 4.退出终端时,内存中保存的历史命令才会写到配置文件中去 5.修改变量HISTS...

xinghun1227
01/10
0
0
8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 8.1 shell介绍 shell是一个命令解释器,提供用户和机器之间的交互 shell 脚本,仅仅是shell 的一种表现 用户...

JasonYan86
06/29
0
0
linux的shell基础介绍(1)

8.1 shell介绍:器之间的交互 1、shell是一个命令解释器,提供用户和机器之间的交互 2、 支持特定语法,比如逻辑判断、循环 3、每个用户都可以有自己特定的shell 4、 CentOS7默认shell为bash(...

Gary_加油涛
2017/11/15
0
0
shell介绍,命令历史,命令不全和别名,通配符以及输出重定向

shell介绍: zsh和ksh同样是两个shell。 命令历史: history 查看1000条历史命令 查看环境变量,1000表示history存的历史命令1000条 清除当前内存中存在的历史命令,但是不会删除配置文件。 ...

叶瑾
03/07
0
0
五周第三次课(4月20日) 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

第八章 shell基础 8.1 shell介绍 Shell是一个命令解释器,提供用户和机器之间的交互,支持特定的语法,比如逻辑判断、循环。每个用户都可以有自己特定的shell,CentOS7的默认shell为bash(B...

Champin
04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.4 搭建 ss

一键安装 shadowsocks-go 版 wget –no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go.sh chmod +x shadowsocks-go.sh ./s......

YunOu
33分钟前
5
0
Spark Streaming整合kafka实战

kafka作为一个实时的分布式消息队列,实时的生产和消费消息,这里我们可以利用SparkStreaming实时计算框架实时地读取kafka中的数据然后进行计算。在spark1.3版本后,kafkaUtils里面提供了两个...

hblt-j
33分钟前
2
0
vue组件中的样式属性scoped实例

vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素 。接下来通过本文给大家分享vue组件中的样式属性scoped实例详解 **Scoped CSS** Scoped CSS规范是Web组件产...

前端攻城老湿
49分钟前
10
0
ios 面试部分整理

assign weak区别 assign不是有崩溃的风险么 strong和copy 对非容器类可变类型 非容器类不可变 容器类可变容器类不可变 进行深拷贝浅拷贝有什么区别 什么样的对象可以进行拷贝 就是这个NScod...

大魔王周晓辉
50分钟前
3
0
浅谈教你如何掌握Linux系统

linux能做什么?相信绝大数人都有这样的疑问。可以玩吃鸡吗?可以玩lol吗? 如果你是以娱乐的名义来评价linux的可用性,对不起,linux可能不适合你,因为linux是一个工具,他是教你聪明的,不...

Linux就该这么学
50分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部