Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3236217
  • 博文数量: 346
  • 博客积分: 10189
  • 博客等级: 上将
  • 技术积分: 3125
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-05 19:46
文章分类

全部博文(346)

文章存档

2013年(35)

2011年(35)

2010年(76)

2009年(48)

2008年(152)

分类:

2008-09-03 16:09:04

第一章:准备工作
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也能将其去掉!
-----------------------------------------------------------------------------------












 
阅读(2080) | 评论(0) | 转发(0) |
0

上一篇:Unix环境变量设置

下一篇:细说cc 编译命令

给主人留下些什么吧!~~