学习嵌入式Linux系统开发基础 第四课(Shell的使用)

一、Shell
1、shell是一个系统程序,它位于前台提供Linux系统与用户交互操作的界面。目前比较流行的Shell包括Bourne Shell(bsh)、C Shell(csh)、Korn Shell(ksh)、Bourn Shell(bash)。
2、bash的主要功能:(1)作业控制(2)别名功能(3)命令历史(4)命令行编辑功能(5)功能键自定义功能(6)提供丰富的变量类型和命令与控制结构。
3、Shell变量:
本地变量:由用户自己定义。
设置变量:变量名=变量值。如果想不想改变该变量的值,可用readonly 设置 如 readonly 变量名 
应用变量:在应用变量值时,在变量名前加$ ,可用echo 输出变量
清除变量:用unset命令清楚变量。如 unset 变量名
查看所有变量: 使用 set|more(或者less)命令分页查看所有变量,(也可用grep查看指定的变量)
环境变量:用户的工作环境
设置变量:环境变量等同于本地变量,但必须使用export 命令导出。
应用变量:在环境变量前加符号$就能获得该变量的值。
常用的环境变量:

HOME:用于保存注册目录的完全路径名。
PATH:用于保存用冒号分隔的目录路径名。 PATH=$PATH:绝对路径
TERM: 终端的类型。
UID: 当前用户的标示符,取值是由数字构成的字符串。
PWD: 当前工作目录的绝对路径名,
PS1: 主提示符,在特权用户下,缺省的主提示符是#;在普通用户下,缺省的主提示符是$。
PS2:  当Shell判断出用户输入的命令还没有结束时,显示这个辅助提示符,缺省提示符是>。

显示所有的环境变量:export 不带任何的参数
清除环境变量:unset 变量名
环境参数配置文件:  /etc/bashrc 
/etc/profile 
~/.bash_profile  设置为每次登录时执行
~/.bashrc 被设置为在每次打开新的终端


位置参数变量:通过位置参数变量来获得用户在命令行上附加的参数。$1 后面的第一个参数 $n 后面第n个参数
$0 标识命令程序的名字。不是位置参数
预定义变量:
$# 表示位置参数的数量 
$* 表示所有位置参数的内容 
$? 表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在linux中,命令退出状态为0表示命令正确执行,任何非0值表示命令执行错误 
$$ 表示当前进程的进程号 
$! 表示后台运行的最后一个进程号 
$0 表示当前执行的进程名 

二、bash常用功能
1、命令行编辑功能
左右方向键 使用左右方向键可以使光标在当前命令行中的已有字符间进行任意的移动 
退格键 删除命令行中光标左边的字符
Del 删除当前光标处的字符 
Home 将光标移动到命令行的行首
End 将光标移动到命令行的行尾
Ctrl + u  删除当前光标到行首的内容 
Ctrl + k  删除当前光标到行尾的内容 
Ctrl + a  将光标移动到命令行的行首
Ctrl + e  将光标移动到命令行的行尾
2、历史命令
使用上下方向键浏览已输入命令(历史命令)
history  历史命令查看  history |more(less)分页浏览
~/.bash_history用户命令历史保存文件 
history -c 清楚所有历史记录
!! 重复执行前一个命令
!n 执行第n条历史命令
!!:P  显示前一个命令内容
Shift + Page Up
Shift + Page Down
3、 命令行自动展开
命令补全功能 使用Tab键可在命令查找路径中查找匹配的命令,并进行命令拼写的补全
文件补全功能 使用Tab键可对文件和目录名进行补全
4、命令别名  
命令别名的显示 :  $ alias
命令别名的定义 :  $ alias grep='grep -i'
命令别名的取消 :  $ alias grep
$ unalias -a
系统别名定义文件:  ubuntu系统中为用户预定义的命令别名保存在“/etc/profile.d/”目录的配置文件中
5、通配符:
* : 可以用来代替任意多个相同或不同的字符系列
?: 可以用来代替任意一个字符
三、管道与重定向
1、
输入输出文件  文件编号 默认设备
标准输入(stdin)  0 键盘
标准输出(stdout)  1 显示器
标准错误输出(stderr) 2显示器


类别 操作符说明
输入重定向  <输入重定向是将命令中接收输入的途径由默认的键盘更改(重定向)为指定的文件 
输出重定向  >将命令的执行结果重定向输出到指定的文件中,命令进行输出重定向后执行结果将不显示在屏幕上 
>> 将命令执行的结果重定向并追加到指定文件的末尾保存 
错误重定向 2>清空指定文件的内容,并保存标准错误输出的内容到指定文件中
2>> 向指定文件中追加命令的错误输出,而不覆盖文件中的原有内容 
输出与错误组合重定向 &>  标准输出与错误输出的内容全部重定向到指定文件


