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.