什么是shell?
Shell
(外壳) 是一个用 C
语言编写的程序,它是用户使用 Linux 的桥梁。Shell
既是一种命令语言,又是一种程序设计语言。Shell
是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。什么是脚本?
JavaScript(JS,前端),VBScript, ASP,JSP,PHP(后端),SQL(数据库操作语言),Perl,Shell,python,Ruby,JavaFX,Lua
等。为什么要学习和使用shell?
常见的shell种类?
ash、bash、ksh、csh、zsh
等,不同的shell都有自己的特点以及用途。 #!/bin/bash [指定告知系统当前这个脚本要使用的shell解释器]
Shell相关指令
文件名.sh .sh是linux下bash shell 的默认后缀
touch/vim
②编写shell代码
③执行shell脚本 脚本必须得有执行权限test.sh
,实现第一个shell脚本程序,输出hello world.
输出命令:# echo 123
./test.sh
,而不是 test.sh
,运行其它二进制的程序也一样,直接写 test.sh
,Linux 系统会去 PATH
(环境变量) 里寻找有没有叫 test.sh
的,而只有 /bin
, /sbin
, /usr/bin
,/usr/sbin
等在 PATH
里,你的当前目录通常不在 PATH
里,所以写成 test.sh
是会找不到命令的,要用 ./test.sh
告诉系统说,就在当前目录找。root
用户帐号创建并执行test2.sh
,实现创建一个shelltest
用户,并在其家目录中新建文件try.html
。
/bin/bash 脚本的路径
(了解)
shell
文件shell
中不可或缺的一部分,也是最基础、最重要的组成部分。class_name="yunwe "
echo $class_name
$
符号,该要求在其他语言中也存在的(例如php)。变量名的规范 注意,变量名后面的等号左右不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
bash
里的关键字(可用help
命令查看保留关键字)。案例1:使用变量改写入门脚本中的第1个shell脚本。
关于单双引号的问题:
\
”)案例2:定义一个变量,输出当前时间,要求格式为“年-月-日 时:分:秒”。
esc
键下方的那个键),当在脚本中需要执行一些指令并且将执行的结果赋给变量的时候需要使用“反引号
”。
readonly 变量名
read -p 提示信息 变量名
test6.sh
,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件
unset 变量名
b=20
,再输出b的值,随后删除b,最后再输出下b
if condition
then
command1
command2
...
fi
if [ condition ]; then command; fi
if condition
then
command1
command2
...
else
command
fi
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
bash
不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk
和 expr,expr
最常用。expr
是一款表达式计算工具,使用它能完成表达式的求值操作。#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
两点注意:
2+2
是不对的,必须写成 2 + 2
,这与我们熟悉的大多数编程语言不一样。Esc
键下边。
-eq:equal
-ne:not equal
-gt:great than
-lt:less than
-ge:great than or equal
-le:less than or equal
调用tail指令
系统把后续选项传递给tail
Tail先去打开指定的文件
取出最后10行
shell
是否也可以像内置命令一样传递一些选项呢?#./test.sh a b c
测试:编写test14.sh,传递a,b,c,输出其值 其实1、2是变量。
练习:创建自定义指令“user”,可以直接执行,要求该指令具备以下语法和功能:
a. #user -add 用户名 【添加用户】
b. #user -del 用户名 【删除用户及其家目录】
同时题目中要求是指令,所以可以再去添加个别名: