#----------------------------------------------------------#shell
# ====>
红色字体 -特指煮酒我的所见。加粗则为须要重点注意。 #
# ====>
蓝色加粗 -特指与本文相关人员,包括参与修正的朋友。 #
# ====> 煮酒品茶 -Http://cwtea.blog.51cto.com
#
#----------------------------------------------------------#
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]#
----------------------------------
国际化与本地化:这个过高尚了,因此没记任何笔记。
(完)