输入重定向
#wc
#wc /etc/passwd
将标准输出重定向到文件
$ ls /etc/ > etcdir
将标准输出重定向追加到文件
$ ls /etc/sysconfig/ >> etcdir 
将错误输出重定向到文件
$ nocmd 2> errfile
将标准输出和错误输出重定向到文件
$ ls afile bfile &> errfile
2、管道
管道操作符
|
“|”符用于连接左右两个命令,将“|”左边的命令执行结果(输出)作为“|”右边命令的输入 
cmd1 | cmd2 
在同一条命令中可以使用多个“|”符连接多条命令 
cmd1 | cmd2 | ... | cmdn 
四、脚本
1、脚本的概念
Shell脚本程序是Shell命令语句的集合,用于实现特定的功能;
Shell脚本程序保存在文本文件中,可以使用文本处理程序进行阅读和编辑;
Shell脚本程序是由Shell环境解释执行的,不需要在执行前进行编译;
执行Shell程序时,Shell脚本文件需要具有可执行(x)的属性
2、脚本的基本编程
(1)使用文本编辑器(vi)建立Shell脚本文件 
(2)脚本中应包括的内容 
脚本运行环境设置 #!/bin/bash 
注释行以#开始 # Clean command history,清除用户命令历史
脚本语句 history -c
设置脚本文件为可执行 
3、运行脚本
使用Shell命令程序执行脚本程序
$ bash hello.sh 
使用“.”命令执行脚本程序
$ . hello.sh 
直接执行具有执行属性的脚本程序
$ ./hello.sh 
4、脚本的基本编程
test [ 条件表达式 ]


if [ 条件语句1 ];
then
命令
elif [ 条件语句2 ];
then
        命令
else
命令
fi

for 变量名 in  列表
do
命令
done


until [ 表达式 ]  <条件为假情况下进入循环>
do
命令
done


while [ 表达式 ] 当条件为真进入循环
do
命令
done



case  值 in
模式1)
命令1;;
模式2)
命令2;;
模式3)
命令3;;
esac


select  变量  in  列表

do
循环内容;
done


函数名( )
{
命令
}


函数调用直接使用名即可。

运算符
+
-
*
/
% 求余
< 小于(1 代表真,0 代表假)
<= 小于等于(1 代表真,0 代表假)
> 大于(1 代表真,0 代表假)
>= 大于等于(1 代表真,0 代表假)
<< 按位向左移位:将给定的整数或第一个表达式向左移动第二个表达式表示的位数
>> 按位向右移位:将给定的整数或第一个表达式向右移动第二个表达式表示的位数
关于文件与目录的逻辑关系
-f 检测是否是常规文件,则为真
-d 如果目录存在则为真
-b 是否为一个『 block 档案』
-c 是否为一个『 character 档案』
-S 是否为一个『 socket 标签档案』
-L 是否为一个『 symbolic link 的文件』符号链接文件
-e 『某个东西』是否存在
关于程序的逻辑卷标
-G 是否由 GID 所执行的程序所拥有
-O 是否由 UID 所执行的程序所拥有
-p 是否为程序间传送信息的 name pipe 或是 FIFO
关于档案的属性侦测
-r 是否为可读的属性
-w 是否为可以写入的属性
-x 是否为可执行的属性
-s 是否为『非空白档案』
-u 是否具有『 SUID 』的属性
-g 是否具有『 SGID 』的属性
-k 是否具有『 sticky bit 』的属性
两个档案之间的判断与比较 ;例如[ test file1 -nt file2 ]
-nt 第一个文件比第二个文件新,则为真
-ot 第一个文件比第二个文件旧
-ef 第一个文件与第二个文件为同一个文件( link 之类的文件)
赋值运算符
=、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=
关系运算符

= 等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串

!= 不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串

< 小于 应用于:整型比较 在[] 中,不能使用 表示字符串

> 大于 应用于:整型比较 在[] 中,不能使用 表示字符串

-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式
-z 空字符串
-n 非空字符串

表达式替换
$[ ] 和 $(())
两种格式功能一样,所有的 shell 的求值都是用整数完成
$[ ] 可以接受不同基数的数字
按位运算符
~, <<, >>, &, |, ^
$[]表示形式告诉 shell 对方括号中的表达式求值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值