Der Befehl ls zeigt keinen Ordner an, aber ich kann ihn nicht erstellen, da der Ordner bereits vorhanden ist

8

Ich benutze Ubuntu 16.04.

Schritt 1) ​​Ich habe mich in meinem rootBenutzerkonto angemeldet .

Schritt 2) Ich habe früher cdzum Home-Verzeichnis eines anderen Benutzerkontos navigiert.

Schritt 3) Ich habe getippt ls, um den Inhalt dieses Verzeichnisses zu untersuchen.

Schritt 4) Der Inhalt wurde als leer zurückgegeben.

Schritt 5) Ich habe eingegeben mkdir .ssh, um ein Verzeichnis zu erstellen.

Ergebnis) mkdir: cannot create directory '.ssh': File exists

Frage: Warum wird das Verzeichnis als leer aufgeführt, wenn darin ein .ssh-Ordner vorhanden ist?

- Update -

Ich habe mich bei root angemeldet, da dies ein Testserver ist. Ich erschaffe und zerstöre es wiederholt.

DR01D
quelle
benutze lloder lanichtls
phuclv
1
ll ist nur ein Alias, also benutze lieber ls -alF
Dennis Nolte
2
Ihr Prozess hat einen großen Fehler in Schritt 1.
Leichtigkeitsrennen im Orbit

Antworten:

35

lsselbst zeigt keine versteckten Verzeichnisse (versteckte Verzeichnisse und Dateien sind diejenigen , die mit einem Start ., wie .ssh)

Versuchen Sie es ls -aim Verzeichnis.

Aus der ls-Manpage:

-a, --all

Ignorieren Sie keine Einträge, die mit beginnen.

Wie in den Kommentaren erwähnt, sind "versteckte" Verzeichnisse und Dateien technisch gesehen keine Sache. Es gibt nur Code, der in viele gängige Tools integriert ist, die diese behandeln .und eine ..besondere Bedeutung haben. Das Ergebnis wird .von den meisten Tools normalerweise als "versteckt" angesehen. Der Grund, warum ich diesen Begriff verwendet habe, ist, dass es üblich ist, ihn so zu hören.

Zusätzlich .und ..normalerweise haben sie für die meisten Dateisysteme eine besondere Bedeutung und geben das aktuelle Verzeichnis bzw. das übergeordnete Verzeichnis an.

Patrick
quelle
4
Beachten Sie, dass "versteckte Verzeichnisse" an sich keine Sache sind, sondern versteckt, da ls einen speziellen Code hat, der sie nicht anzeigt, wenn sie mit einem Punkt beginnen.
PlasmaHH
2
@PlasmaHH Nun, lsund eine ganze Reihe anderer Tools. Aber im Prinzip haben Sie absolut Recht; Andererseits erfordert es selbst auf Systemen, die ihre Abstammung auf MS-DOS und seine Dateiattribute zurückführen, speziellen Code, um den Fall von "versteckten" Dateien zu behandeln (was bedeutet, dass "Dateien mit dem Satz versteckter Attribute" statt "Dateien, die" verwendet werden) habe auf diesem speziellen Formular ") benannt.
Ein CVn
3
@ MichaelKjörling: Bei vielen dieser Systeme ist es jedoch umgekehrt. Dort bitten Sie das System normalerweise, "mir alles zu geben", und wenn Sie versteckte Dateien anzeigen möchten, sagen Sie "gib mir alles plus das versteckte Zeug" oder "gib mir alles versteckte Zeug". Es ist also ein zusätzlicher Aufwand, Dateien auszublenden, und ein zusätzlicher Aufwand, um auch versteckte Dateien anzuzeigen.
PlasmaHH
12
Unterhaltsame Tatsache, die Erfindung von versteckten Dateien war ein Fehler, ls sollte nur verbergen .und ..so fügten sie Code hinzu, um zu sehen, ob es mit einem Punkt begann
Ferrybig
4
Ich bin besorgt über den Teil "eingeloggt als root", der mit einer offensichtlichen Unkenntnis von * nixes verbunden ist. Es wäre für OP sehr einfach, versehentlich etwas Wichtiges zu zerstören.
Shoover
4

Geben Sie in Schritt 3 Folgendes ein, ls -aum den Inhalt des Verzeichnisses aufzulisten.

Dateien oder Verzeichnisse, deren Name mit beginnt ., werden von ignoriert ls.

Bruce
quelle
0

.ssh ist ein verstecktes Verzeichnis, da es mit einem beginnt .

Verwenden Sie ls -astatt nur , um versteckte Dateien und Verzeichnisse aufzulisten ls.

Muhammed Sherief
quelle
1
.sshist keine Datei, es ist ein Verzeichnis
Ferrybig
7
Wie ist dies mehr als die akzeptierte Antwort, die 8 Stunden im Voraus gegeben wurde, oder die andere Antwort, die gleichzeitig mit der akzeptierten Antwort gegeben wurde?
Colt
-2

"." ist für versteckte Ordner / Dateien reserviert. lsStandardmäßig werden die versteckten Dateien und Verzeichnisse nicht aufgelistet. ("." und ".." sind zwei versteckte Standardverzeichnisse in einem beliebigen Verzeichnis). Verwenden Sie ls -aoder ls -al(wenn Sie weitere Details zu jeder Datei / jedem Ordner wünschen , um alle Dateien in einem Ordner anzuzeigen .

Chintan Parikh
quelle
-4

Zum Erstellen des Verzeichnisses müssen Sie das vorhandene Verzeichnis entfernen

Verwenden Sie rm -rf .ssh, um das Verzeichnis zu entfernen

Oder falls bereits vorhanden Sie können cd .ssh verwenden

Manoj Malviya
quelle