
Es gibt -p
im mkdir
Befehl die Möglichkeit, bei Bedarf übergeordnete Verzeichnisse zu erstellen
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:~$
Gibt es ähnliche Funktionen in vi
unserem touch
Befehl?
In diesem Fall möchte ich eine Datei mit oder authorized_keys
in einem nicht vorhandenen Verzeichnis erstellen ..ssh
vi
touch
authorized_keys ist eine Datei und kein Verzeichnis. Daher mkdir -p .ssh/authorized_keys
ist der Befehl hier nicht anwendbar, da authorized_keys als Verzeichnis und nicht als Datei erstellt wird.
wolf@linux:~$ ls .ssh
ls: cannot access '.ssh': No such file or directory
wolf@linux:~$
Wäre es möglich, dies ohne mkdir .ssh
oder zu tun mkdir -p .ssh
?
wolf@linux:~$ touch .ssh/authorized_keys
touch: cannot touch '.ssh/authorized_keys': No such file or directory
wolf@linux:~$
Antwort1
~/.ssh
Am besten lassen Sie das Verzeichnis ssh
von selbst erstellen. Dann wissen Sie, dass es mit den richtigen Berechtigungen erstellt wird.
ssh localhost
(oder :!ssh localhost
von innen vi
)
Und wenn Sie den Schlüssel für „localhost“ akzeptieren, werden das Verzeichnis und eine Datei darin ssh
erstellt ..ssh
known_hosts
Um das Verzeichnis darin zu erstellen vi
, können Sie auch Folgendes tun:
:!mkdir -m a=,u=rwx .ssh
In vim
können Sie
:!mkdir -pm a=,u=rwx %:h
oder mit einem eigenen mkdir()
:
:call mkdir(expand("%:h"),"p",0700)
Wo %
ist die aktuell bearbeitete Datei und :h
gibt wie in csh/zsh den Verzeichnisnamen (Kopf) zurück. Sie können das einer Taste oder Tastenkombination oder einer benutzerdefinierten Funktion zuordnen, wenn Sie es häufig benötigen, allerdings müssten Sie eine Möglichkeit finden, die Berechtigungen anzugeben (hier a=,u=rwx
/ 0700
damit nur der Eigentümer Lese-, Schreib- und Suchberechtigung dafür hat).
Informationen zu mkdir+touch finden Sie unter:Zsh: Wie erstelle ich mit einem Befehl ein Verzeichnis und eine Datei darin?
Antwort2
Soweit ich weiß, können Sie mit vi
oder die Erstellung eines Verzeichnisses nicht erzwingen touch
.
Sie müssen es noch mit erstellen mkdir
oder mit Flag verwenden -p
.
-p, --parents no error if existing, make parent directories as needed
Wenn es eine Möglichkeit gibt, dies mit vi
oder zu tun touch
, können Sie die Antwort gerne aktualisieren.