学习 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`,继续执行 && 后的语句;
学习 Shell —— 认识 shell的更多相关文章
- 轻松学习Linux之Shell文件和目录属性详解
轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...
- Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?
一.背景 Git学习–>如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器? http://blog.csdn.net/ouyang_peng/article/details/ ...
- Linux学习-->如何通过Shell脚本实现发送邮件通知功能?
1.安装和配置sendmail 不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件.不过mail命令是依赖sendmail的,所以我们 ...
- Git学习-->如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?
一.背景 在我之前的博客 git学习--> Gitlab如何进行备份恢复与迁移? (地址:http://blog.csdn.net/ouyang_peng/article/details/770 ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
- 【Shell脚本学习6】Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编 ...
- Linux学习笔记:Shell脚本学习
概念 真正能够控制计算机硬件(CPU.内存.显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁. 由于安全.复杂.繁琐等原因,用户不能直接接触内核(也没有 ...
- Shell学习——Shell分类:登录shell和非登陆shell 交互shell和非交互shell
1.从两个不同维度来划分,是否交互式,是否登录 2.交互式shell和非交互式shell 交互式模式:在终端上执行,shell等待你的输入,并且立即执行你提交的命令.这种模式被称作交互式是因为shel ...
- Linux学习笔记:shell
目录 通配符 特殊符号 变量 环境变量 默认变量 shell script case if for until while function 本文更新于2019-08-23. 通配符 *:0个至无穷多 ...
- Linux学习之路--shell学习
shell基础知识 什么是Shell Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作 ...
随机推荐
- Linux中CentOS网络配置以及与Xshell建立远程连接
为centos配置网络 (1)第一步 点开虚拟机的设置,如下图做相关的设置: 网络连接要选择桥接模式,其他的勾选就按照上图的即可,勾选完成点击确定. (2)第二步 点击VMware的编辑选项,找到“虚 ...
- Python之字符串计算(计算器)
Python之字符串计算(计算器) import re expression = '-1-2*((60+2*(-3-40.0+42425/5)*(9-2*5/3+357/553/3*99/4*2998 ...
- PAT顶级 1002. Business (35)
PAT顶级 1002. Business (35) As the manager of your company, you have to carefully consider, for each p ...
- 原生js获取复选框的值
obj = document.getElementsByName("dk_tj"); var longtxt = ""; for (k in obj) { ...
- 理解javascript中的Array类型
引子: 从事前端开发有段时间了,个人观点:想在前端开发这条路上走的更远,不仅要学好HTML&HTML5.CSS&CSS3,最重要的就是要学好javascript了.所以打好javasc ...
- 【03】placeholder
placeholder 表单占位符解决方案 Css Code :-moz-placeholder, ::-webkit-input-placeholder{ color: #bfbfbf; } . ...
- 56. spring boot中使用@Async实现异步调用【从零开始学Spring Boot】
什么是"异步调用"? "异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执 ...
- 【ZJOI2017 Round1练习&BZOJ4774】D3T2 road(斯坦纳树,状压DP)
题意: 对于边带权的无向图 G = (V, E),请选择一些边, 使得1<=i<=d,i号节点和 n − i + 1 号节点可以通过选中的边连通, 最小化选中的所有边的权值和. d< ...
- 【Github】如何删除github上的项目
1.登录你的githup账户,进入到仓库页面如下图 2.点击setting进入到该仓库的设置界面 3.复制一下仓库的名称,然后下拉到最后,点击delete this repository 4.将刚刚复 ...
- Devu and Flowers lucas定理+容斥原理
Devu wants to decorate his garden with flowers. He has purchased n boxes, where the i-th box contain ...