1 shell 基础
Posted baci
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1 shell 基础相关的知识,希望对你有一定的参考价值。
一、shell:命令解释器
shell编程可以不考虑效率,只要简单可以实现功能就可以,这也是与其他编程语言最大区别之一
查看Linux支持的shell cat /etc/shell
可以切换到其他支持的shell exit退出
二、shell脚本
1、echo命令
-e支持反斜线控制的字符转换
\\a 输出警告音 在/etc/inputrc中可以取消系统警告音
\\t 输出制表符tab
\\n 换行符
\\r 回车
-n取消输出后的换行符
echo支持输出颜色 echo -e ‘\\e[1;31m abc \\e[0m‘
2、执行脚本:
1)可以赋予执行权限,通过绝对路径的方式执行
2)通过 bash命令执行,可以不赋予执行权限
*bash -x 可以查看脚本执行过程可以用来排错
三、bash的基本功能
1、历史命令history
history -w 把缓存中的历史命令写入历史命令保存文件家目录下.bash_history中
历史命令条数在/etc/profile中 HISTSIZE=1000
!$上一条命令的参数
2、补全 tab
3、别名 alias 家目录下的.bashrc中 . .bashrc
4、快捷键
5、输入输出重定向
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误
输出重定向
> >> &> 命令 >> ok 2>>erro #把正确输出和错误输出分别保存在两个文件中
输入重定向
< << EOF(可以用来输出多行)
6、多命令顺序执行
命令1;命令2 命令之间没有任何联系,前一条命令报错后面也会执行
命令1&&命令2 命令1执行成功才会执行命令2(用$?判断)
命令1||命令2 命令1错误才会执行命令2
命令1&&命令2||命令3 命令1成功执行命令2,命令1错误执行命令3
7、管道符
grep 参数
-A数字 列出符合条件的行并列出后续的n行
-B数字 列出符合条件的行并列出前面的n行
-c统计次数
-i忽略大小写
-n输出行号
-v反向查找
|
-regex
8、通配符
用来匹配文件名,完全匹配
9、bash中其他的特殊符号
‘ ‘ 单引号在单引号中所有的特殊符号都没有特殊含义
" " 双引号在特殊符号都没有特殊含义 除了$ ` \\
` ` $( ) 把命令的值赋给变量
() 在()中执行的命令需要打开一个子shell执行
在当前shell执行 #左括号必须要有空格 最后加;
[] 变量测试
$ 调用变量
四、bash的变量和运算符
1、什么是变量
在bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为字符型
变量用=赋值,且两边不能有空格
变量可以叠加 a=123 a="$a"abc echo $a 123abc
环境变量建议大写
2、变量的分类
用户自定义变量 名称:自定义 作用:自定义 内容:自定义
环境变量
用户自定义变量 名称:自定义 作用:自定义 内容:自定义
系统自带环境变量 名称:确定 作用:确定 内容:自定义
位置参数变量
名称:确定 作用:确定 内容:自定义
预定义变量
名称:确定 作用:确定 内容:自定义
3、用户自定义变量
增
删 unset 变量名
改
查
set 查询环境变量
-u 如果设定此选项,调用未声明的变量时会报错(默认无任何提示)
4、环境变量
1)用户自定义环境变量 可以在子shell中调用,用户自定义变量不可以
设置自定义环境变量 export A=10
删除 unset A
2)系统自带环境变量
1、PATH 系统查找命令的路径 用:分隔
把/root/sh添加到PATH变量中: PATH="$PATH":/root/sh (变量叠加)
2、ps1变量 命令提示符
写在环境变量配置文件/etc/bashrc中
3、LANG语系变量
Linux中文支持的条件
1)安装了中文字体和编码
2)操作终端必须支持中文编码
查询Linux支持的语系 locale -a
默认语系配置文件/etc/sysconfig/i18n
5、位置参数变量
$n $0命令本身 $1-$9代表第1到第9个参数10以上要用大括号$10
$* 保留传入的所有参数(整体) 字符串
$@ 保留传入的所有参数(个体) 列表
$# 传入参数的个数
6、预定义变量
$$ 当前进程pid号
$? 保存上一条命令执行状态
$! 后台运行的最后一个进程的进程号
7、接受键盘输入read
-p 指定提示
-t 超时时间
-s 隐藏输入的字符
-n 指定输入的字符数
例:read -t 30 -p "please input a number:" number
8、shell的运算符
使用declare声明变量类型
-: 给变量设定类型属性
+: 取消变量的类型属性
-a: 将变量声明为数组型 数组 a[0]=1 调用 echo $a[*]
-i: 将变量声明为整数型(integer)
-r: 讲变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,
也不能删除变量,甚至不能通过+r 取消只读属性
-x: 将变量声明为环境变量
-p: 显示指定变量的被声明的类型
使用expr和let数组运算工具
c=$(expr $a + $b) +前后必须有空格
let c=$a+$b
c=(($a+$b))
9、变量的测试与内容置换
常用测试一个变量y有没有被赋值(通过x的值判断y是否存在)
变量 y 没有设置 变量 y 为空值 变量 y 设置值
x=$y-新值 x=新值 x为空 x=$y #新值可为任意
x=$y:?新值 新值输出到标准错误输出 新值输出到标准错误输出 x=$y
五、环境变量配置文件
1、加载配置文件的命令
source bash 绝对路径
2、环境变量配置文件
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
用户登录调用环境变量配置文件过程
注销时生效的环境变量配置文件 ~/.bash_logout
~/bash_history 历史命令保存文件
3、shell登录信息
/etc/issue
登录tty1-tty6时的终端生效,欢迎信息 (远程登录无法看到)
/etc/issue.net
在远处登录时要看到/etc/issue.net的欢迎信息,要修改ssh的配置文件/etc/ssh/sshd_config中加入 Banner /etc/issue.net
/etc/motd 在用户输入用户名和密码正确登录后显示的欢迎信息
4、快捷键定义
查询所有快捷键 stty -a
定义快捷键
stty 关键字 快捷键
以上是关于1 shell 基础的主要内容,如果未能解决你的问题,请参考以下文章