Bagaimana cara menggunakan - sebagai alias?

11

Ketika saya menggunakan openSUSE 11.3, ia datang dengan beberapa alias yang sudah diatur. Dua yang saya gunakan banyak +untuk pushd .dan -untuk popd. Sekarang di Debian, saya tidak tahu cara membuat yang kedua. alias -=popdmencoba membaca -=sebagai opsi perintah ke alias. Saya sudah mencoba menempatkan tanda kutip (baik tunggal maupun ganda) di sekitarnya, dan mendahului dengan garis miring terbalik, tetapi saya tetap mendapatkan pesan kesalahan. Ada saran?

Terima kasih

Serigala
sumber

Jawaban:

12

coba ini:

alias -- -=popd

setidaknya bekerja untuk saya:

usr@srv % alias -- -=echo
usr@srv % - test
test
binfalse
sumber
Terima kasih, bekerja dengan sempurna. Apa yang --dilakukan, tepatnya?
Wolf
4
@ Serigala: Untuk sebagian besar perintah, tandai --akhir opsi; semuanya setelah itu adalah argumen. Sebagai contoh, logger foo -x barakan mencatat "foo bar" dan memperlakukan -xsebagai opsi, sementara logger -- foo -x barakan memperlakukannya sebagai kata biasa di pesan "foo -x bar".
user1686
1
The --menunjukkan bahwa tidak ada lebih banyak pilihan ikuti pada baris perintah, berikut -'s tidak ditafsirkan sebagai pilihan. Jadi ini memungkinkan Anda untuk catfile yang dimulai dengan -;-)
binfalse
@grawity dan @binfalse: Terima kasih atas penjelasannya, itu sangat membantu! Sangat bagus untuk diketahui.
Wolf
7

Di dalamnya, bashAnda dapat membuat fungsi yang dinamai seperti itu:

+() { pushd "$@"; }
-() { popd "$@"; }
pengguna1686
sumber
apa $@?
Lazer
2
@ Lazer: Di sh dan bash, $@perluas semua argumen yang diberikan ke fungsi atau skrip. Tanda kutip berfungsi sama dengan $*. Namun, ketika berada di dalam tanda kutip ganda, kata itu mengembang dengan persis kata yang sama seperti yang diberikan semula, tanpa pemisahan tambahan.
user1686
@ Lazer: $@meluas ke semua parameter yang diteruskan ke fungsi (setara dengan "$1" "$2" ...). Untuk informasi lebih lanjut, lakukan man bashdan cari Parameter Khusus.
André Paramés