GNU/Linux >> Belajar Linux >  >> Linux

Bisakah ',,' dialias dengan '..'?

Alias ​​tidak dimaksudkan untuk melakukan ini, tetapi Anda dapat membuat fungsi yang disebut cd itu adalah pembungkus untuk cd yang asli . Yang ini bekerja untuk saya! Masukkan saja ke dalam .bash_profile Anda atau file profil pilihan Anda.

cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }

Atau, dengan komentar dan pemformatan cantik:

cd ()
{
  if [ "$1" = ",," ]; then  # if first argument is ",,"...
    builtin cd ..           # call the builtin cd with ".." instead...
  else
    builtin cd "[email protected]"         # else call builtin cd with original arguments 
  fi
}

EDIT

Terima kasih @derobert karena menunjukkan if then else itu lebih baik di sini daripada && || . Juga, saya baru menyadari (*facepalm *) bahwa implementasi ini hanya akan berfungsi jika ada argumen non-jalur (mis. -L -P ) bukan argumen pertama. Jadi berhati-hatilah, jika Anda memiliki kebiasaan buruk mengetik cd -L ,, ini tidak akan membantu Anda. Dan itu tidak sepele untuk ditangani dengan benar, menurut saya.


ZSH:

Jika Anda menggunakan zsh alias -g ,,=".." adalah yang Anda butuhkan, tetapi ini akan menyebabkan ",," diperluas di mana saja, tidak hanya saat digunakan dengan cd .

Dari man zshbuiltins :

Jika -g bendera ada, tentukan alias global; alias global diperluas meskipun tidak muncul di posisi perintah.

BASH:

Jika dibatasi untuk bash (karena pertanyaannya ditandai dengan bash), baca yang berikut:

Ini adalah solusi alias murni, seperti yang diminta, namun ini akan melakukan lebih dari yang diperlukan mungkin membuat pengguna frustrasi (lihat peringatan di akhir posting saya).

Mengutip man bash :

Jika karakter terakhir dari nilai alias adalah kosong, maka kata perintah berikutnya yang mengikuti alias juga diperiksa untuk perluasan alias.

Oleh karena itu cukup dengan alias cd dengan spasi ekstra (untuk memungkinkan perluasan argumen berikutnya) dan kemudian alias ,, ke .. . Lihat itu

alias cd='cd '
alias ,,='..'

memberikan apa yang Anda butuhkan.

Perhatikan bahwa ini benar tidak hanya untuk bash (dan alias nya implementasi), tetapi semua shell yang menyusun POSIX. Mengutip contoh dari man 1p alias (manual tidak menjelaskan fitur ini secara eksplisit, hanya melalui contoh):

  1. Siapkan nohup agar dapat menangani argumen yang juga merupakan nama alias:

           alias nohup="nohup "
    

Peringatan: Seperti yang ditulis @PeterCordes dalam komentarnya, itu akan secara otomatis menyebabkan lainnya alias untuk memperluas ketika ditulis setelah cd . Anda mungkin perlu menulis cd \grep jika Anda ingin mengubah direktori menjadi grep tetapi grep Anda adalah alias untuk grep --color=auto . Tanpa garis miring terbalik, cd akan melaporkan kesalahan "terlalu banyak argumen" (Anda tidak dapat cd ke dua direktori sekaligus)!.


Alias ​​​​harus menjadi kata pertama dari sebuah perintah. Selain itu, alias harus diganti dengan sebuah kata oleh karena itu tidak ada spasi).

Manual Referensi Bash:Alias ​​​​

Alias ​​​​memungkinkan string diganti dengan sebuah kata bila digunakan sebagai kata pertama dari perintah sederhana.

Anda bisa menggunakan alias .. dan ,, menjadi cd .. .

$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/

Linux
  1. Bagaimana saya bisa menghubungkan file di Linux?

  2. Perintah rantai alias Linux (bisakah rekursi dihindari?)

  3. Bisakah kita menggunakan kode C dengan Python?

  1. Bagaimana Cara Melewati Parameter Ke Alias?

  2. Jalankan Perintah Yang Dibayangi Alias?

  3. Bisakah saya memainkan Dota 2 di Linux?

  1. Bisakah Tema Warna Mengikat Ke Buffer?

  2. Bisakah Ukuran Font Grub Dikustomisasi?

  3. Bagaimana saya bisa menggunakan perintah alias dengan xargs?