
Hay -p
opciones en mkdir
el 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 vi
o touch
comando?
En este caso, me gustaría crear un archivo authorized_keys
en un directorio inexistente .ssh
con vi
o touch
.
Authorized_keys es un archivo y no un directorio. Por lo tanto, mkdir -p .ssh/authorized_keys
el 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 .ssh
o 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 ~/.ssh
directorio, lo mejor es dejar que ssh
lo cree usted mismo, así sabrá que se creará con los permisos correctos.
ssh localhost
(o :!ssh localhost
desde dentro vi
)
Y acepte la clave para localhost, se creará ssh
el .ssh
directorio y un known_hosts
archivo 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, :h
al 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=rwx
solo 0700
el 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 vi
o touch
.
Aún necesitas crearlo con mkdir
o usarlo con -p
flag.
-p, --parents no error if existing, make parent directories as needed
Si hay una manera de hacerlo con vi
o touch
, no dude en actualizar la respuesta.