红联Linux门户
Linux帮助

shell编程技巧点滴(基础篇)

发布时间:2006-10-19 01:04:38来源:红联作者:pinkfirex
1. 各类shell介绍,主要两个类:

①Bounce shell:bash sh,sh,ksh,zsh.

②C shell:csh,tcsh

2. 不同shell安装地点:

① Bounce shell → /bin/sh

② Korn shell → /bin/ksh或/usr/bin/ksh

③ Bounce Again shell → /bin/bash和/bin/sh

④ Z shell → /bin/zsh和/bin/sh

⑤ C shell → /bin/csh

⑥ TENEX/TOPS C shell → /bin/tcsh

3. 在UNIX中,大多数命令存在磁盘上单独的文件里,各个命令都以文件方式存在。

4. 记录是由一些域组成的,每个域之间是由一个冒号“:”区别的。例如:

ranga:x:500:100:Sriranga Veeraraghavan:/home/ranga:/bin/bash

其中,最后一个域存储的是与帐号相关的shelll,倒数第二个域存储的是帐号的主目录。

5. 各个操作系统默认的shell:

① Solaris → Bourne shell或C shell

② HP-UX → POSIX shell(它是ksh的一变种)

③ BSD → korn shell或C shell

④ Mac OS X → Z shell或C shell

⑤ Linux → Bourne Again shell

6. 一般情况下,每个shell都会使用/etc目录下默认的或系统配置文件以及主目录下的一系列个人配置文件。

7. bash初始化过程(相关的初始化文件,即init文件有:/etc/profile、.bash_profile、.bash_login和.profile):

① bash检查文件/etc/profile是否存在

② 如果存在,bash就读取该文件;否则,跳过。

③ bash检查主目录下的文件.bash_profile是否存在。

④ 如果存在,bash就读取该文件;否则,跳过。

⑤ bash检查主目录下的文件.bash_login是否存在。

⑥ 如果存在,bash就读取该文件;否则,跳过。

⑦ bash检查主目录下的文件.profile是否存在。

⑧ 如果存在,bash就读取该文件;否则,跳过。

8. shell的初始化文件都了配置一个完整的工作路径。例如,启动文件.profile中放置了你的shell初始化的所有设置,可以添,但是至少要放置①命令的目录列表。②命令手册的目录列表。

9. 初始化文件内容:

① PATH → 指定shell查找命令的目录。

如,PATH=/bin:/usr/bin(其中用“:”分开不同目录)

② MANPATH → 指定shell帮助手册的位置

如,MANPATH=/usr/man:/usr/share/man

10. shell能在两种模型下运行:

① 交互式启动shell

如,$ /bin/basj

② 非交互式启动shell

如,$ /bin/sh filename(filename是包含可执行命令的文件名),用vi编辑filename

11. shell脚本就是包含一系列命令的文件,为了使shell脚本能够运行必须:

① 把文件标为可执行:chmod a+x filename

② 确保使用了适当的shell来执行脚本:须加入一行“幻行”:

#!shell(其中shell为执行脚本需要的shell名称,如/bin/sh,/bin/ksh等等),添加这一条以后执行此脚本,只要输入filename即可。

12. shell脚本的注释是“#”

13. manual page片段:

14. wc结果格式:文件行数 文件单词数 文件字符数 文件名

15. 管道中的每个命令都是作为一个独立的进程运行的,管道的退出状态就是最后一个命令的退出状态。

16. 文件描述符:是一种机制,用它把一个数字和一文件关联起来,然后使用该数字读写该文件,它也叫文件句柄。

17. cmd1 | cmd2 | … | cmdN 这是一个管道的例子,管道符号|将一个命令的输出重定向到另一个命令的输入,即把cmd1的标准输出和cmd2的标准输入关联起来。

18. cmd | tee file 此条语句可以把cmd命令产生的结果既在屏幕上显示又存入file文件中去。

19. 每个命令打开的3个及其相应的文件描述符:

Ø STDIN 0

Ø STDOUT 1

Ø STDERR 2

20. 在输出重定向中”>”与”>>”的区别:前者将覆盖原文件内容,后者是在原文件后追加。

21. exec命令将任何文件和文件描述符关联起来。

22. cmd 1>file1 2>file2或cmd >file1 2>file2都表示把标准输出重定向到文件file1中,标准重定向到文件file2中。

23. 文件/dev/null是UNIX中用于丢弃输出信息的特殊文件,有时称为bit bucket,如将一命令的输出重定向到/dev/null,那么输出将被丢弃。

24. 用cat命令显示/dev/null文件内容到一文件,该文件内容将被擦除。

$cat /dev/null >file

执行后文件file仍存在,但大小变为0。

25. cmd >>file 2>&,此命令把cmd的标准错误和标准输出追加到同一个文件file中。

26. exec n>-,此命令将关闭文件描述符,此处n是一个打开的文件描述符。

27. file filename,此命令可以的到更多关于filename文件的信息。

28. 硬连接限制:

① 硬连接不能指向目录,只能指向文件。

② 硬连接和它所指的原文件无法辨别,没有方法可以告知一个特定的文件是硬连接还是它所指向的原文件。

