我是Unix和Linux的新手。我正在尝试一本来自Adam Hoover,第159-162页的“使用C和Unix进行系统编程”一书的例子。我正在使用Linux Ubuntu。
我想管道两个C代码(夏天|宾果游戏)。
summer.c
/* These styles are not essential to make the code work. They are just for
presentation here at Stack Overflow. */
textarea { height:100px; width:40%; float:left; font-size:3pt; }
div { clear:both; }
宾果
<p>Textarea Font Size.</p>
<textarea name="input" id="input" cols="75" rows="10">Hello world</textarea>
<textarea name="output" id="output" cols="75" rows="10">Hello world</textarea>
<div>
<select name="textareafontsize" id="textareafontsize" title="Textarea Font Size">
<option>3</option>
<option>5</option>
<option>8</option>
<option>10</option>
<option>12</option>
<option>14</option>
<option>15</option>
<option>18</option>
<option>20</option>
<option>24</option>
<option>30</option>
</select>
</div>
在Linux终端中,我按照命令操作。
gcc -o summer summer.c
gcc -o bingo bingo.c
夏天|宾果
我无法做到,它会出错。
“目前尚未安装”夏季“节目。
您可以输入以下命令安装:
sudo apt install chiark-utils-bin
没有命令'宾果',你的意思是:
从包'bing'(宇宙)中命令'bing'
来自包'bino'(宇宙)的命令'bino'
bingo:找不到命令“
夏天和宾果文件正在使用 ./ summer 和 ./ bingo
但是, ./ summer |宾果不起作用。
我试过用“&lt;”标准输入或“&gt;”标准出来。 这些都很完美。 但“|”会出错。
任何帮助对学习UNIX都非常有用。
答案 0 :(得分:1)
选项1:明确指定两个命令
的路径./summer | ./bingo
选项2:将当前路径添加到PATH,以便找到它们。在bash
,您可以执行
export PATH="$PATH:$(pwd)"
summer | bingo
请注意添加&#34;。&#34; PATH并不是最安全的事情,而是实际指定包含summer
和bingo
的路径,或使用pwd
明确添加当前文件夹。
答案 1 :(得分:0)
您的Bash shell无法找到程序summer
的原因是因为您的工作目录不在路径上。
Bash使用变量PATH
来定位程序。您可以通过在shell中执行echo $PATH
来查看路径的样子。它看起来像:
user@host:/$ echo $PATH
/usr/local/bin:/usr/bin
当您输入命令时,Bash会检查路径并查看程序中包含的位置(即/usr/local/bin
,/usr/bin
)。它看起来不像其他任何地方(如当前目录)所以如果找不到程序,shell只会返回错误。
如果要在不在路径上的位置执行程序,则需要提供程序的完整路径。这可能是:
/path/to/your/working/directory/summer
在Linux中,每个目录都包含一个引用自身的.
。你可以用这个:
./summer
.
扩展到当前目录的完整路径。
有时您可能想要在路径中添加位置,例如/opt/bin
或/home/user/bin
,但我不会添加.
,这有点笨拙。只需明确引用当前目录中的程序,如./program
。