SHELL学习(一)

特殊文件/dev/null(位桶bit bucket)
传送到此文件的数据都会被系统丢掉
也就是说,完成了写入操作,但是什么都没做
if grep pattern myfile > /dev/null
then
...
else
...
fi

/dev/ty, 当程序打开这个文件时,会自动重定向到一个终端
printf "Enter new password:"
stty -echo            关闭自动打印输入字符的功能
read pass < /dev/tty  读取密码
printf "Enter again:"
read pass2 < /dev/tty
stty echo           打开自动打印输入字符的功能


Shell会沿着查找路径$PATH来寻找命令
默认路径因系统而异,不过至少包含/bin和/usr/bin
自己创建的脚本最好使用bin目录来保存,并加入到$PATH中
mkdir bin
mv nusers bin
PATH=$PATH:$HOME/bin
nusers               //执行
要让修改永久起效,把路径加到.profile中的$PATH中

位置参数,超过9时用{}
echo first arg is $1
echo first arg is ${10}

执行跟踪
通过-x, 或者在sh文件中 set -x(x) 打开/关闭  执行跟踪
$ cat > trace1.sh
#! /bin/sh
set -x       //打开执行跟踪
echo 1st echo
set x //关闭
echo 2nd echo
^D

$ chmod +x trace1.sh
$ ./trace1.sh
+ echo 1st echo
1st echo
+ set x
2nd echo
在执行的命令前有+


查找文本,3个传统的程序
grep  使用 BRE
egrep 使用 ERE
fgrep 使用固定字符串
grep和egrep只能匹配单个的正则,而fgrep可以匹配多个字符串
之后,3个功能都被整合到了grep中,使用不同的选项可以控制
grep 默认的模式,是使用-F
grep -F 是以固定字符串查找

语法 grep [options ...] pattern-spec [files ...]
主要选项 -E,  -F ,
-e pat-list
通常第一个非选项的参数会指定要匹配的模式,可以提供多个模式,放在引号里使用换行符来分隔。当模式以减号开头时,grep会混淆,这时候使用-e,可以指定其参数为模式
即使它以-开头
-f pat-file
从pat-file中读取模式
-i 模式匹配忽略大小写
-l 列出匹配模式的文件名称,而不是打印匹配的行
-q 静默的,如果匹配成功,grep成功离开,而不将匹配的行写入标准输出,否则不成功
-s 不显示错误信息,通常与-q同用
-v 显示不匹配模式的行

你可能感兴趣的:(shell)