系统组成
/bin:
是Binary的缩写,这个目录存放着最经常使用的命令。- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/home:
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录 名是以用户的账号命名的。/root:
该目录为系统管理员,也称作超级权限者的用户主目录。- /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。 几乎所有的应用程序都需要用到这些共享库。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文 件。
- /etc:所有的系统管理所需要的配置文件和子目录my.conf。
/usr/local
:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录 下,类似与windows下的program files目录。/boot:
存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统 信 息。
- /srv:service的缩写,该目录存放一些服务启动之后需要提供的数据。
- /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文 件系统sysfs。
- /tmp:这个目录是用来存放一些临时文件的。
- /dev:类似windows的设备管理器,把所有的硬件用文件的形式存储。
/media:
linux系统会自动识别一些设备,例如U盘光驱等等,当识别后,linux会把识别 的设备挂载到这个目录下。/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储 挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。/opt:
这是给主机额外安装软件所摆放的目录,如安装ORACLE数据库就可放到该目录 下。默认为空。- /usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码的方 式 安装的程序。
/var:
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录 下 ,包括各种日志文件。- /selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件。
1.脚本介绍
#!/bin/bash
echo "Hello World !"解释
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本。
1、作为可执行程序
将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
2.shell变量
有效的 Shell 变量名示例如下:
# 避免使用if作为变量名 if="some_value" # 避免使用 $ 等特殊符号 variable_with_$=42 ?var=123 user*name=runoob # 避免空格 variable with space="value"
无效命名
# 避免使用if作为变量名 if="some_value" # 避免使用 $ 等特殊符号 variable_with_$=42 ?var=123 user*name=runoob # 避免空格 variable with space="value"
等号两侧避免使用空格:
使用变量
删除变量
unset variable_name
变量类型
单引号 ' 或双引号 " 来定义字符串
my_string='Hello, World!' 或者my_string="Hello, World!"
数组变量
declare -A
用于声明一个关联数组这是一种可以存储键值对的数组。与普通数组不同,关联数组的索引可以是任意字符串,而不是必须从 0 开始的整数序列。declare -A associative_array associative_array["name"]="John" associative_array["age"]=30
环境变量和特殊变量
双引号
获取字符串长度
提取字符传
查找字符串
expr index为查找字符串的命令
3.shell注释
3.1# 开头做注释
3.2 传递参数
参数的格式为 $n,$1、$2 等来引用传递给脚本的参数,其中 $1 表示第一个参数,$2 表示第二个参数
3.3特殊字符
4.数组
创建数组 my_array=(A B "C" D)
或者这样创建数组
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2读取数组: ${array_name[index]} 声明关联数组:declare -A array_name 例如: declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")
获取数组全部元素: 使用 @ 或 * 可以获取数组中的所有元素
在数组前加一个感叹号 ! 可以获取数组的所有键
获取数组长度
5.shell运算符
5.1算术运算符
5.2关系运算符
5.3布尔运算符
5.4逻辑运算符
5.5字符串运算符
5.6文件测试运算符
5.7自增自减操作符
6.echo输出规则
1.显示普通字符串:
2.显示转义字符
3.显示变量
4.显示换行
5.显示不换行
6.显示结果定向至文件
7.原样输出字符串,不进行转义或取变量(用单引号)
8.显示命令执行结果
7.Shell printf 命令
7.1Shell printf 命令
8.Shell test 命令
8.1数值测试
8.2字符串测试
8.3文件测试
9.基本循环控制语句
9.2for循环语句
9.3while语句
9.4case....esac
9.5跳出循环
10函数
函数返回值在调用该函数后通过 $? 来获得。
10.2函数参数传递
$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
特殊参数