第三周作业

第三周作业
alias:定义命令别名

alias [-p] [name[=value] ... ]

e.g.
  • 定义一个对所有用户都生效的命令别名,例如lftps=‘lftp 172.16.0.1/pub’
[root@node1 ~]# alias lftps='lftp 172.16.0.1/pub'
  • 查看系统默认定义的命令别名
[root@node1 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@node1 ~]# 
unalias:取消命令别名

unalias name

e.g.
[root@node1 ~]# unalias lftps

grep:print lines matching a pattern

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

options
  • -E, --extended-regexp:支持扩展正则表达式
  • -e PATTERN, --regexp=PATTERN:支持多个PATTERN
  • -i, --ignore-case:忽略字符大小写
  • -v, --invert-match:匹配不符合条件的行
  • -o, --only-matching:仅显示匹配到的字符
  • -q, --quiet, --silent:静默模式
e.g.
  • 显示/etc/passwd文件中不以/bin/bash结尾的行
[root@node1 ~]# grep -v '/bin/bash$' /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
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tom:x:5001:5001::/tmp/tom:/bin/zsh
  • 找出/etc/passwd文件中,包含二位数字或者三位数的行
[root@node1 ~]# grep '\b[0-9]\{2,3\}\b' /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
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@node1 ~]# 
  • 显示/proc/meminfo文件中以大写或小写S开头的行,用三种方式实现
[root@node1 ~]# grep -i '^s' /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Shmem:              8656 kB
Slab:              47736 kB
SReclaimable:      21740 kB
SUnreclaim:        25996 kB
[root@node1 ~]# 
[root@node1 ~]# grep '^[sS]' /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Shmem:              8656 kB
Slab:              47736 kB
SReclaimable:      21740 kB
SUnreclaim:        25996 kB
[root@node1 ~]# 
[root@node1 ~]# egrep '^(s|S)' /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Shmem:              8656 kB
Slab:              51028 kB
SReclaimable:      24420 kB
SUnreclaim:        26608 kB
[root@node1 ~]# 
  • 使用echo输出一个绝对路径,使用egrep取出路径名,类似执行dirname /etc/passwd的结果
[root@node1 ~]# echo /etc/sysconfig/network-scripts | grep -o '^/.*[^/]' | grep -o -e '^/.*/'
/etc/sysconfig/
[root@node1 ~]# echo /etc/sysconfig/network-scripts/ | grep -o '^/.*[^/]' | grep -o -e '^/.*/'
/etc/sysconfig/
[root@node1 ~]# 
  • 找出ifconfig中的ip地址。要求结果只显示IP地址
[root@node1 ~]# ip add | egrep -o '(\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b.){3}.\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\b'
192.168.122.6
[root@node1 ~]# 

vim:Vi IMproved, a programmers text editor

set tabstop=4 设置tab键的空格数

e.g.
  • vim定制自动缩进四个字符
在家目录下创建.vimrc的文本文件,添加如下内容
set tabstop=4 

[root@node1 ~]# cat .vimrc 
set tabstop=4
[root@node1 ~]# 

bash脚本编程
编写脚本,实现自动添加三个用户,并计算这三个用户的UID之和
#!/bin/bash

declare -i idsum=0
read -p "please input username: " -a userName  

userAdd() {
    if grep "^$1\>" /etc/passwd &> /dev/null; then
        echo "user $1 exist";
    else
        useradd $1;
        echo "create user $1";
    fi
}

uidSum() {
    let idsum+=$1
}