29. 一个文件会有多个硬连接,只删除该文件并不能有效的释放磁盘空间,要将所有硬连接都删除才可以。

30. 符号连接(symbolic link或symlink)是一个存储另一个文件路径的特殊文件。

31. 符号连接即软连接,相当于“快捷方式”。

32. 字符设备文件:是在和设备通信时每次只传输一个字符,通常字符设备代表一个“raw”。

33. 块设备文件:时在设备通信时传递大块大块的数据而不是单个字符。(一般用于访问硬盘和可移动媒体)。

34. ls -l 字符设备文件,该命令的显示结果中在日期前的两个数字是主/次设备号,用这两个数字来标识和字符设备文件相联系的设备驱动程序。

35. mkfifo file,命令来创建命名管道文件。

36. 系统的登陆密码存于/etc/shadow文件中。

37. 改变文件的属主和组命令:chown user:group files(其中user表示系统中的用户名或用户ID,group表示系统中的组名或组ID)。

38. 当你指定另一个用户为你所拥有文件的属主时,你不能重新成为该文件的属主,只能该文件的新属主和超级用户能让你再次成为该文件的属主。

39. 在UNIX中,每个进程都会运行一段进程,一段进程时运行一个程序的实例没。在UNIX中,使用了一条命令,它就会开始执行一段进程。

40. 运行后台进程:在命令后加一个”&”符号。
文章评论

共有 39 条评论

  1. honglianqxw123 于 2014-05-16 12:53:07发表:

    学习了,支持。

  2. anbin 于 2014-05-14 01:08:36发表:

    感谢分享!精神一流!

  3. zy3000 于 2014-05-13 20:56:17发表:

    :0wl;l1

  4. 15800677296 于 2014-05-05 09:00:21发表:

    ,做20个回贴,

  5. 15800677296 于 2014-05-04 15:54:44发表:

    楼主辛苦了

  6. 15800677296 于 2014-05-04 15:54:39发表:

    楼主辛苦了

  7. 15800677296 于 2014-05-04 13:58:46发表:

    鼎力支持下鼎力支持下鼎力支持下鼎力支持下鼎力支持下

  8. 15800677296 于 2014-05-04 13:58:42发表:

    鼎力支持下鼎力支持下

  9. 15800677296 于 2014-05-04 13:58:30发表:

    鼎力支持下

  10. 15800677296 于 2014-05-04 13:55:35发表:

    鼎力支持下

  11. 15800677296 于 2014-05-04 13:55:32发表:

    鼎力支持下

  12. 15800677296 于 2014-05-04 13:54:19发表:

    鼎力支持下

  13. 15800677296 于 2014-05-04 13:54:16发表:

    鼎力支持下

  14. 15800677296 于 2014-05-04 13:54:14发表:

    鼎力支持下

  15. 15800677296 于 2014-05-04 13:54:12发表:

    鼎力支持下

  16. 15800677296 于 2014-05-04 13:54:10发表:

    鼎力支持下

  17. 15800677296 于 2014-05-04 13:54:08发表:

    鼎力支持下

  18. 15800677296 于 2014-05-04 13:54:06发表:

    鼎力支持下

  19. 15800677296 于 2014-05-04 13:54:03发表:

    鼎力支持下

  20. 15800677296 于 2014-05-04 13:54:01发表:

    鼎力支持下

  21. 15800677296 于 2014-05-04 13:53:57发表:

    鼎力支持下

  22. 15800677296 于 2014-05-04 13:53:55发表:

    鼎力支持下

  23. 15800677296 于 2014-05-04 13:53:53发表:

    鼎力支持下

  24. 15800677296 于 2014-05-04 13:53:50发表:

    鼎力支持下

  25. 15800677296 于 2014-05-04 13:53:38发表:

    鼎力支持下

  26. 15800677296 于 2014-05-04 13:53:36发表:

    鼎力支持下

  27. 15800677296 于 2014-05-04 13:53:34发表:

    鼎力支持下

  28. 15800677296 于 2014-05-04 13:53:31发表:

    鼎力支持下

  29. 15800677296 于 2014-05-04 13:53:29发表:

    鼎力支持下

  30. 15800677296 于 2014-05-04 13:53:26发表:

    鼎力支持下

  31. 15800677296 于 2014-05-04 13:53:23发表:

    鼎力支持下

  32. 15800677296 于 2014-05-04 13:52:51发表:

    鼎力支持下

  33. 15800677296 于 2014-05-04 13:52:48发表:

    鼎力支持下

  34. Motor 于 2014-04-05 10:20:43发表:

    正在攒钱中,也在搜寻知识中,这个真的很详细,支持你!

  35. chen59326 于 2014-02-26 11:09:40发表:

    学习了

  36. jwhdu 于 2014-02-22 18:10:54发表:

    新手来了,过来瞧瞧,多多指教。

  37. keepshy 于 2014-02-20 10:21:09发表:

    学习了

  38. qw3206 于 2014-01-09 18:50:14发表:

    好东西

  39. qxfsy 于 2014-01-03 03:50:48发表:

    好东东