概述

在本课程中我们主要学习了:

  • Linux 常用Shell指令:用户与文件权限管理、过滤器
  • Shell 脚本编程

一、UNIX与Linux的关系

UNIX 是一种分时操作系统,而Linux则是UNIX系统的一个分支。Linux完全开源并且免费,因此在程序开发领域得到了广泛的使用。

总的来说,UNIX是商业软件,而Linux是类UNIX的开源软件。

Linux有众多发行版本,如Ubuntu、CentOS、FreeBSD。

二、常用Shell指令

1. Shell

Shell是用户与Linux内核之间的接口,是交互性的命令行解释器。它解释并执行用户输入的命令。

UNIX系统_bash

Shell也有许多版本,我们主要学习的Bourne Again Shell,简称bash。

2. 用户管理与文件权限管理

1)用户管理

使用useradd命令添加用户,userdelete删除用户。

useradd -u 500 -g 500 -G guests -d /home/wang wang

passwd命令用来修改用户密码。

whoami命令确认自己身份。

2)文件权限管理

文件有三种访问权限:

  • r 可读取文件

  • w 可写入、修改文件

  • x 可执行该文件

UNIX系统_shell脚本_02

使用chmod指令修改与分配权限:

chmod u+rw,g-r,o=r filename

“+”表示增加权限,“-”表示删除权限,“=”表示分配权限,删除旧权限。

三、过滤器

​ 过滤器的功能是:获取文本的输入流,对文本进行某些过滤操作,再将其送到输出流。

比较复杂的命令有如下几个:

1. diff

diff命令显示将第一个文件修改成第二个文件所要执行的操作。

常用的diff选项有:

  • -i 忽略大小写
  • -w 忽略空白符号
  • -b 忽略空白符号重量。

2. patch

patch命令用来根据补丁文件更新旧文件。

语法为:

patch [options] [originalfile] [patchfile]

patch命令需要配合diff命令使用。

比如:

diff A B > C
patch A C

diff命令执行后,C就是A的补丁文件,patch命令执行后,A就成为了B。

3. grep

grep命令使用正则表达式搜索标准输入或文本,并将匹配到的行打印到标准输出。

例如命令:

grep harley /etc/password

执行后输出文件中所有包含harley的行。

“harley”可以替换为正则表达式。

比如邮箱的正则表达式:

^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

四、Shell脚本编程

Shell除了是命令解释器外,也是一种可编程的程序设计语言。

1. vi 编辑器

shell脚本文件使用Linux中的vi编辑器编辑。

vi有三种工作模式:

UNIX系统_文件权限_03

2. 脚本示例

比如一个简单的shell脚本:

#!/bin/bash
function sayhello(){
	echo "Enter your name:"
	read name
	echo "Hello $name"
}
sayhello

shell脚本的后缀为.sh, 通过以下语句执行一个shell脚本:

bash hello.sh

开头的注释指定shell为bash,否则以sh执行shell脚本。

echo用来输出,read用来读入。“$”用来取变量值。

3. 条件判断命令 test

test n1 -condition n2
#或:
[n1 -condition n2]

condition包括:

条件 含义
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于

真返回0,假返回1。

4. 求1-100的和

#!/bin/bash
i = 1
sum = 0
while [ $i -le 100]
do
	sum = $[$sum + $i]
	i = $[$i + 1]
done
echo $sum