Ich habe dies und das gelesen und festgestellt, dass mein Problem anders und spezifischer ist.
Ich verstehe die folgenden Punkte.
- + x im Verzeichnis gewährt Zugriff auf Dateien inodes über dieses bestimmte Verzeichnis
- Metainformationen einer Datei, die von verwendet wird
ls -l
, werden in ihrem i-Knoten gespeichert, aber der Dateiname gehört nicht dazu
Von den beiden oben genannten Punkten sollte, da ls
ohne -l
nicht auf die i-Knoten der Dateien im Verzeichnis zugegriffen werden muss, die Dateinamen erfolgreich aufgelistet und 0 zurückgegeben werden.
Als ich es auf meinem Computer ausprobierte, wurden die Dateinamen aufgelistet, aber es gab einige Warnungen wie permission denied
, und der Rückkehrcode ist 1.
b03705028@linux7 [~/test] chmod 500 permission/
b03705028@linux7 [~/test] ls --color=no permission/
f1*
b03705028@linux7 [~/test] chmod 400 permission/
b03705028@linux7 [~/test] ls --color=no permission/
ls: 無法存取 'permission/f1': 拒絕不符權限的操作
f1
b03705028@linux7 [~/test] echo $0
bash
Die chinesischen Schriftzeichen sprechen grundsätzlich darüber permission denied
Meine Unix-Distribution ist Linux 4.17.11-arch1
permissions
directory
ls
David Chen
quelle
quelle
rm -rf lala; mkdir lala; chmod 400 lala; command ls lala
ist für mich erfolgreich. Das stelltcommand
nur sicher, dass kein Alias vonls
verwendet wird. Könnten Sie bitte Ihre Frage mit den genauen Befehlen erweitern, die Sie eingeben, um das Problem anzuzeigen? (dh machen Sie eine minimale Arbeitsdemonstration von dem, was Sie beobachten)echo $0
überprüfe, ob ich auch benutzebash
. Darf ich fragen, welche Unix-Distribution Sie verwenden? Ich habe das Problem so aktualisiert, dass es die von mir verwendeten Befehle enthält./bin/ls
direkt laufen ? Es ist sehr wahrscheinlich, dass Sie einen Alias oder eine Funktion in Ihrer Shell haben, die versucht, Dateistatistiken abzurufen. Das*
am Endef1
lässt mich denken, dass es die-F
Flagge gibtls
Alias ist und das-F
Flag verwendet, um die Füllungen zu klassifizieren, siehels
(1). Dies würde versuchen, darauf zuzugreifenf1
, um es zu klassifizieren und ein Sternchen anzuhängen. Mitls --color=no
nur an den Alias anhängen. Versuchen Sie escommand ls
stattdessen. Ich benutze ArchLinux, sollte keinen Unterschied machen.Antworten:
Ich vermute
ls
in Ihrem Fall ist ein Alias für so etwasls --color=auto
; In diesem Fall wirdls
versucht, Informationen zu den im Verzeichnis enthaltenen Dateien zu finden, um festzustellen, welche Farbe verwendet werden soll.sollte das Verzeichnis auflisten, ohne sich zu beschweren.
Wenn es sich immer noch beschwert, verwenden Sie möglicherweise eine andere Option, wie
-F
oder--classify
, die auf Dateimetadaten zugreifen muss (-F
/--classify
betrachtet beispielsweise den Dateityp).ls
Verwenden Sie eine der folgenden Optionen, um sicherzustellen, dass Sie ohne Alias ausgeführt werdenoder
ls
Verwenden Sie zum Entfernen eines Alias fürquelle
ls --color=no
, aber das Ergebnis ist genau das gleiche. Ich habe auch überprüft/etc/bash.bashrc
und~/.bashrc
, und es gibt keine solchen Aliase. Vermisse ich etwastype ls
zurück?ls is alias of「ls --color -F」
Ich denke-F
hier ist der Grund, warum ich immer noch den Rückkehrcode als 1 bekomme, selbst wenn ich ihn benutze--clor=no
?~/.bashrc
Datei einfügen .