SHELL学习笔记三
时间:2007-11-06 来源:bluexjj
shell输入与输出
-echo
◎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
-read
◎read语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量
◎read varible1 varible2 ...
-如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一
个文件结束符或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量。shell将用空格作为变量之间的分隔符。
read举例:
#!/bin/bash
#readname
echo -n "First Name:"
read firstname
echo -n "Last Name:"
read lastname
echo -e "Your First Name is :${firstname}\n"
echo -e "Your Last Name is :${lastname}\n"
-cat
◎cat是一个简单而通用的命令,可以用它来显示文件内容、创建文件,还可以用它来显示控制字符。
◎cat [options] filename1 ... filename2 ...
-v 显示控制字符
使用cat命令时要注意,它不会在文件分页符处停下来;它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或把cat命令的输出通过管道传递到另一个具有分页功能的命令(more,less)中。 cat 举例:
cat myfile
cat myfile1 myfile2 myfile3
cat myfile1 myfile2 myfile3 >myfile123
cat -v dos.txt
-管道(|)
◎可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示。
◎格式:命令1 | 命令2
管道举例:
cat myfile | more
ls -l | grep "myfile"
df -k | awk `{print $1}`| grep -v "Filesystem"
-tee
◎tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
◎tee -a files
如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。
一般用于管道之后。
tee举例:
#who | tee who.out
#who | tee -a who.out --- -a 时追加的意思,没有-a是覆盖
#df -k | awk `{print $1}`| grep -v "Filesystem" -标准输入、输出和错误 -文件重定向
◎改变程序运行的输入来源和输出来源 -重定向标准输出
cat file | sort 1 >sort.out
cat file | sort > sort.out
pwd >>path.out
>nullfile.txt -重定向标准输入
sort <file
sort <name.txt>name.out
#cat >>term.txt<<chinaitlab 以chinaitlab结尾,前面的内容追加到term.txt中
>Hello,there I am using a $TERM terminal
>and my username is $LOGNAME
>bye ...
>chinaitlab
#cat term.txt
Hello,there I am using a vt100 terminal
and my username is root
bye ...
-重定向标准错误
#grep "trident" missiles
#ls -al missiles 2 > err_message.txt
#cat err_message.txt
#ls -al -结合使用标准输出和标准输入
#cat account_new.txt account_old.txt 1>accounts.out 2>account.err
#cat accounts.out 假设new存在,old不存在
#cat accounts.err -合并标准输出和标准错误
grep "standard" standard.txt >grep.out 2>&1 -exec
◎exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一个命令时任何现有环境都将会被清除,并重新启动一个shell
◎exec command
其中的command通常是一个shell脚本
◎对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的shell 文件表述符:
◎3-9文件描述符
◎exec与文件描述符的结合
#!/bin/bash
#file_desc
exec 3<&0 0<name.txt
read line1
read line2
exec 0<&3
echo $line1
echo $line2
-echo
◎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
-read
◎read语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量
◎read varible1 varible2 ...
-如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一
个文件结束符或回车;如果给出了多个变量,它们按顺序分别被赋予不同的变量。shell将用空格作为变量之间的分隔符。
read举例:
#!/bin/bash
#readname
echo -n "First Name:"
read firstname
echo -n "Last Name:"
read lastname
echo -e "Your First Name is :${firstname}\n"
echo -e "Your Last Name is :${lastname}\n"
-cat
◎cat是一个简单而通用的命令,可以用它来显示文件内容、创建文件,还可以用它来显示控制字符。
◎cat [options] filename1 ... filename2 ...
-v 显示控制字符
使用cat命令时要注意,它不会在文件分页符处停下来;它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或把cat命令的输出通过管道传递到另一个具有分页功能的命令(more,less)中。 cat 举例:
cat myfile
cat myfile1 myfile2 myfile3
cat myfile1 myfile2 myfile3 >myfile123
cat -v dos.txt
-管道(|)
◎可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示。
◎格式:命令1 | 命令2
管道举例:
cat myfile | more
ls -l | grep "myfile"
df -k | awk `{print $1}`| grep -v "Filesystem"
-tee
◎tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
◎tee -a files
如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。
一般用于管道之后。
tee举例:
#who | tee who.out
#who | tee -a who.out --- -a 时追加的意思,没有-a是覆盖
#df -k | awk `{print $1}`| grep -v "Filesystem" -标准输入、输出和错误 -文件重定向
◎改变程序运行的输入来源和输出来源 -重定向标准输出
cat file | sort 1 >sort.out
cat file | sort > sort.out
pwd >>path.out
>nullfile.txt -重定向标准输入
sort <file
sort <name.txt>name.out
#cat >>term.txt<<chinaitlab 以chinaitlab结尾,前面的内容追加到term.txt中
>Hello,there I am using a $TERM terminal
>and my username is $LOGNAME
>bye ...
>chinaitlab
#cat term.txt
Hello,there I am using a vt100 terminal
and my username is root
bye ...
-重定向标准错误
#grep "trident" missiles
#ls -al missiles 2 > err_message.txt
#cat err_message.txt
#ls -al -结合使用标准输出和标准输入
#cat account_new.txt account_old.txt 1>accounts.out 2>account.err
#cat accounts.out 假设new存在,old不存在
#cat accounts.err -合并标准输出和标准错误
grep "standard" standard.txt >grep.out 2>&1 -exec
◎exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一个命令时任何现有环境都将会被清除,并重新启动一个shell
◎exec command
其中的command通常是一个shell脚本
◎对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的shell 文件表述符:
◎3-9文件描述符
◎exec与文件描述符的结合
#!/bin/bash
#file_desc
exec 3<&0 0<name.txt
read line1
read line2
exec 0<&3
echo $line1
echo $line2
相关阅读 更多 +