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。