假设我的当前目录是A。我想在 B 中创建一个目录B和一个文件“myfile.txt” 。
如何在终端的一个命令中做到这一点?
编辑:
目录可以嵌套多次。就像我可能想在其中创建B/C/D然后“myfile.txt”。我也不想重复目录部分。
以下命令将在任何级别创建目录。
mkdir -p B/C/D
和
mkdir -p B/C/D && touch B/C/D/myfile.txt
将创建目录和文件。但我不想在touch
命令之后重复目录部分。那可能吗?
假设我的当前目录是A。我想在 B 中创建一个目录B和一个文件“myfile.txt” 。
如何在终端的一个命令中做到这一点?
编辑:
目录可以嵌套多次。就像我可能想在其中创建B/C/D然后“myfile.txt”。我也不想重复目录部分。
以下命令将在任何级别创建目录。
mkdir -p B/C/D
和
mkdir -p B/C/D && touch B/C/D/myfile.txt
将创建目录和文件。但我不想在touch
命令之后重复目录部分。那可能吗?
mkdir B && touch B/myfile.txt
或者,创建一个函数:
mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }
使用 2 个参数执行它:创建路径和文件名。说:
mkfile B/C/D myfile.txt
myfile.txt
将在目录中创建文件B/C/D
。
为此,您可以创建自己的函数。例如:
$ echo 'mkfile() { mkdir -p "$(dirname "$1")" && touch "$1" ; }' >> ~/.bashrc
$ source ~/.bashrc
$ mkfile ./fldr1/fldr2/file.txt
解释:
~/.bashrc
使用echo
命令将函数插入文件末尾-p
标志用于创建嵌套文件夹,例如fldr2
~/.bashrc
文件source
mkfile
函数创建文件只需下面一个简单的命令就足够了。
mkdir a && touch !$/file.txt
谢谢
您可以创建一个解析参数的函数sed
;
atouch() {
mkdir -p $(sed 's/\(.*\)\/.*/\1/' <<< $1) && touch $1
}
然后,用一个参数执行它:
atouch B/C/D/myfile.txt
1-使您自己的命令将其添加到〜/ .bashrc:
function mkfile() {
mkdir -p "$1" && touch "$1"/"$2"
}
保存,然后在不重新启动或注销的情况下使其可用,执行:$ source ~/.bashrc
然后您可以使用它:mkfile myfolder myfile.txt
2-或没有新命令,您只需键入:
$ mkdir folder && touch $_/file.txt
请注意 $_ = 此处的文件夹
mkdir -p Python/Beginner/CH01 && touch $_/hello_world.py
说明:-p -> 如果你想创建父目录和子目录,使用 -p $_ -> 将它用于当前目录,我们使用它内联
devnull 的回答提供了一个功能:
mkfile() { mkdir -p -- "$1" && touch -- "$1"/"$2" }
这个功能对我不起作用(我在 WSL Ubuntu 上运行 bash 4.3.48),但是一旦我删除了双破折号,它就起作用了。所以,这对我有用:
echo 'mkfile() { mkdir -p "$1" && touch "$1"/"$2" }' >> ~/.bash_profile
source ~/.bash_profile
mkfile sample/dir test.file
您可以安装脚本;
pip3 install --user advance-touch
安装后,可以使用 ad 命令
ad airport/plane/captain.txt
airport/
├── plane/
│ ├── captain.txt
下面是我在Windows 10 机器上使用 git-bash尝试的命令。这对我有用。假设我想创建一个名为“Files”的目录,在这个目录下我想有“file1.txt,file2.txt,file3.txt”..etc 文件
mkdir Files && touch $_/file1.txt $_/file2.txt $_/file3.txt
这可能有效:
mkdir {{FOLDER NAME}}
cd {{FOLDER NAME}}
touch {{FOLDER NAME}}/file.txt