Bash - Katze versteckt . Datei oder schreiben Sie
Sagen wir mal ich mache eine Datei .history.txt:
touch .history.txt
und ich versuche, zu schreiben:
cat > .history.txt
nachdem Sie dies getan haben, dass alles was ich bekomme ist:
bash: .history.txt: is a directory
Was ich brauche, ist in der Lage zu schreiben einen text dazu, wie ich wäre in der Lage, jede normale Datei. Irgendwelche Ideen, was ich falsch mache?
- Sie verwendet
mkdir .history.txt
irgendwann (oder etwas anderes Tat) und Sie haben ein Verzeichnis anstelle einer Datei. Was bedeutetls -ld .history.txt{,/*}
sagen? - Etwas anderes muss es getan haben, denke ich, aber wie kann ich eigentlich eine Datei?
- Eine Datei muss nicht existieren, zu schreiben.
cat > .history.txt
sollte sich auf seine eigenen. Sie müssen entweder entfernen Sie das vorhandene Verzeichnisrm -rf .history.txt
oder verwenden Sie einen anderen Dateinamen. - Die Methoden, die Sie Liste eine Datei. Verwenden
ls -a
zu zeigen, Dateien und Verzeichnisse, die bereits existieren, und löschen Sie entweder einige oder wählen Sie eine nicht verwendete name. Die "dot bedeutet hidden" übereinkommens unerheblich ist. touch
hätte erstellt eine leere Datei, wenn ein Verzeichnis nicht bereits existiert. That being said, so wäre dascat
Befehl als hätte: > .history.txt
. Die shell erstellt die Ausgabedatei, ob oder ob nicht der Befehl schreibt etwas oder sogar korrekt läuft (D. H.no-such-command > .history.txt
erstellen der Datei auch).- Weil soweit ich weiß
touch file
sollte eine Datei im Gegensatz zu mkdir - Eine Datei unbedingt braucht, um zu existieren (für eine definition von "existieren") zu schreiben. Die shell erstellt die Datei für Sie mit
cat > .history.txt
. touch
hat Dateien zu erzeugen, aber das ist ein Nebeneffekt in Sinne.touch
updates Zeitstempel auf was auch immer Argumente, die es bekommt (Datei oder Verzeichnis).- Danke für Eure Antworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Datei muss nicht bereits vorhanden sein, damit die Umleitung der Ausgabe (es wird die shell die Datei erstellen, wenn notwendig). Aber Bash ist Ihnen zu sagen, dass
.history.txt
bereits existiert und ist ein Verzeichnis, so können Sie es nicht zu schreiben.Müssen Sie entweder entfernen Sie das vorhandene Verzeichnis
rm -rf .history.txt
oder verwenden Sie einen anderen Dateinamen. Danncat > .whatever.txt
sollte sich auf seine eigenen.find history.txt
sicherlich nicht Schaden.*.txt
sind Verzeichnisse sind immer ein Unfall.