在不更改当前目录的情况下,在 Linux 中的另一个目录中创建一个空文件?

在不更改当前目录的情况下,在 Linux 中的另一个目录中创建一个空文件?

假设我当前的工作目录是:

    /Users/Directories

在“目录”下,有两个单独的目录,称为:名字和姓氏。我进入第一个名称目录:

    $ cd firstname

在名字中,我想创建一个名为 test1.txt 的空文件,所以我输入:

    $ touch test1.txt

这就是我陷入困境的地方:在不保留名字的情况下,我想在姓氏目录中创建一个名为 test2.txt 的文件。我已经尝试过这个,但似乎不起作用。提前致谢。

    $ touch test2.txt../lastname

答案1

就这样:

$ touch ../lastname/test2.txt

touch请注意,您可以使用代替>

$ > ../lastname/test2.txt

您还可以使用绝对路径

$ > /Users/Directories/lastname/test2.txt

请注意,如果文件事先存在,它会截断文件,而touch只会更新其访问权限和上次修改时间。


¹ 不是在 (t)csh 中,也不是在会出现错误的 Fish 中,也不是在 zsh 中,它会运行$NULLCMD,重定向不产生任何输出的实际命令,例如trueprintf在任何 shell 中都可以工作。

答案2

如果您想在一个命令中创建多个文件:

$ touch ../lastname/{test1.txt,test2.txt,test3.txt}

或者甚至在这里专门:

$ touch ../lastname/test{1,2,3}.txt

它使用大括号扩展,这是 C-shell 在 70 年代末引入的功能,并被许多其他 shell 复制,包括 zsh、bash 和 Fish。在某些 shell(例如 yash 和 ksh 的某些版本/版本)中,默认情况下未启用它,您需要set -o braceexpand.它不是标准的,不应在sh脚本中使用。

在 90 年代,zsh 将其扩展为支持数字范围,因此(以及后来复制它的其他一些 shell,包括 ksh93 和 bash),您还可以执行以下操作:

$ touch ../lastname/test{1..3}.txt

shell 及其派生中的等效语法rc是:

$ touch ../lastname/test^(1 2 3)^.txt

相关内容