Chinaunix首页 | 论坛 | 博客
  • 博客访问: 862953
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-04 15:53
个人简介

主要从事Linux,云原生架构改造,服务网格,ELK,python,golang等相关技术。

文章分类

全部博文(72)

文章存档

2015年(52)

2014年(20)

分类: 系统运维

2014-12-10 16:30:45

1.这里我们使用了 &&和||运算符,程序可实现短路功能
[root@server4 mnt]# a=1
[root@server4 mnt]# b=1
[root@server4 mnt]# test "$a" = "$b" && echo yes || echo no
yes
[root@server4 mnt]# b=2
[root@server4 mnt]# test "$a" = "$b" && echo yes || echo no
no
2.比较a=1和b=1之间的大小
[root@server4 mnt]# [ "$a" -ne "$b" ] && echo yes || echo no
no
[root@server4 mnt]# [ "$a" -ge "$b" ] && echo yes || echo no
yes
[root@server4 mnt]# [ "$a" -eq "$b" ] && echo yes || echo no
yes
3.使用[]中比较的一些简单参数
[root@server4 mnt]# [ "$a" = 'a' -o  "$a" = 'b' ] && echo yes || echo no

no
[root@server4 mnt]# a=a
[root@server4 mnt]# a=b
[root@server4 mnt]# [ "$a" = 'a' -o  "$a" = 'b' ] && echo yes || echo no
yes
4.检查系统中的某个用户是否存在

点击(此处)折叠或打开

  1. #!/bin/bash
  2. read -p "please show your username:" name
  3. name1=`grep ^$name /etc/passwd | cut -d : -f 1`
  4. if
  5. [ "$name" = "$name1" ]
  6. then
  7. echo "$name is in your system"
  8. else
  9. echo "no such user"
  10. fi
5.shell环境下的test.sh

点击(此处)折叠或打开

  1. #!/bin/bash
  2. echo $1
  3. echo $2
  4. echo $3
  5. echo $*
  6. echo $#
[root@server4 mnt]# sh test.sh red hy linux
red
hy
linux
red hy linux
3
这里我们将使用对应位置的字符输出
6.查看磁盘的使用情况,这个在监控中会用到
[root@server4 mnt]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root  2.2G  1.4G  707M  67% /
tmpfs                         246M     0  246M   0% /dev/shm
/dev/vda1                     485M   33M  427M   8% /boot
[root@server4 mnt]# df -H | grep /boot | sed 's/^\ *//g' |awk '{print $2 " " $3 " " $4}'
508M 35M 448M
[root@server4 mnt]# df -H | grep /boot | sed 's/^\ *//g' |awk '{print $4 " " $5}'
448M 8%    这里我们可以看到磁盘的剩余空间,剩余百分比
[root@hy code]# lvs | grep vm3 | awk '{print $4}'
3.00g
[root@hy code]# lvs | grep vm3 | awk '{print $4}' |awk -F 'g' '{print $1}'
3.00
7.这里我们使用cut这个命令,可以用-d把文件里面的某个特殊字符作为分隔符进行输出文件的某一列-f指定要输出的列
[root@server4 mnt]# cut -d : -f 1,6,7 passwd

root:/root:/bin/bash
bin:/bin:/sbin/nologin
daemon:/sbin:/sbin/nologin
adm:/var/adm:/sbin/nologin
lp:/var/spool/lpd:/sbin/nologin
sync:/sbin:/bin/sync
shutdown:/sbin:/sbin/shutdown
halt:/sbin:/sbin/halt
mail:/var/spool/mail:/sbin/nologin
uucp:/var/spool/uucp:/sbin/nologin
operator:/root:/sbin/nologin
games:/usr/games:/sbin/nologin
gopher:/var/gopher:/sbin/nologin
ftp:/var/ftp:/sbin/nologin
nobody:/:/sbin/nologin
vcsa:/dev:/sbin/nologin
saslauth:/var/empty/saslauth:/sbin/nologin
postfix:/var/spool/postfix:/sbin/nologin
sshd:/var/empty/sshd:/sbin/nologin
dbus:/:/sbin/nologin
apache:/var/www:/sbin/nologin
hy:/home/hy:/bin/bash
mysql:/var/lib/mysql:/bin/bash
8.下面是我们要输出我们的网卡信息所对应的ip
[root@server4 mnt]# ifconfig eth0 |grep "inet addr" |cut -d : -f 2 |cut -d ' ' -f 1
192.168.88.104
9.接下来进行sort的简单使用:首先我们可以看到我们的file文件里面的内容哦能否是乱的,然后我们去对file文件里面的内容进行排序操作:
[root@server4 mnt]# sort -n file
0
2
3
3
4
6
6
6
6
6
6565
6777
23232
[root@server4 mnt]# sort -rn file
23232
6777
6565
6
6
6
6
6
4
3
3
2
0
[root@server4 mnt]# sort -rn file | uniq -u    //去重操作
23232
6777
6565
4
2
0
[root@server4 mnt]# sort -rn file | uniq -c    //去重,并显示行号
      1 23232
      1 6777
      1 6565
      5 6
      1 4
      2 3
      1 2
      1 0
10.使用sed进行文件中字符的简单替换操作,接下来我们使用这个文件进行的各种操作将在接下来的文件中会用到
[root@server4 mnt]# sed -e s/mysql/mysqlserver/g -e s/nologin/westos/g passwd     //这里我们可以进行多个替换用空格隔开就可以了,不许要重新再输入一次命令
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/westos
daemon:x:2:2:daemon:/sbin:/sbin/westos
adm:x:3:4:adm:/var/adm:/sbin/westos
lp:x:4:7:lp:/var/spool/lpd:/sbin/westos
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/westos
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/westos
operator:x:11:0:operator:/root:/sbin/westos
games:x:12:100:games:/usr/games:/sbin/westos
gopher:x:13:30:gopher:/var/gopher:/sbin/westos
ftp:x:14:50:FTP User:/var/ftp:/sbin/westos
nobody:x:99:99:Nobody:/:/sbin/westos
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/westos
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/westos
postfix:x:89:89::/var/spool/postfix:/sbin/westos
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/westos
dbus:x:81:81:System message bus:/:/sbin/westos
apache:x:48:48:Apache:/var/www:/sbin/westos
hy:x:500:500::/home/hy:/bin/bash
mysqlserver:x:27:27:MySQL Server:/var/lib/mysqlserver:/bin/bash
通过上面的例子,我们也可以将这些命令写入shell脚本当中,在使用的时候我们就不用那么麻烦了,例如:
[root@server4 mnt]# vim file

点击(此处)折叠或打开

  1. s/sbin/lee/g
  2. s/nologin/hello/g
  3. s/bash/westos/g
[root@server4 mnt]# sed -f file passwd
这样我们就省掉了很多不必要的操作,节省时间
如果是在文件内部我们可以使用:%s/sbin/hello/g完成文件的替换
阅读(4787) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~