104-linux-shell:
1.shell基础
分类:linux使用Bash,可通过vi /etc/shells查看linux支持的shell类型。
1、echo
[root@localhost ~]#echo [选项] [输出内容]
选项:
-e:支持反斜线控制的字符转换(具体百度吧)
-n:取消输出后行末的换行符号(就是内容输出后不换行)
举例:
[root@localhost ~]# echo -e "\l la"\
[root@localhost ~]# echo -e "ab\bc"ac
[root@localhost ~]# echo -e "a\tb\tc\nd\te\tf"
2、脚本的执行
vim test.sh
chmod 755 test.sh
3、历史命令查看
[root@localhost~]# history [选项] [历史命令保存文件]:
-c: 清空历史命令
一w: 把历史命令写入文件。不指定历史命令保存文件,默认保存文件~/.bash_history 中
历史命令的调用(了解即可):
上、下箭头调用以前的历史命令,“!n”重复执行第n条历史命令,“!!”重复执行上一条命令,“!字串”重复执行最后一条以该字串开头的命令,“!$”重复上一条命令的最后一个参数
4、Bash常用快捷键
ctrl+A 把光标移动到命令行开头。
ctrl+E 把光标移动到命令行结尾。
ctr1+C 强制终止当前的命令。
ctr1+L 清屏,相当于clear命令。
ctr1+U 删除或剪切光标之前的命令。一行很长的命令,不用退格键一个一个的删除
ctr1+K 删除或剪切光标之后的内容。
ctr1+Y 粘贴ctrl+U或ctrl+K剪切的内容。
ctr1+R 在历史命令中搜索,ctr1+R后会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
ctr1+D 退出当前终端。
ctr1+Z 暂停,并放入后台。这个快捷键牵扯工作管理的内容,我们在系统管理章节详细介绍。。。暂不了解
ctrl+S 暂停屏幕输出。
ctrl+Q 恢复屏幕输出。
5、输入输出重定向
1).Bash标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | / dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
#输出重定向
命令 > 文件,以覆盖(>>追加)方式吧命令正确输出输出到指定文件或设备当中
错误命令 2> 文件,以覆盖(>>追加)方式吧命令错误输出输出到指定文件或设备当中
命令 > 文件2 > &1,以覆盖(文件 >> 命令 追加)方式正确输出和错误输出都保存在同一个文件当中(等同于 命令 &>文件 命令 &>>文件)
命令>>文件 1 2>>文件2,正确的输出追加到文件1,错误输出追加到文件2
6.多命令执行顺序
#wc统计行数
[root@localhost~]# wc[选项][文件名]选项:
-C 统计字节数 -w 统计单词数 -l 统计行数
#命令执行顺序
命令1;命令2(顺序执行,无关) 命令1&&命令2(并且) 命令1||命令2(或)
7、管道符|
[root@localhost~]#grep[选项]"搜索内容”文件名选项:
-A数字:列出符合条件的行,并列出后续的n行
-B数字:列出符合条件的行,并列出前面的n行
-C:统计找到的符合条件的字符串的次数
-i:忽略大小写
-n:输出行号
一V:反向查找
--color=auto搜索出的关键字用颜色显示
例如:
[root@localhost ~]# grep " /bin/bash"/etc/passwd
[root@localhost~]# grep -A 3 "root" /etc/passwd#查找包含有“root”的行,并列出后续的3行
[root@localhost~]# grep -n "/bin/bash"/etc/passwd#查找可以登录的用户,并显示行号
[root@localhost~]# netstat -an | grep "ESTABLISHED" | wc -1#如果想知道具体的网络连接数量,就可以再使用wc命令统计行数
8、通配符
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配О个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或a,或b,或c。 |
[-] | 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。 |
[^] | 逻辑非,匹配不是中括号内的一个字符。例如:[ ^0-9 ]代表匹配一个不是数字的字符。 |
9、Bash中其他特殊符号的含义
符号 | 作用 |
---|---|
’ ’ | 单引号中所有的特殊符号,如“$”和“”(反引号)都没有特殊含义。 |
" " | 在双引号中特殊符号都没有特殊含义,但是“$”、“~”和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义 |
`` | 系统命令,在 Bash中会先执行它。和 ( ) 作 用 一 样 , 不 过 推 荐 使 用 ()作用一样,不过推荐使用 ()作用一样,不过推荐使用(),因为反引号非常容易看错。 |
$ () | 和反引号作用一样,用来引用系统命令。 |
() | 用于一串命令执行时,()中的命令会在子Shell中运行 |
{} | 用于一串命令执行时,0中的命令会在当前Shell中执行。也可以用于变量变形与替换。 |
[] | 用于变量的测试。 |
# | 注释 |
$ | 用于调用变量的值,如需要调用变量name 的值时,需要用$name的方式得到变量的值。 |
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如$将输出“$”符号,而不当做是变量引用。 |
2、Bash变量和运算符
变量查看
[root@localhost~]# set [选项]
-u: 如果设定此选项,调用未声明变量时会报错(默认无任何提示)
-X: 如果设定此选项,在命令执行之前,会把命令先输出一次
#删除变量
unset 变量名
#环境变量查看
env | grep 变量名
1).变量:命名规则,等号两边无空格,特殊含义需加单/双引号。单引号是普通字符,双引号有特殊含义。
2).变量分类:
用户自定义变量(x,y): 名称:自定义 作用:自定义 内容:自定义(name=“ceshi”)
环境变量:
用户自定义环境变量(java): 名称:自定义 作用:自定义 内容:自定义(export age=“19”)
系统自带环境变量(path): 命令:确定 作用:确定 内容:自定义(env)(echo
P
A
T
H
)
,
添
加
P
A
T
H
=
"
PATH),添加PATH="
PATH),添加PATH="PATH":/root/sh
位置参数变量($1): 名称:确定 作用:确定 内容:自定义
位置参数变量 | 作用 |
---|---|
$n | n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如{10}. |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# | 这个变量代表命令行中所有参数的个数 |
预定义变量($?); 名称:确定 作用:确定 内容:自定义
预定义变量 | 作用 |
---|---|
$ ? | 最后一次执行的命令的返回状态。值为0,上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。 |
$ $ | 当前进程的进程号(PID) |
$ ! | 后台运行的最后一个进程的进程号(PID) |
1、接受键盘输入
[root@localhost~]#read [选项] [变量名]
-p“提示信息”:在等待read输入时,输出提示信息
-t秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n字符数:read命令只接受指定的字符数,就会执行
-S:隐藏输入的数据,适用于机密信息的输入
read -t 30 -p "Please input your name: " name
read -n 1 -t 30 -p "Please select your gender[M/F]: "
2、Shell运算符
数值运算的方法
#方法一使用declare(不常用) declare --help
#数值变量
[root@localhost~]#declare [+/-] [选项] 变量名:declare -i cc=$aa+$bb
-:设定类型属性
+:取消变量的类型属性
-a:将变量声明为数组型
-i:将变量声明为整数型(integer)
-r:讲变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过+r取消只读属性
-X:将变量声明为环境变量
-p:显示指定变量的被声明的类型
#数组变量类型
[root@localhost ~]# name [0]="shen chao"
[root@localhost ~]# name[1]="li ming"
[root@localhost ~]# echo $ {name}
shen chao#输出数组的内容,如果只写数组名,那么只会输出第一个下标变量
[root@localhost ~]#echo $ {name[*]}
shen chao li ming #输出数组所有的内容
#环境变量,可以使用declare将变量声明为环境变量。同export命里一样。
[root@localhost~]# declare -x test=123 #把变量test声明为环境变量
方法二,使用expr 或let数值运算工具
[root@localhost ~]# dd=$(expr $aa + $bb)#注意“+”号左右两侧必须有空格
[root@localhost ~]# let ee=$aa+$bb #let比expr要求宽松一些
方法三,使用“ ( ( 运 算 式 ) ) ” 或 “ ((运算式))”或“ ((运算式))”或“[运算式]”方式运算
[root@localhost~]# ff=$(( $aa+$bb ))
[root@localhost ~]# gg=$[ $aa+$bb ]
3、Shell常用运算符
优先级 | 运算符 | 说明 |
---|---|---|
13 | -,+ | 单目负、单目正 |
12 | !,~ | 逻辑非、按位取反或补码 |
11 | *,/ ,% | 乘、除、取模 |
10 | +,- | 加、减 |
9 | <<, >> | 按位左移、按位右移 |
8 | <=,> =,<, > | 小于或等于、大于或等于、小于、大于 |
7 | =,!= | 等于、不等于 |
6 | & | 按位与 |
5 | ^ | 按位异或 |
4 | | | 按位或 |
3 | && | 逻辑与 |
2 | || | 逻辑或 |
1 | =,十=,一—,*=,/=,%=,&=,^=,l=,<<=,>>= | 赋值运算且赋值 |
4、变量的测试与内容置换(知道有这个东西,记一个就行,用的时候使用一下就好)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vrOC2uxA-1670680591840)(png/1644397169576.png)]
3、环境变量配置文件
source 配置文件或者 . 配置文件
环境变量配置文件
- 、登录时生效的环境变量配置文件
Linux登录时主要生效的环境变量配置文件有以下:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
4、变量的测试与内容置换(知道有这个东西,记一个就行,用的时候使用一下就好)
3、环境变量配置文件
source 配置文件或者 . 配置文件
环境变量配置文件
- 、登录时生效的环境变量配置文件
Linux登录时主要生效的环境变量配置文件有以下:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230