
必要に応じて親ディレクトリを作成するためのコマンド-p
オプションがありますmkdir
wolf@linux:~$ tree
.
0 directories, 0 files
wolf@linux:~$
wolf@linux:~$ mkdir dir1/dir2/dir3
mkdir: cannot create directory ‘dir1/dir2/dir3’: No such file or directory
wolf@linux:~$
wolf@linux:~$ tree
.
0 directories, 0 files
wolf@linux:~$
wolf@linux:~$ mkdir -p dir1/dir2/dir3
wolf@linux:~$
wolf@linux:~$ tree
.
└── dir1
└── dir2
└── dir3
3 directories, 0 files
wolf@linux:~$
vi
またはtouch
コマンドに同様の機能はありますか?
この場合、またはを使用して、authorized_keys
存在しないディレクトリにファイルを作成したいと思います。.ssh
vi
touch
authorized_keys はファイルであり、ディレクトリではありません。したがって、mkdir -p .ssh/authorized_keys
authorized_keys はファイルではなくディレクトリとして作成されるため、ここではコマンドは適用されません。
wolf@linux:~$ ls .ssh
ls: cannot access '.ssh': No such file or directory
wolf@linux:~$
mkdir .ssh
またはなしでこれを行うことは可能ですかmkdir -p .ssh
?
wolf@linux:~$ touch .ssh/authorized_keys
touch: cannot touch '.ssh/authorized_keys': No such file or directory
wolf@linux:~$
答え1
ディレクトリを作成するには~/.ssh
、ディレクトリ自体を作成させるのが最適ですssh
。そうすれば、適切な権限で作成されることがわかります。
ssh localhost
(または:!ssh localhost
内部からvi
)
そして、localhost のキーを受け入れると、その中にディレクトリとファイルがssh
作成されます。.ssh
known_hosts
内にディレクトリを作成するにはvi
、次のようにすることもできます。
:!mkdir -m a=,u=rwx .ssh
ではvim
、
:!mkdir -pm a=,u=rwx %:h
または独自の を使用しますmkdir()
:
:call mkdir(expand("%:h"),"p",0700)
%
現在編集されているファイルはどこにあり、 :h
csh/zsh と同様に dirname (head) を返します。頻繁に必要になる場合は、キーまたはキーの組み合わせ、またはカスタム関数にマップできますが、権限を指定する方法を見つける必要があります (ここではa=,u=rwx
、0700
所有者のみが読み取り + 書き込み + 検索権限を持ちます)。
mkdir+touch については、以下を参照してください。Zsh: 1 つのコマンドでディレクトリとその中にファイルを作成するにはどうすればよいでしょうか?
答え2
vi
私の知る限り、または を使用してディレクトリを強制的に作成することはできませんtouch
。
それでも、 を使用して作成するmkdir
か、フラグを使用して使用する必要があります-p
。
-p, --parents no error if existing, make parent directories as needed
vi
またはを使用してこれを行う方法がある場合はtouch
、お気軽に回答を更新してください。