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.