Linux作业第三周

1. 定义一个对所有用户都生效的命令别名,例如lftps='lftp 172.168.0.1/pub'

[root@localhost ~]# echo "alias 123='ls -l'" >> /etc/bashrc 
[root@localhost ~]# source /etc/bashrc 
[root@localhost ~]# alias
alias 123='ls -l'
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@localhost ~]# 123
total 9500
-rw-------. 1 root root     2005 Jun 24 15:02 anaconda-ks.cfg
-rw-------. 1 root root 25534464 Jun 24 15:08 core.12201
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Desktop
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Documents
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Downloads
-rw-r--r--. 1 root root     2053 Jun 24 15:06 initial-setup-ks.cfg
-rw-r--r--. 1 root root       34 Jul 13 21:32 lsetc.sh
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Music
-rwxr-xr-x. 1 root root       91 Jul 13 21:25 myfirst.sh
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Pictures
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Public
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Templates
-rw-r--r--. 1 root root       40 Jul 13 21:35 trvar.sh
drwxr-xr-x. 2 root root        6 Jun 24 15:08 Videos
drwxr-xr-x. 2 root root        6 Jun 24 23:13 y2

2. 显示/etc/passwd文件中不以/bin/bash结尾的行

[root@localhost ~]# 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
。。。

3. 找出/etc/passwd文件中不以/bin/bash结尾的行

[root@localhost ~]# grep "\<[[:digit:]]\{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-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
chrony:x:995:990::/var/lib/chrony:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
unbound:x:994:989:Unbound DNS resolver:/etc/unbound:/sbin/nologin
gluster:x:993:988:GlusterFS daemons:/run/gluster:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:992:986:User for geoclue:/var/lib/geoclue:/sbin/nologin
setroubleshoot:x:991:985::/var/lib/setroubleshoot:/sbin/nologin
saned:x:990:984:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:989: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
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

4. 显示/proc/meninfo文件中以大写或小写S开头的行,用三种方式实现。

[root@localhost ~]# grep ^[Ss] /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       5111800 kB
SwapFree:        5111800 kB
Shmem:             37284 kB
Slab:             143400 kB
SReclaimable:      76584 kB
SUnreclaim:        66816 kB
[root@localhost ~]# grep -i ^s /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       5111800 kB
SwapFree:        5111800 kB
Shmem:             37284 kB
Slab:             143400 kB
SReclaimable:      76584 kB
SUnreclaim:        66816 kB
[root@localhost ~]# grep -E "^(S|s)" /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       5111800 kB
SwapFree:        5111800 kB
Shmem:             37284 kB
Slab:             143400 kB
SReclaimable:      76584 kB
SUnreclaim:        66816 kB

5. 使用echo输出一个绝对路径,使用egrep取出路径名,类型执行dirname /etc/passwd 的结果

[root@localhost ~]# echo /etc/passwd | egrep -o '^/.+/'
/etc/

6.找出ifconfig中的ip地址,要求结果只显示ip地址

[root@localhost ~]# ifconfig | grep "\<inet\>" | cut -d " " -f10
10.60.0.90
127.0.0.1
192.168.122.1

7. vim定制自动缩进四个字符

编辑/etc/vimrc 文件,在末尾添加以下两行
set expandtab
set tabstop=4

8. 编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和。

#! /bin/bash

echo "Please enter 3 names for the new 3 users:"
read -p "the first user's name: " user1
id $user1 &> /dev/null && echo "The username existed" && exit 1
read -p "the second user's name: " user2
id $user2 &> /dev/null && echo "The username existed" && exit 1
read -p "the third user's name: " user3
id $user3 &> /dev/null && echo "The username existed" && exit 1

useradd $user1
echo "created user $user1"
useradd $user2
echo "created user $user2"
useradd $user3
echo "created user $user3"

u1=`cat /etc/passwd | grep $user1 | cut -f3 -d ":"`
u2=`cat /etc/passwd | grep $user2 | cut -f3 -d ":"`
u3=`cat /etc/passwd | grep $user3 | cut -f3 -d ":"`

echo "$user1's uid is $u1"
echo "$user2's uid is $u2"
echo "$user3's uid is $u3"

val=`expr $u1 + $u2 + $u3`

echo "The sum of 3 users uid is $val"

9.find用法以及常用用法的实例演示

    实时查找工具,通过遍历指定起始路径下文件系统层级机构完成查找
    工作特性:
        查找速度略慢
        精确查找
        实时查找

    find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
    find [opition] [起始查找路径][查找条件][处理动作]

        查找起始路径:指定具体目标起始路径;默认为当前路径
        查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等等,默认为查找指定路径下的所有文件
        处理动作:对符合查找条件的文件作出的动作,例如删除等操作,默认为输出至屏幕

    查找条件:
        表达式:选项和测试

        测试:结果通常为布尔型
            根据文件名查找:
                -name “pattern”
                -iname “pattern”
                    支持glob格式的通配符
                -regex pattern:基于正则表达式查找文件,匹配的是整个路径名,并非基名

            根据文件从属关系查找:
                -user USERNAME:查找属主为指定用户的文件
                -group GRPNAME:查找属组为指定组的文件
                -uid UID:查找属主为指定UID的文件
                -gid GID:查找属组为指定GID的文件
                -nouser:查找没有属主的文件
                -nogroup:查找没有属组的文件

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

            组合测试:
                与:-a,默认组合逻辑
                或:-o 
                非:-not,!

            根据文件大小查找:
                -size [+,-]#UNIT
                    常用单位:K,M,G

            根据时间戳查找:
                以“天”进行查找:
                    -atime[+,-]#
                        以3天为例子:
                            #表示距现在3天内访问,但不超过4天
                            -#:表示3天内访问过,不超过3天
                            +#:表示距现在3天内没有访问过文件(不包含4天整)
                    -mtime
                    -ctime
                以“分钟”进行查找:
                    -amin
                    -mmin
                    -cmin

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

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

            注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令,但有些命令不能接受过长的参数,此时命令可能会执行失败,另一种方式可以规避此问题
                find | xargs COMMAND

示例:
                1、查找/var目录下属主为root,且属组为mail的所有文件或目录;
                ~]# find /var -user root -a -group mail -ls

            2、查找/usr目录下不属于root, bin或hadoop的所有文件或目录;用两种方法;
                ~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop
                ~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls

            3、查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是hadoop用户的文件或目录;
                ~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls
                ~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls

            4、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件或目录;
                ~]# find  /  \( -nouser -o -nogroup \)  -atime  -7  -ls

            5、查找/etc目录下大于1M且类型为普通文件的所有文件;
                ~]# find /etc -size +1M -type f -exec ls -lh {} \;

            6、查找/etc目录下所有用户都没有写权限的文件;
                ~]# find /etc -not -perm /222  -ls                  

            7、查找/etc目录至少有一类用户没有执行权限的文件;
                ~]# find /etc -not -perm -111 -ls

            8、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的所有文件;
                ~]# find /etc -perm -113 --ls
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值