for i in $(seq 0 $[${#userName[*]}-1]); do
    userAdd ${userName[$i]}
    uidSum $(id -u ${userName[$i]})
done

echo "uidsum=$idsum"
[root@node1 ~]# bash createuser.sh 
please input username: test01 test02 test03  
create user test01
create user test02
create user test03
uidsum=15012
[root@node1 ~]# 

find:search for files in a directory hierarchy

find [查找起始路径] [查找条件] [处理动作]

  • 查找起始路径:查找起始路径;默认为当前目录;
  • 查找条件:查找条件有文件名、大小、类型、从属关系、权限等;默认为找出指定路径下的所有文件;
  • 处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;
查找条件
根据文件名查找
  • -name “pattern”:查找指定pattern的文件,区分大小写
  • -iname “pattern”:查找指定pattern的文件,不区分大小写
  • 支持glob风格的通配符;
e.g.
  • 查找/etc目录下passwd的文件
    [root@node1 ~]# find /etc -name passwd
    /etc/passwd
    /etc/pam.d/passwd
    [root@node1 ~]#
  • 查找/etc/目录下以p或P开头,以d结尾的的所有文件
    [root@node1 ~]# find /etc -iname p*d
    /etc/yum/pluginconf.d
    /etc/yum/protected.d
    /etc/passwd
    /etc/profile.d
    /etc/pm/power.d
    /etc/prelink.conf.d
    /etc/NetworkManager/dispatcher.d/pre-down.d
    /etc/NetworkManager/dispatcher.d/pre-up.d
    /etc/popt.d
    /etc/audisp/plugins.d
    /etc/selinux/targeted/active/modules/100/pcscd
    /etc/selinux/targeted/active/modules/100/pingd
    /etc/selinux/targeted/active/modules/100/plymouthd
    /etc/selinux/targeted/active/modules/100/psad
    /etc/selinux/targeted/active/policy.linked
    /etc/pam.d
    /etc/pam.d/passwd
    /etc/openldap/certs/password
    /etc/kernel/postinst.d
    [root@node1 ~]# 
根据文件从属关系查找:
  • -user USERNAME:查找属主指定用户的所有文件;
  • -group GRPNAME:查找属组指定组的所有文件;

  • -uid UID:查找属主指定的UID的所有文件;
  • -gid GID:查找属组指定的GID的所有文件;

  • -nouser:查找没有属主的文件;
  • -nogroup:查找没有属组的文件;
e.g.
  • 查找/目录下没有属主也没有属组的文件
    [root@node1 ~]# find / -nouser -nogroup
    find: ‘/proc/18624/task/18624/fd/6’: No such file or directory
    find: ‘/proc/18624/task/18624/fdinfo/6’: No such file or directory
    find: ‘/proc/18624/fd/6’: No such file or directory
    find: ‘/proc/18624/fdinfo/6’: No such file or directory
    /home/test
    /home/test/.bash_logout
    /home/test/.bash_profile
    /home/test/.bashrc
    [root@node1 ~]# 
根据文件的类型查找:
  • -type TYPE:
    f: 普通文件
    d: 目录文件
    l:符号链接文件
    b:块设备文件
    c:字符设备文件
    p:管道文件
    s:套接字文件
e.g.
  • 查找/etc/目录为符号链接文件的文件
[root@node1 ~]# find /etc -type l
/etc/mtab
/etc/pki/tls/certs/ca-bundle.crt
/etc/pki/tls/certs/ca-bundle.trust.crt
/etc/pki/tls/cert.pem
/etc/pki/ca-trust/source/ca-bundle.legacy.crt
/etc/pki/java/cacerts
/etc/redhat-release
/etc/system-release
/etc/grub2.cfg
...
根据文件的大小查找:
  • -size [+|-]#UNIT
    常用单位:k, M, G
    #UNIT:(#-1, #]
    -#UNIT:[0,#-1]
    +#UNIT:(#, oo)
e.g.
  • 查找/etc目录下大小为4M的文件
[root@node1 ~]# find /etc/ -size 4M -exec ls -lh {} \;
-rw-r--r--. 1 root root 3.7M Apr  5 12:39 /etc/selinux/targeted/policy/policy.31
-rw-------. 1 root root 3.7M Apr  5 12:39 /etc/selinux/targeted/active/policy.kern
-rw-------. 1 root root 3.7M Apr  5 12:39 /etc/selinux/targeted/active/policy.linked
[root@node1 ~]#
  • 查找/etc目录下大小大于4M的文件
[root@node1 ~]# find /etc/ -size +4M -exec ls -lh {} \;
-r--r--r--. 1 root root 6.7M Apr  5 12:39 /etc/udev/hwdb.bin
[root@node1 ~]#
根据时间戳查找:

以“天”为单位:

  • -atime [+|-]#
    #:[#, #+1)
    -#:(#+1, 0]
    +#:(oo, #+1]
  • -mtime
  • -ctime

以“分钟”为单位:

  • -amin
  • -mmin
  • -cmin
e.g.
  • 查找/root目录下4天内访问过的文件
[root@node1 ~]# date
Mon Apr  8 00:46:38 CST 2019
[root@node1 ~]# find /root/ -atime 4 -exec ls -lh {} \;
-rw-------. 1 root root 942 Apr  4 00:20 /root/anaconda-ks.cfg
[root@node1 ~]# 
根据权限查找:
  • -perm [/|-]mode
    mode:精确权限匹配;
    /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;
    -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;
e.g.
  • 查找/root目录下权限为644的文件
[root@node1 ~]# find /root -perm 644 -exec ls -l {} \;
-rw-r--r--. 1 root root 18 Dec 29  2013 /root/.bash_logout
-rw-r--r--. 1 root root 176 Dec 29  2013 /root/.bash_profile
-rw-r--r--. 1 root root 176 Dec 29  2013 /root/.bashrc
-rw-r--r--. 1 root root 100 Dec 29  2013 /root/.cshrc
-rw-r--r--. 1 root root 129 Dec 29  2013 /root/.tcshrc
-rw-r--r--. 1 root root 404 Mar 19 13:51 /root/.ssh/id_rsa.pub
-rw-r--r--. 1 root root 891 Mar 26 22:22 /root/.ssh/known_hosts
-rw-r--r--. 1 root root 774 Mar 25 16:49 /root/ana.zip
-rw-r--r--. 1 root root 774 Mar 31 22:36 /root/te.zip
-rw-r--r--. 1 root root 0 Mar 31 23:39 /root/tfile-2019-03-31-23-39-37
-rw-r--r--. 1 root root 14 Apr  7 23:01 /root/.vimrc
-rw-r--r--. 1 root root 33 Apr  7 23:14 /root/test.sh
[root@node1 ~]# 
  • 查找/root目录有写权限的文件
[root@node1 ~]# find /root -maxdepth 1 -perm /222 -exec ls -l {} \;
-rw-r--r--. 1 root root 18 Dec 29  2013 /root/.bash_logout
-rw-r--r--. 1 root root 176 Dec 29  2013 /root/.bash_profile
-rw-r--r--. 1 root root 176 Dec 29  2013 /root/.bashrc
-rw-r--r--. 1 root root 100 Dec 29  2013 /root/.cshrc
-rw-r--r--. 1 root root 129 Dec 29  2013 /root/.tcshrc
total 16
-rw-------. 1 root root  801 Mar 19 14:12 authorized_keys
-rw-------. 1 root root 1679 Mar 19 13:51 id_rsa
-rw-r--r--. 1 root root  404 Mar 19 13:51 id_rsa.pub
-rw-r--r--. 1 root root  891 Mar 26 22:22 known_hosts
-rw-------. 1 root root 2128 Apr  7 00:56 /root/.bash_history
total 0
drwx------. 3 root root 59 Mar 19 14:14 tmp
-rw-------. 1 root root 85 Apr  8 02:19 /root/.lesshst
-rw-r--r--. 1 root root 774 Mar 25 16:49 /root/ana.zip
-rw-------. 1 root root 942 Apr  4 00:20 /root/anaconda-ks.cfg
total 0
-rw-r--r--. 1 root root 774 Mar 31 22:36 /root/te.zip
-rw-r--r--. 1 root root 0 Mar 31 23:39 /root/tfile-2019-03-31-23-39-37
-rw-------. 1 root root 1024 Apr  6 20:40 /root/.rnd
-rw-r--r--. 1 root root 14 Apr  7 23:01 /root/.vimrc
-rw-r--r--. 1 root root 33 Apr  7 23:14 /root/test.sh
-rwxr-xr-x. 1 root root 340 Apr  7 23:55 /root/useradd.sh
-rw-------. 1 root root 5532 Apr  7 23:55 /root/.viminfo
[root@node1 ~]# 
  • 查找/root目录下都有执行权限的文件
[root@node1 ~]# find /root -perm -111 -exec ls -l {} \;
total 0
-rwxr-xr-x. 1 root root 340 Apr  7 23:55 /root/useradd.sh
[root@node1 ~]#
组合测试:
  • 与:-a, 默认组合逻辑;
  • 或:-o
  • 非:-not, !
e.g.
  • 查找/etc目录以p开头的文件或者是符号链接文件的文件
[root@node1 ~]# find / -name p* -o -type l
/boot/grub2/i386-pc/part_acorn.mod
/boot/grub2/i386-pc/part_amiga.mod
/boot/grub2/i386-pc/part_apple.mod
/boot/grub2/i386-pc/part_bsd.mod
...
处理动作:
  • -print:输出至标准输出;默认的动作;
  • -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
  • -delete:删除查找到的文件;
  • -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
  • -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
  • -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;
  • ==注意==:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;但是有些命令不能接受过长的参数,此时命令执行会失败;另一种方式可规避此问题:find | xargs COMMAND
e.g.
  • 查找系统上没有属主和属组的文件,并通过exec使用ls -lh命令查看其ID值;
[root@node1 ~]# find / -nouser -nogroup -exec ls -lh {} \;
find: ‘/proc/29830/task/29830/fd/6’: No such file or directory
find: ‘/proc/29830/task/29830/fdinfo/6’: No such file or directory
find: ‘/proc/29830/fd/6’: No such file or directory
find: ‘/proc/29830/fdinfo/6’: No such file or directory
total 0
-rw-r--r--. 1 5008 5008 18 Nov 20  2015 /home/test/.bash_logout
-rw-r--r--. 1 5008 5008 193 Nov 20  2015 /home/test/.bash_profile
-rw-r--r--. 1 5008 5008 231 Nov 20  2015 /home/test/.bashrc
[root@node1 ~]# 

转载于:https://blog.51cto.com/zengshao/2375080

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值