Buat beberapa alias shell sekaligus

8

Saya ingin memasukkan ke dalam kemungkinan variasi ejaan yang berbeda, misalnya, catperintah. Dapatkah saya melakukannya menggunakan simbol untuk 'atau' atau haruskah berada di baris baru?

alias at|cart|cst '/bin/cat'
Josef Klimuk
sumber
7
Mengingatkan saya pada satu alias saya punya:alias kk='ll'
pLumo
14
Saya tidak akan merekomendasikan menggunakan atsebagai alias untuk cat. Ada perintah aktual atuntuk penjadwalan: askubuntu.com/a/339301/295286
Sergiy Kolodyazhnyy

Jawaban:

17

Bantuan untuk aliasmenunjukkan bahwa ia dapat menetapkan beberapa alias sekaligus:

alias: alias [-p] [name[=value] ... ]
    Define or display aliases.

    Without arguments, `alias' prints the list of aliases in the reusable
    form `alias NAME=VALUE' on standard output.

    Otherwise, an alias is defined for each NAME whose VALUE is given.
    A trailing space in VALUE causes the next word to be checked for
    alias substitution when the alias is expanded.

Jadi Anda dapat menggunakan ekspansi brace untuk menghasilkan name=valuepasangan:

alias {at,cart,cst}='/bin/cat'

Begitu:

$ alias {at,cart,cst}='/bin/cat'
$ type at cart cst
at is aliased to `/bin/cat'
cart is aliased to `/bin/cat'
cst is aliased to `/bin/cat'

Yang mengatakan, lihat ke zsh, yang memiliki koreksi kesalahan ketik bawaan (yang tidak akan membantu at, tetapi akan membantu untuk yang lain):

% setopt correct
% sl
zsh: correct `sl' to `ls' [nyae]? y
% setopt correctall
% ls x.v11r4
zsh: correct `x.v11r4' to `X.V11R4' [nyae]? n
/usr/princton/src/x.v11r4 not found
% ls /etc/paswd
zsh: correct to `/etc/paswd' to `/etc/passwd' [nyae]? y
/etc/passwd

Jika Anda menekan yketika shell menanyakan apakah Anda ingin memperbaiki kata, itu akan diperbaiki. Jika Anda menekan n, itu akan dibiarkan sendiri. Menekan abatalkan perintah, dan menekan emembawa baris ke atas untuk mengedit lagi, jika Anda setuju kata tersebut salah dieja tetapi Anda tidak suka koreksi.

muru
sumber
7

Saya tidak berpikir Anda dapat menetapkan beberapa alias sekaligus.
Tapi Anda bisa mengulang daftar seperti ini:

for a in cart xat vat xst cst vst dog; do alias "$a"='/bin/cat'; done

Pastikan alias belum digunakan oleh program lain (seperti atpada contoh Anda).

pLumo
sumber
Terima kasih atas jawabannya, itu bekerja dengan baik. Saya memiliki salah satu mesin linux saya dengan tsch sebagai default. Saya mencoba ini: foreach x (cst cart); alias $ x = '/ bin / cat'; end.
Josef Klimuk
2
@ JosefKlimuk: Kedengarannya seperti itu akan bernilai jawabannya sendiri. :-)
David Foerster
@ David Foerster, Haruskah saya menanyakannya sebagai pertanyaan independen?
Josef Klimuk
2
@ JosefKlimuk: Tidak. Maksud saya Anda harus menulis jawaban yang tepat untuk pertanyaan ini berdasarkan komentar Anda sebelumnya.
David Foerster