学习 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将用户程序及其输入翻译成操作 ...
随机推荐
- js 技巧 (一)
· 事件源对象 event.srcElement.tagName event.srcElement.type · 捕获释放event.srcElement.setCapture(); event ...
- 树莓派 - gpio-led platform driver 控制LED
树莓派3b板上有两个LED, pwr (power) 和 act (activity).是platform_driver gpio-led驱动. 可以通过设备树和gpio-led来额外控制一个LED. ...
- 洛谷 4933 洛谷10月月赛II T2 大师
[题解] f[i][j]表示最后一个数为h[i],公差为j的等差数列的个数.n方枚举最后一个数和倒数第二个数转移即可.注意公差可能为负数,需要移动为正数再作为下标. #include<cstdi ...
- 【03】emmet系列之CSS语法
[01]emmet系列之基础介绍 [02]emmet系列之HTML语法 [03]emmet系列之CSS语法 [04]emmet系列之编辑器 [05]emmet系列之各种缩写 单位: 有几个常用值别 ...
- Maven 引入外部包
当需要从外部引入一个包(譬如说读写Excel 的POI jar 包 ), 不需要手动地去官网下载一个包然后粘贴到相应的地方. 只需要把Java 工程 转为 Maven 工程 ( 在工程上右键 > ...
- 家的范围 Home on the Range(洛谷 2733)
题目背景 农民约翰在一片边长是N (2 <= N <= 250)英里的正方形牧场上放牧他的奶牛.(因为一些原因,他的奶牛只在正方形的牧场上吃草.)遗憾的是,他的奶牛已经毁坏一些土地.( 一 ...
- MeepoPS基本使用方法
MeepoPS基本使用 MeepoPS是Meepo PHP Socket的缩写. 旨在提供高效稳定的由纯PHP开发的多进程SocketService. MeepoPS可以轻松构建在线实时聊天, 即时游 ...
- [bzoj1207][HNOI2004]打鼹鼠_动态规划
打鼹鼠 bzoj-1207 HNOI-2004 题目大意:题目链接. 注释:略. 想法: $dp_i$表示打到了第$i$个鼹鼠时最多打了多少个鼹鼠. $O(n)$转移即可. 总时间复杂度$O(n^2) ...
- HDU——1285 确定比赛名次
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Ubuntu 16.04安装SwitchHosts
下载: https://github.com/oldj/SwitchHosts/releases 解压: unzip SwitchHosts-linux-x64_v3.3.6.5287.zip 移动: ...