
Existem -p
opções no mkdir
comando para criar diretórios pais conforme necessário
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:~$
Existem recursos semelhantes em vi
ou touch
comando?
Neste caso, gostaria de criar um arquivo authorized_keys
em um diretório inexistente .ssh
com vi
ou touch
.
autorizado_keys é um arquivo e não um diretório. Portanto, mkdir -p .ssh/authorized_keys
o comando não é aplicável aqui, pois as chaves_autorizadas serão criadas como um diretório, não como um arquivo.
wolf@linux:~$ ls .ssh
ls: cannot access '.ssh': No such file or directory
wolf@linux:~$
Seria possível fazer isso sem mkdir .ssh
ou mkdir -p .ssh
?
wolf@linux:~$ touch .ssh/authorized_keys
touch: cannot touch '.ssh/authorized_keys': No such file or directory
wolf@linux:~$
Responder1
Para criar o ~/.ssh
diretório, o melhor é deixá- ssh
lo criá-lo, então você saberá que ele será criado com as permissões corretas.
ssh localhost
(ou :!ssh localhost
de dentro vi
)
E aceitar a chave para localhost fará com que ssh
o .ssh
diretório e um known_hosts
arquivo sejam criados dentro dele.
Para criar o diretório dentro de vi
, você também pode fazer:
:!mkdir -m a=,u=rwx .ssh
Em vim
, você pode fazer
:!mkdir -pm a=,u=rwx %:h
ou usando o seu próprio mkdir()
:
:call mkdir(expand("%:h"),"p",0700)
Onde %
está o arquivo atualmente editado e :h
como em csh/zsh retorna o dirname (head). Você pode mapear isso para uma tecla ou combinação de teclas ou função personalizada se precisar dela com frequência, embora precise encontrar uma maneira de especificar as permissões (aqui a=,u=rwx
/ 0700
então apenas o proprietário tem permissão de leitura + gravação + pesquisa para isso) .
Sobre mkdir+touch, veja:Zsh: Como criar um diretório e arquivo dentro dele com um comando?
Responder2
AFAIK, você não pode forçar a criação de um diretório com vi
ou touch
.
Você ainda precisa criá-lo mkdir
ou usá-lo com -p
sinalizador.
-p, --parents no error if existing, make parent directories as needed
Se houver uma maneira de fazer isso vi
ou touch
, sinta-se à vontade para atualizar a resposta.