- 我们必须要通过“shell”将我们输入的命令与内核通信。shell的功能只是提供用户操作系统的一个接口。包括man、chmod等都是独立的应用程序,我们可以通过shell来操作它们,让这些应用程序调用内核来运行所需的工作。
- Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。(类似Windows下的bat)
- bash shell的内置命令:type
bash已经内置了很多命令,例如cd、例如umask等。可以通过type查询是否内置命令
type [-tpa] name
不加任何参数,type会显示出name是外部命令还是bash内置命令
-t:会以下面几种字眼显示出它的意义
file:表示为外部命令
alias:表示该命令为命令别名所设置的名称
builtin:表示该命令为bash内置的命令功能
-p:如果后面接的name为外部命令时,才会显示完整文件名
-a:会由PATH变量定义的路径中,将所有含name的命令列出来,包括alias
- shell变量:
1、变量的显示和设置:
①显示echo
通过 echo $variable 来显示变量,例如要知道PATH变量,就是:echo $PATH
②变量相关
1.定义变量的时候,变量名不加$。例:name="test.test"(已定义的变量可以重新再被定义)
2.等号两边不能直接有空格符。
3.变量名只能是英文字母和数字,并且开头字符不能为数字,不能有bash里的保留关键字。
4.如果变量内容有空格,可以用双引号或单引号将变量内容括起来。(双引号内特殊字符保留本性,单引号内特殊字符也为一般字符。例如:var="lang is $LANG" 时echo $var可得lang is en_US,而var='lang is $LANG' 时echo $var可得lang is $LANG)
5.可用转义符\,把特殊符号,例如$、!、enter等转为一般字符
6.增加变量内容时:PATH=$PATH:/home/bin 或 name="$name"yes 或 name=${name}yes
7.删除变量的方法:unset 变量名称。例如:unset myname
8.将变量变成环境变量,可用在其他子进程使用:export name
9.只读变量:在定义后,加上一句 readonly name,后面再重新定义会被报错
10.获取字符串长度:test="abcd" echo ${#test} #会输出4
11.提取字符串:string="runoob is a great site" echo ${string:1:4} # 输出 unoo
2、环境变量
通过env命令,可用列出目前系统中的环境变量。
- shell脚本(shell script):是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,shell 和 shell script 是两个不同的概念。
- Shell 环境:Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
- 常见的Shell有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)
- 新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。
#!/bin/bash
echo "Hello World !"
-
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。echo 命令用于向窗口输出文本。
- 运行 Shell 脚本有两种方法:①作为可执行程序:将上面的代码保存为 test.sh,chmod使其有权限,然后运行就好。②作为解释器参数:/bin/sh test.sh(该方式下第一行写的解释器信息没用)。