嵌入式成长轨迹4【嵌入式环境及基础】【嵌入式Linux软件开发入门】【Shell简介】
【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
分号:可执行多个命令
&:命令后台执行
括号:创建成组的命令
大括号:创建命令块
竖杆:管道表示符
<>&:表示重定向
*?[]!:表示模式匹配
$:变量名的开头
#:表示注释(第一行除外)
空格、制表符、换行符:当做空白