• 学习 Shell —— 认识 shell


    0. 认识 shell

    shell 是一个命令行解释器(interpreter),它会输出一个提示符,等待输入一个命令,然后执行该命令。如果该命令行的第一个单词不是一个内置的 shell 命令,那么 shell 就会假设这是一个可执行文件的名字,它将加载并运行这个文件。

    1. 日期

    date1=$(date --date='2 days ago' %Y%m%d)       #前天
    date2=$(date --date='1 days ago' %Y%m%d)       #昨天
    date3=$(date %Y%m%d)                   #今天

    日期的输出控制(Linux date命令-显示和设置系统日期与时间 压缩包以YYMMDD格式命令):

    • %F 完整日期格式,等价于 %Y-%m-%d
    • %I 小时(00-12)

      • %H 小时(00-23)
      • %s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
        • %S 秒(00-60)
      • %N 纳秒(000000000-999999999)
      $ date +%F_%H
      2017-08-20_02
      $ date +%s.%N
      1503220932.302839969

    2. 数据流重定向

    • 标准输入(stdin):代码为 0,使用 < 或 <<
    • 标准输出(stdout):代码为 1,使用 > 或 >>
      • 1>:以覆盖的方式将正确的数据输出到指定的文件或设备上;
      • 1>>:以累加的方式将正确的数据输出到指定的文件或设备上;
    • 标准错误输出(stderr):代码为 2,使用 2> 或 2>>
      • 2>:以覆盖的方式将正确的数据输出到指定的文件或设备上;
      • 2>>:以累加的方式将正确的数据输出到指定的文件或设备上;

    3. 判断式

    • 检查某些文件的属性,使用 test 命令:
      • -e(exist),文件是否存在(常用)
      • -f(filename),文件名是否存在且为文件(常用)
      • -d(directory),文件名是否存在且为目录(常用)

    3. $?(命令回传码)与逻辑运算符 &&(与)、||(或)

    如果两个命令之间有相依性。且相依性主要判断的地方在于前一个命令执行结果是否正确。这就涉及命令回传码的概念。若前一个命令执行的结果为正确,在 Linux 下会回传一个 $?=0的值。

    当连续的两个命令通过 && 或 || 连接时,命令之间也可能存在短路现象,后一条命令不一定会执行。

    • cmd1 && cmd2
      • cmd1 成功时($?=0),才会去执行 cmd2
      • cmd1 失败时($?≠0),cmd2 不执行;
    • cmd1 || cmd2
      • cmd1 成功时($?=0),cmd2 不会被执行;
      • cmd1 失败时($?≠0),cmd2 才会被执行;
    $ ll /tmp/abc && touch /tmp/abc/haha
        # 首先查阅 /tmp/abc 目录是否存在,如果存在,才会在其路径下创建 haha 文件
    $ ll /tmp/abc || mkdir /tmp/abc
        # 同样首先查阅 /tmp/abc 目录是否存在,如果不存在,则创建之;
    $ ll /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/haha
        # 注意这里的逻辑表达式的连接不同于C、Java等编程语言;
        # ll /tmp/abc 的回传码为 `$?=0` 时会去执行 && 后的命令,
        # ll /tmp/abc 的回传码为 `$?≠0`时首先执行 || 后的 mkdir /tmp/abc,执行成功后回传码为 `?=0`,继续执行 && 后的语句;
  • 相关阅读:
    WOW.js – 让页面滚动更有趣
    ps快捷键
    多语言网站(如何实现网站的多语言版本?)
    什么是海外镜像点?
    Photoshop视频教程全集:从零开始学习PS全集教学视频
    Storm流计算之项目篇(Storm+Kafka+HBase+Highcharts+JQuery,含3个完整实际项目)
    升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)
    Hadoop2.0/YARN深入浅出(Hadoop2.0、Spark、Storm和Tez)
    基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0YARNMa
    Spark内核源码剖析、Hadoop高端
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421201.html
Copyright © 2020-2023  润新知