● 基本格式:命令 + 空格 + 选项【可选】+ 空格 + 参数【可选】
❍ 例:ls -l /home/
●“命令”是一些简短的工具程序,通常在/bin 目录下,在任何目录下可以调用这些程序
● 通常在终端输入一行命令,按回车键后执行该行命令。也可以一行写多个命令,命令之间用分号(;)间隔
❍ 例:mkdir test; mkdir test/1; ls test
● 命令名或者参数名可以用 “Tab” 键补全,比如 “passwd” 是修改密码的命令,输入 “pass” 后按键盘里的 “Tab” 键,系统自动补全命令全名
● Linux 的目录操作
❍ pwd:显示当前所在目录的绝对路径
❍ mkdir: 创建目录,可以带 1 个或多个参数,比如:mkdir 3-2
• 如果要建立多层目录,加上-p 选项,一并创建子目录如:
mkdir -p 1/2/3 表示创建目录 1,一并创建 1 下面的子目录 2及 2 下面子目录 3
❍ cd:进入某个目录,如 cd 3-2/表示进入到当前路径下的名为3-2 的子目录里
❍cd .. :回到上一级目录
• 如果 cd 后面不接任何参数,则无论当前处于那个路径,都回到主目录(“/home/用户名”)
❍ rmdir: 删除空目录
❍ rm -r:删除非空目录及该目录下所有文件及子目录
❍ 拷贝一个目录全部内容为另一个名称的目录:cp -r dir1 dir2
❍ 移动目录或目录改名:mv dir1 dir2
目录(文件夹)的常用命令
ls 列出当前目录下文件列表. -l 详细信息,-a 所有文件
cd dir 进入目录,dir 可以是相对或绝对路径.
mkdir dir 创建目录,dir 可以是相对或绝对路径.
pwd 显示当前目录的绝对路径信息.
rm -r dir 删除 dir 目录及其下面的子目录.
cp -r dir1 dir2 拷贝 dir1 目录及其下面的子目录到 dir2
● Linux shell 对文件的基本操作
❍ 创建文件有很多方式,程序输出、文本编辑器生成等
• 可用 > 把屏幕标准输出重定向为文件,例如:echo “hello” > hello.txt
❍ 查看文本文件的内容可以用 less 或 more 命令,如:less hello.txt
❍ cat: 将多个文件内容连接合并显示在标准输出(屏幕),如:cat file1 file2
• cat 后面接一个参数时,一次性现实某个文件的全部内容,如:cat file1
• 可以用 > 重定向来合并多个文件为一个文件,如cat file1 file2 > file3
❍ mv: 移动文件或改名,如 mv file1 dir1, 或 mv file1 file2
❍ cp: 拷贝文件内容到新文件或拷贝到某个目录下,例如 cp file1 file2, 或 cp file1 dir1
❍ 查看文件细节:ls -l file1
Linux 文件的权限设置 chmod
● 字串设置方法
❍ 基本使用方法 chmod u+x file:表示对拥有该文件用户 (u) 添加 (+) 执行 (x) 权限
❍ u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体 (group) 者,o 表示其他以外的人,a 表示所有(包含上面三者)
❍ + 表示增加权限,- 表示取消权限,= 表示唯一设定权限
❍ r 表示可读取,w 表示可写入,x 表示可执行
● 数字设置方法
❍ 例:chmod 777 file:三个数字分别对文件拥有者 (u)、同组用户 (g) 和其它用户 (o) 进行设置
❍ 规定数字 4 、2 和 1 表示读、写、执行权限, 即 r=4,w=2,x=1
❍ 其他的权限组合也可以用其他的八进制数字表示出来,如:
rwx = 4 + 2 + 1 = 7, rw = 4 + 2 = 6, rx = 4 +1 = 5
● 命令模式下的常⽤操作
❍ 输⼊ “i”, 进⼊输⼊模式,在输⼊模式下按 “Esc” 键返回命令模式
❍ 输⼊ “gg”:进⼊第⼀⾏;“G”: 进⼊最后⼀⾏;“数字 +G” 或 “数字 +gg”:进⼊第 “数字” ⾏
❍ dd: 删除整⾏;“数字 +dd”:删除 “数字” ⾏;“dw” 删除⼀个单词
❍ “x”: 删除⼀个字符;s: 删除⼀个字符后进⼊输⼊模式
❍ “yy” 拷⻉游标所在⾏内容到剪切板;“p”: 将已复制的数据在光标下⼀⾏粘贴
❍ 在命令模式下输⼊冒号 “:” 进⼊底线命令⾏模式
❍ “:w” 表⽰写⼊内容到⽂件(保存⽂件),“q” 表⽰退出,“!” 表⽰强制执⾏
❍ “:wq!” 可以组合使⽤,如 “wq” 表⽰保存后退出,“q!” 表⽰不保存,强制退出
❍ “:%s/a/b/y” 表⽰所有的 a 替换成 b,⽀持正则表达式
❍ “:set nu”:显⽰所有⾏数;“:set nonu”:取消显⽰⾏数
Shell 编程基础
● 第⼀个 Shell 脚本
❍ ⽤ vi 创建⼀个 bash shell 脚本 test.sh
❍ 键盘输⼊ i 进⼊输⼊模式,输⼊以下内容:
#!/usr/bin/env bash //解释地址
echo I love Linux > test.txt
cat test.txt test.txt test.txt
❍ 按 Esc 键退回到 vi 命令模式,输⼊:wq 保存退出 vi 程序,回到 shell
❍ 设置添加可执⾏权限 chmod +x test.sh
❍ 执⾏该脚本./test.sh
Shell 变量
● 变量命名⽅式
❍ 与其它脚本语⾔ perl 及 php 不同,变量名不以美元符号 $ 开头
❍ 变量名只能使⽤英⽂字⺟,数字和下划线,⾸个字符不能以数字开头
有效命名:abc1, abc_1, _abc123
无效命名:123abc, abc-d, a\#bc, a\*bc
❍ 中间不能有空格,可以使⽤下划线 _
❍ 不能使⽤标点符号及特殊符号
● 使⽤变量
❍ 使⽤变量时,只需要在变量名前⾯加美元符号 $
❍ 后⾯的变量名可以⽤花括号来区别变量名边界,如 $txt
● 赋值字符串给变量时,可以⽤双引号或单引号,不含空格的字符串可以不加引号
● 等号后⾯不能加空格,否则⽆法将字符串赋值给变量,如os1= Linux, 变量 os1 的值为空
● 双引号⾥ “$ 变量名” 可以解释成变量值,⽽单引号不可以 不理解
● 双引号⾥⾯可以解释转义符
● 单引号⾥的任何字符都会原样输出,单引号字符串中不能⾃动解释获取变量值
Shell 的算数运算符、表达式和注释
● Shell 脚本⽀持的算数运算符跟其语⾔基本⼀样
❍ +:加法,-:减法,*:乘法,/:除法
备注:*号用于匹配0个以上字符相关文件。在linux环境运用乘号为:\*
❍ %: 取余,=:赋值,(区别于 ==:相等,!=: 不相等)
● bash shell 的数学运算需要通过 expr ⼯具来实现
❍ expr 开头的表达式需要⽤两个反引号 ‘(键盘 Esc 下⾯的那个键)围起来
❍ 例如:val=‘expr 1 + 1‘(常量相加)
❍ 例如:val=‘expr a+b‘(变量相加)
● bash shell 程序注释⼀般⽤井号 #,井号后⾯的为对⽂本的注释
❍ 例如:val=‘expr 1 + 1‘ # 两个常量相加,结果赋值给变量 val
Shell 的关系运算符
● 由于 < 和 > 在 shell 中⽤于⽂件的重定向,关系运算符不能出现这两个符号
● ⽐较两个数字的⼤⼩关系,可以⽤以下⽅式
❍ -eq: 等于(equal 的缩写,例如 [ $a -eq $b ] )
❍ -lt: ⼩于(less than 的缩写,例如 [ $a -lt $b ] )
❍ -gt: ⼤于(greater than 的缩写,例如 [ $a -gt $b ] )
❍ -le: ⼩于等于(less or equal 的缩写,例如 [ $a -le $b ] )
❍ -ge: ⼤于等于(greater or equal 的缩写,例如 [ $a -ge $b ] )
❍ -ne: 不等于(not equal 的缩写,例如 [ $a -ne $b ] )
if else-if else 条件判断 控制流程的基本格式:
i f [ c o n di ti o n 1 ]
then
command1
e l i f [ c o n di ti o n 2 ]
then
command2
e l s e
commandN
f i
● 可以在执⾏ Shell 脚本时,向脚本传递参数,脚本内获取参数
的格式为:$n
● n 代表⼀个数字,1 为执⾏脚本的第⼀个参数,2 为执⾏脚本
的第⼆个参数,以此类推
● 获取参数 $n 中,$0 代表为执⾏的脚本⽂件名
● ⽤特殊字符处理参数:
❍ $#: 获取传递参数的总数
❍ $*: 以⼀个字符串表⽰传递的所有参数
❍ $@ : 返回所有参数列表(数组)