今天在写CMU下的一个实验的Shelllab的时候发现一个错误。
实验的目的是自己构建一个简单的Shell
文中需要键入字符串:
/bin/echo -e tsh> ./myspin 1 \046
(\046表示&,即表示在后台执行程序)
首先先说一下echo的作用:
echo作用是输出后面的字符串。
例如:
(不加引号,以空格为间隔,将每一个参数作为单词输出到输出流中)
/bin/echo hello world
(如果在命令行下可以直接使用echo,但是使用execve的时候必须使用绝对路径)
输出为:hello world
(加引号:即将引号内的全部内容作为参数,传入echo)
/bin/echo. “hello world”
输出为:hello world
接下来要说明/bin/echo的两个参数。 -n和-e
-n:
键入命令行:
/bin/echo -n hello world
输出:
-n 表示不换行。
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息
还可以使用 >将字符信息输出到一个文件中去
例如:
/bin/echo “hello world” > a.out
即可以把hello world输出到a.out中去。
接下来进入正题:
在mac系统命令行中分别键入:
/bin/echo和直接echo出现两种不同的结果
在Linux系统命令中输入:
可见两个系统中的不同,