Unix - 创建文件夹路径和文件

15 浏览
0 Comments

Unix - 创建文件夹路径和文件

我知道你可以使用mkdir来创建目录,使用touch来创建文件,但是有没有办法一次性完成这两个操作呢?\n例如,如果我在文件夹other不存在时想要执行以下操作:\n

cp /my/long/path/here/thing.txt /my/other/path/here/cpedthing.txt

\n错误信息:\n

cp: 无法创建常规文件 '/my/other/path/here/cpedthing.txt': 没有那个文件或目录

\n有没有人想出了一个绕过这个问题的函数呢?

0
0 Comments

在Unix中,当需要创建文件夹和文件路径时,有时会遇到一些问题。下面的内容提供了一些解决方法。

在Unix中,可以使用/usr/bin/install命令来创建文件夹和文件路径。例如,使用以下命令可以将文件thing.txt复制到/my/other/path/here/cpedthing.txt:

install -D /my/long/path/here/thing.txt /my/other/path/here/cpedthing.txt

如果没有源文件,可以使用以下命令来创建文件夹和文件路径:

install -D <(echo 1) /my/other/path/here/cpedthing.txt

有人对这个工具(install命令)的存在感到惊讶,但实际上它是一个更好的解决方案。可以通过man命令来查看install命令的更多信息。

另外,还可以使用-D /dev/null来创建文件夹和文件路径。这个方法更容易记住。

需要注意的是,默认情况下,这些命令会创建可执行文件。如果需要设置其他文件模式,可以使用-m选项。

总结起来,上述内容提供了在Unix中创建文件夹和文件路径的解决方法。通过使用install命令,可以轻松地实现这一目标。

0
0 Comments

在Unix系统中创建文件夹路径和文件的问题是因为需要先创建所有的父目录。解决方法是使用mkdir命令和touch命令来创建目录和文件。

首先,可以使用以下命令来创建目录和文件:

FILE=./base/data/sounds/effects/camera_click.ogg
mkdir -p "$(dirname "$FILE")" && touch "$FILE"

这个命令使用了dirname命令来获取父目录的路径,并使用mkdir命令创建父目录。然后,使用touch命令创建文件。

另外,也可以创建一个函数来实现相同的功能。可以使用以下命令创建一个名为mktouch的函数:

mktouch() {
    if [ $# -lt 1 ]; then
        echo "Missing argument";
        return 1;
    fi
    for f in "$@"; do
        mkdir -p -- "$(dirname -- "$f")"
        touch -- "$f"
    done
}

这个函数会检查参数是否为空,如果为空则输出"Missing argument"并返回错误代码。然后,使用循环来遍历所有的参数,使用mkdir命令创建父目录,并使用touch命令创建文件。

可以像使用其他命令一样使用mktouch函数,例如:

mktouch ./base/data/sounds/effects/camera_click.ogg ./some/other/file

以上就是在Unix系统中创建文件夹路径和文件的问题的原因和解决方法。无论是使用命令行命令还是自定义函数,都可以轻松地创建所需的目录和文件。

0
0 Comments

在Unix中,有时我们需要创建文件夹和文件的路径。下面的内容介绍了如何使用&&来组合两个命令在一个shell行中执行。

COMMAND1 && COMMAND2
mkdir -p /my/other/path/here/ && touch /my/other/path/here/cpedthing.txt

上面的示例代码中,首先使用mkdir -p命令创建了一个文件夹路径/my/other/path/here/。然后使用touch命令在该路径下创建了一个文件cpedthing.txt

之前,我推荐使用;来分隔两个命令,但正如其中提到的,使用&&在大多数情况下可能更好,因为如果COMMAND1失败,COMMAND2也不会被执行。否则,这可能会导致一些意外问题。

使用&&更好,因为与;一样,如果第一个命令失败,第二个命令仍然会运行(并且也会失败,因为该目录尚不存在)。而使用&&,如果第一个命令失败,第二个命令不会运行。

代码示例的一个快捷方式是:mkdir -p /my/other/path/here && touch $_/cpredthing.txt$_扩展为最后一个执行的命令中的"最后一个参数"。

你的回答可能是正确的。它不仅更简洁,而且更不容易出错。

我真希望touch命令能像mkdir命令一样接受-p参数。

0