看懂shell中的各种语句
shell文件的开头通常是 #!/bin/bash
1.-e filename 如果 filename存在,则为真
这是判断文件是否存在的,常用[! -e filename ]。
2.if then else 语句 相关判断可参考博客
if [! -e filename]; then
....
elif [...]; then
....
else
if [...]; then
....
fi
fi
3.mkdir -p
创建目录及子目录。
4.wget 远程文件 -O 指定文件路径
将下载的文件存放到指定的文件夹下,同时重命名下载的文件,利用-O
举例子:
wget ftp://name:password@ip:port/pathname -O yourpathname
4.tar -zxvf 可以参考博客
z为调用gzip,x为解压,v为显示详细信息,f指定解压路径 。
sudo tar -xzf ${toolchainName} --strip-components=3 -C ${toolchainPublicPath}
–strip-components = NUMBER
在提取时从文件名中删除NUMBER个前导组件
5.#可以做注释 ${变量} 可参考博客1 可以参考博客2
其中$0为shell文件名(第一个参数 类似main函数传参)
$1 为第二个参数
$2 为第三个参数
$@ 为所有参数
6.shell 如何写函数定义
function name()
{
...
...
}
7…/configure --frefix=
配置软件安装路径,详细可参考博客
make && make install 编译并安装
8.软链接 ln -sf a b
将b---->a
强行创建软链接,-s为创建软链接参数,-f强制创建
9.复制命令 for cmd in … 可以参考博客
for i in `pwd`;
do
echo $i is dir\! ;
done
10.chmod u+s 可以参考博客
u+s后其他用户都可享有文件属主的权限
11.test命令 可以参考博客
可以用于检查某个条件是否成立,可以分为数值、字符串、文件、变量四个方面,其中文件的测试包括文件类型、文件权限的判断和两个文件之间的比较。
12.shell 的|| 和 && 可参考博客
cmd1 && cmd2 只有cmd1执行成功才执行cmd2
13.shell read可参考博客
从行中读取返回给变量
read -t 30 -p "请输入版本号:" version
意思是指定时间30内读取内容到version ,-p 指提示符
14.echo -e 表示忽略转义字符’\'
格式化输出:
echo -e "\033[;33;7m hello \033[0m"
以EOF未结束输出:
cat > file <<EOF
....
....
EOF
15.shell中 符号$各种用法及意义:可参考博客
16.sed -i 直接对文本字符进行替换:
第一种是只会对每一行以原字符串开头的第一个进行替换,加了g就对所有都替换
sed -i 's/原字符串/新字符串/' file
sed -i 's/原字符串/新字符串/g' file
删除包含某字符串那一行:
sed -i "/SYS_LIBCOMMLOG_MOD_EN_TR069/d" system_config_MTK7561.def
17.grep -E 对多个包含关键字的或操作: 可参考博客
18.如何打印当前执行脚本目录?(上级目录)
echo "$(cd "$(dirname "$0")/.."; pwd)"
echo "$(cd "$(dirname "$0")"; pwd)"
19.查看脚本运行过程 /bin/sh -x
20.字符串截取 $(line:1:8) 可以参考博客
$(line:1:8) #表示截取line变量中字符串第1到第8个字节,从第0字节开始
21. grep xxx | cut -d: -f2 字符串分割
grep xxx | cut -d: -f2 表示将grep的输出结果以":" 为分割符,第2个字段
22.grep xxx| awk -F “:” ‘{print $2}’ 字符串分割
grep xxx| awk -F ":" '{print $2}' 表示将grep的输出结果以":" 为分割符,第2个字段
23.根据字符串截取"="前字符
line="SYS_TIMR=45"
echo "${line%=*}"
24.grep用法 可参考博客
fgrep 是快速查找
[a-zA-Z] 等价于 [:[alpha]:]
[a-z] 等价于 [:[lower]:]
[A-Z] 等价于 [:[upper]:]
[0-9] 等价于 [:[digit]:]
grep -s 就不会出现no such file or directory
grep -q 判断存不存在不会输出打印,存在返回0
25.echo ${xx#* xxno}
假如xx = "123 xxno xiening xxx "
将会打印xiening xxx
但是没有匹配上将会打印 123 xxno xiening xxx
echo ${value#*=} 将value为=后的字符打印出来
echo ${value%%=*} 将value为=前的字符打印出来
26.函数参数赋值
export ${NO_EXPORT:+-n} "$1=$_tmp"
27.简单的条件判断语句:
28.查找一分钟之内被改过的文件:
find . -mmin 1
30. #去掉选项中的-O2选项
ifeq "${DISABLE_OPTIMIZE}" "1"
CFLAGS:=$(filter-out -O%,${CFLAGS} )
endif
31.查看应用程序依赖库
ldd
32.查看代码所在仓远程地址
git remote -v
33.算术运算