统计求平均
>>> awk'{a[$1]+=$2; b[$1]+=1} END {for (i in a ) a[i]/b[i]}'
6=>6;6
>>> echo 'Port=6,Port=2,Port=1' | sed 's/[0-9]/&;&/g'
列出d1和d2相同的文件
>>> ls -1 d1 d2 | awk '{ab[$0]++} END{for (i in ab){if(ab[i]>1)print i;}}'
显示不打印字符 v 显示行结束E 显示Tab T
>>> cat -A file
转换window文件
>>> dos2unix file
两行合并 N命令读取下一行,和当前行看成”一行”
>>> echo -e "1\n2\n3" | sed 'N;s/\n//'
n命令会读取下一行,sed命令只会对n命令读取的行进行处理
>>> echo -e "1a\n2a\n3a\n4a" | sed 'n;s/a/111/g'
压缩重复的字符
>>> echo 122221111111111 | tr -s '12'
找到含有NF的B那行, 将下面条空行删除
>>> sed '/NFB/ {n;/^$/d}' test
非整数运算
>>> echo "1.20*2.40" | bc
替代手动输入
echo "please choose a oracle sid: 1):apparc 2):b2bapp2 default:apparc"
read ans
case $ans in
1)
ORACLE_SID=apparc; echo $ORACLE_SID;;
2)
ORACLE_SID=b2bapp2; echo $ORACLE_SID;;
\*)
ORACLE_SID=apparc; echo $ORACLE_SID;;
esac
>>> source script <<< ""
>>> source script <<< "2"
sed 分组和匹配例子
>>> echo 'Port=6;Port=2;Port=1' | sed 's/\(Port=\)\(.\);/\1\2;\2,/g'
打印够个挂载点的使用率,’-n’ 选项,该选项告诉 sed 除非明确要求打印模式空间,否则不这样做。
>>> df -k | sed -n '/^\/dev\/sda8/p' | awk '{print $5}' | sed 's/.$//'
c修改 a追加 i插入
>>> echo "a" | sed '1a\b'
>>> echo "a" | sed '1i\b'
>>> echo "a" | sed '1c\b'
监视指定的进程. -d的作用是用逗号分割pgreg的结果
>>> top -p $(pgrep -d , gvfs)
# 找出含关键字最多的那一行. -F是指定分割行的分割符; NF指出当前行的字段数
>>> echo -e 'aaabbccc\nabababab\nabcabc' | awk -Fab '{if(NF-1>a) {a=NF-1;b=$0 }}END{print a; print b}'
awk设置变量
>>> echo -e 'xxxx\nxxxxxx' | awk -v a=$aaa '{print a}'
第二个a起都变成b.
>>> echo "a=aaaa" | sed 's/a/b/2g'
监视cpu使用率最高的4个软件. –sort -pcpu 按cpu使用率排序
>>> watch "ps -eo pcpu,user,pid,cmd --sort -pcpu | head -5"
%指定数字位数, g表示用空格填充
>>> seq -f "str%03g" 9 11
输出等宽
>>> seq -w 1 29
指定分割符
>>> seq -s, -f"str%03g" 9 11
创建目录是指定权限
>>> mkdir -m 777 /tmp/123
列出不同gvim实例的环境变量. -C 根据名字选择. e 列出环境变量
>>> ps -C gvim e
列出pts/2上的进程
>>> ps -t 'pts/2' -o comm,tty
每隔10秒高亮目录变化
>>> watch -d -n 10 ls /tmp
刷新xbindkeys
>>> killall -HUP xbindkeys
awk计算
>>> a=0.1
>>> echo '' | awk -v a=$a '{print int(a+0.999)}'
查看当月日历
>>> cal $(date +%m\ %Y)
同步时间
>>> sudo ntpdate 202.120.2.101
查看运行级别
>>> runlevel
echo输出不换行
>>> echo -e "test\c"
判断普通用户和root用户
>>> echo $UID
复制目录文件(不同的)
>>> rsync -avu src/ dest/
复制目录文件(不同),并删掉目标目录不存在的
>>> rsync -avu src/ dest/ --delete
显示用户的组
>>> groups matt
matt wheel
查找文件属于的软件包
>>> pacman -Qo \`which findmnt`
八进制的10加上十进制的1
>>> echo $(( 8#10 + 1 ))
9
挂载一个tmpfs文件系统到~/test目录,大小是4M。
因为特殊文件系统没有特别的设表,所以第二个 tmpfs 仅仅是一个区别的标注。
>>> mount -t tmpfs tmpfs ~/test -o size=4m
检索man
>>> man -k regex
regex (3) - POSIX regex functions
regex (7) - POSIX.2 regular expressions
指定第7区关于regex的帮助
>>> man 7 regex
w是写;a是all也就是guo;
t是贴位符,意思是,即使有多个用户对这个目录有可写权限, 只有文件所有者可以删除设置 sticky 的目录中的文件。
>>> chmod -v a+wt $LFS/sources
安装老的arch,对于找不到光碟盘的处理
>>> mkdir /arch
>>> mount -r /dev/sdb2 /arch
>>> modprobe loop
>>> losetup /dev/loop0 /arch/xxxx.iso
>>> ln -s /dev/loop0 /dev/disk/by-label/ARCH_201207
>>> exit
-F 知道分割符 $2*2.5 会把第二个字段强制变成数字做算术运算
>>> awk -F\" '{print $1 $2*2.5 "pixes\""}'
显示虚拟文件系统的挂载.
-a 显示所有虚拟文件系统 -T 打印文件系统名
>>> df -aT
>>> findmnt
显示文件目录设备id。-c 指定格式
>>> stat -c %D /
>>> stat -c %d /
解压initramfs
>>> lsinitcpio -x ../initramfs-linux.img
查看一个软件组包含的软件包
>>> pacman -Qi base
>>> pacman -Si base
目录堆栈
>>> pushd /tmp
>>> pushd ~/resources
>>> dirs
~/resources /tmp
>>> popd
直接编辑文件
>>> cat test
hello word
over
设置时钟。(linux,将cmos时钟认为是UTC. ntpd是时间同步). 好像有错...
>>> ntpd -qg
>>> hwclock -s
取用户家目录
>>> getent passwd matt | cut -d: -f6
查看隐含规则
>>> make -p
-n 只打印不执行命令 -C 指定执行makefile的目录 CFLAGS=-g 临时设置变量
>>> make CFLAGS=-g -nC ch22
chroot到独立环境
>>> sudo env -i PATH=/bin:/usr/bin /usr/sbin/chroot /media/lfs bash