今天在写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系统命令中输入:
可见两个系统中的不同,