linux shell基础(一)

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

linux shell基础(一)

shell介绍

shell是一个命令解释器,提供用户和机器之间的交互。其关系图大概是:


shell与linux关系

shell有程序语言的特性,支持特定语法,比如逻辑判断、循环、数组等。shell脚本高手可以用shell做许多事情,甚至网络爬虫等也不在话下。每个用户都可以有自己的shell配置,就在用户家目录下。

CentOS7默认shell为bash(Bourne Agin Shell),是又sh发展来的。centos还集成了zsh、ksh,这两个shell与bash功能类似。

命令历史

history命令可以查看使用过的命令,默认保存1000条。有时终端显示超过1000条命令,这是因为命令历史暂时保存在内存中,还没有写入配置文件。正常退出终端是才会保存到配置文件~/.bash_history。没有正常退出不会保存(比如断电、直接关掉终端等)。

history -c清空内存中储存的命令。但是不会影响~/.bash_history文件中保存的历史命令。

如果想改变命令历史保存数量,可以设置环境变量HISTSIZE。HISTSIZE=2000只设置当前shell的记录值,如果要永久设置要在/etc/profile中修改。此外HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "可以增加命令使用的时间记录。与HISTSIZE相同,要在/etc/profile在修改。

为了保护隐私不记录历史命令,则可以删除~/bash_history,然后新建一个软链接到/dev/null。如果想永久保存所有历史命令,可以chattr +a ~/.bash_history,即给~/.bash_history增加特殊权限a。

此外,叹号也常在shell中使用。!!执行最近一条命令,!n执行历史命令中第n条(n为数字),!word执行历史命令中最近一条word开头的命令。

命令不全和别名

shell中使用好tab键可以大大减少敲击键盘的次数。敲一下可以不全文件名、文件路径,敲两下列出所有符合条件的文件、路径。centos7新增了参数补全的特性,安装bash-completion后重启linux就可使用。

alias别名给命令重新起个名字,在shell中输入alias后可以显示当前所有别名的命令。如果想取消命令别名unalias xxx,xxx为命令别名。各用户都有自己配置别名的文件,在/.bashrc修改当前用户的配置。/etc/profile.d/中有一些脚本中也有系统自带的一些命令别名,知道即可,不需要修改。自定义的alias放到/.bashrc或者/etc/profile。

通配符

在编写脚本匹配文本时,主要依赖通配符和正则表达式。通配符相对简单:
ls *.txt 列出以.txt结尾的文件。星号代表任意个字符
ls ?.txt 列出以.txt结尾,且.txt前只有一个字符的文件
ls [0-9].txt 列出以.txt结尾,且.txt前为0-9任一字符的文件
ls {1,2}.txt 列出以.txt结尾,且.txt前为1和2的文件。花括号内表示并列,如果当前目录没有2.txt则会报错。

输入输出重定向

shell脚本大量用到标准输入、标准输出、标准错误,英文是stdin、stdout、stderr,用数字0、1、2分表代表。我们输入ls命令,shell在屏幕上显示当前目录的文件,这就是标准输入、标准输出。输出重定向就是把原本要输出到屏幕的内容定向到指定文件:

cat 1.txt >2.txt将1.txt文件的内容输出重定向到2.txt。两个大于号是重定向追加:cat 1.txt >> 2.txt,将1.txt内容追加到2.txt。

如果命令输入错误,shell返回标准错误(stderr)。结合重定向符号:ls aaa.txt 2>err.txt,将ls命令的标准错误重定向到err.txt中(如果成功执行则err.txt不会被写入)。类似的ls aaa.txt 2>>err.txt,这条命令将错误追加到err.txt文件中。

command >1.txt 2>&1这个形式在脚本中经常使用,把标准输出和标准错误都重定向到1.txt中。标准输出“1”可以省略,2>&1表示标准错误重定向到标准输出。这个还可以简化为:command &>1.txt

重定向也可以反向。wc -l < 1.txt就是将1.txt重定向给wc命令。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,682评论 0 5
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,194评论 0 0
  • 摘要:8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配...
    mixuyulv阅读 757评论 0 0
  • 系统管理与维护命令 date date(选项)(参数) | 选项 | 说明 | | :-------- | ...
    蓓蓓的万能男友阅读 4,151评论 0 5
  • 一个人在他【她】的生命中会遇到无数的选择,不是每次都会正确。畏惧选择,逃避选择只会让你陷得更深。与其不管不顾,不如...
    梵音御阅读 179评论 0 0

友情链接更多精彩内容