zoukankan      html  css  js  c++  java
  • shell 常用

    场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。

    >:覆盖输出,会覆盖掉原先的文件内容

    >>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加

    2>:错误输出,会覆盖掉原先的文件内容

    2>>:错误追加输出,会覆盖掉原始文件内容,会在原始内容末尾继续添加

    &>:将标准输出与错误输出共同写入到文件中。覆盖原有内容

    &>>:将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

    标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。

    标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。

    错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

    案例1:使用覆盖输出(覆盖原文内容)

    [root@ken ~]# vim test
    [root@ken ~]# cat test
    this is ken
    [root@ken ~]# echo "this is oscar" > test
    [root@ken ~]# cat test
    this is oscar

    案例2:使用追加输出(原文中追加)

    [root@ken ~]# cat test
    this is oscar
    [root@ken ~]# echo "this is ken" >> test
    [root@ken ~]# cat test
    this is oscar
    this is ken

    案例3:使用错误输出重定向

    默认错误输出会输出倒终端之上

    [root@ken ~]# cat klkl > test             #使用输出重定向无法使错误输出导入到文本中
    cat: klkl: No such file or directory
    [root@ken ~]# cat klkl 2> test             #需要使用2>错误输出重定向
    [root@ken ~]# cat test
    cat: klkl: No such file or directory

    案例4:将标准输出与错误输出共同写入到文件中

    [root@ken ~]# cat klkl &> test
    [root@ken ~]# cat test
    cat: klkl: No such file or directory

    输入重定向

    输入重定向的作用是把文件直接导入到命令中。

    案例:统计文本行数

    [root@ken ~]# wc -l < /etc/passwd
    28

    管道符

    管道命令符(|)的作用是把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。

    例如我们需要统计passwd文件包含root的行数

    [root@ken ~]# cat /etc/passwd | grep "root"  | wc -l
    2

    把搜索命令的输出值传递给统计命令,即把原本要输出到屏幕的用户信息列表再交给wc命令作进一步的加工,因此只需要把管道符放到两条命令之间即可

    通配符

    为Linux运维人员,我们有时候也会遇到明明一个文件的名称就在嘴边但就是想不起来的情况。如果就记得一个文件的开头几个字母,想遍历查找出所有以这个关键词开头的文件,该怎么操作呢?

    通配符就是通用的匹配信息的符号,比如

    1. 星号(*)代表匹配零个或多个字符(可以为0个)
    2. 问号(?)代表匹配单个字符(单个字符必须存在)
    3. 中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符,
    4. 中括号内加上字母[abc]则是代表匹配a、b、c三个字符中的任意一个字符。

    案例1:查看dev目录下所有以sda开头的文件

    [root@ken ~]# ls /dev/sda*
    /dev/sda  /dev/sda1  /dev/sda2

    案例2:查看dev目录下以sda开头,后面有一个字符的文件

    [root@ken ~]# ls /dev/sda?
    /dev/sda1  /dev/sda2

    加上问号之后/dev/sda就匹配不到了

    案例3:查看dev下以sda开头,后面跟上数字的文件

    匹配不到sda

    [root@ken ~]# ls /dev/sda[0-9]
    /dev/sda1  /dev/sda2

    案例4:查看dev下以sda开头,后面跟上字母的文件

    [root@ken ~]# ls /dev/sda[a-z]
    ls: cannot access /dev/sda[a-z]: No such file or directory

    匹配不到任何文件,也匹配不到/dev/sda,后面跟上字符必须存在才能匹配到。

    三种引号的作用

    1. 单引号(''):转义其中所有的变量为单纯的字符串。
    2. 双引号(""):保留其中的变量属性,不进行转义处理。
    3. 反引号(``):把其中的命令执行后返回结果。

    案例1:单引号,不解释变量即所见即所得

    [root@ken ~]# age=10
    [root@ken ~]# echo 'my age is $age'
    my age is $age

    案例2:双引号,解释变量

    [root@ken ~]# age=10
    [root@ken ~]# echo "my age is $age"
    my age is 10

    案例3:反引号,用来执行命令

    [root@ken ~]# name=`ls /root`
    [root@ken ~]# echo $name
    10.txt 11.txt 12.txt 13.txt 14.txt 1.txt 2.txt 3.txt 4.txt 5 =5 5.txt 6.txt 7.txt 8.txt 9.txt anaconda-ks.cfg elasticsearch-6.4.0.tar.gz elasticsearch-6.4.0.tar.gz.1 ken kenken nohup.out redis-manager-1.1 redis-manager-1.1-release.tar.gz test test1.sh test.sh

    一切从“/”开始

    在Linux系统中,目录、字符设备、块设备、套接字等都被抽象成了文件,Linux系统中一切都是文件。既然平时我们打交道的都是文件,那么又应该如何找到它们呢?在Windows操作系统中,想要找到一个文件,我们要依次进入该文件所在的磁盘分区(假设这里是D盘),然后在进入该分区下的具体目录,最终找到这个文件。但是在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。另外,Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均代表不同的目录,并且文件名称中不得包含斜杠(/)。Linux系统中的

    文件存储结构如图6-1所示。

    第6章 存储结构与磁盘划分。第6章 存储结构与磁盘划分。

    FHS是根据以往无数Linux系统用户和开发者的经验而总结出来的,是用户在Linux系统中存储文件时需要遵守的规则,用于指导我们应该把文件保存到什么位置,以及告

    诉用户应该在何处找到所需的文件。但是,FHS对于用户来讲只能算是一种道德上的约束,有些用户就是懒得遵守,依然会把文件到处乱放,有些甚至从来没有听说过它。

                              Linux系统中常见的目录名称以及相应内容

    目录名称

    应放置文件的内容

    /boot

    开机所需文件—内核、开机菜单以及所需配置文件等

    /dev

    以文件形式存放任何设备与接口

    /etc

    配置文件

    /home

    用户主目录

    /bin

    存放单用户模式下还可以操作的命令

    /lib

    开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数

    /sbin

    开机过程中需要的命令

    /media                                         

    用于挂载设备文件的目录                                                                                 

    /opt

    放置第三方的软件

    /root

    系统管理员的家目录

    /srv

    一些网络服务的数据文件目录

    /tmp

    任何人均可使用的“共享”临时目录

    /proc

    虚拟文件系统,例如系统内核、进程、外部设备及网络状态等

    /usr/local

    用户自行安装的软件

    /usr/sbin

    Linux系统开机时不会使用到的软件/命令/脚本

    /usr/share

    帮助与说明文件,也可放置共享文件

    /var

    主要存放经常变化的文件,如日志
    /lost+found

    当文件系统发生错误时,将一些丢失的文件片段存放在这里

    绝对路径vs相对路径

    在Linux系统中另外还有一个重要的概念—路径。

    路径指的是如何定位到某个文件,分为绝对路径与相对路径。

    绝对路径指的是从根目录(/)开始写起的文件或目录名称

    相对路径则指的是相对于当前路径的写法。

  • 相关阅读:
    一夜风雨,夏入秋
    Starting,博客园的开通,渐行渐远
    The second day
    The first day study
    [前缀和] Jzoj P3913 艰难的选择
    [树形dp] Jzoj P3914 人品问题
    [匈牙利][Floyd] Jzoj P1015 导弹
    [高精度][规律][二分] Jzoj P4213 对你的爱深不见底
    [概率dp] Jzoj P4212 我想大声告诉你
    [最小割][最大流] 洛谷 P1345 奶牛的电信
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/11164671.html
Copyright © 2011-2022 走看看