Come definire un alias in guscio di pesce?


204

Vorrei definire alcuni alias nei pesci. Apparentemente dovrebbe essere possibile definirli in

~/.config/fish/functions

ma non vengono caricati automaticamente quando riavvio la shell. Qualche idea?


La risposta in basso con solo un paio di voti è, a mio avviso corretta. Il caricamento automatico in ./config/fish/functions sembra funzionare solo se esiste una funzione per file.
mc_electron,

Risposte:


360

Basta usare alias. Ecco un esempio di base:

# 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

Quest'ultimo comando crea il file ~/.config/fish/functions/rmi.fish.

Le persone interessate potrebbero voler saperne di più sugli alias di pesce nel manuale ufficiale .


3
Si noti inoltre che nei pesci un alias è solo un wrapper shellscript attorno a una funzione.
user456584,

@ user456584 ... ed è per male, perché non si può fare alias local "set -l";-(

13
Solo una nota di quale file inserire questo. Ho inserito il mio in ~/.config/fish/config.fishmodo che si carichi ogni volta che eseguo un terminale.
Ira Herman,

Non abbiamo bisogno di citare "$argv"per gestire argomenti con spazi come facciamo con bash "$@"?
Kyb

@kyb, no, il pesce è più intelligente di bash in quel modo. In realtà, TUTTE le variabili nei pesci sono array. Vai alle variabili Shell e scorri verso il basso fino alla sottosezione Arrays
glenn jackman,

117

Ecco come definisco una nuova funzione foo, la eseguo e la salvo in modo persistente.

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

Grazie Jerub. Per qualche motivo, dopo aver funzionato, mi ha dato un errore: troff: errore fatale: impossibile aprire `/usr/share/fish/man/save_function.1 ': Nessun file o directory del genere
armandino

7
Puoi anche modificare le funzioni usando funced. Es funced foo.
Dennis,

14
La corsa funcsave {some_function_name}lo salverà in~/.config/fish/functions/{some_function_name}.fish
Hjulle il

55

Per i posteri, gli alias di pesce sono solo funzioni:

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

Per rimuoverlo

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

9
Dopo aver creato la funzione, puoi farlo funcsave foo. Ciò salverà la funzione in ~/.config/fish/functions/foo.fishcui i pesci la caricheranno automaticamente la prima volta che viene chiamata da una nuova sessione.
Lucretiel,

1
alias foo="echo bar"era di gran lunga la soluzione più semplice
Ronnie il

16
  1. se non c'è config.fish in ~ / .config / fish / , fallo.
  2. lì puoi scrivere la tua funzione.function name; command; end

15

Salva i tuoi file come ~/.config/fish/functions/{some_function_name}.fishe dovrebbero caricarsi automaticamente quando inizi a pescare.


14

fish inizia eseguendo i comandi in ~ / .config / fish / config.fish. Puoi crearlo se non esiste:

vim ~ / .config / fish / config.fish

e salvalo con :wq

passo 1. crea file di configurazione (come .bashrc)

config.fish

passo 2. scrivi il tuo alias in questo modo;

alias rm = "rm -i"



11

Per caricare correttamente le funzioni da ~ / .config / fish / funzioni

È possibile impostare solo UNO funzione all'interno del file e il nome del file è uguale al nome della funzione + aggiungi estensione .fish.

In questo modo cambiando il contenuto del file si ricaricano le funzioni nei terminali aperti (si noti che potrebbero verificarsi dei ritardi ~ 1-5s)

In questo modo se si modifica da riga di comando

function name; function_content; end

poi

funcsave name

hai funzioni definite dall'utente in console e realizzate nello stesso ordine.


0

crea una funzione in ~ / .config / fish / funzioni chiamata mkalias.fish e inseriscila

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

e questo creerà automaticamente gli alias.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.