本人shell学习中的新知识点、遗忘知识点提要

参考书目:《Shell脚本学习指南》,Arnold Robbins & Nelson H.F. Beebe 著  O'Reilly Taiwan公司 编译, 机械工业出版社

 

P24:

      默认情况下,当shell执行一个具有“可执行属性”程序的时候, shell会要求 kernel 开启新进程来执行这个程序,不过kernel只能执行“编译型可执行文件”,对于脚本文件则无法执行,于是kernel将会回应shell“这不是一个可执行文件”,于是此时shell则会默认地将这个文件当做一个对应版本的shell脚本文件,并启动一个新的shell副本对其进行解释执行 —— 所以即使一个脚本文件中没有我们已经习以为常的位于首行的 #! …… 标识,shell 也可以进行解释执行,只不过这样不符合规范,并且无法使用其他的脚本语言解释器。

      在 #! 指定解释器程序的同时,也可以加上需要传递给解释器的参数,例如 #! /bin/sh -f, 或者 #! /bin/sh -,后者表示确定没有shell选项参数,主要用来确保安全。

 

 

P27:

      同一命令行上,分号 ; 用于隔离不同的命令,shell会依次执行这些命令。分号前后是否有空格并不敏感

 

 

P28:

      shell 可执行的命令包括三类:内建(built-in)命令, shell函数和外部命令。对脚本程序的执行就是所谓的外部命令,对此shell是通过创新新的一个shell进程副本来执行的,如果没有 & 后台执行标志,父shell将等待该命令执行完成,即命令执行完成后控制权将交回到父shell。

 

P29:

      echo 命令默认地将输出一个换行符,当 echo -n …… 时会省略换行符, 而在ubuntu下 -e 参数才会使能echo内容中的转义字符

 

 

P31:

      shell中的 printf 命令用法完全类似于标准C库函数 printf,即 printf "format-string" [arguments ...]

 

 

P32:

      对于每个程序都有 标准输入、标准输出、标准错误输出 的概念,而应用程序是不用去关心这三者究竟对应的物理设备是什么,那是OS的事情。类UNIX环境下,默认的stdin, stdout, stderr 都对应的是终端设备。

     在shell命令行直接使用 cat 命令即可验证 stdin、stdout和stderr 的情况

 

 

P33:

      常用的 cat > file 将方便地通过标准输出重定向,实现由终端输入得到 file 文本文件。当输入完成时,通过Ctrl-D 表征输入结束。

 

P34:

      tr 命令实现字符快速替换、删除和重复字符压缩, 常用选项 -d, -s, -c 等

 

P35~36:

      /dev/null 常用于输出内容的屏蔽,对于只需要得到一个命令操作的退出状态而不需要打印出内容的情况,很有用;

      stty -echo 关闭终端输入字符的显示, stty echo 反之;

 

P38:

      set -x 可以在当前 shell 环境下开启命令执行跟踪功能, set +x 关闭跟踪功能;

      通过 sh -x file 也可以实现在新创建的shell进程(即执行file的shell环境下)开启执行跟踪功能

 

P40:

      使用 locale 命令可显示出当前的语言文化环境变量的值,包括 LANG、LC_CTYPE,LC_TIME 等,使用 locale -ck LC_** 可以查看当前语言文化环境下的变量细节。

 

 

P44:

      在POSIX系统中,有两种正则表达式风格 BRE和ERE,对于现在新版的 grep 工具而言,这两种风格它都可以适应

你可能感兴趣的:(shell,正则表达式,File,脚本,语言,终端)