1、  echo命令可以显示文本行或变量,或者把字符串输入到文件。



echo [option] string  --命令格式


-e 解析转义字符



-n 回车不换行,linux系统默认回车换行



转义符(\c,\f,\t,\n)



例子:关于echo的脚本,注意观察其中的字符和参数的使用。



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


执行这个脚本的结果应该是:



#./echod 
    This echo's 3 new lines 

    OK 

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


和mylogfile.txt文件中的:The log files have all been done



2、  read语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。



read varible1 varible2 ……命令格式



如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量。Shell将用空格作为变量之间的分隔符。



例子:关于read的脚本:



#!/bin/bash 
  
 
  

    #readname 
  
 
  

    echo -n "First name :" 
  
 
  

    read Firstname 
  
 
  

    echo -n "Last name :" 
  
 
  

    read Lastname Subname Thirdname 
  
 
  

    echo -e "Your firstname is:${Firstname}\n" 
  
 
  

    echo -e "Your lastname is:${Lastname}\n" 
  
 
  

    echo -e "Your subname is:${Subname}\n" 
  
 
  

    echo -e "Your Thirdname is:${Thirdname}\n"

3、  cat是一个简单而且通用的命令,可以用它来显示文件内容、创建文件,还可以用它来显示控制字符。



Cat [option] filename1 filename2 ……命令格式



-v 显示控制字符



使用cat命令时要注意,它不会再文件分页符处停下来;他会一下显示完整个文件。如果希望每次显示一页,可以用more命令或把cat命令的输出通过管道传递到另外一个具有分页功能的命令(more,less)中。



Man cat



   列子:

#cat myfile 
  
 
  

             #cat mafile1 myfile2 myfile3 
  
 
  

                   #cat mafile1 myfile2 myfile3 >myfile 
  
 
  

             #cat –v dos.txt


4、  管道 ( | )可以把一个命令的输出传递给另一个命令作为输入。



格式:command1 | command2



例子:

#cat myfile | more 
  
 
  

          #ls –l | grep “myfile” 
  
 
  

          #df -k | awk '{print $1}' | grep -v "Filesystem" | tee [-a] partation.txt


5、  tee 命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。



tee –a files--------命令格式



---如果希望看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。



---一般用于管道之后。



例子:#who | tee –a who.out   -a 这个参数是追加的意思,不加的话直接覆盖原有文件。


# df -k | awk '{print $1}' | grep -v "Filesystem" | tee [-a] partation.txt


6、  标准输入、输出和错误:在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。



   



文件

文件描述符

输入文件—标准输入

0(缺省时键盘,也可以是文件或其他命令的输出)

输出文件—标准输出

1(缺省时屏幕,也可以是文件)

错误输出文件—标准错误

2(缺省时屏幕,也可以是文件)

系统中实际上有12个文件描述符,可以任意使用文件描述符3到9.



7、  文件重定向:改变程序运行的输入来源和输出地点。



  



Command > filename

把标准输出重定向到一个新文件中

Command  >> filename

把标准输出重定向到一个新文件中(追加)

Command 1 > filename

把标准输出重定向到一个文件中

Command  > filename 2>&1

把标准输出和标准错误一起重定向到一个文件中

Command 2 > filename

把标准错误重定向到一个文件中

Command 2 >> filename

把标准错误重定向到一个文件中(追加)

Command >> filename 2>&1

把标准输出和标准错误一起重定向到一个文件中(追加)

Command < filename > filename2

Command命令以filename文件作为标准输入,以filename2作为标准输出

Command < filename

Command命令以filename文件作为标准输入

Command << delimiter

从标准输入中读入,直至遇到delimiter分界符

Command <&m

把文件描述符m作为标准输入

Command >&m

把标准输出重定向到文件描述符m中

Command <&

关闭标准输入

   例子:

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

             #pwd >> path.out 
  
 
  

                   #>nullfile.txt  清空文件nullfile.txt  也可以理解为创建一个空文件。 
  
 
  

             #sort < file 
  
 
  

             #sort < name.txt > name.out 
  
 
  

             #cat >>term.txt<<CHINAITLAB 
  
 
  

    >Hello,there I am using a $TERM terminal 
  
 
  

    >and my username is $LOGNAME 
  
 
  

    >bye... 
  
 
  

    >CHINAITLAB    //这个命令是delimiter的相关用法和追加的例子 
  
 
  

             #cat term.txt 
  
 
  

             #grep “trident” missiles 2 > /dev/null    //标准错误的输出


8、  结合使用标准输出和标准错误



例子:

#cat account_new.txt account_old.txt 1 > account.out 2 > account.err 
  
 
  

             #cat account.out 
  
 
  

             #cat account.err   //这个例子假设account_new.txt存在,而account_old.txt不存在


9、  合并标准输出和标准错误:合并标准输出和标准错误的时候,切记shell是从左至右分析相应的命令的。



例子:#grep “standard” standard.txt > grep.out 2 >&1  //不管怎么样,结果都输出到grep.out这个文件中。



10、              exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一命令时任何现有环境都会被清除,并重新启动一个shell。



exec command //其中的command通常是一个shell脚本



--对文件描述符进行操作的时候(也只有在这时),它不会覆盖当前的shell。



例子:#exec ./helloword.sh   //实验一下 ,hellword.sh是一个脚本



11、              文件描述符



--3-9文件描述符,exec与文件描述符的结合



例子:

#!/bin/bash 
  
 
  

          #file_desc 
  
 
  

              exec 3<&0 0<name.txt  // exec 3<&0打开文件描述符 
  
 
  

              read line1 
  
 
  

              read line2 
  
 
  

              exec 0<&3            //关闭文件描述符 
  
 
  

              echo $line1 
  
 
  

              echo $line2    //编辑一个这样的脚本测试exec与文件描述符的结合是否会覆盖当前的shell。


转载于:https://blog.51cto.com/rhcemxh/497422