bash:如何 cd 进入 .txt 文件第一行写入的目录

0 bash cd

我是 bash 脚本新手。我有一个名为dir.txt存储此文本的文件:

./src/defaultPackage

Run Code Online (Sandbox Code Playgroud)

如何在一行中读取dir.txt并切换到目录?./src/defaultPackage

我已经尝试过cat ./dir.txt | xargs cdcd抛出no such file or directory错误

Bas*_*tch 5

你可以做

 cd "$(head -1 dir.txt)"
Run Code Online (Sandbox Code Playgroud)

有关解释,请阅读GNU bash手册,然后阅读 head(1)。在某些情况下(例如,如果dir.txt包含注释)您可能需要使用gawk(1)而不是head.

请注意,xargs(1)不能与任何bash-builtins(7)一起使用,包括cd; xargs需要一个可执行文件(或脚本),因为它使用exec(3)函数。请参阅execve(2)elf(5)

您可能想阅读《高级 Linux 编程系统调用》(2) ,然后研究GNU bash的源代码,它是免费软件。您可能有兴趣使用strace(1)ltrace(1)gdb(1)来了解程序或进程的行为,包括Unix shell

当然,请避免文件或目录名称中出现奇怪的字符,例如换行符、制表符或空格。请参阅path_resolution(7)glob(7)

您可以考虑使用GNU guile(请参阅SICP)或Python作为您的脚本。bash两者都比zshFish更具可读性(在我看来,更容易编写)。当然,在脚本上使用分布式版本控制系统(例如gitMercurial )。

您可能对Linux From Scratch感兴趣。