Ist es möglich, eine Datei über das Terminal nicht anhand ihres Namens, sondern anhand ihrer Position (Nummer) im Ordner zu öffnen? Oder irgendeine andere Option?
Weil der Name zu lang ist.
command-line
files
directory
yh yeah
quelle
quelle
Tab
Taste zu drücken?Antworten:
Wahrscheinlich haben Sie die Tab-completion (siehe hier ) noch nicht entdeckt .
Während Sie einen Dateinamen in Terminal eingeben, geben Sie einfach die ersten Buchstaben ein und drücken Sie Tabund sehen Sie Magic!
quelle
*
, wenn Sie aus irgendeinem Grund die Tabulatorvervollständigung nicht verwenden möchten. Oder selbst*abc*
wenn der Dateinameabc
irgendwo enthält (versuchen Sie, ein für den gewünschten Dateinamen eindeutiges Untermuster zu verwenden). Oder kopieren Sie den Dateinamen einfach mit der Maus.Nur zum Spaß, buchstäblich die Frage zu beantworten:
Wie es in der Praxis funktioniert
Der Inhalt des aktuellen Verzeichnisses wird nummeriert aufgelistet. Wählen Sie die Nummer und der Artikel wird geöffnet:
Installieren
...ist einfach:
Melden Sie sich ab und wieder an und verwenden Sie den Befehl, indem Sie einfach Folgendes eingeben
im Terminal
NB
Wenn Sie auch versteckte Dateien anzeigen möchten, ändern Sie
in:
quelle
~/bin
es nicht bereits in Ihrem PATH enthalten ist, müssen Sie es hinzufügen (z. B. eine Zeile wieexport PATH="$PATH:~/bin"
in.bashrc
oder.profile
source ~/.profile
.~/bin
ist überhaupt nicht in irgendetwas eingebaut. Ubuntu und Debian werden mit Custom ausgeliefert~/.profile
, das Linien hatif [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi
. Unter Mac OS X und CentOS müssen Sie dies selbst konfigurieren. Eine gute Chance besteht darin, dass, wenn Ubuntu einer Person von der IT-Abteilung zur Verfügung gestellt wird, die Wahrscheinlichkeit groß ist, dass Ubuntu~/.profile
nicht mit dem Standard-Ubuntu identisch~/bin
ist. Bash kann auch ignorieren,~/.profile
wenn Sie die Shell mit der--no-profile
OptionEs gibt eine wenig bekannte Funktion in Bash, mit der Sie dies tun können, ohne Python oder ein anderes Tool von Drittanbietern aufzurufen, und mit einer einzigen Zeile:
quelle
open
Normalerweise funktioniert dies jedoch nicht (es sei denn, Sie verwenden Mac OS).xdg-open
wird wahrscheinlich den Trick auf den meisten GNU / Linux Systemen machen.In der reinen Bash mit der
select
Anweisung:Das Einstellen von PS3 ist nur ein Kinderspiel. Wenn Sie es weglassen, erhalten Sie nur die Standard-Eingabeaufforderung. Wenn Sie die break-Anweisung weglassen, wird die select-Anweisung so lange wiederholt, bis Sie STRG-D oder STRG-C drücken.
Natürlich können Sie es auch als Einzeiler betreiben:
quelle
Sie können
mc
Midnight Commander installieren und verwenden . Es handelt sich um eine Textbenutzeroberfläche mit Menüs usw., die vom alten Norton Commander inspiriert wurde und bei der Verwendung von MSDOS (vor Windows) beliebt war.und starten Sie es in einem Terminalfenster oder in einem Textbildschirm,
quelle
$ ls
Wie wäre es mit
ls | sed -n 3p
Druckt den 3. Dateinamen
Templates
Öffne es-
xdg-open "$(ls | sed -n 3p)"
Funktioniert normalerweise.
Schreiben Sie es in ein Skript
Name des Skripts: offen
Speichern Sie es im Home-Ordner. Lauf:
quelle
ls
ls
(und was stattdessen tun)?Auf Linux-Dateisystemen haben Dateinamen eine sehr interessante Eigenschaft namens inode : Ein Verzeichnis (oder Ordner) ist eine Liste von Inodes und welche Dateinamen auf diese Inodes verweisen. Wenn Sie also die Inode-Nummer kennen, können Sie versuchen, die Datei mit dem
find
Dienstprogramm zu finden und bestimmte Vorgänge auszuführen. Dies ist besonders nützlich, wenn Sie mit Dateinamen in einem anderen Gebietsschema oder mit Sonderzeichen arbeiten oder wenn Sie versehentlich ein Verzeichnis mit dem Namen erstellt haben~
.Beispielsweise,
Dies durchläuft das aktuelle Arbeitsverzeichnis (dargestellt durch
.
) und sucht nach einem Verzeichniseintrag, der eine Datei mit der Inode-Nummer 1103743 ist. Wenn die Datei gefunden wird,xdg-open
wird die Datei mit der Standardanwendung geöffnet undfind
anschließend beendet. Der Grund für das Extra-and
und-quit
ist das Verhindern desxdg-open
erneuten Öffnens der Datei, wenn feste Links zu der Datei vorhanden sind (was dem zweimaligen Öffnen derselben Datei entspricht).quelle
Machen Sie einige Dateien:
Legen Sie die Dateien in eine Variable und öffnen Sie die Datei durch einen Index.
Ersetzen Sie
12
durch den Index, den Sie öffnen möchten.quelle
Dies ist wahrscheinlich die einfachste Antwort, die die Frage direkt beantwortet. Versuche Folgendes:
Angenommen, wir möchten die zweite Datei öffnen (oder bearbeiten), dann können wir Folgendes tun:
Dies gibt den Namen der zweiten Datei aus, die wir als Eingabe für den Befehl verwenden können, den wir ausführen möchten. Beispiel:
gibt den Inhalt der zweiten Datei aus.
[UPDATE] Dies setzt voraus, dass die Dateinamen keine Leerzeichen enthalten.
Vielen Dank an @wjandrea für Ihre Beobachtung.
quelle
ls
. Auch Backticks sind veraltet. Verwenden Sie$()
stattdessen.