Shell 十三问整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fangmenghao/article/details/51112521

在chinaunix看了网中人的shell 十三问,做了一些整理或者复制
原文地址:http://bbs.chinaunix.net/thread-218853-1-1.html

基础名词

1. 命令行(Command Line)

  1. 组成:Literal + Meta

Literal

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

Meta

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

重点

  1. meta有分command meta和shell meta

举例

  1. 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)

  1. 产生:空格键(Space),表格键(Tab),回车键(Enter)
  2. 功能:拆解command line的每个单词

3. CR(Carriage Return)

  1. 产生:回车键(Enter)
  2. 功能:告诉shell可以执行命令行了

单引号和双引号的区别

单引号(hard quote)

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

双引号(soft quote)

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

反斜线(escape)

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

总结

  1. Shell通过IFS对命令行中的字符串拆分执行
  2. IFS和CR都算是meta吧。。。。猜测
  3. Shell执行命令,通过IFS进行分割,是命令就执行

猜你喜欢

转载自blog.csdn.net/fangmenghao/article/details/51112521