Linux基础和脚本编程

1、定义一个对所有用户都生效的别名,例如:lftps=‘lftp 172.168.0.1/pub’
对所有用户都生效的是在/etc/bashrc中定义别名,命令如下:

   [root@chiji51 Desktop]# vim /etc/bashrc
    alias lftps="lftp 172.168.0.1/pub"

如果想让别名立即生效,则输入以下命令:

   [root@chiji51 Desktop]# source /etc/bashrc

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

 [root@chiji51 Desktop]# wc -l /etc/passwd                             #显示所有的行数
 40 /etc/passwd
 [root@chiji51 Desktop]# grep  /bin/bash$ /etc/passwd|wc -l            #匹配到/bin/bash结尾的行数
 3
 [root@chiji51 Desktop]# grep -v /bin/bash$ /etc/passwd|wc -l           -v做反向匹配
 37

3、找出/etc/passwd文件中,包含两位数字或者三位数字的行

[root@chiji51 Desktop]# 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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
unbound:x:998:997:Unbound DNS resolver:/etc/unbound:/sbin/nologin
colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
saslauth:x:995:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
chrony:x:994:993::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/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:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin

4、显示/proc/meminfo文件中以大写或小写s开头的行,用三种方法实现
(1)、利用grep中-i选项可以忽略字符大小写

      [root@chiji51 Desktop]# grep -i ^s /proc/meminfo 
      SwapCached:            0 kB
      SwapTotal:       2097148 kB
      SwapFree:        2097148 kB
      Shmem:             10028 kB
      Slab:              87056 kB
      SReclaimable:      32248 kB
      SUnreclaim:        54808 kB
     [root@chiji51 Desktop]# grep -i ^S /proc/meminfo 
     SwapCached:            0 kB
     SwapTotal:       2097148 kB
     SwapFree:        2097148 kB
     Shmem:             10028 kB
     Slab:              87056 kB
     SReclaimable:      32248 kB
     SUnreclaim:        54808 kB

(2)利用[]特性来实现

  [root@chiji51 Desktop]# grep ^[sS] /proc/meminfo 
  SwapCached:            0 kB
  SwapTotal:       2097148 kB
  SwapFree:        2097148 kB
  Shmem:             10028 kB
  Slab:              87056 kB
  SReclaimable:      32248 kB
  SUnreclaim:        54808 kB

(3)利用-E选项用扩展正则表达来实现

  [root@chiji51 Desktop]# grep -E ^[sS] /proc/meminfo 
  SwapCached:            0 kB
  SwapTotal:       2097148 kB
  SwapFree:        2097148 kB
  Shmem:             10028 kB
  Slab:              87060 kB
  SReclaimable:      32248 kB
  SUnreclaim:        54812 kB

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

 [root@chiji51 Desktop]# echo /etc/passwd | grep -E -o  ^/.*/*
 /etc/
 [root@chiji51 Desktop]# echo /etc/passwd/adc/ade | grep -E -o  ^/.*/*
 /etc/passwd/adc/
 还没有想出如何输出/etc/yum.repo.d/和/etc的路径名

