viまたはtouchを介して存在しないディレクトリを強制的に作成しますか? [コピー]

viまたはtouchを介して存在しないディレクトリを強制的に作成しますか? [コピー]

-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この場合、存在しないディレクトリにファイルを使用または作成したいと思います。.sshvitouch

Authorized_keys は、ディレクトリではなくファイルです。したがって、mkdir -p .ssh/authorized_keysAuthorized_keysはファイルではなくディレクトリとして生成されるため、ここではコマンドは適用されません。

wolf@linux:~$ ls .ssh
ls: cannot access '.ssh': No such file or directory
wolf@linux:~$ 

mkdir .sshORなしでこれを行うことはできますか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作成されます。.sshknown_hosts

からディレクトリを作成するには、vi次のこともできます。

:!mkdir -m a=,u=rwx .ssh

ではvimできます

:!mkdir -pm a=,u=rwx %:h

またはあなた自身のものを使用してくださいmkdir()

:call mkdir(expand("%:h"),"p",0700)

%現在編集されているファイルがある場所では、:hcsh / zshと同様にディレクトリ名(ヘッダ)を返します。頻繁に必要に応じて権限を指定する方法を見つける必要がありますが、キー、キーの組み合わせ、またはカスタム機能にマッピングできます。したがって、a=,u=rwx所有者0700だけが読み取り+書き込み+検索権限を持ちます。それ)。

mkdir+touch については、以下を参照してください。Zsh:1つのコマンドでディレクトリを作成し、その中にファイルを作成する方法は?

答え2

viAFAIK、ディレクトリを強制的に使用または作成することはできませんtouch

mkdirこれを生成するには、有効または-p使用するにはフラグを指定する必要があります。

-p, --parents     no error if existing, make parent directories as needed

viまたはを使用してこれを行う方法がある場合は、touchいつでも回答を更新してください。

関連情報