假设我当前的工作目录是:
/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
,重定向不产生任何输出的实际命令,例如true
或printf
在任何 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