shell编程

Posted qrlinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程相关的知识,希望对你有一定的参考价值。

1.内容总结

建立并执行Shell脚本的步骤:

  1. touch 文件名.sh(创建一个shell脚本)
  2. vim 文件名.sh(进入shell脚本进行脚本编辑)
  3. 输入:

#!/bin/bash  (表示脚本由bash编写),需调用bash程序进行解释。

   程序

  1. 按下ESC(退出编辑模式)
  2. 输入:wq(write quit保存退出)。
  3. 执行步骤

1.bash 脚本名

2bash  脚本名 参数

   3.   1.通常,脚本没有执行权限,可以利用chmod命令修改权限后,再将脚本所在目录添加到命令搜索目录中。(把当前工作目录 用”.”表示 添加到命令搜索行)直接输入脚本名就可以执行文件。

 技术分享图片

 

 

 

History命令:

在实验过程中在history后给出一个文件名报错,去网上没找到相应解释。本来猜想提示给出数字参数是将历史目录中最后多少条命令写入文件中,但自己试了一下发现猜想错误。

 技术分享图片

 

 

alias命令

格式:alias  别名=’命令名’

使用:直接键入别名执行对应命令

取消别名:unalias 别名

其中unalias –a表示将所有所有别名取消。

注意事项:先定义别名,随后才能使用别名。

 

 

通配符

1.一般通配符

 技术分享图片

 

 技术分享图片

[^]与[!]含义是一样的。

花括号

 技术分享图片

 

花括号可以理解为排列组合,另外需要注意花括号中可以使用字符串,所以为防止出现歧义需要在不同字符串之间加上分隔符,而[]中都是单个字符,所以不需要加间隔符。

2.模式表达式(包含一个或者多个通配符的字)

l  *(模式表)——匹配给定模式表中0次或者多次出现的模式,各模式之间以”|”分开。

l  +(模式表)——匹配给定模式表中1次或者多次出现的模式,各模式之间以”|”分开。

l  ?(模式表)——匹配给定模式表中0次或者1出现的模式,各模式之间以”|”分开。

l  @(模式表)——仅匹配给定模式表中1的模式,各模式之间以”|”分开。

l  !模式表)——匹配给定模式表中模式之外的东西。

 

 

引号:单引号,双引号和倒引号。

 技术分享图片

双引号中在执行时,默认先输出置换处理后的结果,在执行shell命令。另外在练习这个命令时,发现了之前没发现的一个小问题,当使用”!”命令调用历史命令时,需要注意”!”后面的数字要注意动态变化。

 

 

2.shell命令应用练习

1.

/etc/passwd:表示一个用户属性的记录行,其中包括七个字段。

 技术分享图片 

/etc/shadow:是在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户root可读。这使破译口令更困难,以此增加系统的安全性。

 技术分享图片

技术分享图片

 

/etc/group: linux用户组的所有信息都存放在/etc/group文件中。具有某种共同特征的用户集合起来就是用户组(Group)。

输入的格式为  组名:口令:组标识号:组内用户列表

 技术分享图片

etc/gshadow是/etc/group的加密信息文件,只对超级用户可读。

 

2.

id命令:

id命令用于显示用户的ID,以及所属群组的ID。

 技术分享图片

意思是qr的UID号码是1000,GID=1000。qr属于以下组:

qr的GID号码是1000

adm的GID号码是4

cdrom的GID号码是24

sudo的GID号码是27

dip的GID号码是30

plugdev的GID号码是46

lpadmin的GID号码是113

sambshare的GID号码是128

id –u命令:

显示当前用户id

id –u root命令:

显示root用户id

id –u qr命令:

显示qr用户id

技术分享图片

3.

1.

which命令名:在$PATH变量中寻找给定命令

whereis命令名:whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

locate命令名:在数据库/var/lib/locatedb中搜索所有以命令名开头的文件位置。

find [路径] -name 命令名:在给定的路径下用硬盘查找的方式找给定的命令。

2.

sudo apt install gimp:安装gimp软件

which gimp:显示gimp软件所在路径

sudo apt remove gimp:卸载软件

which gimp:已卸载,为空。

3

ls -dl /root --time-style=long-iso::/root下显示文件目录信息,详细信息,其中时间按完整的ios时间格式显示,总共有八个输出参数。

ls -dl /root --time-style=long-iso | cut -d‘ ‘ -f1,8:显示上条输出结果中的第一个和第八个参数。

4

ls -l --time-style=long-iso,:将时间设置为long-iso格式后输出。

技术分享图片

ls -l --time-style=long-iso -t:在第一条命令基础上按时间由近到远排序

 技术分享图片

ls -l --time-style=long-iso -t -r:在前一条命令的基础上按时间排序,但变为由远到近排序

技术分享图片

 

4.

1

利用find命令查找。

 技术分享图片

2

 技术分享图片

其中 –n用于输出行号  2>目录名表示错误输出重定向。

3

 技术分享图片

gerp –n ‘bash’ /etc/passwd:在/etc/passwd路径下查找所有登录名为bash的用户信息并输出。

实验总结:

经过这次实验,对于建立及执行shell脚本有了认识,history命令,通配符,shell命令综合编程有了基础的理解,但自己还是能力不够,对这些命令的掌握能力不够牢,一些简单的综合应用能很好地想到用c,java等高级语言去解决,但用shell编程就感觉很苦难,在这门学科上还需更加努力。


以上是关于shell编程的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本编程

linux12shell编程 --> shell基础01

Shell编程Shell中多分支case条件语句

Shell编程Shell中for循环while循环until循环语句

Shell编程Shell中for循环while循环until循环语句

1shell编程(shell脚本)_理解编程和变量