Linux 基础知识(三)

一、定义一个对所有用户都生效的命令别名
alias td='tcpdump -i ens192 -nnv not port 65022'

二、显示/etc/passwd文件中不以/bin/bash结尾的行
grep -v "/bin/bash$" /etc/passwd

三、找出/etc/passwd文件中,包含二位数字或者三位数字的行
grep "\<[0-9]{2,3}\>" /etc/passwd
grep "\<[[:digit:]]{2,3}\>" /etc/passwd

四、显示/proc/meminfo文件中以大写或小写S开头的行;用三种方式实现
grep -i "^s" /proc/meminfo
grep "^[s|S]" /proc/meminfo
sed -n "/^[s|S]/p" /proc/meminfo

五、使用echo输出一个绝对路径,使用egrep取出路径名,类似执行dirname /etc/passwd的结果
echo /etc/sysconfig | grep -E -o "[^/]+/?$"

六、找出ifconfig中的ip地址。要求结果只显示IP地址。
ifconfig | sed -En 's/.inet (addr:)?(([0-9].){3}[0-9])./\2/p'

七、vim定制自动缩进四个字符
vim .vimrc
set ai
set ts=4

八、编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和。
#!/bin/bash
#
sum=0
for account in user1 user2 user3
do
if id $account &> /dev/null
then echo "$account exists"
else
useradd $account
fi
uid=$(id -u $account)
sum=$[$sum+$uid]
done
echo "sum_id = $sum"

九、find用法及常用用法的实例演示
-name string:根据文件名精确查找,可用glob通配符。
-iname string:不区分大小写的-name。
-regex PATTERN:根据正则查找,匹配范围是整个路径,比如要查找./fubar3,应该用.bar.或.b.3’,而不是f.r3。
-user USERNAME/UID:查找指定属主的文件。
-group GNAME/GID:查找指定属组的文件。
-uid UID:查找指定属主的文件
-gid GID:查找指定属组的文件。
-nouser:查找没有属主的文件。
-nogroup:查找没有属组的文件。
-type [fdcblps]:根据文件类型查找。
-size [+-]n:根据文件大小查找,可用单位[bcwkMG];+表示大于,-表示小于,不加表示精确匹配(也没那么精确,10M表示9-10M都符合条件)
-mtime [+-]days:-表示days内修改过,+表示days前修改过,不加表示正好在days修改过。
-ctime [+-]days:改变时间,+-含义同-mtime。
-atime [+-]days:访问时间,+-含义同-mtime。
-mmin n:n分钟前修改过文件内容,
-cmin n:n分钟前文件改变过。
-amin n:n分钟前文件被访问过。
-perm [=-/] MODE:按权限查找,-表示文件权限是MODE超集,/和+表示权限中只要有一位能匹配就符合,不指定任何符号表示精确匹配。

根据文件的类型查找:
typeTYPE:
f:普通文件
d:目录文件
l:符号链接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件

组合测试:
与:-a,默认组合逻辑;
或:-o
非:-not,!
根据文件的大小查找:
-size[+|-]#UNIT
常用单位:k,M,G

#UNIT:(#-1,#]
-#UNIT:[0,#-1]
+#UNIT:(#,oo)

根据时间戳查找:
以“天”为单位:
-atime[+|-]#访问时间
#:[#,#-1)
-#:(#,0]
+#:(oo,#-1]
-mtime修改时间–n +n 按文件更改时间查找 –n n天内, +n n天前
-ctime修改时间

以“分钟”为单位:
-amin
-mmin
-cmin

根据权限查找:
-perm[/|-]mode
mode:精确权限匹配;/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;

处理动作:
-print:输出至标准输出;默认的动作;
-ls:类似于对查找到的文件执行“ls-l”命令,输出文件的详细信息;
-delete:删除查找到的文件;
-fls/PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
-okCOMMAND{}\;:对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
-execCOMMAND{}\;:对查找到的每个文件执行由COMMAND表示的命令;

实例演示

查找root目录下所有文件名为test.txt的文件
find /root -name test.txt

查找文件忽略文件名的大小写
find /root -iname test.txt

根目录下查找目录名为test的目录
find / -type d -name test

查找root目录目录下的所有txt文件
find /root -type f -name "*.txt"

查找权限为664的文件
find / -perm 644

查找大小为10M的文件
find / -size 10M -ls

查找文件大小在1M-10M之间的文件
find / -size +1M -size -10M -ls

查找最近7天修改过的文件
find / -mtime 7
查找最近7天被访问过的文件
find / -atime 7

找到txt类型的文件并删除
find . -type f -name "*.txt" -exec rm -f {} \;

找到权限为755的目录并改为777find /root -type d -perm 755 -print -exec chmod 777 {} \;

猜你喜欢

转载自blog.51cto.com/14074807/2335804