Shell Script,Shell腳本與Windows/Dos下的批處理類似,也就是用各種命令預先放入到一個文件中,方便一次性執行的一個程序文件,主要是方便管理員進行設置或者管理用的。可是它比Windows下的批處理更強大,比用其餘編程程序編輯的程序效率更高,它使用了Linux/Unix下的命令。python
換一種說法也就是,shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在裏面,而後用正規表示法,管道命令以及數據流重導向等功能,以達到咱們所想要的處理目的。linux
更明白地來講,shell script就像早期dos年代的.bat,最簡單的功能就是將許多指令彙整寫一塊兒,讓使用者很容易地就可以一個操做執行多個命令,而shell script更是提供了數組,循環,條件以及邏輯判斷等重要功能,讓使用者能夠直接以shell來寫程序,而沒必要使用相似C程序語言等傳統程序編寫的語法。nginx
shell腳本能夠實現自動化運維,能大大增長咱們的運維效率shell
Shell腳本的第一行必須是:#!/bin/bash,"#!" 是一個約定的標記,後面跟着的/bin/bash是告訴系統這個腳本須要使用/bin/bash解釋器來執行,即便用哪種Shell。編程
簡單來講就是告訴系統這是一個什麼語言寫的腳本,是python是shell或者是其餘的腳本語言所寫的,而後系統才能使用相應的解釋器去執行這個腳本。不過若是這個shell腳本是在本機執行的話,卻是能夠省略掉:#!/bin/bash,由於可以識別本機的命令,可是若是到另外一臺機器就不必定可以執行了,因此文件的第一行纔要寫這樣的聲明。數組
Shell腳本的文件名稱是以.sh爲後綴,用於區分這是一個shell腳本,shell中的註釋符是井號「#」,和其餘編程語言同樣,註釋的那一行內容不會被解釋器執行,可是要注意區別「#!」和「#」,前者是標記,後者纔是註釋符。bash
編寫第一個腳本:運維
#!/bin/bash echo "hello shell!" w ls
執行腳本的方法有三種:編程語言
第二種執行方法是給這個Hello.sh的腳本文件加上了可執行權限,因此能夠當作一個二進制文件直接執行日誌
sh和bash其實是同一個命令,由於sh是bash的軟鏈接文件:
查看腳本執行過程 bash -x studyshell01.sh ,每個「+」表明執行的命令,後面跟着命令的執行結果。
查看腳本是否語法錯誤 bash -n studyshell01.sh,沒有輸出表明沒有錯誤,不然直接輸出錯誤:
可是要注意的是,這只是檢查腳本的語法錯誤,若是你係統命令寫錯了,是不會被檢查到的。
1.date命令,會顯示當前系統時間日期
[root@yolks3 shell]# date 2018年 09月 13日 星期四 23:45:07 CST
2.date命令,在shell中用處很是大;對文件後綴增長一個時間,以便後期管理 3.date +%Y-%m-%d, date +%y-%m-%d 年月日
[root@yolks3 shell]# LANG=en #臨時切換爲英文顯示 [root@yolks3 shell]# date Thu Sep 13 23:46:51 CST 2018 //英文日期 [root@yolks3 shell]# date +%Y 2018 四位的年 [root@yolks3 shell]# date +%y 18 兩位的年 [root@yolks3 shell]# date +%m 09 月份 [root@yolks3 shell]# date +%M 47 分鐘 [root@yolks3 shell]# date +%d 13 日期 [root@yolks3 shell]# date +%D 09/13/18 特殊格式的年月日 [root@yolks3 shell]# date +%Y%m%d 20180913 組合年月日 [root@yolks3 shell]# date +%Y-%m-%d 2018-09-13 拼接年-月-日 [root@yolks3 shell]# date +%F 2018-09-13 格式化後的年-月-日 [root@yolks3 shell]# date +%H 23 時 [root@yolks3 shell]# date +%s 1536853846 時間戳,表示距離1970年總共過去了多少秒 [root@yolks3 shell]# date +%S 57 秒 [root@yolks3 shell]# date +%T 23:53:26 時間:時:分:秒
4.常見時間單位
[root@yolks3 shell]# date +%w 4 今天周幾 [root@yolks3 shell]# date +%W 37 本週是今年第多少周
5.日曆
[root@yolks3 shell]# cal September 2018 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
6.標記以前或以後的時間
需求:在作nginx日誌切割的時候,到了凌晨切割日誌,到了零點零分切割的日誌是前一天的日誌。因此把日誌加一個時間標記的話,應標記爲昨天的日期
示例:
[root@yolks3 shell]# date -d "-1 day" Wed Sep 12 23:59:16 CST 2018 [root@yolks3 shell]# date -d "-1 day" +%F 2018-09-12 [root@yolks3 shell]# date -d "-1 month" +%F 2018-08-13 [root@yolks3 shell]# date -d "-1 months" +%F 2018-08-14
7.時間戳 : date +%s
另外一種表現方法,表示時間戳 : date -d @1504620492 就是@後跟時間戳
[root@yolks3 shell]# date +%s 1536854629 [root@yolks3 shell]# date -d @1536854629 Fri Sep 14 00:03:49 CST 2018
8.若想在linux系統中,把具體的日期換算成時間戳的時候,可使用date +%s -d "2018-09-14 00:06:19"
[root@yolks3 shell]# date +%F" "%T 2018-09-14 00:06:19 顯示年月日時分秒 [root@yolks3 shell]# date +%s -d "2018-09-14 00:06:19" 1536854779 轉換時間戳