1.定义一个对所有用户都生效的命令别名
-bash: la: command not found [root@grub6 ~]# vim /etc/bashrc 添加 alias la='ls -a' [root@grub6 ~]# source /etc/bashrc [root@grub6 ~]# la . .bash_history .bashrc .gconf install.log .pki .viminfo .. .bash_logout .config grub1 install.log.syslog .tcshrc .Xauthority anaconda-ks.cfg .bash_profile .cshrc ifcfg-eth0 linux-3.10.67.tar.xz test2.显示/etc/passwd文件中不以/bin/bash结尾的行
[root@yuki ~]# grep -v "/bin/bash$" /etc/passwd3.找出/etc/passwd文件中,包含二位数字或者三位数的行
1.[root@yuki ~]# grep -E "\<[[:digit:]]{2,3}\>" /etc/passwd 2.[root@yuki ~]# grep -E "[0-9][0-9]+[0-9]?" /etc/passwd4.显示出/proc/meminfo文件中以大写或小写S开头的行,三种方法
1.[root@yuki ~]# grep "^[sS]" /proc/meminfo 2.[root@yuki ~]# grep -i "^s" /proc/meminfo 3.[root@yuki ~]# grep -E "^(s|S)" /proc/meminfo5.使用echo输出一个绝对路径,使用egrep取出路径名
1.[root@yuki ~]# echo "/etc/rc.d/rc3.d/S10network" | grep -Eo ".*/" /etc/rc.d/rc3.d/ 2.echo "/etc/rc.d/rc3.d/S10network" | sed -r 's@[^/]+$@@' /etc/rc.d/rc3.d/6.找出ifconfig中的ip地址
1.[root@yuki ~]# ifconfig ens33 | grep -o "inet [^[:space:]]\+" | cut -d" " -f2 192.168.3.100 2.[root@yuki ~]# ifconfig ens33 | sed -rn '/^[[:space:]]+inet /p' | sed 's@^.*inet@@' | sed 's@netmask.*@@' 192.168.3.1007.vim定制自动缩进四个字符
[root@yuki ~]# echo "set tabstop=4" >> /etc/vimrc8.编写脚本,实现自动添加三个用户,并计算其uid之和
#!/bin/bash #Calculation uid sum sum=0 for i in {1..3};do user=user$i useradd $user &> /dev/null idnumber=$(id -u $user) &> /dev/null sum=$[$sum+$idnumber] done echo "uid sum: $sum"1.find命令:实时查找工具,通过遍历指定路径下的文件系统完成文件查找 ps:其特点为,精确查找,精准查找,速度慢
2.语法:find [OPTIONS] [查找起始路径] [查找条件] [处理动作] 1)查找起始路径:指定具体搜索目标起始路径,默认为当前目录
2)查找条件:根据文件名,大小,类型,从属关系,权限等标准进行
3)处理动作:对符合查找条件的文件作出操作,默认为标准输出
1.查找指定名称文件:- name “文件名称”
[root@yuki ~]# find ./ -name repo ./repops:-iname "文件名称"为不区分字符大小写
2.根据文件的属主权限查找:-user username
[root@yuki ~]# find . -user yuki ./repo3.根据文件的属组权限查找:-group groupname
[root@yuki ~]# find . -group yuki ./repo4.根据UID进行查找:-uid UID
[root@yuki ~]# find . -uid 1000 ./repo5.根据GID进行查找:-gid GID
[root@yuki ~]# find . -gid 1000 ./repo6.查找没有属主权限的文件:-nouser
[root@yuki ~]# id user1 uid=1002(user1) gid=1003(user1) 组=1003(user1) [root@yuki ~]# su - user1 -c 'touch test' [root@yuki ~]# mv /home/user1/test . [root@yuki ~]# ll test -rw-rw-r--. 1 user1 user1 0 5月 26 22:30 test [root@yuki ~]# userdel -r user1 [root@yuki ~]# ll test -rw-rw-r--. 1 1002 1003 0 5月 26 22:30 test [root@yuki ~]# find . -nouser ./test7.查找没有属组权限的文件:-nogroup
[root@yuki ~]# find . -nogroup ./test8.基于正则表达式,匹配整个路径,非基名
[root@yuki ~]# find /root -regex ".*/test$" /root/test1.同时满足:-a
2.满足一个即可:-o
3.条件取反:-not或者!
4.不是A也不是B
-not A -a -not B=-not\(A -o B\)5.不是A或者不是B
-not A -o -not B=-not\(A -a B\)ps:组合条件查找中,括号需要进行转义
6.练习:找出/tmp目录下属主为非root,文件名不包含fstab字符串的文件
[root@yuki ~]# find /tmp -not \( -user root -o -iname "*fstab*" \)1.普通文件:-type f
[root@yuki ~]# find . -type f2.目录文件:-type d
3.符号链接文件:-type l
4.块设备文件:-type b
5.字符设备文件:-type c
6.管道文件:-type p
7.套接字文件:-type s
1.语法:-size [+|-]#UNIT(单位):常用单位k,M,G
2.查找等于#大小的文件:-size #
[root@yuki ~]# find . -size 5k ./.subversion/README.txt2.查找大于#大小的文件:-size +#
[root@yuki ~]# find . -size +5M | xargs ls -lh -rw-r--r--. 1 root root 70M 5月 26 01:16 ./linux-3.10.67.1.tar.xz3.查找小于#大小的文件:-size -#
[root@yuki ~]# find . -size -5k4.查找范围 1)-size #范围:# -1<x<=# 5k表示:4<x<=5
2)-size +#范围:x># +5k表示:x>5
3)-szie -#范围:x<# -1 -5k表示:x<4
1.根据天为单位: 1)-atime [+|-]#
1.#:#<=x<#+1 -atime 7表示:7<=x<8天内访问过的文件 2.+#:#>=#+1 -atime +7表示:x>=8天内访问过的文件 3.-#:x<# -atime -7表示:x<7内访问过的文件2)-mtime:同理
3)-ctime:同理
2.根据分钟为单位 1)-amin
2)-mmin
3)-cmin
1.语法:-perm [/|-]mode
2.精确匹配:-perm mode
[root@yuki ~]# touch mode [root@yuki ~]# chmod 542 mode [root@yuki ~]# find . -perm 542 ./mode2.任何一类用户(u,g,o)中的任何一个权限((r,w,x))满足即可:-perm /mode
1.文件权限为222,目标权限为222 [root@yuki ~]# chmod 222 mode [root@yuki ~]# find . -perm /222 | grep mode ./mode 2.文件权限为211,目标权限为222 [root@yuki ~]# chmod 211 mode [root@yuki ~]# find . -perm /222 | grep mode ./mode 3.文件权限为600,目标权限为755 [root@yuki ~]# chmod 600 mode [root@yuki ~]# find . -perm /755 | grep mode ./mode 即-perm /mode的匹配关系为:文件权限<=目标权限3.每一类用户中的每一位权限同时符合才满足条件:-perm -mode
1.文件权限为4755,目标权限为0744 [root@yuki ~]# chmod 4755 mode [root@yuki ~]# find . -perm -0744 | grep mode ./mode 2.文件权限为766,目标权限为522 [root@yuki ~]# chmod 766 mode [root@yuki ~]# find . -perm -522 | grep mode ./mode 即-perm -mode的匹配关系为:文件权限>=目标权限1.-print:输出至标准输出,其为默认动作
2.-ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息
[root@yuki ~]# find -name "*ber" -ls 51092186 0 -rw-r--r-- 1 root root 0 5月 26 23:31 ./test1.number 53770734 0 -rw-r--r-- 1 root root 0 5月 26 23:31 ./test2.number 53777555 0 -rw-r--r-- 1 root root 0 5月 26 23:31 ./test3.number3.-delete:删除查找到的文件;
4.-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中
[root@yuki ~]# find -name "*ber" -fls number [root@yuki ~]# cat number 51092186 0 -rw-r--r-- 1 root root 0 5月 26 23:31 ./test1.number 53770734 0 -rw-r--r-- 1 root root 0 5月 26 23:31 ./test2.number 53777555 0 -rw-r--r-- 1 root root 0 5月 26 23:31 ./test3.number 53777557 0 -rw-r--r-- 1 root root 0 5月 26 23:36 ./number5.-ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认,{}表示引用前面查找到的所有内容
6.-exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;
[root@yuki ~]# touch test1 test2 test3 [root@yuki ~]# find . -name "test[0-9]" ./test1 ./test2 ./test3 [root@yuki ~]# find . -name "test[0-9]" -exec mv {} {}.number \; [root@yuki ~]# ll *ber -rw-r--r--. 1 root root 0 5月 26 23:31 test1.number -rw-r--r--. 1 root root 0 5月 26 23:31 test2.number -rw-r--r--. 1 root root 0 5月 26 23:31 test3.number7.find:一次性查找符合条件的所有文件,并一同传送给后面的命令,但有些命令不能接受过长的参数;此时使用:find 表达式 | xargs COMMAND
8.注意:
1.find /tmp -nouser -o -nogroup -ls "仅表示-ls -nogroup" 2.find /tmp \(-nouser -o -nogroup \) -ls "表示-ls -nouser -o -nogroup" ### 3.1xargs命令 1.xargs命令:xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。 1.-i选项:使用-i指定一个替换字符串{ },这个字符串在xargs扩展时会被替换掉,当-i与xargs结合使用,每一个参数命令都会被执行一次 ```bash [root@yuki ~]# find -name "*ber" ./test1.number ./test2.number ./test3.number [root@yuki ~]# find -name "*ber" | xargs -i -t mv {} {}.yuki mv ./test1.number ./test1.number.yuki mv ./test2.number ./test2.number.yuki mv ./test3.number ./test3.number.yuki [root@yuki ~]# find -name "*yuki" ./test2.number.yuki ./test1.number.yuki ./test3.number.yukips:-t选项为显示过程
1.查找/var目录下属主为root且属组为mail的所有文件或目录
find /var -user root -a -group mail2.查找/etc目录下最近一周内其内容修改过,且属主不属于root且不属于hadoop的文件或目录
find /etc -ctime -7 -a -not \( -user root -o -user hadoop \)3.查找/etc目录下大于1M且类型为普通文件的文件
find /etc -size +1M -a -type f4.查找/etc目录下所有用户都没有写权限的文件
find /etc -not -perm /2225.查找/etc目录下至少有一类用户没有写权限
find /etc -not -perm -2226.查找/etc/init.d目录下,所有用户都有执行权限且其他用户有写权限的文件
find /etc/init.d -perm -113