嵌入式成长轨迹4【嵌入式环境及基础】【嵌入式Linux软件开发入门】【Shell简介】

时间:2021-08-17 19:57:42

 

【Shell程序命令】
一、概念
Shell是核心程序(kernel)之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言
Shell的类型ash、bash、ksh、csh、tcsh
-/etc/shells  显示当前系统所拥有的shell
-echo $SHELL  显示当前系统所装载的shell
-/bin/csh     转换系统当前为csh
-exit       退出当前Shell
程序在Shell中运行,Shell中也可运行子Shell
linux一般默认使用bash,可以使用箭头来切换历史命令、以命令开头查找命令、自动帮助

二、存取权限与安全
之前已经学习过chmod这个命令,不再对它详叙
另外,权限除了rwt之外,还有s(s用户执行此程序时被赋予root的身份)、t(只有拥有者可以删除)

chown (-R递归) owner myfile 可以改变文件拥有者
chown group.owner myfile 可以改变文件拥有者,所属用户组
chgrp + group 可以改变文件所属用户组

umask xxx 可以改变默认创建权限为xxx
在/etc/profiel(SHOME/.profile/SHOME/.bash_profile)中也可直接进行修改
022模式 文件权限644 文件夹权限755
0代表前三位,2代表中间三位,最后一个代表最后三位
umask 文件       目录
          7-umask-1 7-umask
0        6      7
1        5      6
2        4      5
3      3      4
4        2      3
5        1      2
6        0      1
7        0               0

三、符号链接
硬链接、软链接之前已经提及过,不再详叙
ln [-s] source_path target_path
加上-s是软链接

【Shell脚本】
一、使用Shell脚本的原因
1、功能强大
2、节约时间

二、shell脚本基本元素
#!/bin/bash -第一行
#           -表示注释
变量
流程控制结构

三、脚本运行方式
要拥有执行权限才能运行
chmod u+x helloworld.sh
./helloworld.sh

【Shell特性】
一、别名
可以实现命令的等效实现

# alias ll=`ls -alh`
将ll变为ls -alh这个命令

可以在文件中修改
#cat /$HOME/.bashrc

二、命令替换
ls `cat myfile` -al
执行cat myfile 将结果传递给ls -al

三、后台处理
一个终端可以同时运行多个程序
nohup 命令 &
从jobs -l可以看到正在运行的后台程序

四、变量
变量用来存储信息

outputchar=“helloworld”

五、命令
把一个命令的输出连接为另一个命令的输入
如 ls|sort

六、重定向
与管道相关,可以改变程序运行的输入来源和输出地点

sort  <myfile.txt
sort  <myfile.txt>myfile_sort.txt

七、模式匹配
显示以txt为扩展名的文件或显示以a开头的文件,这种能力就称为模式匹配
ls *.txt
后面会详细说明——正则表达式

八、特殊字符
双引号:用来使Shell无法认出空格、制表符和其他大多数特殊字符,这样“hi, boy。”表示一个值

单引号:用来使Shell无法认出所有特殊字符

反引号:用来替换命令

反斜杠:用来使Shell无法认出其后的特殊字符,使之失去特殊含义;进行转义

[root@com /root]#touch a\ aa
[root@com /root]#ls a\ aa
a aa

分号:可执行多个命令

&:命令后台执行

括号:创建成组的命令

大括号:创建命令块

竖杆:管道表示符

<>&:表示重定向

*?[]!:表示模式匹配

$:变量名的开头

#:表示注释(第一行除外)

空格、制表符、换行符:当做空白