如何通过cpa网站做推广,网站 月15g流量够用吗,上海网站备案信息,wordpress 删除 版权0 Shell基础 0.1 Shell是什么 0.1.1 Shell是什么 Shell是一个命令行解释器#xff0c;它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序#xff0c;用户可以用Shell来启动、挂起、停止甚至编写一些程序。 硬件 -内核 - Shell命令解释器-外层应… 0 Shell基础 0.1 Shell是什么 0.1.1 Shell是什么 Shell是一个命令行解释器它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序用户可以用Shell来启动、挂起、停止甚至编写一些程序。 硬件 -内核 - Shell命令解释器-外层应用程序 0101 ls Shell还是一个功能相当强大的编程语言易编写易调试灵活性强。 Shell是解释执行的脚本语言在Shell中可以直接调用Linux系统命令。 0.1.2 Shell的分类 Bourne Shell从1979年起UNIX就开始使用bourne Shellbourne Shell的主文件名为sh C ShellC Shell主要在BSD版的UNIX系统中使用其语法和C语言相类似而得名 Shell的两种主要语法类型有Bourne和C这两种语法彼此不兼容。 Bourne家族主要包括sh、ksh、Bash、psh、zsh C家族主要包括csh、tcsh。 BashBash与sh兼容现在使用的Linux就是使用Bash作为用户的基本Shell 0.1.3 Linux支持的Shell /etc/shells文件中记录的是系统支持的shell sh #此命令用于启动Shell exit #此命令用于退出Shell 0.2 Shell脚本的执行方式 0.2.1 echo输出命令 echo 选项 变量 作用将变量显示到标准输出 选项 -e 支持反斜线控制的字符转换 \\ 输出\本身 \a 输出警告音 \b 退格键向左删除 \c 取消输出行末的换行符 \e ESCAPE键 \f 换页符 \n 换行符 \r 回车键 \t 制表符也就是tab键 \v 垂直制表符 \0nnn 按照八进制ASCII码表输出字符。其中0为数字零nnn是三位八进制数。 \xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 例子 echo -e ab\bc #输出结果是ac echo -e \e[1;31mabcd\e[0m #输出颜色abcd为输出内容 30m黑 31m红 32m绿 33m黄 34m蓝 35m洋红 36m青 37m白
0.2.2 第一个脚本
vi hello.sh #!/bin/bash
#The first program
#Author:haha (E-mail:hahaxxx.com) echo -e hello world 0.2.3 执行脚本
赋予执行权限直接运行
chmod 755 hello.sh
./hello.sh 通过bash调用执行脚本此时不必有执行权限
bash hello.sh cat -A 文件名
#查看隐藏字符如换行符 dos2unix 文件名
#从windows格式转换成UNIX格式 unix2dos 文件名
#从UNIX格式转换成windows格式 0.3 bash的基本功能
历史命令与命令补全
0.3.1 历史命令
history 选项 文件名历史命令保存文件
选项
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件(在各自的家目录中)~/.bash_history
history -c #清空缓存历史命令
history -w #将缓存的历史命令写入~/.bash_history
history -w tmp.txt #将缓存的历史命令写入tmp.txt
历史命令默认会保存1000条可以在环境变量配置文件/etc/profile中进行修改 历史命令的调用
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令 0.3.2 命令与文件补全
在bash中命令与文件补全是非常方便与常用的功能
只要在输入命令或文件时按“Tab”键就会自动进行补全 0.4 命令别名与常用快捷键
0.4.1 命令别名
alias 别名原命令
#设定命令别名临时生效 alias
#查询命令别名 命令执行时顺序
1、第一顺位执行用绝对路径或相对路径执行的命令
2、第二顺位执行别名
3、第三顺位执行bash的内部命令
4、第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令 echo $PATH 打印环境变量的路径 让别名永久生效:修改家目录下的.bashrc文件
vi /root/.bashrc 删除别名
unalias 别名 0.4.2 bash常用快捷键
CtrlA 把光标移动到命令行开头
CtrlE 把光标移动到命令行结尾
CtrlC 强制终止当前的命令
CtrlL 清屏相当于clear命令
CtrlU 删除或剪切光标之前的命令
CtrlK 删除或剪切光标之后的命令
CtrlY 粘贴CtrlU或CtrlK剪切的内容
CtrlR 在历史命令中搜索按下CtrlR之后就会出现搜索界面只要输入搜索内容就会从历史命令中搜索。
CtrlD 退出当前终端 相当于logout
CtrlZ 暂停并放入后台
CtrlS 暂停屏幕输出
CtrlQ 恢复屏幕输出 0.5 输入输出重定向
0.5.1标准输入输出
设备 设备文件名 文件描述 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出 0.5.2输出重定向 类型 符号 作用
标准输出重定向
命令 文件 以覆盖的方式把命令的正确输出输出到指定的文件或设备当中
命令 文件 以追加的方式 标准错误输出重定向
错误命令 2文件 覆盖
错误命令 2文件 追加 正确输出和错误输出同时保存
命令 文件 21 覆盖
命令 文件 21 追加
命令 文件 覆盖
命令 文件 追加 正确输出和错误输出分别保存
命令 文件1 2文件2 正确追加文件1 错误追加文件2 ls /dev/null #丢弃没用的输出信息ls不管命令输出什么执行就好 0.5.3 输入重定向
用的不多用于给源码包打补丁
wc 选项 文件名
选项
-c 统计字节数
-w 统计单词数
-l 统计行数 1、命令wc回车
2、输入文本
3、CtrlD #统计输入的行数、单词数、字符数 命令文件 把文件作为命令的输入
wcanaconda-ks.cfg 统计anaconda-ks.cfg文件
wcflag
asdg
afsda
gerge
flag
#统计两个flag之间的内容flag是标志 0.6 多命令顺序执行与管道符
0.6.1 多命令顺序执行
多命令执行符 格式 作用 命令1命令2 多条命令顺序执行命令之间没有任何逻辑联系 命令1 命令2 逻辑与命令1正确执行命令2执行否则命令2不执行 || 命令1 ||命令2 逻辑或命令1不正确执行命令2执行否则命令2不执行 dd用于磁盘复制
dd if输入文件 of输出文件bs字节数count个数 选项
if输入文件 指定源文件或源设备
of输出文件 指定目标文件或目标设备
bs字节数 指定一次输入/输出多少字节即把这些字节看做一个数据块
count个数 指定输入/输出多少个数据块 例子
date; dd if/dev/zero of/root/testfile bs1k count10000; date
#判断复制硬盘用了多长时间 命令echo yes||echo no
#可以判断命令是否正确 0.6.2管道符
命令1 |命令2
#命令1的正确输出作为命令2的操作对象 例子
ll -a /etc/ | less
netstat -an | grep ESTABLISHED grep 选项 “搜索内容” 文件名
选项
-i 忽略大小写
-n 输出行号
-v 反向查找
--colorauto 搜索出的关键字用颜色标识 0.7 多命令顺序执行与管道符
0.7.1 通配符 匹配一个字符
* 匹配多个字符
[] 匹配中括号中的一个字符。如[abc]
[-] 匹配一个范围。如[a-f]
[^] 匹配不是中括号内的一个字符。如[^0-9]代表匹配一个不是数字的字符
例子
rm -rf * #清空
ls ?abc
ls [0-9]*
ls [^0-9]*
0.7.2 bash中其他特殊符号 单引号 特殊符号如“$”和“”(反引号)都没有特殊含义 双引号
$ 代表调用变量的值
引用命令
\ 转义字符 反引号 内容是系统命令在bash中先执行
$() 同反引号
# 注释
$ 用于调用变量的值如需要调用变量name的值时需要用$name的方式得到变量的值
\ 转义字符跟在其后的特殊符号失去作用 例子
namesc
echo $name
echo $name
echo $name 引用一个命令
abcdate 或者 abc$(date)
echo $abc echo $(date)
echo $(date) 0.8 bash变量
0.8.1 什么是变量
变量是计算机内存的单元其中存放的值可以改变。
当Shell脚本需要保存一些信息时如一个文件名或是一个数字就把它存放在一个变量中。
每一个变量有一个名字所以很容易引用它。
使用变量可以保存有用信息使系统获知用户相关设置变量也可以用于保存暂时信息。
0.8.2 变量设置规则
由字母、数字、下划线组成以字母、下划线开头。
默认类型是字符串型
用等号连接不能有空格
值有空格用引号引起来
值可以使用转义字符
值可以叠加。 “$变量名” 或者 ${变量名}
把命令结果作为变量值赋予变量 $()
环境变量名大写 0.8.3 变量分类
用户自定义变量
环境变量保存和系统操作环境相关的数据
位置参数变量向脚本当中传递参数变量名不能自定义变量作用是固定的
预定义变量bash中已经定义好的变量变量名不能自定义变量作用是固定的 0.8.4 本地变量用户自定义变量
例子
nameha ha 变量叠加
aa123
aa$aa456
aa${aa}789 变量调用
echo $name 变量查看系统所有变量
set 变量删除
unset name 0.9 环境变量
0.9.1 环境变量是什么
用户自定义变量只在当前Shell中生效
环境变量在当前Shell和这个Shell的所有子Shell当中生效
如果把环境变量写入相应的配置文件那么这个环境变量就会在所有的Shell中生效 0.9.2 设置环境变量
export 变量名变量值
#声明变量 exprot 变量名
#将已声明的本地变量变为环境变量 env
#查询变量 unset 变量名
#删除变量 bash
#进入子Shell pstree
#查看进程树
0.9.3 系统常见环境变量
PATH系统查找命令的路径
echo $PATH PATHPATH:/root/sh
#PATH变量叠加命令行临时改变 PS1定义系统提示符的变量
\d 显示日期格式为“星期 月 日”
\h 显示简写主机名。如默认主机名“localhost”
\t 显示24小时制时间格式为“HH:MM:SS”
\T 显示12小时制时间格式为“HH:MM:SS”
\A 显示24小时制时间格式为“HH:MM”
\ HH:MM AM/PM
\u 显示当前用户
\w 显示当前所在目录的完整名称
\W 显示当前所在目录的最后一个目录
\# 执行的第几个命令
\$ 提示符。root为# PS1[\u\h \W]\$
例子
PS1[\u\ \h \# \W]\$ 0.10 位置参数变量
$n n为数字$0代表命令本身$1-$9代表第一到第九个参数十以上的参数需要用大括号包含如${10}
$* 代表命令行所有参数$*把所有参数看成一个整体
$ 也代表命令行中所有的参数不过$把每个参数区分对待
$# 代表命令行中所有参数的个数 例子1
#!/bin/bash
num1$1
num2$2
sum$(($num1 $num2))
#变量sum的和是num1加num2
echo $sum
#打印变量sum的值 例子2
#!/bin/bash
echo A total of $# parameters
echo The parameters is: $*
echo The parameters is: $ 例子3$*与$的区别
#!/bin/bash
for i in $* do echo $i done for i in $ do echo $i done 0.11 预定义变量
其实位置参数变量就是预定义变量的一种 $? 最后一次执行命令的返回状态。为0则表示正确执行。
$$ 当前进程的进程号PID
$! 后台运行的最后一个进程的进程号 例子 variable.sh
#!/bin/bash echo The current process is $$
#输出当前进程的PID
#这个PID就是variable.sh这个脚本执行时生成进程的PID find /root -name hello.sh
#使用find命令在root目录下查找hell.sh文件
#符号的作用是把命令放入后台执行 echo The last one Daemon process is $! 接受键盘输入
read 选项 变量名
选项
-p 提示信息在等待read输入时输出提示信息
-t 秒数 指定等待时间
-n 字符数 指定字符数
-s 隐藏输入的数据适用于机密信息的输入 例子
#!/bin/bash read -t 30 -p Please input your name: name
echo Name is $name read -s -t 30 -p Please enter your age: age
echoo
echo Age is $age read -n 1 -t 30 -p Please select your gender[M/F]: gender
echo
echo Sex is $gender