美文网首页linux运维
linux shell基础(一)

linux shell基础(一)

作者: awsome365 | 来源:发表于2018-10-10 21:33 被阅读3次

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命令。

相关文章

  • shell基础

    Linux学习 一、shell介绍 Linux shell基础 什么是shell shell是一个命令解释器,提供...

  • Shell学习

    Linux Shell基础教程 (一) (二) Linux Shell简明教程(推荐) (一) (二) Linux...

  • Linux—Shell基础

    ++2016.8.7++byside @Linux—Shell基础 =======================...

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

  • shell & bash基础命令及巧用

    shell与bash脚本的区别shell是Linux基础命令解释器bash(Bourne Again shell)...

  • 2019-01-25

    Linux系统Shell编程指南 前言 适合人群:有类似C编程基础的人 一、Shell编程介绍 Shell解释型语...

  • linux基础

    linux基础 ============ 1.主要内容: 常用的linux命令(shell命令) l...

  • 初识shell脚本编程

    一. Shell基础 shell是链接用户和linux内核的一个命令解释程序, 常见shell包括bash(li...

  • Shell基础

    Shell基础 Shell概述 1、Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux...

  • day51 课堂笔记(shell编程规范书写)

    第一章、为什么要学shell? 1.1、学好shell编程所需的Linux基础 1.2、如何才能学好shell编程...

网友评论

    本文标题:linux shell基础(一)

    本文链接:https://www.haomeiwen.com/subject/iawmaftx.html