shell编程(三)

来源:互联网 发布:建站abc官网 编辑:程序博客网 时间:2024/04/29 01:37

chattr

文件的t属性

----------
第三章:Shell的输入与输出

echo
read
cat
管道
tee
exec
文件重定向
标准输入,输出和错误
合并标准输出和标准错误
使用文件描述符

3.1.1 echo
echo命令可以显示文本行或变量,或者把字符串输入到文件。
echo[option] string
-- -e 解析转义字符
-- -n 回车不换行,linux系统默认回车换行
-- 转义符(/c:回车不换行 ,/f:表示静止,/t:表示跳格,相当于tab键,/n:表示回车换行)

举例:

#!/bin/bash
#echod
echo -e "This echo's 3 new lines/n/n/n"
echo "OK"
echo
echo "This echo's 3 new lines/n/n/n"
echo "The log files have all been done">mylogfile.txt


echo -n The log files have all been done,回车但不换行

3.2.1 read
read 语句可以从键盘或者文件的某一行文本中读取信息,并将其赋给一个变量
read varible1,varible2......
如果只制定一个变量,那么read将会把所有的输入付给该变量,直至遇到第一个文件结束符
或者回车;如果给出了多个变量,他们按顺序分别被赋予不同的变量,他们按照顺序分别被赋予不同的变量。
。shell将用空格作为变量之间的分隔符。


for example:

#!/bin/bash
#readname
echo -n "First Name:"
read firstname
echo -n "Last Name:"
read lastname
echo -e "Your First Name is :${firstname}/n"
echo -e "Your Last Name is :${lastname}/n"

cat 显示文件 创建文件,还可以用它来显示控制字符。
cat[options] filename1 filename2.....
-v 显示控制字符。

nl:显示文件的行号
less命令:一页一页的翻动。

管道:|
 可以通过管道把一个命令的输出传递给另一个命令作为输入,管道用竖杠表示
格式:
命令1|命令2
 
df -k |awk '{print $1}'|grep -v "Filesystem"

tee
tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。

tee -a files
--如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再
适合不过了
--一般用于管道之后

标准输入,输出和错误

在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件
。由于文件描述符不容易记忆,shell同事也给出了相应的文件名。
标准输入:0(缺省是键盘,也可以是文件)
标准输出:1(缺省是屏幕,也可以是文件或其他命令的输出)
标准错误:2(缺省是屏幕,也可以是文件)

系统中实际上有12个文件描述符,可以任意使用文件描述符3到9.


command>filename 把标准输出重定向到一个新文件中
command>>filename 把标准输出重定向到一个文件中(追加)
command>filename 2>&1
command 2> filename
command 1>filename
command 2>>filename

command <<delimiter 从标准输入中读入,直至遇到delimiter分界符。
command<&m把文件描述符m作为标准输入
command>&m把标准输出重定向到问及爱你描述符m中
command<&-  关闭标准输入。

>nullfile 此命令可以创建一个字节为0 的文件。
grep "trident" missiles
ls -al missisle 2>/dev/null 相当与windows里面的shift+del删除。

exec
命令可以用来替代当前shell,重新启动一个新的shell,
例如:
exec helloword.sh
要求输入用户名密码,然后进入新的shell。

3.10.1 文件描述符:
3--9文件描述符
exec与文件描述符的结合


例如:
#!/bin/bash
#file_desc
exec 3<&0 0<name.txt
read line1
read line2
exec 0<&3
echo $line1
echo $line2

对文件描述符进行操作的时候(也只有在这时),他不会覆盖你当前的shell

 

原创粉丝点击