Linux学习之实例应用-1
1、定义一个对所有用户都生效的命令别名[root@hu ~]# vim ~/.bashrc==>打开.bashrc文件夹alias ud='useradd'==>添加别名2、显示/etc/passwd中不以/bin/bash结束的行[root@hu ~]# grep -v "/bin/bash\b&
·
1、定义一个对所有用户都生效的命令别名
[root@hu ~]# vim ~/.bashrc ==>打开.bashrc文件夹
alias ud='useradd' ==>添加别名
2、显示/etc/passwd中不以/bin/bash结束的行
[root@hu ~]# grep -v "/bin/bash\b" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:996:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:992:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
chrony:x:991:988::/var/lib/chrony:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
sssd:x:989:986:User for sssd:/:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
3、找出/etc/passwd文件中,包含二位或三位数字的行
[root@hu ~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:996:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:992:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
chrony:x:991:988::/var/lib/chrony:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
sssd:x:989:986:User for sssd:/:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
4、显示/proc/meminfo文件中以大写或小写s开头的行;用三种方式实现
第一种
[root@hu ~]# grep "^[s,S]" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 7344 kB
Slab: 102424 kB
SReclaimable: 52644 kB
SUnreclaim: 49780 kB
第二种
[root@hu ~]# grep "\<[s,S]" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 7344 kB
Slab: 102432 kB
SReclaimable: 52644 kB
SUnreclaim: 49788 kB
第三种
[root@hu ~]# grep "\b[s,S]" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Shmem: 7344 kB
Slab: 102480 kB
SReclaimable: 52644 kB
SUnreclaim: 49836 kB
5、使用echo输出一个绝对路径,使用egrep取出路径名,类似于执行dirname /etc/passwd的结果
[root@hu ~]# echo "/recover/cptest/testcp" | grep -Eo "^/(.*)/"
/recover/cptest/
6、找出ifconfig中的ip地址,要求结果只显示ip地址
[root@hu ~]# ifconfig | grep -o '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}'
192.168.1.104
255.255.255.0
192.168.1.255
127.0.0.1
255.0.0.0
192.168.122.1
255.255.255.0
192.168.122.255
7、vim定制自动缩进四个字符
在末行模式下输入 set ai——即首先保证此行再输入命令前缩进了4个字符,当设置了自动缩进后,敲Enter时
就会按照此行缩进字符自动缩进
8、编写脚本,实现自动添加三个用户,并计算这三个用户的UID之和
useradd ur1 && useradd ur2 && useradd ur3
a=$(id -u ur1 | grep -o "^[0-9]\{1,4\}")
b=$(id -u ur2 | grep -o "^[0-9]\{1,4\}")
c=$(id -u ur3 | grep -o "^[0-9]\{1,4\}")
echo ${sum=$[$a+$b+$c]}
执行结果:
[root@hu recover]# bash test.sh
15024
9、find用法以及常用用法的实例演示
find命令:- search for files in a directory hierarchy
find命令用于在文件系统上查找符合条件的文件而不是文件类容
1、工作特性
实时查找工具,通过遍历指定起始路径下文件系统层级结构
完成文件查找
查找速度略慢
精确查找
2、使用格式
find [option]…[path][查找条件][处理动作]
例:
[root@hu ~]# find ——>若没加任何条件指查找当前路径下的所有文件路径
.
./Music
./.bash_profile
./.bash_logout
path——查找条件:指定具体搜索目标的起始路径,默认为当前目录
查找条件:指定查找条件——可以是文件名、大小、类型、从属关系、权限等——默认为找出指定路径下的所有文件
处理动作:对符合查找条件的文件作出的操作——删除等——默认为输出至标准输出
3、查找条件
表达式组成:表达式由选项(影响整体操作而不是特定文件的处理,并始终返回true),测试(返回true或false值)和操作(具有副作用并返回a)组成。
A、据文件名查找文件
-name “patern”:区分文件名大小写
例:
[root@hu recover]# find ./ -name "Test.sh"
[root@hu recover]# find ./ -name "test.sh"
./test.sh
-iname “pattern”:不区分文件名大小写
例:
[root@hu recover]# find ./ -iname "Test.sh"
./test.sh
-regex pattern:基于正则表达式查找文件,匹配范围是整个路径,而非其名字,且不忽略大小写
-iregex pattern:基于正则表达式查找文件,匹配范围是整个路径,而非其名字,忽略大小写
find . -regex ".*\(\.txt\|\.pdf\)$"
find . -iregex ".*\(\.txt\|\.pdf\)$"
例:
[root@hu recover]# find / -regex ".*\(\.txt\)$" ==>查找根目录下以.txt结尾的文件路径
/root/.cache/tracker/db-locale.txt
/root/.cache/tracker/first-index.txt
B、根据文件从属关系查找
-user username——>即查找属主指定用户的所有文件
例:
[root@hu recover]# find /home -user hu
/home/hu
/home/hu/Music
-group Groupname——>即查找属组为指定组的所有文件
-uid——>UID查找指定UID的属主的所有文件
-gid——>GID查找指定GID的属组的所有文件
-nouser——>查找没有属主的文件
-nogroup——>查找没有属组的文件
C、局文件类型查找
-type f——>查找普通文件
例:
[root@hu recover]# find /home -type f -ls
791770 4 -rw-r--r-- 1 ur1 ur1 193 Nov 20 2015 /home/ur1/.bash_profile
-type d——>查找目录文件
-type l——>符号链接文件
-type b——>块设备文件
-type c——>字符设备文件
-type p——>管道文件
-type s——>套接字文件
4、组合测试
A、与==> -a——>默认与组合逻辑,必须同时满足两个条件
例:
[root@hu recover]# find /tmp -nouser -type f
[root@hu recover]# find /tmp -nouser -a -type f
B、或==> -o——>或组合逻辑满足其中条件之一即可
例:
[root@hu recover]# find /tmp -nouser -o -type f
/tmp/mytest.TyTf
/tmp/.X0-lock
C、非==> -not 或!——>非组合逻辑与此条件相反的条件
例:
[root@hu recover]# find . -not -nouser
.
./cptest
./cptest/testcp
5、根据文件大小查找
A、使用格式:find /path -size [+|-]#unit——#表示数值,unit为单位
常用单位有:K、M、G
a、当无 [+|-]号时;#unit表示范围为(#-1,#]<==>#-1<#≤#
b、当有 [+|-]号时;
- #unit表示范围为[0,#-1]<==>0≤#≤#-1
+ #unit表示范围为(#,∞)<==>#<#≤∞
例:
[root@hu recover]# find . -size -10
.
./cptest
./cptest/testcp
./cptest/cp.txt
./cptest/test.txt
./test.patch
./test1.sh
./tt
./test.sh
./io
./io/test1.txt
./io/test.txt
./cp.txt
[root@hu recover]# find . -size 10
[root@hu recover]# find . -size +10
./.cp.txt.swp
./.text.txt.swp
6、据时间戳查找
A、以“天”为单位查找
-atime [+|-]#
-mtime [+|-]#
-ctime [+|-]#
#:[#,#-1)——#≤#<#-1
+#:(#,0]——#<#≤0
-#:(∞,#)——∞<#<#
例:
[root@hu recover]# find . -atime -7
.
./cptest
./cptest/testcp
B、以“分钟”为单位
-amin [+|-]#
-mmin [+|-]#
-cmin [+|-]#
[+|-]#同上
7、据权限查找
-perm [/ | -]mode
A、mode —精确查找
例:
[root@hu recover]# find . -perm 755 -ls
261629 4 drwxr-xr-x 5 root root 4096 Dec 1 04:53 .
264277 4 drwxr-xr-x 2 root root 4096 Nov 29 08:46 ./cptest
261660 4 -rwxr-xr-x 1 root root 205 Nov 30 09:18 ./test1.sh
261653 4 drwxr-xr-x 2 root root 4096 Dec 1 01:14 ./tt
B、/mode —任何一类用户(u、g、o)的权限中的任何一位(r、w、x)符合权限既满足条件(权限之间为或关系)
例:
[root@hu recover]# find . -perm /755 -ls
261629 4 drwxr-xr-x 5 root root 4096 Dec 1 04:53 .
264277 4 drwxr-xr-x 2 root root 4096 Nov 29 08:46 ./cptest
264280 0 -rw-r--r-- 1 root root 0 Nov 24 10:01 ./cptest/testcp
261649 0 -rw-r--r-- 1 root root 0 Nov 29 08:46 ./cptest/cp.txt
261652 4 -rw-r--r-- 1 root root 39 Nov 29 08:46 ./cptest/test.txt
261633 4 -rw-r--r-- 1 root root 24 Nov 30 09:19 ./test.patch
261630 12 -rw-r--r-- 1 root root 12288 Dec 1 05:12 ./.cp.txt.swp
261660 4 -rwxr-xr-x 1 root root 205 Nov 30 09:18 ./test1.sh
261653 4 drwxr-xr-x 2 root root 4096 Dec 1 01:14 ./tt
261393 4 -rwxrwxr-x 1 root root 192 Nov 30 09:42 ./test.sh
261126 4 drwxr-xr-- 2 root root 4096 Nov 28 05:07 ./io
C、-mode—每一类用户(u、g、o)的权限中的每一位(r、w、x)对应于条件的每一位相同既满足条件(权限之间为与关系)
例:
[root@hu recover]# find . -perm -755 -ls
261629 4 drwxr-xr-x 5 root root 4096 Dec 1 04:53 .
264277 4 drwxr-xr-x 2 root root 4096 Nov 29 08:46 ./cptest
261660 4 -rwxr-xr-x 1 root root 205 Nov 30 09:18 ./test1.sh
261653 4 drwxr-xr-x 2 root root 4096 Dec 1 01:14 ./tt
261393 4 -rwxrwxr-x 1 root root 192 Nov 30 09:42 ./test.sh
8、动作处理
-print——输出至标准输出,默认的动作
-ls——类似于对查找到的文件执行“ls -l”命令
-delete——删除查找到的文件
-fls /path——将查找到的所有文件的详细信息保存到指定路径的文件里
-ok command {}\——对查找到的每个文件执行由command表示的命令,每次操作都由用户确认( {}\为固定格式)
-exec command {}\——对查找到的每个文件执行由command表示的命令,每次操作不由用户确认( {}\为固定格式)
例:
[root@hu recover]# find / -nouser -a -nogroup -ok chown root:root {}\
-rw-r--r--. 1 root root 0 Dec 1 13:20 ttt
注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次星传递给后面的命令
但是此命令不能接受过长的参数,若参数过长命令执行会失败,换另一种方式可规避此问题
更多推荐
已为社区贡献1条内容
所有评论(0)