【转】shell总结
转自:乔部落格
Shell元字符
元字符 | 含义 |
---|---|
> |
将标准输出重定向到文件 |
>> |
将标准输出附加到文件 |
< |
从文件中获取标准输入 |
` | ` |
<<串 |
here文档:标准输入从here文档读入,直到出现串 |
* |
匹配文件名中的零个或多个字符 |
? |
匹配文件名中的任何单个字符 |
[ccc] |
匹配文件名中 ccc范围内的任何字符 |
; |
命令结束符,如p1;p2表示先执行p1,再执行p2 |
& |
与;类似,但不等p1结束 |
`…` | 运行…中的命令,输出结果代替`…` |
(…) |
在子shell中运行…中的命令 |
{…} |
在当前shell中运行…中的命令 |
$1, $2等 |
$0…$9 可代表shell文件的参数 |
$变量 |
Shell变量的值 |
${变量} |
Shell变量的值,为避免在文本联接时混淆 |
\ |
转义字符,\c 将c字符作为字符 |
'…' |
单引号内表示文字 |
"…" |
在 … 中的 $ , `…`,和 \ 得到解释后,将 … 作为文本文字 |
# |
注释 |
变量=值 |
为变量赋值 |
p1&&p2 |
运行p1;若成功,再运行p2 |
`p1 |
Shell内部变量
变量 | 含义 |
---|---|
$# |
参数个数 |
$* |
Shell的所有参数 |
$@ (注) |
类似 $* |
$- |
Shell的选项 |
$? |
上次执行命令的返回值 |
$$ |
Shell的pid |
$! |
用 & 启动的最后一个命令的pid |
$HOME |
Cd命令的默认参数 |
$IFS |
参数分隔符 |
$PATH |
搜索命令的目录表 |
注:( $*
与 $@
区别)
$*
和$@
扩展为参数,并被重复扫描;参数的空格将字符串分成多个参数。$*
表示shell文件的所有参数及其空格连在一起作为单个词处理。$@
与shell文件接收的参数等价,参数中的空格被忽略,其结果是等同于原来参数的一个单词列表。
Shell变量的赋值
变量 | 赋值 |
---|---|
$var |
var的值;若var无定义则无值 |
${var} |
同上;用于变量后跟着字母数字串的情况 |
${var-thing} |
var有定义时,取值var;否则取值thing,而 $var 的值不变 |
${var=thing} |
var有定义时,取值var;否则取值thing,$var 的值设为thing |
${var?message} |
var有定义时,取值var;否则打印message |
${var+thing} |
var有定义时,取值thing;否则无值 |
>a
或touch a创建文件。
Cat > a
从标准输入获取字符,写入文件a中,按 ctrl-d
结束。
(以上参考《UNIX编程环境》)
为了装软件方便,我写了一个简单的小脚本(我使用yum作为软件包管理者)。
脚本如下:
1#!/bin/bash
2#program name: pack.sh
3if [ $# -eq 0 ]
4then
5echo “try pach.sh -h for help”
6exit 1
7fi
8case $1 in
9“-h”)echo “usage: pack.sh -[suihc] ‘pack’”
10echo “-s for search, -u for update, -i for install, -c for check updates”
11;;
12“-s”)echo “This may take a few minutes, please wait…”
13sudo yum list | grep -i $2
14;;
15“-c”)echo “This may take a few minutes, please wait…”
16if [ -z $2 ]
17then
18sudo yum check-update
19else
20sudo yum check-update | grep -i $2
21fi
22;;
23“-u”)sudo yum -y update $2
24;;
25“-i”)sudo yum -y install $2
26;;
27*)echo “NO such options!try pach.sh -h”
28exit 2
29;;
30esac
- 文章ID:1256
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/via-shell-summary/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。