shell自己的能力 写脚本还行,起码现在现网上跑的自己写的脚本 程序-日志的 定时备份和删除,nfs上海量文件删除和发送邮件。
【data】 export PATH=/mall/jdk/jdk1.7/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin export LANG=zh_CN.GB18030
start=`date +%s -d "2011-11-28 15:55:37"` end=`date +%s -d "2011-11-28 15:55:52"` echo $(($end-$start)) date "+%Y-%m-%d %H:%M:%S" date -d '+1 day' +"%d" 本日+1 date -s 20100405 date -s 14:31:00
1、上个月末 date -d `date +%y%m01`"-1 day" +%d 2、往前倒 date -d -`date +%d`day +%d 3、条件 if [`date +%d -d tomorrow` == 01 ]; 4、上个月 date -d last-month date -d -1month date -d '-1 month' +"%m" 5、下个月 date -d next-month date -d 1month 6、本月初 date -d 1`date +%B` 上个月初 date -d 1`date -d last-month +%B` 指定月份 day -d 1May
echo `date +%d` | xargs -I{} date -d '-{} day' +%Y%m%d Linux如何得到上月月末日期
sed -i "3s/.*/$table/g" conf/run.sql table=t_sms_mt_log_`date +"%m"` 本月,然后月初1号还是统计上月 date -d '-1 day' +"%m" 本月,实实在在的本月 subject="每日验证码下发数量统计_`date -d '-1 day' +"%m%d"`"
select * from t_sys_user where user_code='duanzz';
update t_sys_user set terminal_id='13730000000' where user_code='duanzz';
set fileformat=unix
字符串的截取-替换 echo ${stringa:1} 从第二位一直往后所有 echo ${stringa:2:5} 从第三位往后一共截取5位
echo ${stringZ:(-4)} 从右到左开始截取 echo ${stringZ: -4} 从右到左开始截取,和上面效果一样 a=${stringa%%f} 去掉变量stringa后缀f。 echo ${stringZ/abc/xyz} 变量中字符串 abc被xyz替换 echo ${stringZ/#abc/XYZ} 用'XYZ'替换开头的'abc'. echo ${stringZ/%abc/XYZ} 用'XYZ'替换结尾的'abc'.
you_id=${USER}-on-${HOSTNAME} you_id=$USER-on-$HOSTNAME echo $you_id root-on-db1 效果一样。变量与字符串混合输出 val=${1##+(0)} # 使用局部变量,匹配最长连续的一个或多个0.
引用:${backup_DIR}/$DATE #备份的变量: backup_dir=/home/mysql/mysql_bak date=`date -d "+%Y%m%d %H:%M:%d"` yes_time=`date -d yesterday "+%Y%m%d"` mkdir -p /opt/chen$datenailong chen20160608nailong date -d "2 day ago" +"%Y-%m-%d" 昨天日期 date -d "1 week ago" +"%Y-%m-%d" 上周日期 date +%Y%m%d%h%M
单引号(' ')操作与双引号基本一样,但是不允许引用变量,因为$的特殊意义被关闭了. 在单引号中, 任何特殊字符都按照字面的意思进行解释,除了'. 所以说单引号("全引用")是一种比双引号("部分引 用")更严格的引用方法.
'' 单引号屏蔽所有特殊字符 "" 双引号屏蔽部分特殊字符
【eval】
两次扫描
test.txt内容:hello shell world!
myfile="cat test.txt"
(1)echo $myfile #result:cat test.txt
(2)eval echo $myfile #result:hello shell world!
【echo】 echo -e 处理特殊字符,解释特殊字符。生效特殊字符 echo -n 不换行输出 echo -e "andddd" //自动换行 echo $(ls -al)不换行 echo "$(ls -al)" 换行
bash$ echo hello! hello! bash$ echo "hello!xty" x y
echo "chen" >> file :把chen内容追加到file文件中来,不覆盖 echo "chen" > file :覆盖了!!!
[A-Za-z0-9] 截取hello字符串: # VAR='hello world!' # echo ${VAR:0:5} hello 截取world字符串: # echo ${VAR:5:-1} world 截取最后一个字符: # echo ${VAR:(-1)} !
######################## (( ... ))结构可以用来计算并测试算术表达式的结果. #!/bin/bash ((5 > 4)) echo $? echo "Exit status of "((5 > 4))" is $?."
【从键盘输入-不止是read】 command << word any input word
read -p "Your command: " CMD until [ $CMD == 'q' ]; do ! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]{1,}"` bincp $COMMAND echo "copy $COMMAND finished." read -p "Continue: " CMD done
【输出到屏幕上】 cat << word ----------- name id word 【脚本中调用】 source _function.sh 【shell函数】 hello () { echo `date` } hello ###这儿直接写hello `反引号允许你将shell命令的输出赋值给变量 today=`date +%Y%m%d` echo "today is `date +%Y%m%d`"
sleep 5 #过五秒再执行
【basename】 $ basename /tmp/test/file.txt file.txt $ basename /tmp/test/file.txt .txt file
【dirname】 dirname /var/log/messages 获取文件或文件夹的路径(上一级) /var/log
【数组】 var=("123" "456" "789") var[1]=123 var[2]=456 echo "$var[1],$var[2]" #
echo $? 条件为真,输出0,条件为否,输出1 cp 1.txt /opt/apps/2.txt >/dev/null 2>&1 status=$? echo $? #如果cp这个命令成功的话,输出0,不成功的话,输出1
:冒号在此是占位符,{str:=expr} 如果变量str不为空,${str:=expr}就等于str的值,若str为空,就把expr的值赋值给str : >> target_file 如果这个文件之前并不存在,那么就创建它 if [ $name="" ] 如果这个变量为空值 then : # 什么都不做,引出分支. if [ ! -s 22.txt ] 如果22.txt这个文件为空 或者是 if [ -z 22.txt ]
[ $I -eq 1 ] && MIN=$MYRAND if [ -s $name ] 如果这个变量为空if [ -d $path ] 如果目录存在if [ -s $path ] 如果目录存在if [ -n "$1" ] # 测试是否有命令行参数(非空). -a 文件存在 YES ! -f 这是一个一般文件 -d 这是一个目录 -b 这是一个快设备(软盘,硬盘,光驱等) -c 这是一个字符设备(键盘,声卡等) -p 这个文件是一个管道 -h 或者 -L 这是一个符号链接 -r 文件是否可读 -w 文件是否可写 -x 文件是否可执行 -O 你是否为文件拥有者 -G 文件group-id是否与你相同f1 -nt f2 文件f1比文件f2新f1 -ot f2 文件f1比文件f2旧 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|