我是 bash 脚本新手。我有一个名为dir.txt存储此文本的文件:
./src/defaultPackage
Run Code Online (Sandbox Code Playgroud)
如何在一行中读取dir.txt并切换到目录?./src/defaultPackage
我已经尝试过cat ./dir.txt | xargs cd但cd抛出no such file or directory错误
你可以做
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两者都比zsh或Fish更具可读性(在我看来,更容易编写)。当然,在脚本上使用分布式版本控制系统(例如git或Mercurial )。
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |