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`,继续执行 && 后的语句;

学习 Shell —— 认识 shell相关推荐

  1. Nginx学习笔记3:Shell脚本检测Nginx服务状态

    前言 nginx 服务启动后,我们需要对其服务状态进行监控,今天学习过程中了解到一段非常有用的小脚本,不仅可以监控Nginx,也可以用来监控其他服务 脚本 A=`ps -C nginx –no-hea ...

  2. 史上最牛最强的linux学习笔记 10.shell基础

    史上最牛最强的linux学习笔记 10.shell基础 写在最前面: 本文是基于某站的视频学习所得,第一个链接如下: https://www.bilibili.com/video/BV1mW411i7 ...

  3. Linux学习笔记二Shell教程

    Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...

  4. 【系统性学习】Linux Shell常用命令

    本文重点是脚本开发时会常用的命令和一些提高效率的高频系统操作命令,其他命令(主要是运维方面的,如网络操作.硬件操作.文件打包等)后续补充. 该文配合[系统性学习]Linux Shell易忘重点整理(会 ...

  5. 【系统性学习】Linux Shell易忘重点整理

    本文主要基于<实用Linux Shell编程>总结,并加入一些网上查询资料和博主自己的推断. 其中命令相关的,已抽取出来在另一篇系统性学习]Linux Shell常用命令中,可以一起使用. ...

  6. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{"x":null} 布尔型 布尔类型有两 ...

  7. Linux基础篇学习—shell及shell脚本

    概述 shell概念 shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统 它的作用类似于Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多:在UNIX或者l ...

  8. Bourne Shell及shell编程

    Bourne Shell及shell编程<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...

  9. 【shell】shell编程(一)-入门

    如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux.说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的很简单. 背景 什么是shell编 ...

  10. 什么是Shell,Shell教程

    现在我们使用的操作系统(Windows.Mac OS.Android.iOS 等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员.网管等)和普通用户(家庭主妇.老年人等)都非常适用:计算机的 ...

最新文章

  1. 安装Python的wx库
  2. 对于shell脚本获取参数的一些小技巧
  3. DOS命令八大经典案例
  4. 网络上一个人也是孤独地.
  5. [十一]SpringBoot 之 添加JSP支持
  6. mq多个消费者消费一个消息_ActiveMQ多个消费者消费不均匀问题
  7. 【渝粤题库】陕西师范大学180103市场营销学Ⅰ作业(高起专)
  8. java分页数据导出excel
  9. 使用 XML 维护 Selenium 自动化测试脚本 ZT
  10. 流程管理的流程与角色
  11. Zookeeper的Leader选举
  12. AES加密算法介绍与实现
  13. c#整数数字转汉字一二三四五
  14. 中国有多少家银行?(最全名单统计)
  15. python中plot是什么意思_讲述python中ubplot的详细用法
  16. 干货 | 手把手教你iOS自定义视频压缩
  17. IE8跳转谷歌浏览器亲测有效
  18. 17 Flask mega-tutorial 第17章 在Linux上部署(腾讯云 Ubuntu)【极其详细的部署过程】
  19. 沉睡者IT:零基础学习短视频与+玩转抖音快手
  20. linux查看端口号使用情况

热门文章

  1. addEventListener事件监听传递参数
  2. 【STL】List基础
  3. Shell 的概述,操作命令
  4. Spark面试:Spark on yarn 运行流程
  5. jedis操作set_使用 JedisAPI 操作 Redis
  6. java jsp输出乱码,这是小弟我的JSP文件,输出后,汉字显示为乱码,怎么解决
  7. html表格内容自动更新,ElementUI table 组件展开 expand,动态更新数据时,视图没有自动更新...
  8. 核方法(kernel method)的主要思想
  9. CoreJava Reading Note(3:Fundamental structure)
  10. python第一题 引发的思考和学习