在单个命令行中创建文件和嵌套目录

Create file along with nested directory in single command line

我想在尚不存在的目录 a/b/c 中创建一个文件 abc.php。我需要用这样的单个命令来完成它 mkfile a/b/c/abc.php 我检查了 this 解决方案,它建议这样的解决方案 mkfile a/b/c abc.php

除此之外,我希望在使用 nano 命令的编辑器中打开文件。

通常在学习教程时我们必须创建文件并复制和粘贴他们的文件目录而不编辑使生活更简单。

如果我理解正确,您只是希望能够发出 command foo/bar/baz/myfile.txt(或类似的东西)并创建目录 foo/bar/baz 并创建并打开一个新文件 myfile.txtnano 中全部通过一个命令,那么您只需要一个简短的脚本,例如

使其可执行 例如mv nanoopen.sh scriptname; chmod 0755 scriptname,然后直接调用./scriptname foo/bar/baz/file.txt。如果你把它放在你的路径中,你也可以跳过 ./.

将它放在您的路径中的简单方法是在 /usr/local/bin 中创建一个指向它的符号链接,这通常位于默认路径中。 所以你可以(有时需要超额)ln -s /path/to/nanoopen.sh /usr/local/bin/scriptnameEcho $PATH 以确认 /usr/local/bin 在您的路径中,然后像任何程序一样使用它,scriptname 参数。 或者在某些发行版中,您可以简单地将它添加到具有根访问权限的 /bin 文件夹中。

#!/bin/bash

[ -z "" ] && {  ## validate one argument given
    printf "error: insufficient input\nusage: %s filename\n" "${0##*/}"
    exit 1    
}

[ "" != "${1##*/}" ] && mkdir -p "${1%/*}"  ## if it has directories, create
touch ""                                    ## create the file

exec nano ""     ## open in nano

例子Use/Output

$ bash nanoopen.sh foo/bar/baz/main.c

$ tree foo/
foo/
└── bar
    └── baz
        └── main.c

$ cat foo/bar/baz/main.c
My new source!