博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一起学Shell之(二)输出以及其它
阅读量:5947 次
发布时间:2019-06-19

本文共 4019 字,大约阅读时间需要 13 分钟。

 
echo 与printf I/0重定向等
 
 
语   法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参   数:-n 不要在最后自动换行
           -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息
 
煮酒品茶:死记硬背不是个办法,我们也不可能记得这么多参数,最好的办法就是请求帮助,man echo echo -help再不行百度。echo的具体作用在于输入信息,如提示用户到哪里了,提示用户该输入什么信息了。这个比较适合加\a参数,响一下来让用户知道该做什么该作,但更多的脚本最好少一些交互吧。\n换行,我想输出信息也是为了美观吧。或者提示用户信息到哪了,要出错在之前或之后。
 
printfr wt
说明:甚本复制了C程序库里的printf()库程序的功能,所以基本可以通用。与echo不同的是它不提供换行操作。
 
%s 用于字符串的输出
如:
--------------------------------
[root@localhost test]# cat printf
printf "hello 123 '%s,%s'" Love 51cto
[root@localhost test]# ./printf
hello 123 'Love,51cto'[root@localhost test]#
------------------------------------
煮酒品茶,并没有提供换行符,所以输出的信息连在一起了。这个%s的作用我的理解是用作多个同种格式下文本的定义还不错,这样会省于很多代码,和省下很多心。
---------------------------------
[root@localhost test]# cat printf
i='%s,%s!'
printf "$i" ni hao zhongguo
printf "$i" ni hao cwtea
printf "$i" love you
[root@localhost test]# ./printf
ni,hao!zhongguo,!ni,hao!cwtea,!love,you![root@localhost test]#
---------------------------------------
 
基本的I/O重定向
 
概念:程序应该有数据的来源端和目地端,以及报告问题的地方,称之为标准输入,标准输出,标准错误输出、
 
输入输出可以是任何文件终端硬件等,而以Linux一切皆文件,那么就是任何文件喽。
 
例:
-------------------------
[root@localhost test]# cat
11234  #手工输入的
11234  #cat输出的
[root@localhost test]#
-------------------
 
重定向符号:
< > >>
< 的作用是调取后面的文件然后用<前进行操作。
例:
-----------------------------------
[root@localhost test]# cat ts
#! /bin/sh
hello 51CTO
[root@localhost test]# tr -d "hello" < ts
#! /bin/s
 51CTO
[root@localhost test]#
-----------------------------------------
 
> 的作用就是把前面的内容输出到后面的文件中,如果目的地不存在,那么创建,已存在那么替换掉原数据。
-------------------------------
[root@localhost test]# cat ts
#! /bin/sh
hello 51CTO
[root@localhost test]# cat ts >123
[root@localhost test]# ls
123  printf  ts
[root@localhost test]# cat 123
#! /bin/sh
hello 51CTO
[root@localhost test]#
-----------------------------------
 
>>是添加文件到末尾,这个对配置文件很有效啊。
如:
------------------------------------
[root@localhost test]# tr -d "hello" <ts >>123
[root@localhost test]# ls
123  printf  ts
[root@localhost test]# cat 123
#! /bin/sh
hello 51CTO
#! /bin/s
 51CTO
[root@localhost test]#
----------------------------------------
煮酒品茶:这个过度多加了一行,先是取ts里面的值并执行tr -d "hello"并输出到123的末端。由于是一路操作下来的,那么123和ts文件就不cat了。tr命令,请tr -help或百度查。tr的作用,更改文件,特别是配置文件特别不错,注意的是在有管道时,我们应该体现数据效率,尽可能的把少的数据移交给后面的管道。
 
特珠文件:/dev/null与/dev/tty
煮酒品茶:/dev/null这个大家最常见,特别是任务计划中。
/dev/null 位桶,把数据写入此文件,系统将认为数据已完成写入操作,并把数据给丢掉。
/dev/tty:打开此文件,系统就重定向到另一个终端与程序相结合。
 
/dev/null 这个用的比较广,比如任务计划每五分钟执行一次程序,那么产生的信息太多,而我们又不需要,这时可以
 
直接给它写到位桶里面。
/dev/tty 这个个人认为在安全方面不错,当A要输入密码时可以切换到另一终端,让另一终端来输入密码然后确认后返
 
回。原Shell.
-----------------------------------
[root@localhost test]# cat tty
echo "Input Pass1:"  
stty -echo
#关闭echo
read pass </dev/tty 
#接怍数据从/dev/tty新终端
echo pass2 "Input Enter"
read pass2 </dev/tty
stty echo
[root@localhost test]# ./tty
Input Pass1:
pass2 Input Enter
[root@localhost test]#
-----------------------------------
 
Shell每次登陆都要读取.profile文件,后面的版本好像是在根目录的.bash_profile
--------------------------
[root@localhost ~]# cat .bash_profile
# .bash_profile
 
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
 
# User specific environment and startup programs
 
PATH=$PATH:$HOME/bin  
#
 
export PATH
unset USERNAME
[root@localhost ~]#
---------------------------
如果你要定义shell找你自己定义的目录的话,或者也可以在开头的第一行加上#!/你的目录话加
---------------------------
PATH=:/bin    先找这目录
PATH=/bin     中间找这目录
PATH=/bin:
最后找这个目录
--------------------------
所以位置的排例是以:号为基准。
 
简单的执行跟踪:
set -x 
set +x
煮酒品茶:这个作用蛮大的,还有一个test也蛮强的,但我喜欢set -x ,在执行程序每一行都会提示Shell进行的什么
 
操作,已经操作完的内容。
--------------------------------
[root@localhost test]# ./tty
++ echo 'Input Pass1:'
Input Pass1:
++ stty -echo
++ read pass
++ echo pass2 'Input Enter'
pass2 Input Enter
++ read pass2
++ stty echo
[root@localhost test]#
----------------------------------
 
国际化与本地化:这个太高尚了,所以没记任何笔记。
 
(完)
本文转自 煮酒品茶 51CTO博客,原文链接:http://blog.51cto.com/cwtea/851118,如需转载请自行联系原作者
你可能感兴趣的文章
RMB數字轉換中文
查看>>
基于rhel7.2的Zabbix平台搭建和部署(二)
查看>>
Html5本地存储和本地数据库
查看>>
我的友情链接
查看>>
JQ 循环切换DIV
查看>>
Nagios监控NetAPP NAS存储容量,Volume、Qtree
查看>>
Android Fragment实践(二)
查看>>
centos 修改主机名立即生效和重启后也生效的方法
查看>>
Windows 64 位 mysql 5.7以上版本包解压安装
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
TClientDataSet[14]: 测试 FindFirst、FindNext、FindLast、FindPrior、Found
查看>>
CentOS 6.3中配置bond多网卡负载均衡
查看>>
调整数组使奇数全部都位于偶数前面
查看>>
clamav 完整查杀 linux 病毒实战
查看>>
我的友情链接
查看>>
EIGRP的Metric计算以及负载均衡
查看>>
org-capture 配置
查看>>
linux下lvs搭建负载均衡集群
查看>>
JMS 实例讲解
查看>>
求教:如何成为一个优秀的项目经理人
查看>>