Shell使用printf进行进制转换
Shell使用printf进行进制转换 localhost:~ 4aiur$ printf “%d\n” \0x64 100 localhost:~ 4aiur$ printf “%x\n” 100 64
awk应用举例
打印磁盘INODE最大值 # df -Pi | awk ‘BEGIN{OFS=”\n”;Max=0} {if (NR!=1) {sub(/%/,””,$5); Max=$5>Max?$5:Max}} END{print Max}’ 38 打印磁盘空间最大值 df -P | awk ‘BEGIN{OFS=”\n”;Max=0} {if (NR!=1) {sub(/%/,””,$5); Max=$5>Max?$5:Max}} END{print “diskUsedSpacePercent: “Max,”diskSpaceUpdateTime: “systime()}’ diskUsedSpacePercent: 55 diskSpaceUpdateTime: 1252898042 按netstat中ESTABLISHED状态的连接数量进行排序 netstat -an 2>/dev/null | awk /ESTABLISHED/'{print $5}’ | awk -F: ‘{!ip[$(NF-1)]++} END { for (item in ip) print item,ip[item] | “sort -k2 […]
shell递归一例
用递归写的一个光标旋转的小脚本 [root@maint-app-108 recurse]# cat cursor.sh cursor () { #{{{ message=”$1″ count=”$2″ for item in “|” “/” “-” “\\” do printf “\r${item} ${message} $count” usleep 50000 done cursor waiting $((count+1)) } cursor waiting 1 [root@maint-app-108 cursor]# 用递归做这种无限循环最后脚本会退出,下面这个while :不会退出。 [root@maint-app-108 cursor]# cat cursor.sh cursor () { #{{{ message=”$1″ for item in “|” “/” “-” “\\” do printf […]
排除Apache access log乱序日志
排除Apache access log乱序日志 由于Apache的访问日志时间记录的是访问开始时间,所以会有时间不是顺序排列的情况产生。 由于有一个特殊需求,需要把乱序的日志排除掉,今天写了个小脚本处理了一下。 转换Apache accesslog时间为时间戳,进行处理 把乱序日志打印到了badlog文件中 [root@4Aiur ~]# cat foo 58.59.23.18 – – [26/Nov/2008:11:04:05 +0800] “GET /test.html HTTP/1.1” 200 8228 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)” 58.59.23.18 – – [26/Nov/2008:11:03:05 +0800] “GET /test.html HTTP/1.1” 200 8228 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; […]
自动修改crontab配置
自动修改crontab配置 方法1:使用crontab -l把crontab内容导出到文件中,使用编辑器或脚本修改导出的文件,之后使用新的配置文件覆盖掉现有的配置。 [4Aur@4Aiur ~]$ crontab -l > cron[4Aur@4Aiur ~]$ sed -i ‘s/ls/dir/’ cron [4Aur@4Aiur ~]$ crontab cron 方法2:使用here文档的方式更新crontab的配置。 [4Aur@4Aiur ~]$ crontab -l0 * * * * ls [4Aur@4Aiur ~]$ sh cron_modify.sh [4Aur@4Aiur ~]$ crontab -l 0 * * * * dir [4Aur@4Aiur ~]$ cat cron_modify.sh crontab -e /dev/null :%s/ls/dir/g :wq EOF [4Aur@4Aiur ~]$
被用于保留(reserved meanings)的退出状态码
Exit Codes With Special Meanings Reserved Exit Codes Exit Code Number Meaning Example Comments 1 Catchall for general errors let “var1 = 1/0” Miscellaneous errors, such as “divide by zero” 2 Misuse of shell builtins (according to Bash documentation) ? Seldom seen, usually defaults to exit code 1 126 Command invoked cannot execute ? […]
Shell保留变量
保留变量 Bourne shell保留变量 Bash和 Bourne shell以同一种方法来使用特定的shell变量。某些情况下,Bash为变量分配一个默认的值。下表给出一个简单的shell变量的概览: 保留的 Bourne shell 变量 变量名字 定义 CDPATH 一个由冒号分割的目录列表作为内建命令 cd 的搜索路径。 HOME 当前用户的home目录;默认为内建命令 cd 。这个变量的值同样被~扩展使用。 IFS 分割域的一个字符的列表;用于shell把词分开作为扩展。 MAIL 如果这个变量设成一个文件名并且 MAILPATH 变量没有设置,Bash在指定文件中通知用户邮件的到达。 MAILPATH 一个用冒号分隔的文件名列表,shell周期性地从这个文件里检测新邮件。 OPTARG getopts 内建命令处理的最后的选项参数的值。 OPTIND 最后一个由 getopts 内建命令处理的选项参数的索引号。 PATH 一个用冒号分隔的目录列表,shell从这些目录里寻找命令。 PS1 主要提示符。默认值是 “’\s-\v\$ ‘”。 PS2 次要提示符。默认值是 “’> ‘”。 Bash保留变量 这些变量是设置好的或者被Bash使用的,但是其他shell通常不会对它们进行特殊处理。 保留Bash变量 变量名 定义 auto_resume 这个变量控制shell如何与用户交互和作业控制。 BASH 用于执行当前Bash实例的全路径。 BASH_ENV 如果这个变量在Bash调用执行一个shell脚本时已被设置,它的值将被展开并用作在执行脚本前读取的启动文件名。 BASH_VERSION 当前Bash实例的版本号。 BASH_VERSINFO 一个只读变量数组,它的成员保存这个Bash实例的版本信息。 COLUMNS select 内建命令来决定打印选择列表时终端宽度。在收到 SIGWINCH 信号时自动设置。 […]
使用bash用10种不同的方法计数到11
使用bash用10种不同的方法计数到11 #!/bin/bash # Counting to 11 in 10 different ways. n=1; echo -n “$n ” let “n = $n + 1” # let “n = n + 1” also works. echo -n “$n ” : $((n = $n + 1)) # “:” necessary because otherwise Bash attempts #+ to interpret “$((n = $n + 1))” […]
特殊Bash变量
特殊Bash变量 字符 定义 $* 展开为位置参数,从1开始。当扩展发生在双引号时,它展开成一个单独的词,每个参数的值由 IFS 特殊变量的第一个字符分隔。 $@ 展开为位置参数,从1开始。当在双引号里展开时,每个参数展开成独立的词。 $# 把位置参数展开为十进制数字。 $? 展开成最近执行的前台管道程序的退出状态。 $- 一个连字符展开为当前选项标志 内部命令集 或者那些shell自己的集(如-i)。A hyphen expands to the current option flags as specified upon invocation, by the set built-in command, or those set by the shell itself (such as the -i). $ 展开成shell的进程ID。 $! 展开成最近在后台(异步)执行的命令的进程ID。 $0 展开成shell或者shell脚本名。 $_ 下划线变量在shell启动时设置,包含shell的绝对文件名或者作为参数列表被执行的脚本。随后,它展开为前一个命令扩展后的最后一个参数。它同样设置为每个执行程序的全路径,放在那个命令的输出环境中。当检查邮件时,这个参数保存邮件文件的名字。The underscore variable is set […]
使用shell进行大小写转换
使用shell进行大小写转换 大写转小写 for f in *; do rename $f echo $f | tr "[:upper:]" "[:lower:]" $f; done 小写转大写 for f in *; do rename $f echo $f | tr "[:lower:]" "[:upper:]" $f; done