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

第一部分 Shell基础编程——第三章 Shell输入和输出

2013-03-30 20:31 483 查看

笔记

#Shell输入和输出

#echo:显示文本行活变量,或者把字符串输入到文件,默认回车换行
#\c:回车不换行
#\f:禁止
#\t:跳格,相当于按了一个Tab键
#\n:回车换行

#更名
#sudo mv edhod.sh echod
#改变权限
#chmod 755 echod

#cat echod
#!/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

#创mylogfile.txt文件
sudo touch mylogfile.txt

#执行(-e解析特殊字符)
./echod
This echo's 3 new lines

ok

This echo's 3 new lines\n\n\n

#演示回车换行和回车不换行
[root@localhost 0330]# cat mylogfile.txt
The log files have all been done

#回车换行
[root@localhost 0330]# echo "The log files have all been done"                  Th log files have all been done

#回车不换行
[root@localhost 0330]# echo -n "The log files have all been done"
The log files have all been done[root@localhost 0330]#

#read
#read语句可以从键盘或者文件的某一行文本中读入信息,并将其赋给一个变量
#vi readname
chmod 755 readname
[root@localhost 0330]# ./readname
First Name:Chinaitlab
Last Name:Shen zhen
Your First Name is:Chinaitlab

Your Last Name is:Shen zhen

#演示以空格作为分隔符
[root@localhost 0330]#
cat  readname
#!/bin/bash
#readname
echo -n "First Name:"
read firstname
echo -n "Last Name:"
read lastname subname
echo -e "Your First Name is:${firstname}\n"
echo -e "Your Last Name is:${lastname}\n"
echo -e "Your Subname is:${subname}\n"
[root@localhost 0330]# ./readname
First Name:chinaitlab
Last Name:shen zhen
Your First Name is:chinaitlab

Your Last Name is:shen

Your Subname is:zhen

#cat
man cat
#单独显示myfile内容
cat myfile

#显示myfile1 myfile2 myfile3的内容
[root@localhost 0330]# cat myfile1 myfile2 myfile3
this is myfile1
this is myfile2
this is myfile3

#将myfile1 myfile2 myfile3重定向到myfile123
[root@localhost 0330]# cat myfile1 myfile2 myfile3 > myfile123
[root@localhost 0330]# cat myfile123
this is myfile1
this is myfile2
this is myfile3

#dos传输的文本
cat -v dos.txt

#不会分页显示
ls -l /bin > ls.txt
cat ls.txt

#分页显示方法一
cat ls.txt | more

#分页显示方法二
cat ls.txt | less

#分页显示方法三
less ls.txt

#分页显示方法四
more ls.tx

#管道(|)

#分页显示
#cat ls.txt | more

#查找myfile
#ls -l | grep "myfile"

#显示分区信息
#df –k

#打印第一列分区信息
#df -k | awk '{print $1}'

#过滤掉Filesystem
#df -k | awk '{print $1}' | grep -v "Filesystem"

#tee
#把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中
[root@localhost 0330]# who | tee who.out
root     pts/0        Mar 30 19:00 (192.168.223.1)
[root@localhost 0330]# who | tee who.out
[root@localhost 0330]# cat who.out
root     pts/0        Mar 30 19:00 (192.168.223.1)
[root@localhost 0330]# who | tee -a who.out
root     pts/0        Mar 30 19:00 (192.168.223.1)
[root@localhost 0330]# cat who.out
root     pts/0        Mar 30 19:00 (192.168.223.1)
root     pts/0        Mar 30 19:00 (192.168.223.1)

#将分区内容打印到屏幕并写入到文件
[root@localhost 0330]# df -k | awk '{print $1}' | grep -v "Filesystem" | tee partation.txt
/dev/sda2
/dev/sda1
none
.host:/
[root@localhost 0330]# cat partation.txt
/dev/sda2
/dev/sda1
none
.host:/

#标准输入、输出和错误
#标准输入 0 缺省键盘
#标准输出 1 缺省屏幕
#标准错误 2 缺省屏幕

#文件重定向
#> 重定向新文件
#>> 追加

[root@localhost 0330]# cat file
jenny
john
wendy
annie
marry
jack

