您的位置:首页 > 运维架构 > Shell

Shell 十三问整理

2016-04-10 13:38 393 查看
在chinaunix看了网中人的shell 十三问,做了一些整理或者复制

原文地址:http://bbs.chinaunix.net/thread-218853-1-1.html

基础名词

1. 命令行(Command Line)

组成:Literal + Meta

Literal

就是一些字母单词,组成命令的

Meta

特殊保留字符,对于shell有特殊意义

重点

meta有分command meta和shell meta

举例

awk {print $0} 1.txt 这里{}会被解释成shell meta。

awk ‘{print $0}’ 1.txt 中的{}被解释成command meta

常见Meta

=: 设定变量。

$: 作变量或运算替换(请不要与 shell prompt 搞混了)。

>: 重导向 stdout。

<: 重导向 stdin。

|: 命令管线。

&: 重导向 file descriptor ,或将命令置于背境执行。

( ): 将其内的命令置于 nested subshell 执行,或用于运算或命令替换。

{ }: 将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。

; : 在前一个命令结束时,而忽略其返回值,继续执行下一个命令。

&& : 在前一个命令结束时,若返回值为 true,继续执行下一个命令。

|| : 在前一个命令结束时,若返回值为 false,继续执行下一个命令。

!: 执行 history 列表中的命令

2. IFS(Internal Field Seperator)

产生:空格键(Space),表格键(Tab),回车键(Enter)

功能:拆解command line的每个单词

3. CR(Carriage Return)

产生:回车键(Enter)

功能:告诉shell可以执行命令行了

单引号和双引号的区别

单引号(hard quote)

所有meta特殊字符会被关闭特性

双引号(soft quote)

大部分meta特殊字符会被关闭特性,但有些被保留,如$

反斜线(escape)

只有紧接在反斜线\后的meta特性被关闭

总结

Shell通过IFS对命令行中的字符串拆分执行

IFS和CR都算是meta吧。。。。猜测

Shell执行命令,通过IFS进行分割,是命令就执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: