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

问题描述 投票:0回答:1

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

与此同时,我希望在编辑器中打开文件,使用nano命令。

通常在遵循教程时,我们必须创建文件并复制和粘贴其文件目录而不进行编辑,这样可以简化生活。

linux file nested directory mkdir
1个回答
2
投票

如果我理解正确并且您只是想发布command foo/bar/baz/myfile.txt(或类似的东西)并创建目录foo/bar/baz并在myfile.txt中创建并打开一个新文件nano,那么只需要一个简短的脚本,例如

使其可执行,例如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/scriptname。 Echo $ PATH确认/ usr / local / bin在你的路径中,然后就像任何程序,scriptname参数一样使用它。或者在某些发行版中,您只需将其添加到具有root访问权限的/bin文件夹即可。

#!/bin/bash

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

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

exec nano "$1"     ## open in nano

示例使用/输出

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

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

$ cat foo/bar/baz/main.c
My new source!
© www.soinside.com 2019 - 2024. All rights reserved.