第一章:准备工作
1.命令:
Shell提示符就是Unix命令。
如:$date $who
Unix允许在一行输入两个命令,以";"分开
第二章:简单命令
1.本月日历
$cal 显示本月日历
完整语法:cal [[month] year]
可以使用 cal 2008 | more暂停屏幕。
2.管道线
"|"(竖直线)符号称为管道线(pipeline),表示把一个程序的输出作为另一个程序的输入。
$x|y|z 程序x的输出流到过滤器y,y的输出又流向z
第三章:Unix文件系统
1.文件名
Unix文件名和目录名不能使用空格,可以使用. _ -等符号。
避免在Unix文件名里用* / ? " ' \ []和任何控制符。
文件和目录名对大小写敏感,如irs Irs 和IRS是不同的文件。
GAS/Receipts被解释为:目录Gas中的文件Receipts
2.树和层次式结构
Unix的文件名和目录名之间用"/"符号分割。DOS用"\"(反斜杠)分割。
3.路径
usr/stan/memo 表示usr和stan是目录,memo是文件
4.同一个文件有两个名字
ln命令可以把一个文件链接到另一个文件名
如 $ln stan joe joe和stan有了同样的i-节点;对于一个长的路径名可以链接到较短的“别名”上,从而减少按键次数
5.你在此
$pwd — “打印工作目录”,显示当前位置的绝对路径。
$cd .. 返回上层目录
$cd 返回主目录
$rmdir删除目录
$mkdir建立目录
第四章:创建自己的文件
1.输出重定向
">" "<"操作符
例如:$date >today.test
2.ls命令
ls全称是list。列出当前目录中的文件和子目录名。
3 通配符
* 和 ?
4.用man命令探查ls
5.cat命令
显示文件内容
可显示多个文件如:cat x y
$cat x y>z 是把x y文件内容重定向到z中。
6.用cat创建文件
$cat >poem.1
mary had a little lamb;
^d
Ctrl+d表示文件结束
Unix存储Enter键为ASCII换行符(值10)
7.lc命令
SCO UNIX 的标准命令,类似ls
8.用wc做词汇统计
$wc poem 统计出文件的行数,词汇数,和字符数。换行符也被统计。
使用ls | wc组合显示出第一个数为当前目录文件数。
9.输入重定向
pr 打印
10.用rm删除文件
$rm -i file
-i(inquire,询问)提问要求查看每个符合要求的文件是否删除。
-r(recursive,递归)删除目录及目录下所有目录和文件
可以使用$rm -ir组合
11.向文件追加输出(避免覆盖文件)
$date >>who.dat
第六章:个人化的UNIX环境
1.修改口令passwd命令
$passwd
2./etc/passwd文件
3.file命令
$file /etc/passwd
4.crypt命令
5.选择自己的Shell
/etc/passwd 列出的最后一个域为默认的shell
可以使用$ls /bin查看
6.Shell变量介绍
$PS1='Henry' 执行后提示符变为:Henry:
符号$为前缀$字符(不要与缺省提示符混淆)
echo命令
a)显示提示。echo 'Please enter Y or N'
b)重定向一个固定串到文件 $echo '***Hello Henry**' >henry
$cat henry
结果类似于$cat >>poem.1
7.用stty设置终端选项
8.浏览.profile文件
cat .profile
第七章:文件系统
1.主目录规则
使用mkdir,cp(拷贝),cd 等命令建立目录
2.权限
有18种不同等级权限
分3类:
a)文件与目录权限
b)读,写和执行权限
c)所有者,组和公共权限
- 无权限
r 读权限
w 写
x 执行
可以使用ls -l查看文件权限
$ ls -l copy2.poem
-rw-r--r-- 1 zhouhm other 26 Jun 5 10:16 copy2.poem
域1:
-表示普通文件,d表示目录
第一组rw-表示所有者权限
第二组r--表示同一组其他成员的权限
第三组r--表示其他用户的权限
域2:
1 表示文件只有一个连接,如为2则表示有两个不同的文件名
域3:
zhouhm 文件所有者是zhouhm
域4:other文件属于other组
域5:26表示文件有26个字节
域6:文件最后修改日期
3.缺省权限
文件缺省权限为:rw
目录缺省权限为: rwx
4.修改所有者和组
只有所有者和超级用户具有修改权限的能力。
$chown zhouhm copy2.poem 修改文件所有者为zhouhm
$chgrp system copy2.poem 修改组id
5.修改权限
绝对法:
$ chmod 0777 copy2.poem
第一个参数名为方式
权限 数字值
- 0
r 4
w 2
x 1
对于上述三个权限集,每增加一个权限增加相应数值即可。
rwx = 4 + 2 + 1 = 7
rwx = 4 + 2 + 1 = 7
rwx = 4 + 2 + 1 = 7
相关法或符号法:
语法:chmod [who] [+1-1=] [权限] 文件名
who可以是:A 所有用户;G 组;O 其他用户;U 所有者
+增加权限 -删除权限 =分配给定的权限而删除原来的权限
例如:
$ chmod a+r copy2.poem 对所有用户增加读权限
第十章:Vi 使用
1.基本概念
执行 vi 就可以进入 vi 的编辑环境。
Vi 有两种模式,输入模式以及指令模式。输入
模式即是用来输入文字资 料,而指令模式则是用来下达一些编排文件、存
档、以及离开 vi 等等的操作指令。当 执行 vi 後,会先进入指令模式,此
时输入的任何字元都视为指令。
2、进入与离开
要进入 vi 可以直接在系统提示字元下键入 vi <档案名称>,vi 可以自动
帮你载入 所要编辑的档案或是开启一个新档。进入 vi 後萤幕左方会出现
波浪符号,凡是列首有 该符号就代表此列目前是空的。要离开 vi 可以在
指令模式下键入 :q, :wq 指令则是 存档後再离开(注意冒号)。要切换到
指令模式下则是用 [ESC] 键,如果不晓得现在 是处於什麽模式, 可以多按
几次 [ESC],系统会发出哔哔声以确定进入指令模式。
3、Vi 输入模式
要如何输入资料呢?有好几个指令可以进入输入模式:
新增 (append)
a 从游标所在位置後面开始新增资料,游标後的资料随新增资料向後移动。
A 从游标所在列最後面的地方开始新增资料。
插入 (insert)
i 从游标所在位置前面开始插入资料,游标後的资料随新增资料向後移动。
I 从游标所在列的第一个非空白字元前面开始插入资料。
开始 (open)
o 在游标所在列下新增一列并进入输入模式。
O 在游标所在列上方新增一列并进入输入模式。
移动游标
由於许多编辑工作是藉由游标来定位,所以 vi 提供许多移动游标的方式,这
个我们列 几张简表来说明(这些当然是指令模式下的指令):
┌—————┬—————————————┬—————┐
│指令 │说明 │功能键 │
├—————┼—————————————┼—————┤
│0 │移动到游标所在列的最前面 │[Home] │
├—————┼—————————————┼—————┤
│$ │移动到游标所在列的最後面 │[End] │
├—————┼—————————————┼—————┤
│[CTRL][d] │向下半页 │ │
├—————┼—————————————┼—————┤
│[CTRL][f] │向下一页 │[PageDown]│
├—————┼—————————————┼—————┤
│[CTRL][u] │向上半页 │ │
├—————┼—————————————┼—————┤
│[CTRL][b] │向上一页 │[PageUp] │
└—————┴—————————————┴—————┘
┌——┬—————————————————┐
│指令│说明 │
├——┼—————————————————┤
│H │移动到视窗的第一列 │
├——┼—————————————————┤
│M │移动到视窗的中间列 │
├——┼—————————————————┤
│L │移动到视窗的最後列 │
├——┼—————————————————┤
│b │移动到下个字的第一个字母 │
├——┼—————————————————┤
│w │移动到上个字的第一个字母 │
├——┼—————————————————┤
│e │移动到下个字的最後一个字母 │
├——┼—————————————————┤
│^ │移动到游标所在列的第一个非空白字元│
└——┴—————————————————┘
┌——┬———————————————————┐
│指令│说明 │
├——┼———————————————————┤
│n- │减号移动到上一列的第一个非空白字元 │
│ │前面加上数字可以指定移动到以上 n 列 │
├——┼———————————————————┤
│n+ │加号移动到下一列的第一个非空白字元 │
│ │前面加上数字可以指定移动到以下 n 列 │
├——┼———————————————————┤
│nG │直接用数字 n 加上大写 G 移动到第 n 列 │
└——┴———————————————————┘
┌————┬———————————————┐
│指令 │说明 │
├————┼———————————————┤
│fx │往右移动到 x 字元上 │
│Fx │往左移动到 x 字元上 │
├————┼———————————————┤
│tx │往右移动到 x 字元前 │
│Tx │往左移动到 x 字元前 │
├————┼———————————————┤
│; │配合 f&t 使用,重复一次 │
│, │配合 f&t 使用,反方向重复一次 │
├————┼———————————————┤
│/string │往右移动到有 string 的地方 │
│?string │往左移动到有 string 的地方 │
├————┼———————————————┤
│n │配合 /&? 使用,重复一次 │
│N │配合 /&? 使用,反方向重复一次 │
└————┴———————————————┘
┌————┬———————————————————┬——————————┐
│指令 │说明 │备注 │
├————┼———————————————————┼——————————┤
│n( │左括号移动到句子的最前面 │句子是以 │
│ │前面加上数字可以指定往前移动 n 个句子 │! . ? 三种符号来界定│
│n) │右括号移动到下个句子的最前面 │ │
│ │前面加上数字可以指定往後移动 n 个句子 │ │
├————┼———————————————————┼——————————┤
│n{ │左括弧移动到段落的最前面 │段落是以 │
│ │前面加上数字可以指定往前移动 n 个段落 │段落间的空白列界定 │
│n} │右括弧移动到下个段落的最前面 │ │
│ │前面加上数字可以指定往後移动 n 个段落 │ │
└————┴———————————————————┴——————————┘
进阶编辑指令
这些编辑指令非常有弹性,基本上可以说是由指令与范围所构成。例如 dw 是
由删除指 令 d 与范围 w 所组成,代表删除一个字 d(elete) w(ord) 。
指令列表如下:
d 删除(delete)
y 复制(yank)
p 放置(put)
c 修改(change)
范围可以是下列几个:
e 游标所在位置到该字的最後一个字母
w 游标所在位置到下个字的第一个字母
b 游标所在位置到上个字的第一个字母
$ 游标所在位置到该列的最後一个字母
0 游标所在位置到该列的第一个字母
) 游标所在位置到下个句子的第一个字母
( 游标所在位置到该句子的第一个字母
} 游标所在位置到该段落的最後一个字母
{ 游标所在位置到该段落的第一个字母
说实在的,组合这些指令来编辑文件有一点点艺术气息。不管怎麽样,它们提
供更多编 辑文字的能力。值得注意的一点是删除与复制都会将指定范围的内容
放到暂存区里,然 後就可以用指令 p 贴到其它地方去,这是 vi 用来处理区段
拷贝与搬移的办法。
某些 vi 版本,例如 Linux 所用的 elvis 可以大幅简化这一坨指令。如果稍微观
察一 下这些编辑指令就会发现问题其实是定范围的方式有点杂,实际上只有四
个指令罢了。 指令 v 非常好用,只要按下 v 键,游标所在的位置就会反白,然
後就可以移动游标来
设定范围,接著再直接下指令进行编辑即可。
对於整列操作, vi 另外提供了更方便的编辑指令。前面曾经提到过删除整列文
字的指 令 dd 就是其中一个;cc 可以修改整列文字;而 yy 则是复制整列文字;
指令 D 则可
以删除游标到该列结束为止所有的文字。
8、档案指令
档案指令多以 : 开头,跟编辑指令有点区别。例如前面提到结束编辑的指令就
是 :q。
现在就简单说明一下作为本篇故事的结尾:
∶q 结束编辑(quit)
如果不想存档而要放弃编辑过的档案则用 :q! 强制离开。
∶w 存档(write)
其後可加所要存档的档名。
可以将档案指令合在一起,例如 :wq 即存档後离开。
zz 功能与 :wq 相同。
另外值得一提的是 vi 的部份存档功能。可以用 :n,mw filename 将第 n 列到第 m
列 的文字存放的所指定的 filename 里去哩。时代在变,世界在变, vi 也在变,
不过大 致上就这样。好了,但愿从此以後王子跟公主过著幸福快乐的生活。
------------------------------------------------------------------------
uname :显示系统信息。
语 法:uname [-amnrsv][--help][--version]
补充说明:uname可显示电脑以及操作系统的相关信息。
参 数:
-a或--all 显示全部的信息。
-m或--machine 显示电脑类型。
-n或-nodename 显示在网络上的主机名称。
-r或--release 显示操作系统的发行编号。
-s或--sysname 显示操作系统名称。
-v 显示操作系统的版本。
--help 显示帮助。
--version 显示版本信息。
dmesg
功能说明:显示开机信息。
语 法:dmesg [-cn][-s <缓冲区大小>]
补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。
参 数:
-c 显示信息后,清除ring buffer中的内容。
-s<缓冲区大小> 预设置为8196,刚好等于ring buffer的大小。
-n 设置记录信息的层级
--------------------------------------------------------------------------
第12章Shell探索
创建dw文件:
-------------------------------------------------------------------------
:
#@(#)--show date and users -- SKB 11/13/95
#
date
who -u
-------------------------------------------------------------------------
说明:
:不是必须的,表明冒号后的文本是Bourne Shell批处理文件的内容。
#为注释
@(#)字符串是what命令用来获得批处理文件标题的手段,@(#)称为what串
执行批处理文件:
$sh < dw
$sh dw可接收文件作为参数
$dw 修改属性后可直接执行
Shell批处理文件小结:
1.计划好命令系列,并在键盘上试用它。
2.为批处理文件挑选一个好的,不冲突的文件名
3.用喜欢的编辑工具生成批处理文件
4.从冒号开始文件,并增加帮助理解的注释
5.用chmod命令将文件设置为可执行文件
6.如果必要,可以把批处理文件用mv命令放入合适的目录中,或者修改搜索路径。
批处理文件的调试:
set -v打开冗余模式
set +v关闭冗余
$sh -v dw
dw类似普通命令,可以送到标准输出,甚至可生成后台进程:$dw >datewho.dat &
也可以过滤:
$dw | grep 'iwonka'
************************************
Shell 与子Shell 变量
如:TERM, PS1, PS2,HOME,PATH等都存在.profile文件中
不带参数的env命令会显示当前全部环境变量的设置值
是否设置变量:
在赋值语句定义变量时,不仅定义了变量而且也赋值了,如果需要删除变量时,有如下方法:
1,使用unset 如:unset SKBLIB
2,给变量赋空值,ANYVAR=空值
从子SHELL退出使用ctrl+D
----------------------------------------------------------------------------------------
第13章:开发工具
1.sort命令
sort命令是一个过滤器(filter),它对标准输入行排序,然后把排序结果送到标准输出上。缺省为升序方式
sort是通过全行比较进行排序,sort可以对一个或多个文件中的项排序
如果不提供输入文件或文件名为“-”减号,则把标准输入设备上读入的数据排序,用Ctrl+D结束输入。
-o选项可用于任何已命名的输出文件,如:$sort staff -o s_statff
-r反向排序
-d使用字典序排序
-i filename忽略非打印字符的选项
-n filenname允许按算术值排序
-u 删除重复的行
2.head命令
head命令帮助用户看到一个或多个文件的前几行。
head [-count] [file1 file2]
count为输出行数,count缺省值为10
3.tail命令
tail过滤命令输出参数文件最后的count行,块或字符。
语法:
tail +|-[count][lbc] [-f][filename]
l,b,c指定行,块或字符。缺省为1行。与head一样count缺省为10
tail filename显示最后10行
tail -c filename 显示最后10个字符
tail只接收一个文件名参数
------------------------------------------------------------------------------------
如果用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等类似的命令来显示路径信息的话,
我们看到的将会是一大堆用冒号连接在一起的路径, tr 命令可以把这些冒号转换为回车,这样,
这些路径就具有很好的可读性了:
echo $PATH | tr ":" "\n"
--------------------------------------------------------------------------------------
去掉^M
用户在ftp一个文本文件到系统后,vi 该文件的时候经常出现,文件的每行的末尾都会出现一个特殊字符^M,这是因为系统无法将微软的某些转义符无法翻译造成的,以下提供几个方法能很方便得去掉^M。
tr -d '^M' outputfile tr命令能将inputfile文件里面的^M去掉,outputfile为输出的文件名,需要注意的是,inputfile,outputfile不能使同一文件,否则会将inputfile的文件清空,另外像dos2unix也能将其去掉!
-----------------------------------------------------------------------------------
阅读(2111) | 评论(0) | 转发(0) |