Balık kabuğunda bir takma ad nasıl tanımlanır?


204

Balıktaki bazı takma adları tanımlamak istiyorum. Görünüşe göre onları tanımlamak mümkün olmalı

~/.config/fish/functions

ancak kabuğu yeniden başlattığımda otomatik olarak yüklenmiyorlar. Herhangi bir fikir?


Sadece birkaç oyla aşağıdaki cevap, bence doğru. ./Config/fish/functions içindeki otomatik yükleme yalnızca dosya başına bir işlev varsa işe yarar.
— mc_electron

Yanıtlar:


360

Sadece kullan alias. İşte temel bir örnek:

# 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

Bu son komut dosyayı oluşturur ~/.config/fish/functions/rmi.fish.

İlgilenenler resmi kılavuzda balık takma adları hakkında daha fazla bilgi edinmek isteyebilirler .


3
Ayrıca balıkta takma adın bir işlevin etrafında sadece bir kabuk betiği olduğunu unutmayın.
— user456584

@ user456584 ... ve bu kötü, çünkü yapamazsın alias local "set -l";-(

13
Bunu hangi dosyaya koyacağımı sadece bir not. ~/.config/fish/config.fishHer terminali çalıştırdığımda benim yüklerim.
— Ira Herman

"$argv"Bash ile yaptığımız gibi boşluklarla tartışmak için alıntı yapmamıza gerek yok "$@"mu?
— kyb

@kyb, hayır, balık bu türden daha zekidir. Aslında balıktaki TÜM değişkenler dizidir. Git Kabuk değişkenleri ve Diziler alt bölümü için aşağı kaydırın
— Glenn Jackman

117

Yeni bir işlevi bu şekilde tanımlıyorum foo, çalıştırıyorum ve kalıcı olarak kaydediyorum.

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

Teşekkürler Jerub. Nedense funcsave sonra bir hata verdi: troff: ölümcül hata: açılamıyor `/usr/share/fish/man/save_function.1 ': Böyle bir dosya veya dizin yok
— armandino

7
İşlevlerini kullanarak da düzenleyebilirsiniz funced. Örn funced foo.
— Dennis

14
Koşu funcsave {some_function_name}onu kurtaracak~/.config/fish/functions/{some_function_name}.fish
— Hjulle

55

Gelecek nesiller için balık takma adları sadece fonksiyonlardır:

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

Kaldırmak için

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

9
İşlevi oluşturduktan sonra yapabilirsiniz funcsave foo. Bu, işlevi ~/.config/fish/functions/foo.fishyeni bir oturumdan ilk çağrıldığında balıkın otomatik olarak yükleyeceği işlevi içine kaydeder.
— Lucretiel

1
alias foo="echo bar"en kolay çözümdü
— Ronnie

16
  1. ~ / .config / fish / içinde config.fish yoksa bunu yapın.
  2. orada fonksiyonunuzu yazabilirsiniz.function name; command; end

15

Dosyalarınızı olarak kaydedin ~/.config/fish/functions/{some_function_name}.fishve balık başlattığınızda otomatik olarak yüklenmelidir.


15

balık ~ / .config / fish / config.fish içindeki komutları uygulayarak başlar. Mevcut değilse oluşturabilirsiniz:

vim ~ / .config / fish / config.fish

ve ile kaydet :wq

Aşama 1. yapılandırma dosyası yap (.bashrc gibi)

config.fish

Adım 2. sadece takma adınızı böyle yazın;

takma ad rm = "rm -i"



12

~ / .Config / fish / function öğelerinden işlevleri düzgün şekilde yüklemek için

Dosya ve ad dosyası içinde işlev adı + .fish uzantısı ekle ile aynı olan yalnızca BİR işlev ayarlayabilirsiniz .

Bu şekilde, dosya içeriklerinin değiştirilmesi açık terminallerdeki işlevleri yeniden yükler (bazı gecikmelerin olabileceğini unutmayın ~ 1-5s)

Bu şekilde, komut satırından birini düzenlerseniz

function name; function_content; end

sonra

funcsave name

Konsolda kullanıcı tanımlı işlevleriniz ve aynı sırayla özel olarak yapılmış işlevleriniz var.


0

~ / .config / fish / işlevinde mkalias.fish işlevini yapın ve bunu

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

bu otomatik olarak takma adlar oluşturur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.