shell脚本——实现简单的功能

一、Hello Word的输出:
二、shell判断是否已经安装某个安装包:
三、shell判断文件或者文件夹是否存在
四、在拷贝操作中直接覆盖 不显示提示信息
五、shell语句给以 SASL_NOCANON开头的行 某一行加注释
六、echo中的转义换行符 打印彩色字体、彩色背景
七、shell在PATH环境变量所包含的目录列表中(各路径之间以冒号法分开)查找对应的可执行文件。
八、文件传输符和重定向:
九、自定义文件描述符:
十、为命令创建别名


一、Hello Word的输出:
示例:
$vim test.sh
编辑 #!/bin/sh
echo 'Hello Word!'
$chmod 755 test.sh
$./test.sh

二、shell判断是否已经安装某个安装包:
If空格 [空格 `rpm -qa openssl|wc -l` -ne 0空格 ];then
        echo -e "The packet_list:\n$OPENPACKNAME"
else    
        echo "NO have!"
fi
#!/bin/sh
#description: LDAP TLS
 
#判断client 与 服务器 是否都安装了 openssl 软件包
read -p "Inpiut your rpm_packet'name:" i
OPENPACKNAME=`rpm -qa $i`
if [ `rpm -qa $i|wc -l` -ne 0 ];then
        echo -e "The packet_list:$OPENPACKNAME"
else
        echo "NO have!"
fi

三、shell判断文件或者文件夹是否存在
if [ ! -f $CLICA_PATH/private/CA.key ];then
        echo "make make it"
else
        echo "This file is exit!!"
fi

四、在拷贝操作中直接覆盖 不显示提示信息
文件存在不显示提示信息:cp -n /etc/openldap/ldap.conf /usr/local/etc/openldap/
强制覆盖,忽略别名,不显示提示信息: \cp -f /etc/openldap/ldap.conf /usr/local/etc/openldap/

五、shell语句给以SASL_NOCANON开头的行 某一行加注释
sed 's/^SASL_NOCANON/#&/' /usr/local/etc/openldap/ldap.conf

六、echo中的转义换行符 打印彩色字体、彩色背景
示例:echo "1\t2\t3"
1\t2\t3
示例:echo -e "1\t2\t3"
1 2 3
示例:打印出彩色的
echo -e "\e[1;31m This is red text \e[0m"
颜色码:重置=0 黑色=30 红色=31 绿色=32 黄色=33 蓝色=34 洋红=35 青色=36 白色=37
1是加粗字体;2是隐藏字体;3是斜体;4是有下划线
示例:打印出彩色的背景
echo -e "\e[1;41m Red Background \e[0m"
颜色码:重置=0 黑色=40 红色=41 绿色=42 黄色=43 蓝色=44 洋红=45 青色=46 白色=47

七、shell在PATH环境变量所包含的目录列表中(各路径之间以冒号法分开)查找对应的可执行文件。
示例:如果在PATH中加一条新路径
export PATH="$PATH:/home/user/bin"
或者 $PATH:/home/user/bin
$export PATH

八、文件传输符和重定向:
示例:$ echo "This is a sample text 1" > temp.txt
输出:vi temp.txt 输出一行
示例:$ echo "This is a sample text 2" >> temp.txt
输出:vi temp.txt 输出两行
>和>>并不相同,尽管这两个操作符都可以将文本重定向到文件,但是前者会先清空文件,再写入内容!而后者会讲内容追加到现有的文件的尾部。
*当使用重定向操作符时,重定向的内容不会出现在终端,而是直接被导入到文件。重定向操作符默认使用标注输出。

九、自定义文件描述符:
*文件描述符是用于访问文件的一个抽象指针。存取文件离不开被成为“文件描述符”的特殊数字。0、1、2分别是stdin stdout stderr的预留文件描述符。
*我们可以使用exec命令创建自定义的文件描述符。
*<操作符用于从文件中读取至stdin
>操作符用于截断模式的文件写入(数据在目标文件内容被截断后写入) >>操作符用于追加模式的文件写入(数据加到现有的而文件的内容中,而且文件原有的内容不会丢失)
只读模式
示例:为读取文件创建一个文件描述符
$ echo this is a test line > input.txt
$ exec 3<input.txt
$ cat <&3
输出:this is a test line
截断模式:
示例:创建一个文件描述符用于写入(截断模式)
$ exec 4>output.txt
$ echo newline >&4
$ cat output.txt
输出:newline
追加模式
示例:创建一个文件描述符用于写入(追加模式)
$ exec 5>input.txt
$ echo newline >&5
$ cat input.txt

十、为命令创建别名
示例:为安装命令apt-get install创建别名:
$ alias install='sudo apt-get install'
这样以来,我们就可以用install pidgin代替sudo apt-get install pidgin了。
*alias命令的作用只是暂时的。一旦关闭当前终端,所有的设置过的别名就消失了。为了使别名设置一直保持作用,可以将它放入~/.bashrc文件中。因为每当一个新的shell进程生成时,都会执行~/.bashr中的命令
删除别名:
$ unalias install='sudo apt-get install'

猜你喜欢

转载自blog.csdn.net/weixin_42167759/article/details/80708383