6、找出ifcongfig中的IP地址,要求结果只显示IP地址。

  [root@chiji51 Desktop]#  ifconfig | grep -Eo "[[:digit:]]{,3}(\.[[:digit:]]{,3}){3}"
  192.168.80.128
  255.255.255.0
  192.168.80.255
  127.0.0.1
  255.0.0.0

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

     [root@chiji51 ~]# vim /etc/vimrc 
     set tabstop=4                        "设置tab键为4个空格,
     set shiftwidth =4                   "设置当行之间交错时使用4个空格  
     set autoindent

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

     [root@chiji51 ~]# vim sumuser.sh 
     1 #!/bin/bash
     2 id funguy &> /dev/null |useradd funguy
     3 id counfry &> /dev/null |useradd counfry
     4 id fun &> /dev/null |useradd fun
     5 sumid=0
     6 sumid=$[$(id -u funguy)+$(id -u counfry)+$(id -u fun)
     7 echo $sumid
     [root@chiji51 ~]# sh sumuser.sh 
     useradd: user 'funguy' already exists
     useradd: user 'counfry' already exists
     useradd: user 'fun' already exists
      3006
      [root@chiji51 ~]# 

9、find用法以及常用用法的实例演示
find是linux 命令,它将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。
find的表达式

      find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

(1)按文件名查找

     -name pattern   文件的基名(basename)不支持大小写,支持通配符(*,?,[])匹配
     [root@chiji51 Desktop]# find / -name passwd*
     /etc/passwd
     /etc/passwd-
     /etc/pam.d/passwd
     /usr/bin/passwd
     /usr/share/doc/passwd-0.79

    [root@chiji51 Desktop]# find / -name passwd?
    /etc/passwd-

    [root@chiji51 Desktop]# find / -name passwd.[0-9].gz
    /usr/share/man/man1/passwd.1.gz
    /usr/share/man/man5/passwd.5.gz
    /usr/share/man/ja/man1/passwd.1.gz

   -iname   pattern  文件的基名(basename)支持大小写,支持通配符(*,?,[])匹配

   [root@chiji51 ~]# find / -iname p*d
   /sys/fs/selinux/booleans/pppd_can_insmod
   /sys/bus/acpi/devices/PNP0A05:0d

(2) 按时间查找

     -amin n    找出最近 n 分钟访问的文件
     
     [root@chiji51 ~]# find / -amin 5 -ls            找出最近5分钟访问的时间
     30256    0 lrwx------   1 root     root           64 May 18 23:27 /proc/3505/task/3505/fd/17 -> /dev/ptmx
     30257    0 lrwx------   1 root     root           64 May 18 23:27 /proc/3505/task/3505/fd/21 -> /dev/pts/1
     30258    0 -r--------   1 root     root            0 May 18 23:27 /proc/3505/task/3505/fdinfo/17

     -cmin n    找出最近 n 分钟改变的文件
     
     [root@chiji51 ~]# find / -cmin 5 -ls            找出最近5分钟访问的时间
     find: ‘/proc/4022/task/4022/fd/6’: No such file or directory
     find: ‘/proc/4022/task/4022/fdinfo/6’: No such file or directory
     find: ‘/proc/4022/fd/6’: No such file or directory
     find: ‘/proc/4022/fdinfo/6’: No such file or directory

     -mmin n    找出最近 n 分钟修改的文件
     
     [root@chiji51 ~]# find / -mmin 5 -ls            找出最近5分钟访问的时间
     find: ‘/proc/4018/task/4018/fd/6’: No such file or directory
     find: ‘/proc/4018/task/4018/fdinfo/6’: No such file or directory
     find: ‘/proc/4018/fd/6’: No such file or directory
     find: ‘/proc/4018/fdinfo/6’: No such file or directory

     -atime  n    找出最近 n 天访问的文件
     
     [root@chiji51 ~]# find / -atime 5 -ls            找出最近5天访问的时间
     find: ‘/proc/4068/task/4068/fd/6’: No such file or directory
     find: ‘/proc/4068/task/4068/fdinfo/6’: No such file or directory
     find: ‘/proc/4068/fd/6’: No such file or directory
     find: ‘/proc/4068/fdinfo/6’: No such file or directory

     -ctime  n    找出最近 n 天改变的文件
     
     [root@chiji51 ~]# find / -ctime 5 -ls            找出最近5天改变的时间
     find: ‘/proc/4068/task/4068/fd/6’: No such file or directory
     find: ‘/proc/4068/task/4068/fdinfo/6’: No such file or directory
     find: ‘/proc/4068/fd/6’: No such file or directory
     find: ‘/proc/4068/fdinfo/6’: No such file or directory

     -mtime  n    找出最近 n 天修改的文件
     
     [root@chiji51 ~]# find / -atime 5 -ls            找出最近5天修改的时间
     find: ‘/proc/4068/task/4068/fd/6’: No such file or directory
     find: ‘/proc/4068/task/4068/fdinfo/6’: No such file or directory
     find: ‘/proc/4068/fd/6’: No such file or directory
     find: ‘/proc/4068/fdinfo/6’: No such file or directory


      注意:
      时间参数还有特殊用法,例如:
       +n     比 n+1  要大包含 n+1
       -n     比  n  要小包含  n
       n      比  n   要大比 n+1 要小

(3)按文件大小查找

     -size n[cwbkMG]  
          `b'    512位元组的大小
          `c'    字节
          `w'    两位元组的大小
          `k'     KB
          `M'    MB
          `G'    GB

(4)根据所属者和所属组查找

         -group gname       所属组

         -uid n                    uid号

         -user uname        用户名
  
         -nogroup             无组
        
         -nouser               没有用户

(5)根据文件权限查找

        -executable             对当前用户是否可执行      
        
        -writable                 对当前用户是否可写
        
        -readable               对当前用户是否可读
        
        -perm -mode         查找除了可以满足mode 中权限,其他权限位有也会匹配
       
        -perm /mode         查找任意一个满足mode权限都行

       -perm mode          完全符合mode权限,其他权限位有权限不会匹配到

(6)按文件类型匹配

         -type c
        
          b      特殊块文件

          c      特殊字符块文件

          d      目录

          p      管道文件

          f     常规文件

          l      符号链接文件

          s      socket

(7)按inode匹配

        -inum n
        
        find 还有对查找结果进行处理
        -print   对查找的结果进行输出显示,默认开启此选项
        
         **-exec** command   **{}  \ ;**
         exec 是execute的简写,对查找的结果进行二次处理,将查找到的内容传送到 **{}**中,将作为其他命令的参数,保证命令的运行,直到遇到**;**才会停止运行,此时的**\**将作为逃逸符号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值