bash:如何将CD刻录到.txt文件第一行中写入的目录中

我是bash脚本编写方面的新手。我有一个名为dir.txt的文件,用于存储以下文本:

./src/defaultPackage

如何阅读dir.txt并单行切换到目录./src/defaultPackage

我尝试了cat ./dir.txt | xargs cd,但是cd抛出了no such file or directory错误

iCMS 回答:bash:如何将CD刻录到.txt文件第一行中写入的目录中

你可以做

 cd "$(head -1 dir.txt)"

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

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

您可能需要阅读Advanced Linux Programmingsyscalls(2),然后研究GNU bash的源代码,即free software。您可能会对使用strace(1)ltrace(1)gdb(1)来了解程序或processes(包括您的Unix shell)的行为感兴趣。

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

您可以考虑将GNU guile(请参阅thisSICP)或Python用于脚本。两者比bash甚至zshfish更具可读性(我认为更容易写)。当然,请在脚本上使用distributed version control系统(例如gitmercurial)。

您可能对Linux From Scratch感兴趣。

,

仅使用内置函数:

 ##[warning]No .MSI files were found,please check your build-configuration. If this is expected,you might consider to use the default Visual Studio Build task instead of this custom Installer task.
2018-11-28T22:58:54.1434410Z ##[section]Finishing: Create .msi file(s) from VS Installer project(s).

要从文件中读取一行,请使用IFS= read -r line < dir.txt cd -- "$line" (而不要使用read / head / cat /任何东西)。

出现错误的原因是sed是内置函数,而不是cd中的命令:PATH不能用作外部命令,它会更改外壳的内部状态。

请注意,如果该行为空,则将cdcd。为避免这种情况:

$HOME
本文链接:https://www.f2er.com/2157320.html

大家都在问