gpt4 book ai didi

linux - 需要在终端(Linux/shell 文件)中使用管道命令的帮助

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:25 25 4
gpt4 key购买 nike

为需要使用终端中的命令完成的类(class)作业进行操作。我在主目录中创建了一个 shell 文件 (temp1.sh),并在文件夹 (randomFolder) 中创建了一个 shell 文件 (temp2.​​sh)。当我运行 temp2.​​sh 时,我需要显示 temp1.sh 中的字符数。我需要使用管道命令来完成此操作。

所以我认为我需要将目录更改为主目录,然后打开文件 temp1.sh 并使用 wc -c 命令来显示字符。我一直在尝试许多不同的方法来执行此任务,但不知何故无法使其工作。任何帮助,将不胜感激。不使用管道我可以让它工作,但在使用管道时我似乎无法正确写出此命令行。

到目前为止我做了什么:

cd ~
touch temp1.sh
chmod 755 temp1.sh
echo 'This file has other commands that are not relevant and work' >> temp1.sh
mkdir randomFolder
cd randomFolder
touch temp2.sh
chmod 755 temp2.sh
echo cd ~ | wc -c temp1.sh >> temp2.sh

最后一行告诉我运行后不存在这样的文件“temp1.sh”。如果我重定向到主页然后输入 wc -c temp1.sh,我会得到所需的输出。我希望在运行 temp2.​​sh 时出现此输出。

不使用管道命令的示例:

echo wc -c ~/temp1.sh >> temp2.sh

当我运行 temp2.​​sh 时,这会为我提供所需的输出。但是我需要在使用管道命令时完成此操作。

最佳答案

您的代码即将运行。第一部分很好:

cd ~
touch temp1.sh
chmod 755 temp1.sh
echo 'This file has other commands that are not relevant and work' >> temp1.sh
mkdir randomFolder
cd randomFolder
touch temp2.sh
chmod 755 temp2.sh

所有这些都应该有效。你的问题是这部分:

echo cd ~ | wc -c temp1.sh >> temp2.sh

您需要将 cd ~ 与运行某些命令并将输出通过管道传输到 wc 的东西分开,并将全部内容存储在 temp2.​​sh 中。这可能是这样的:

echo "cd $HOME" > temp2.sh
echo "cat temp1.sh | wc -c" >> temp2.sh

这里的关键点是对 cd 命令和 wc 命令使用单独的行。对第一个命令使用 > 可确保您在 temp2.​​sh 中不会出现之前失败尝试产生的杂散垃圾。您可以通过多种方式获得相同的结果,包括:

echo "cd; cat temp1.sh | wc -c" > temp2.sh
echo "cd ~; while read -r line; do echo "$line"; done < temp1.sh | wc -c" > temp2.sh

最后,您需要执行 temp2.​​sh。您可以使用其中任何一个,尽管其中一些(哪个?)取决于您的 PATH 设置方式:

./temp2.sh
temp2.sh
sh temp2.sh
sh -x temp2.sh
$HOME/randomFolder/temp2.sh
~/randomFolder/temp2.sh

关于linux - 需要在终端(Linux/shell 文件)中使用管道命令的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40354398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com