¿Forzar la creación de un directorio inexistente a través de vi o táctil?

¿Forzar la creación de un directorio inexistente a través de vi o táctil?

Hay -popciones en mkdirel comando para crear directorios principales según sea necesario

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:~$ 

¿Hay características similares en vio touchcomando?

En este caso, me gustaría crear un archivo authorized_keysen un directorio inexistente .sshcon vio touch.

Authorized_keys es un archivo y no un directorio. Por lo tanto, mkdir -p .ssh/authorized_keysel comando no se aplica aquí ya que las claves_autorizadas se crearán como un directorio, no como un archivo.

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

¿Sería posible hacer esto sin mkdir .ssho mkdir -p .ssh?

wolf@linux:~$ touch .ssh/authorized_keys
touch: cannot touch '.ssh/authorized_keys': No such file or directory
wolf@linux:~$ 

Respuesta1

Para crear el ~/.sshdirectorio, lo mejor es dejar que sshlo cree usted mismo, así sabrá que se creará con los permisos correctos.

ssh localhost

(o :!ssh localhostdesde dentro vi)

Y acepte la clave para localhost, se creará sshel .sshdirectorio y un known_hostsarchivo dentro.

Para crear el directorio dentro de vi, también puedes hacer:

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

En vim, puedes hacer

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

o usando el suyo propio mkdir():

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

¿Dónde %está el archivo actualmente editado y, :hal igual que en csh/zsh, devuelve el nombre del directorio (encabezado)? Puede asignarlo a una tecla o combinación de teclas o función personalizada si la necesita con frecuencia, aunque necesitaría encontrar una manera de especificar los permisos (aquí a=,u=rwxsolo 0700el propietario tiene permiso de lectura+escritura+búsqueda) .

Acerca de mkdir+touch, consulte:Zsh: ¿Cómo crear un directorio y un archivo dentro de él con un solo comando?

Respuesta2

AFAIK, no puedes forzar la creación de un directorio con vio touch.

Aún necesitas crearlo con mkdiro usarlo con -pflag.

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

Si hay una manera de hacerlo con vio touch, no dude en actualizar la respuesta.

información relacionada