shell学习第六天--小结

来源:互联网 发布:3ds代理设置ip和端口 编辑:程序博客网 时间:2024/05/10 03:46

shell中的两个特殊文件“/dev/null”和“/dev/tty

1. /dev/null

当被用作重定向输出时,程序的输出被直接丢弃。该文件用在哪些不关心程序输出的地方。

当被用作重定向输入时,输入则是文件结束。

 

2. /dev/tty

当被用作重定向时,表示重定向到终端。

 

基本命令查找

shell会沿着$PATH来寻找命令.$PATH是一个以冒号分割的目录列表,你可以在列表所指定的目录下找到所要执行的命令.命令可能是shell脚本,也可能是编译后的可执行文件,从用户角度来看,二者并无不同.

默认路径至少包含/bin/usr/bin,或许还包含其他的.

名称为bin的目录用来保存可执行文件.

 

如果要编写自己的脚本,最好准备一个自己的bin目录来存放他们,并且让shell能够自动找到他们.

$cd                                     

$mkdir bin

$mv nusers bin

$PATH+$PATH:$HOME/bin         //将个人的bin目录附加到PATH(暂时生效,系统重启后失效)

nusers     

 

要想永久生效,/etc/profile文件中把你的bin目录加入到$PATH,而每次登陆时Shell都将读取.profile文件.

PATH=$PATH:$HOME/bin

$PATH里的空项目表示当前项目.空项目位于路径中间时,可以用两个连续的冒号来表示,如果将冒号直接置于最前端或尾端,分别表示查找的时候最先查找或最后查找当前目录.

$PATH=:/bin:/usr/bin            先找当前目录

$PATH=/bin::/usr/bin            当前目录居中

$PATH=/bin:/usr/bin:            最后找当前目录

不应该在查找路径中放进当前项目.

 

访问shell脚本的参数

定义参数关键字$:例如echo frist argumentsis $1,大于等于10的 参数需要用{}包起来,echo tenth argumentsis ${10}

 

例如我们想查找名字为syx用户是否登陆

who | grep syx

syx      pts/1        2015-06-09 11:00 (192.168.199.114)

知道了如何寻找特定的用户后,我们可以经命令放在脚本里,这段脚本的第一个参数就是我们要找的用户名称

vi findname              建立新文件

#!/bin/sh

#查看指定用户是否登录

who | grep $1

-------------------------------------------------------

 

./findname syx

syx      pts/1        2015-06-09 11:00 (192.168.199.114)

但是这是在理想情况下,如果用户不按套路出牌,即不指定参数,则会报错.

小结

编译性语言和脚本语言本身并无优劣之分,只有适合不适合

当对性能要求不高,希望尽快开发出程序并以较高的方式工作是,脚本语言完全可以胜任.

所有的shell脚本都应该以#!为第一行,这一机制可让你的脚本更有灵活性,你可以选择使用shell或其他的语言来编写脚本.

 

shell是一个完整的程序设计语言,我们已经说明过基本的命令,选项,参数与变量,以及echoprintf的基本输出,也稍微说了一下基本的I/O重定向符:<,>,>>以及|.

 shell会在$PATH变量所列举的各个目录中寻找命令.$PATH常会包含个人的bin目录(永爱存储用户个人的程序与脚本),可以在/etc/profile文件中将目录列入到PATH.

 

0 0
原创粉丝点击