您的位置:首页 > 运维架构 > Shell

Linux shell 学习笔记(三) shell输入与输出

2013-12-11 16:45 274 查看
1、echo命令可以显示文本行或变量,或者把字符串输入到文件

echo [option] string

-e 解析转义字符(转义符(\c(回车不换行),\f(静止),\t(跳格),\n回车换行))

-n 回车不换行,linux系统默认回车换行

2、read语句可以从键盘或文件的某一行文本中读入信息,并将其赋值给一个变量
read varible1 varible2...

如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量,shell将用空格作为变量之间的分隔符
例:#!/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"
3、cat是一个简单而通用的命令,可以用它来显示文件内容、创建文件,还可以用它来显示控制字符。
cat [options] filename1... filename2...

-v 显示控制字符

使用cat命令时要注意,它不会在文件分页符处停下来;它会一下显示完整个文件。如果希望每次 显示一页,可以使用more命令或把cat命令的输出通过管道传递到另外一个具有分页功能的命令 (more,less)中

man cat(查看cat的具体使用方法)
4、管道(|)可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示
格式:命令1|命令2

df -k|awk '{print $1}'|grep -v "Filesystem" 删除不符合条件的

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

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

6、在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名
文件 文件描述符

输入文件——标准输入 0(缺省是屏幕,也可以是文件)

输出文件——标准输出 1(缺省是键盘,也可以是文件或其他命令的输出)

错误输出文件——标准错误 2(缺省是屏幕,也可以是文件)

系统中实际上有12个文件描述符,可以任意使用文件描述符3到9
7、文件重定向
改变程序运行的输入来源和输出地点

command > filename 把标准输出重定向到一个新文件中

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

command 1 > filename 把标准输出重定向到一个文件中

command > filename 2>&1 把标准输出和标准错误一起重定向到一个文件中

command 2 > filename 把标准错误重定向到一个文件中

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

command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename>filename2 command命令以filename文件作为标准输入,以filename2 文件作为标准输出
command < filename command命令以filename文件作为标准输入

command << delimiter 从标准输入中读入,直至遇到delimiter分解符

command < &m 把文件描述符m作为标准输入

command > &m 把标准输出重定向到文件描述符m中

command < &- 关闭标准输入
sort排序命令进行标准排序
例子:cat >>term.txt <<CHINAITLAB

> Hello,there I am using a $TERM terminal

> and my username is $LOGNAME

> BYE ...

> CHINAITLAB

遇到CHINALAB认为停止

8、合并标准输出和标准错误
合并标准输出和标准错误的时候,切记shell是从左至右分析相应的命令

9、exec

exec命令可以用来替代当前shell:换句话说,并没有启动子shell,使用这一命令时任何现有环 境都将会被清除,并重新启动一个shell

exec command

其中的command通常是一个shell脚本

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

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

例:#!/bin/bash

#file_desc

exec 3<&0 0<name.txt

read line1

read line2

exec 0<&3

echo $line1

echo $line2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息