#将排序内容重定向到sort.out
[root@localhost 0330]# cat file | sort 1>sort.out
[root@localhost 0330]# cat sort.out
annie
jack
jenny
john
marry
wendy

#cat file | sort >sort.out等价于cat file | sort 1>sort.out

#演示追加
[root@localhost 0330]# cat path.out
/home/wgb/shell/0330
[root@localhost 0330]# pwd>>path.out
[root@localhost 0330]# cat path.out
/home/wgb/shell/0330
/home/wgb/shell/0330
#巧妙创建文件
[root@localhost 0330]# ls -al nullfile
ls: nullfile: No such file or directory
[root@localhost 0330]# >nullfile
[root@localhost 0330]# ls -al nullfile
-rw-r--r--    1 root     root            0 Mar 30 19:36 nullfile

#
[root@localhost 0330]# sort <file
annie
jack
jenny
john
marry
wendy
[root@localhost 0330]# cat name.txt
chinaitlab
shenzhen
#将name.txt的内容作为输入传递给sort并将排序结果输出到name.out
[root@localhost 0330]# sort< name.txt >name.out
[root@localhost 0330]# cat name.out
chinaitlab
shenzhen

#终止符,输入某个输入终止输入
[root@localhost 0330]# cat term.txt
this is a test
[root@localhost 0330]# cat >>term.txt <<CHINAITLAB
> Hello,there I am using a $TERM terminal
> and my username is $LOGNAME
> BYE ...
> CHINAITLAB
[root@localhost 0330]# cat term.txt
this is a test
Hello,there I am using a xterm terminal
and my username is root
BYE ...

#将错误内容重定向到文件
[root@localhost 0330]# grep "trident" missiles
grep: missiles: No such file or directory
[root@localhost 0330]# ls -al missile 2> err_message.txt
[root@localhost 0330]# cat err_message.txt
ls: missile: No such file or directory
#/dev/null:无底洞

#将错误内容抛出
[root@localhost 0330]# grep "trident" missiles 2>/dev/null
cat /dev/null

#显示account_new.txt account_old.txt的内容,将标准输入到accounts.out,错误输出到accounts_err
[root@localhost 0330]# cat account_new.txt account_old.txt 1>accounts.out 2>accounts_err
[root@localhost 0330]# cat account_new.txt
account_old.txt 1>accounts.out 2>accounts.err
[root@localhost 0330]# cat account_old.txt
cat: account_old.txt: No such file or directory
[root@localhost 0330]# cat accounts.out
account_old.txt 1>accounts.out 2>accounts.err
[root@localhost 0330]# ls -al account_old.txt
ls: account_old.txt: No such file or directory
[root@localhost 0330]# cat accounts_err
cat: account_old.txt: No such file or directory
[root@localhost 0330]# cat account.err
cat: account.err: No such file or directory

#合并标准输出和标准错误
[root@localhost 0330]# grep "standard" standard.txt > grep.out 2>&1
[root@localhost 0330]# cat grep.out
grep: standard.txt: No such file or directory
vi standard.txt
[root@localhost 0330]# cat standard.txt
china it lab
shen zhen
standard shell
bash
linux shell
redhat
[root@localhost 0330]# grep "standard" standard.txt > grep.out 2>&1
[root@localhost 0330]# cat grep.out
standard shell

#exec
exec ./helloworld.sh
#重启Shell

#重新登录并设置环境变量
[root@localhost root]# export CHINAITLAB=ShenZhen
[root@localhost root]# echo $CHINAITLAB
ShenZhen

#再次执行脚本,再次打印刚才设置的环境变量时无内容
exec ./helloworld.sh
echo $CHINAITLAB

#文件描述符(exec和文件描述符结合使用不会重启Shell)
[root@localhost 0330]# vi file_desc
[root@localhost 0330]# cat file_desc
#!/bin/bash
#file_desc
exec 3<&0 0<name.txt
read line1
read line2
exec 0<&3
echo $line1
echo $line2
[root@localhost 0330]# vi name.txt
[root@localhost 0330]# chmod 755 file_desc
[root@localhost 0330]# cat name.txt
chinaitlab
shenzhen
[root@localhost 0330]# ./file_desc
chinaitlab
shenzhen


 

 

附图



 



 



 



 



 
 
 




 

@Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