概述
在本课程中我们主要学习了:
- Linux 常用Shell指令:用户与文件权限管理、过滤器
- Shell 脚本编程
一、UNIX与Linux的关系
UNIX 是一种分时操作系统,而Linux则是UNIX系统的一个分支。Linux完全开源并且免费,因此在程序开发领域得到了广泛的使用。
总的来说,UNIX是商业软件,而Linux是类UNIX的开源软件。
Linux有众多发行版本,如Ubuntu、CentOS、FreeBSD。
二、常用Shell指令
1. Shell
Shell是用户与Linux内核之间的接口,是交互性的命令行解释器。它解释并执行用户输入的命令。
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 可执行该文件
使用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有三种工作模式:
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