Bagaimana cara menentukan alias di kulit ikan?


204

Saya ingin mendefinisikan beberapa alias pada ikan. Tampaknya harus mungkin untuk mendefinisikannya

~/.config/fish/functions

tetapi mereka tidak dimuat secara otomatis ketika saya me-restart shell. Ada ide?


Jawaban di bawah ini dengan hanya beberapa suara adalah, menurut saya benar. Autoloading in ./config/fish/functions hanya berfungsi jika ada satu fungsi per file.
mc_electron

Jawaban:


360

Gunakan saja alias. Inilah contoh dasar:

# 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

Perintah terakhir ini membuat file ~/.config/fish/functions/rmi.fish.

Orang yang tertarik mungkin ingin mengetahui lebih lanjut tentang alias ikan di manual resmi .


3
Juga perhatikan bahwa pada ikan alias hanya pembungkus shellscript di sekitar fungsi.
user456584

@ user456584 ... dan itu buruk, karena Anda tidak bisa melakukan alias local "set -l";-(

13
Hanya catatan file mana yang akan dimasukkan. Saya memasukkan file saya ~/.config/fish/config.fishsehingga memuat setiap kali saya menjalankan terminal.
Ira Herman

Bukankah kita perlu mengutip "$argv"untuk menangani argumen dengan spasi seperti yang kita lakukan dengan bash "$@"?
kyb

@ Kyb, tidak, ikan lebih pintar daripada bash seperti itu. Sebenarnya, SEMUA variabel dalam ikan adalah array. Pergi ke variabel Shell dan gulir ke bawah ke ayat Array
glenn jackman

117

Inilah cara saya mendefinisikan fungsi baru foo, menjalankannya, dan menyimpannya secara terus-menerus.

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

Terima kasih Jerub. Untuk beberapa alasan setelah funcsave, itu memberi saya kesalahan: troff: fatal fatal: tidak dapat membuka `/usr/share/fish/man/save_function.1 ': Tidak ada file atau direktori seperti itu
armandino

7
Anda juga dapat mengedit fungsi menggunakan funced. Misalnya funced foo.
Dennis

14
Running funcsave {some_function_name}akan menyimpannya di~/.config/fish/functions/{some_function_name}.fish
Hjulle

55

Untuk anak cucu, alias ikan hanya berfungsi:

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

Untuk menghapusnya

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

9
Setelah Anda membuat fungsi, Anda bisa melakukannya funcsave foo. Ini akan menyimpan fungsi ke dalam ~/.config/fish/functions/foo.fish, di mana ikan akan secara otomatis memuatnya saat pertama kali dipanggil dari sesi baru.
Lucretiel

1
alias foo="echo bar"sejauh ini merupakan solusi termudah
Ronnie

16
  1. jika tidak ada config.fish di ~ / .config / fish / , buatlah.
  2. di sana Anda dapat menulis fungsi Anda.function name; command; end

15

Simpan file Anda sebagai ~/.config/fish/functions/{some_function_name}.fishdan mereka akan dimuat secara otomatis ketika Anda mulai memancing.


14

fish memulai dengan menjalankan perintah di ~ / .config / fish / config.fish. Anda dapat membuatnya jika tidak ada:

vim ~ / .config / fish / config.fish

dan simpan dengan :wq

Langkah 1. buat file konfigurasi (seperti .bashrc)

config.fish

Langkah 2. cukup tulis alias Anda seperti ini;

alias rm = "rm -i"



11

Untuk memuat fungsi dengan benar dari ~ / .config / fish / functions

Anda hanya dapat menetapkan SATU fungsi di dalam file dan nama file sama dengan nama fungsi + tambahkan ekstensi .fish.

Dengan cara ini, mengubah isi file memuat kembali fungsi di terminal terbuka (perhatikan beberapa penundaan mungkin terjadi ~ 1-5s)

Dengan begitu jika Anda mengedit dengan commandline

function name; function_content; end

kemudian

funcsave name

Anda memiliki fungsi yang ditentukan pengguna di konsol dan dibuat khusus dalam urutan yang sama.


0

buat fungsi di ~ / .config / fish / functions bernama mkalias.fish dan masukkan ini

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

dan ini akan membuat alias secara otomatis.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.