❶ linux系統用shell寫個腳本ftp上傳下載文件,文件名帶日期。
這個不是一句話搞定的
vi xxxx.sh 寫一個腳本
#/bin/bash
DATE=`date "%Y%M%D"`
DIR=/xxxxx/xxx
cd $DIR
lftp -pxxx [email protected]
cd xxxxx
get $DATE.txt
exit
chmod +x xxxx.sh
然後 sh xxxx.sh
大致的結構這樣,具體的你要好好研究一下shell才可以。
❷ 如何正確在Linux Shell腳本中定義一個時間變數
1、創建腳本 test.sh,並入截圖內容。
❸ 求助大神:編寫一個shell 腳本 ,移動某個文件夾下的文件到各自的日期組成的目錄下
1、主要是從文件名截取出日期,如果固定了位數
2、可以先缺則按_分割取第二段
echo $file|awk -F\_ '{print $2}'
3、然後再取第4位後面攔扮仿的8位
4、簡纖例如:vi a.sh
#!/bin/sh
for file in `ls *.jpg`;do
echo $file
datedir=$(echo $file|awk -F\_ '{print $2}'|awk '{print substr($1,4,8)}')
mkdir $datedir
/bin/mv $file $datedir
done
❹ 請教如何在shell腳本中得到系統當前時間
在shell腳本里常常需要獲取系統時間來處理某項操作,今天系統的學習了一下如何獲取系統時間。記錄如下:
linux的系統時間在shell里是可以直接調用系統變數的如:
獲取今天時期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d)
命令輸出結果如下:
[root@centi-C sh]# date +%Y%m%d
20120727
[root@centi-C sh]# date +%F
2012-07-27
[root@centi-C sh]# date +%y%m%d
120727
獲取昨天時期:`date -d yesterday +%Y%m%d` 也可以寫成`date -d -1day +%Y%m%d`
[root@centi-C sh]# date -d yesterday +%Y%m%d
20120726
[root@centi-C sh]# date -d yesterday +%F
2012-07-26
[root@centi-C sh]# date -d -1day +%y%m%d
120726
[root@centi-C sh]# date -d -1day +%Y%m%d
20120726
獲取前天日期:`date -d -2day +%Y%m%d`
依次類推比如獲取10天前的日期:`date -d -10day +%Y%m%d`
或n天前的 `date -d "n days ago" +%y%m%d`
明天:`date -d tomorrow +%y%m%d`
注意以上中間有空格
至於你需要什麼樣的日期時間格式,就需要應用相關的時間域參數來實現咯
相關時間域如下:
% H 小時(00..23)
% I 小時(01..12)
% k 小時(0..23)
% l 小時(1..12)
% M 分(00..59)
% p 顯示出AM或PM
% r 時間(hh:mm:ss AM或PM),12小時
% s 從1970年1月1日00:00:00到目前經歷的秒數
% S 秒(00..59)
% T 時間(24小時制)(hh:mm:ss)
% X 顯示時間的格式(%H:%M:%S)
% Z 時區 日期域
% a 星期幾的簡稱( Sun..Sat)
% A 星期幾的全稱( Sunday..Saturday)
% b 月的簡稱(Jan..Dec)
% B 月的全稱(January..December)
% c 日期和時間( Mon Nov 8 14:12:46 CST 1999)
% d 一個月的第幾天(01..31)
% D 日期(mm/dd/yy)
% h 和%b選項相同
% j 一年的第幾天(001..366)
% m 月(01..12)
% w 一個星期的第幾天(0代表星期天)
% W 一年的第幾個星期(00..53,星期一為第一天)
% x 顯示日期的格式(mm/dd/yy)
% y 年的最後兩個數字( 1999則是99)
% Y 年(例如:1970,1996等)
注意:只有超級用戶才有許可權使用date命令設置時間,一般用戶只能使用date命令顯示時間。
添加一個練習腳本,功能:
在每月第一天備份並壓縮/etc目錄的所有內容,存放在/root/bak目錄里,且文件名為如下形式yymmdd_etc,yy為年,mm為月,dd為日。Shell程序fileback存放在/usr/bin目錄下。
#/bin/bash
#filebak
#file executable: chmod 755 filebak
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
bakdir="/root/bak/"
filename="`date +%y%m%d`_etc.tar.gz"
if [ ! -x "$bakdir" ];then
mkdir $bakdir
fi
cd $bakdir
tar cvfz $filename /etc
或使用crontab -e 命令添加定時任務:
0 1 * * * /bin/sh /usr/bin/fileback
❺ 編寫shell腳本,提示用戶從鍵盤輸入當天的日期,日期格式為XX/XX/XXXX,如果輸入正確,則顯示:
#!/bin/bash
read -p "please enter the date: " date
if [[ $date =~ "[0-9]{2}/[0-9]{2}/[0-9]{4}" ]]
then
echo "today is:${date:0:2} month is:${date:3:2} year is:${date:6:4}"
else
echo "wrong date"
fi
我沒有對日期范圍做校驗,你可以自己加一下。
❻ Shell之date命令用法
date命令在shell腳本中用處很大,比如要在腳本中標記一個日誌或者針對某個文件做更改,就可以使用date給它做一些裝飾,比如每天備份mysql,最終生成一個.sql的文件,那麼我們就可以針對這個文件加一個日期的標記,這樣就可以很清晰的知道我們備份的這個文件是哪一天生成的或者周幾生成的,等到下一個對應的周幾,此時備份的sql文件就會自動地將上一個周同一天的備份文件覆蓋掉,這樣就不用刪除文件
1、date
# date //顯示系統當前日期和時間
上面是date命令默認的輸出格式,我們也可以將輸出格式顯示為英文
# LANG=en 姿山 //將系統環境變數LANG設置為英文格式
# date //然後執行date命令,結果如下
2、年月日
我們標記日期的方式一般的格式是:20180321 、 180321
# date +%Y //year,輸出4位數年
# date +%y //輸出2位數的年
# date +%m //m表示month,輸出的結果是月份
# date +%d //d表示day,日
# date +%D //D表示特殊格式的日期表示方法,如下當前日期為2018年3月21日
我們還可以將上面的年月日組合在一起輸出
# date +%Y%m%d //輸出年月日
# date +%F //輸出的年月日會用連字元隔開
3、時分秒
# date +%H //H表示hour小時
# date +%M //M表示minute分鍾
# date +%S //S表示second秒
# date +%s //輸出結果是一個時間戳,表示距離1970年1月1日0時0分過橘正去多少秒
# date +%T //以下面格式輸出時分秒
# date +%H:%M:%S //效果跟上條命令一樣
4、星期
# date +%w 圓冊悔 //輸出結果為星期幾,比如下圖表示當前系統時間是星期三
# date +%W //表示當前為今年的第幾周,比如我這里為今年的第12周
5、日歷
# cal //展示日歷
6、從當前時間往前或往後推算
使用場景:比如我們切割日誌在今天的0時0分,那麼被切割出去的日誌應該以昨天的日期來標記,因此需要倒推一天
# date -d "-1day" //當前系統時間為3月21日,輸出結果為3月20日
# date -d "-1day" +%F
# date -d "-1 month" +%F //上個月
# date -d "-1 year" +%F //表示去年,year後面也可以加上s,day和month後也可以加上s
其他的時分秒也諸如此類
7、時間戳
# date +%s //獲取時間戳
# date -d @1521563928 //將時間戳換算成日期
# date +%s -d "2017-03-21 00:38:48" //將日期換算成時間戳
❼ 用shell寫一個腳本按日期循環執行某一條命令怎麼寫
[ $? -eq 0 ] && echo '成功' || echo '失敗'
[root@centos~]# ls
anaconda-ks.cfg install.log install.log.syslog rpmbuild
[root@centos~]# [ $? -eq 0 ] && echo '成功' || echo '失敗'
成功
[root@centos~]# lsss
-bash: lsss: command not found
[root@centos~]# [ $? -eq 0 ] && echo '成功' || echo '失敗'
失敗
[root@centos~]#