shell 使用总结-快速入门(一)

hello world!

#!bin/Bash #标称这是shell脚本
echo 'hello world!'

在这里插入图片描述

标准输入输出

1. 标准输入 文件描述符 0
2. 标准输出 文件描述符 1
3. 标准错误 文件描述符 2

输出重定向 -标准输出重定向

1. 命令 > file #覆盖的方式,命令正确结果输出到file,ls > abc
2. 命令 >> file #追加的方式,命令正确结果输出到file,ls > abc

输出重定向 -标准错误输出重定向

1. 错误命令 2> file #覆盖的方式,命令错误结果输出到file,ls > abc
2. 错误命令 2>> file #追加的方式,命令错误结果输出到file,ls > abc

输出重定向 -全部输出重定向

1. 命令 > file 2>&1 #覆盖的方式,把正确和错误的输出到file
2. 命令 >> file 2>&1 #追加的方式,把正确和错误的输出到file
3. 命令 &> file #覆盖的方式,把正确和错误的输出到file
4. 命令 &>> file #追加的方式,把正确和错误的输出到file
5. 命令 >> file1 2>> file2 #正确的追加到file1,错误的追加到file2

输入重定向

命令 < 文件
wc < file.cfg #统计file.cfg内容 linux中用的很少,几乎不用,重点是输出重定向

多命令顺序执行

1. 命令1;命令2;#多个命令顺序执行,彼此之间没有任何逻辑关联 
2. 命令1&&命令2;#逻辑与,1正确,2执行。1错误,2不执行
3. 命令1||命令2;#逻辑或,1正确,2不执行。1错误,2执行

管道符

1. 命令1 | 命令2 #命令1的输出作为命令2的操作对象,命令1必须有正确输出对象
netstat -an | grep ESTABLELISHED #netstat -an 输出作为grep输入

通配符

1. ?   #匹配任意一个字符 
2. *   #匹配0个或任意多个任意字符,可以匹配任何内容
3. []  #匹配括号中任意一个字符,[abc]表示匹配a或者b或者c
4. [-] #匹配括号中任意一个字符,-表示一个范围,[a-z]表示匹配任意一个小写字母
5. [^] #逻辑非,不匹配货号内的任意字符,[^0-9]表示不匹配数字
6. ''  #单引号。直接输出单引号里面内容
echo 'name'
7. ""  #双引号。"$","`","\"会有特殊含义
8. ``  #反引号(Esc上键),会调用其中的系统命令,即引用系统命令
echo `date`
9. $() #引用系统命令,同``
echo $(date)
10. #  #shell注释
11. $  #调用变量的值
12. \  #转义符

变量分类

1. 用户自定义变量:只在当前shell中生效,类似局部变量
2. 环境变量:保存和系统操作环境相关的数组,在所有shell中生效,类似全局变量,一般大写
3. 位置参数变量:向脚本中传递参数或者数据,变量名不能自定义,作用是固定的
4. 预定义变量:bash中已经定义好的变量,变量名不能自定义,作用也是固定的

用户自定义变量

1. 由字母数字下划线组成,但是不能以数字开头
name = $(date) #通过调用系统命令给变量name赋值
echo $name #调用name变量,在程序中可以通过$name调用name变量
2. bash中类型默认为字符串类型,如果要进行数值运算,要指定变量类型为数值型
3. 变量用等号连接,等号两侧不能有空格
4. 变量的值如果有空格,需要用双引号或者单引号引起来,如果包含!只能用单引号
5. 变量中的值可以"\"转义符
6. 如果需要增加变量的值,可以进行变量的叠加,格式为:"$变量名"或者${变量名}
aa=123
aa="$123"456
aa="${123}"456
7. set  #命令查看系统中所有变量,包括环境变量
8. unset variable #删除变量 

系统环境变量

1. 设置环境变量 export 变量名=变量值
2. 查询环境变量 env
3. 删除环境变量 unset variable
4. 显示PATH    echo $PATH
5. PATH变量叠加 PATH='$PATH':/root/sh
6. 系统环境变量一般都是大写

系统提示符变量 PSI

在这里插入图片描述

位置参数变量

1. $n #n为数字,$0表示命令本身,$1-$9表示第1-9个参数,超过十个需要用大括号${10}
#!/bin/bash
#计算输入的两个num的和
sum=$(($1+$2))  
echo "sum is : $sum"
2. $* #代表所有参数,输入所有参数当成整体
3. $@ #代表所有参数,输入所有参数区分对待
#mkdir tmp.sh
for i in "$*"
	do 
		echo $i
	done
for y in "$@"
	do 
		echo $y
	done
#./tmp.sh
1 2 3 4
1
2
3
4
4. $# #这个变量代表命令行中素有参数的个数

预定义变量

1. $? #判断上一条命令是否正确执行,值为0正确,非0错误
2. $$ #显示当前进程进程号PID
3. $! #后台运行的最后一个进程的进程号PID
#!bin/bash
echo "$$"
find /root -name hello.sh & #&表示放入后台运行
echo "$!"
4. 接收键盘输入:read[选项][变量名]
-p:提示信息
-t:秒数,一直等待输入,超时返回
-n:字符数
-s:隐藏输入数据,适用于机密数据输入
read -t 30 -p "please input your name " name
echo $name
read -t 20 -p "please input your age " age
echo $age
read -n 1 -t 30 -p "[M/F]: " sex
echo $sex

数值运算

1. decare [+/-][选项] 变量名
- :给变量设定类型属性
+ : 取消变量的类型属性
-i: 将变量声明为整数型(integer) 
-x:将变量声明为环境变量
-p:显示指定变量被声明的类型
aa=11
bb=12
declare -i cc=$aa+$bb
echo $cc #print 33
2. exprlet 数值运算工具
aa=11
bb=22
dd=$(expr $aa + $bb)#空格不能省略
echo $dd #print 33
3. $((运算式)) 或 $[运算式]
aa=11
bb=22
ff=$(($aa+$bb))
ee=$[$aa+$bb]
echo $ff #print 33
echo $ee #print 33

运算符

在这里插入图片描述

变量测试与内容替换

在这里插入图片描述

环境变量配置文件

1. source 配置文件
2. 默认环境变量:PATH、HISTSIZE、PSI、HOSTNAME
3. 位置
/etc/profile
/etc/profile.d/*.sh #/etc/profile.d下所有的.sh文件
/etc/bashrc  #etc下的对所有用户生效
~/.bash_profile #~目录下仅仅对当前用户生效
~/.bashrc

环境变量调用顺序

在这里插入图片描述

/etc/profile 作用

1. USER、LOGNAME、MAIL、PATH、HOSTNAME、HISTSIZE、umask
2. 调用/etc/profile.d/*.sh文件

~/.bash_profile 作用

1. 调用了~/.bashrc文件。
2. 在PATH变量后面加入了":$HOME/bin"

~/.bashrc 作用

1. 定义默认别名
2. 调用/etc/bashrc

/etc/bashrc 作用

1. PS1变量
2. umask
3. PATH变量
4. 调用/etc/profile.d/*.sh文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值