Wie definiere ich einen Alias ​​in der Fischschale?


203

Ich möchte einige Aliase in Fischen definieren. Anscheinend sollte es möglich sein, sie in zu definieren

~/.config/fish/functions

Sie werden jedoch nicht automatisch geladen, wenn ich die Shell neu starte. Irgendwelche Ideen?


Die Antwort unten mit nur ein paar Stimmen ist meiner Meinung nach richtig. Das automatische Laden in ./config/fish/functions scheint nur zu funktionieren, wenn es eine Funktion pro Datei gibt.
mc_electron

Antworten:


360

Einfach benutzen alias. Hier ist ein einfaches Beispiel:

# Define alias in shell
alias rmi "rm -i"

# Define alias in config file
alias rmi="rm -i"

# This is equivalent to entering the following function:
function rmi
    rm -i $argv
end

# Then, to save it across terminal sessions:
funcsave rmi

Dieser letzte Befehl erstellt die Datei ~/.config/fish/functions/rmi.fish.

Interessenten möchten vielleicht mehr über Fisch-Aliase im offiziellen Handbuch erfahren .


3
Beachten Sie auch, dass bei Fischen ein Alias ​​nur ein Shellscript-Wrapper um eine Funktion ist.
user456584

@ user456584 ... und das ist schade, weil Sie nicht tun können alias local "set -l";-(

13
Nur eine Notiz darüber, in welche Datei dies eingefügt werden soll. Ich habe meine eingefügt, ~/.config/fish/config.fishdamit sie jedes Mal geladen wird, wenn ich ein Terminal betreibe.
Ira Herman

Müssen wir nicht zitieren "$argv", um Argumente mit Leerzeichen zu behandeln, wie wir es mit Bash tun "$@"?
Kyb

@kyb, nein, Fisch ist schlauer als so eine Bash. Tatsächlich sind ALLE Variablen in Fischen Arrays. Gehen Sie zu Shell-Variablen und scrollen Sie nach unten zum Unterabschnitt Arrays
Glenn Jackman

117

So definiere ich eine neue Funktion foo, führe sie aus und speichere sie dauerhaft.

sthorne@pearl~> function foo
                    echo 'foo was here'
                end
sthorne@pearl~> foo
foo was here
sthorne@pearl~> funcsave foo

Danke Jerub. Aus irgendeinem Grund gab es nach funcsave einen Fehler: troff: schwerwiegender Fehler: `/usr/share/fish/man/save_function.1 'kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis
armandino

7
Sie können Funktionen auch mit bearbeiten funced. ZB funced foo.
Dennis

14
Laufen funcsave {some_function_name}wird es speichern in~/.config/fish/functions/{some_function_name}.fish
Hjulle

55

Für die Nachwelt sind Fisch-Aliase nur Funktionen:

$ alias foo="echo bar"
$ type foo
foo is a function with definition
function foo
    echo bar $argv; 
end

Es zu entfernen

$ unalias foo
/usr/bin/unalias: line 2: unalias: foo: not found
$ functions -e foo
$ type foo
type: Could not find foo

9
Nachdem Sie die Funktion erstellt haben, können Sie dies tun funcsave foo. Dadurch wird die Funktion gespeichert ~/.config/fish/functions/foo.fish, in die der Fisch sie automatisch lädt, wenn er zum ersten Mal aus einer neuen Sitzung aufgerufen wird.
Lucretiel

1
alias foo="echo bar"war bei weitem die einfachste Lösung
Ronnie

16
  1. wenn es nicht config.fish in ~ / .config / fish / , machen Sie es.
  2. Dort können Sie Ihre Funktion schreiben.function name; command; end

15

Speichern Sie Ihre Dateien unter ~/.config/fish/functions/{some_function_name}.fishund sie sollten automatisch geladen werden, wenn Sie mit dem Fischen beginnen.


14

fish beginnt mit der Ausführung von Befehlen in ~ / .config / fish / config.fish. Sie können es erstellen, wenn es nicht vorhanden ist:

vim ~ / .config / fish / config.fish

und speichern Sie es mit :wq

Schritt 1. Konfigurationsdatei erstellen (wie .bashrc)

config.fish

Schritt 2. Schreiben Sie einfach Ihren Alias ​​so.

alias rm = "rm -i"



11

Um Funktionen aus ~ / .config / fish / functions richtig zu laden

Sie können nur EINE Funktion innerhalb der Datei und der Namensdatei wie den Funktionsnamen + die Erweiterung .fish hinzufügen.

Auf diese Weise können Sie die Funktionen zum erneuten Laden von Dateiinhalten in geöffneten Terminals ändern (beachten Sie, dass eine Verzögerung von ~ 1-5 Sekunden auftreten kann).

Auf diese Weise, wenn Sie entweder über die Befehlszeile bearbeiten

function name; function_content; end

dann

funcsave name

Sie haben benutzerdefinierte Funktionen in der Konsole und benutzerdefinierte Funktionen in derselben Reihenfolge.


0

Erstellen Sie in ~ / .config / fish / functions eine Funktion namens mkalias.fish und geben Sie diese ein

function mkalias --argument key value
  echo alias $key=$value
  alias $key=$value
  funcsave $key
end

Dadurch werden automatisch Aliase erstellt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.