今天学习shell第一课,来自 chinaunix shell 论坛的网中人。
笔记:
shell是计算机内核和我们交换的界面Interface,也可以理解成 kernel+shell+..=operating system.
每次我们log in,都是取得一个互动模式的shell,也称login shell或primary shell。从 process的角度说我们在shell下运行的命令就是一个shell的字shell (sub shell)。
不同的操作系统有不同的kernal,同一个kernal可以有几种不同的shell,比如linux系统的shell可以有:
/etc/shells 2大主流
sh burne shell (sh) ,burne again shell (bash)
csh c shell (csh), tc shell ,korn shell (ksh)
bash 是主流的shell,自由软件,功能强大,有gun project 最成功的产品。
IBM AIX的默认shell是 ksh
shell第二课
笔记:
本讲主要讲: shell prompt (PS1)shell提示符 和 Carriage Return (CR)回车
我们把登陆后不断闪烁的光标称为 cursor,提示符 prompt ,$: 普通用户, #:root管理员
注意cursor告诉我们光标在那里,prompt提示我们可以数据字符了,每次输入一个字符cursor后移动一个位置直到读进CR (Carriage Return,由Enter产生)字符为止。CR的意思就是告诉shell可以执行我的命令了。严格来说,所谓的命令行就是在 shell prompt和CR字符之间输入的文字。注意:CR和回车有区别。
格式: command-name options argument
从技术细节上讲,shell会依据IFS Internal Field separator 将command line输入的文件给拆分为字段word然后再针对特殊字符meta先做处理,最后在重组命令行command line。
IFS是shell与设置使用的分割符号,可以由一个及多个如下按键构成:
* 空白建 white space
* 表格键 Tab
* 回车键 Enter
系统可以接受的命令名称可以从如下途径获得:
* 明确路径所指定的外部命令
* 命令别名 alias
* 自定功能 function
* shell内奸的命令 bulit-in
* $ PATH下的外部命令
第三讲 本讲主要内容是 echo
command_name option argument
echo 将argument输出到标注输出,通常是monitor上输出。
**********************************************
$
$ echo
$
**********************************************
只是您只是会发现一个空白行,然后又回到了shell prompt上了,这是因为echo显示完argument后还会送出一个换行符号(new-line character),但是上面的command并没有任何argument,那么就只剩一个换行符号了
若你要取消这个换行符号可以输入
$ echo -n
$
这种情况下command line只有command_name(echo)及option (-n),并没有任何argument。
练习 echo first line , echo -n first line
**********************************************
$ echo hello
hello
$ echo -n hello world
hello world$ # 注意prompt符号并没有换行。
**********************************************
来看echo的其他option
\a:ALERT / BELL (從系統喇叭送出鈴聲)
\b:BACKSPACE ,也就是向左刪除鍵
\c:取消行末之換行符號
\E:ESCAPE,跳脫鍵
\f:FORMFEED,換頁字符
\n:NEWLINE,換行字符
\r:RETURN,回車鍵
\t:TAB,表格跳位鍵
\v:VERTICAL TAB,垂直表格跳位鍵
\n:ASCII 八進位編碼(以 x 開首為十六進位)
\\:反斜線本身
练习:
**********************************************
# echo "a\tb\tc\nd\te\tf"
a b c
d e f
#
**********************************************
这里用\t来区隔 abc中间加tab, 用\n将def换行
**********************************************
# echo "a\tb\tc\nd\te\bf\a"
a b c
d f
#
**********************************************
因为e后有输出键\b所以字母e没有了。
