Bagaimana seseorang mendapatkan ~/.bashrc
alias untuk dievaluasi$()
penggantian pada waktu berjalan , alih-alih pada saat ~ / .bashrc dieksekusi (saat membuka terminal)?
Saya menjalankan perintah ini cukup sering sehingga saya ingin menambahkan alias untuknya:
svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff
Namun, ketika saya menambahkannya ~/.bashrc
sebagai alias, saya melihat bahwa evaluasi tersebut dikodekan ke nilai-nilai yang mereka miliki pada saat saya membuka terminal:
$ alias
alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff'
Jika saya membuka terminal ~
maka saya mendapatkan kesalahan:
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
$ alias
alias svnbranch='svn diff -r :HEAD | colordiff'
$
Saya sudah mencoba dua variasi alias ini ~/.bashrc
, keduanya memiliki efek yang sama (seperti yang saya harapkan):
alias svnbranch="svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff"
alias svnbranch="svn diff -r `svn info | grep ^Revision | awk {'print $2'}`:HEAD `svn info | grep ^URL | awk {'print $2'}` | colordiff"
Bagaimana cara mendapatkan ~/.bashrc
alias untuk mengevaluasi $()
penggantian pada waktu berjalan ?
Selain itu, bagaimana seseorang mencari situasi ini di Google? Saya sudah mencoba google di "substitusi bashrc", "substitusi lazy bashrc", dan frase kunci lainnya, tetapi saya tidak menemukan apa pun yang menurut saya seharusnya menjadi masalah yang cukup umum untuk mencari informasi.
$HOME/bin
ke dalamPATH
jika Anda memiliki direktori seperti ini akhir-akhir ini.alias cdp="cd ~/projects"
. Tidak dapat melakukannya dalam skrip shell.Jawaban:
Gunakan kutipan tunggal untuk menekan pemrosesan karakter khusus. Anda juga bisa melakukan backslash pada
$
s.Untuk perintah yang kompleks, Anda mungkin lebih baik menggunakan fungsi dalam hal apa pun, yang tidak memerlukan pelarian dan lebih mudah untuk membaca dan mengedit:
Anda dapat mendefinisikan suatu fungsi di mana saja Anda bisa mendefinisikan alias.
sumber
awk
memiliki pola ruang jugaawk '/^Revision/{ print ...}'
Jadi tidak perlu grep dalam hal ini.