Linux Shell编程学习札记


Linux课的几个Shell编程学习札记。

1、找出文件sample.txt中出现”Linux”的次数

#!/bin/bash
#how many "Linux" in Linux.txt?
grep -o "Linux" Linux.txt | wc -l

2、将/etc/passwd的第一列(用户名)取出,以”the n account is $usr”显示每一个用户名。n表示行数,其中,/etc/passwd以”:”作为分隔符

#!/bin/bash
#find the first column of /etc/passwd
awk -F: '{printf("the %d account is %s\n",NR,$1)'} /etc/passwd

{和}前面的'不能用\替换,否则会出错。NR是awk自带的记录数变量。

awk的相关知识 http://www.bkjia.com/search.aspx?where=nkey&keyword=5129

3、隔行显示文件的内容

#!/bin/bash
#print odd row
cat test.txt | awk '{if (NR%2==1) print $0}'

如果要隔行删除这个文件的内容,那么可以把输出重定向,然后删除原文件

4、删除当前目录下非指定日期的文件

#!/bin/sh
ls -1 |while read line
do
month=`echo $line|awk '{print $6}'`
day=`echo $line|awk '{print $7}'
time=echo $line|awk '{print $8}'
file=`echo $linr|awk '{print $9}'
if [ $month="RIGHTMONTH" -a $day="RIGHTDAY" -a $time="RIGHTTIME"
then
continue
else
rm $filr
fi
done

这个最好不要轻易尝试,我试了下不小心就把所有脚本文件都删了,在回收站中找不到,应该是进黑洞了,欲哭无泪..

5、挂载/卸载U盘到/mnt/usb

#fidsk -l
#VM->snapshot->找到u盘
#cat /proc/partitions 显示文件系统
cd /mnt
mkdir usb
sudo mount /dev/sdb1 ./usb #挂载
cd usb
ls -l
cd ..
umount ./usb #卸载

相关内容