Saya menggunakan Windows dan Ubuntu secara paralel dan melakukan hal-hal konsol pada keduanya.
Di Windows saya bisa melakukan
C:\Users\Thomas>cd..\..
C:\>
Namun, di Linux ini tidak berfungsi, baik dengan backslash atau dengan garis miring.
21:17:10 $ cd../..
bash: cd../..: No such file or directory
Karena saya sering melakukan kesalahan itu, saya telah mencoba mendefinisikan alias .bash_aliases
untuk situasi itu:
alias cd../..='cd ../..'
alias cd..\..='cd ../..'
Ketika saya memulai pesta baru, saya mengerti
21:16:26 $ bash
bash: alias: `cd../..': invalid alias name
Bagaimana cara saya mengatur alias untuk cd..\..
dan cd../..
dengan benar?
The cd..\..
tampaknya memiliki masalah dengan karakter escape:
21:39:43 $ cd..\..
bash: cd....: command not found
Tidak berfungsi, meskipun saya mendefinisikan alias lain untuk cd....
.
/
karakter. The\
versi, di sisi lain, harus bekerja dengan baik.man bash
: Karakter /, $, `, dan = dan salah satu metakarakter shell atau mengutip karakter yang tercantum di atas mungkin tidak muncul dalam nama alias.man alias
dan itu tidak ada. Jika Anda memberikan itu sebagai jawaban, saya akan menerimanya.Jawaban:
/
dan di\
antara karakter yang tidak dapat muncul dalam nama alias Bash. Dariman bash
:Sebagai solusinya, Anda dapat beralih ke Zsh, yang memungkinkan keduanya:
sumber
Anda tidak dapat menggunakan garis miring pada nama alias. Namun, Bash memungkinkan mereka dalam nama fungsi, sehingga Anda dapat membuatnya menjadi fungsi:
Anda tidak dapat menggunakan garis miring terbalik dalam nama alias atau fungsi. Karakter backslash mengutip karakter berikutnya, jadi
cd..\..
diuraikan sebagaicd....
, baik sebelum string itu dicari sebagai nama perintah. Jika Anda ingin memanggil perintah bernamacd..\..
, Anda perlu mengetikcd..\\..
,'cd..\..'
atau sesuatu yang setara. Selain itu, nama perintah yang dikutip dengan cara apa pun tidak dipertimbangkan untuk pencarian alias, jadi Anda tidak dapat menggunakan nama alias yang mengandung backslash. Bash juga tidak mengizinkan backslash dalam nama fungsi. Karenacd..\..
diuraikan sebagaicd....
, Anda dapat mendefinisikan fungsi yang disebutcd....
(seperti di atas).Jika Anda menggunakan
cd
perintah, Anda harus mengetik spasi setelahnya, sama seperti perintah lainnya. Tapi Anda bisa menyimpan pengetikan dengan tidak mengetikcd
sama sekali. Tetapkanautocd
opsi dengan baris berikut di~/.bashrc
:Kemudian Anda bisa mengetikkan nama direktori pada baris perintah, dan "mengeksekusi" direktori itu akan mengubahnya.
sumber
shopt
hal itu, saya mungkin akan segera kehilangan fungsi itu pada Windows :-)autocd
adalah salah satu alasan saya beralih ke zsh, kembali ketika bash tidak memilikinya. Satu-satunya cara yang layak untuk menggunakan Windows adalah menginstal Cygwin, lengkap dengan zsh."Anda tidak dapat menggunakan garis miring dalam nama alias atau fungsi "? Itu berita baru bagi saya. Saya telah menggunakan fungsi shell berikut selama bertahun-tahun di Linux dan OS X bash, dan tidak pernah mengalami masalah:
Tentu,
cd../..
adalah nama fungsi yang bagus juga. Slash dapat digunakan dalam nama fungsi shell.Sedangkan untuk versi backslash, Anda tidak bisa menanamkannya dalam nama alias atau fungsi tetapi Anda tidak harus: Ketika Anda mengetik
cd..\..
, bash mengartikan backslash sebagai pelarian dan mencoba mengeksekusi hasilnyacd....
. Jadi tentukan itu dan Anda bisa melakukan semua yang Anda kejar. Sama sama.sumber
Jika Anda ingin menyimpan alias, mengapa tidak lakukan saja:
Atau, jika Anda perlu untuk pergi jalan kembali:
Tidak tahu seberapa baik hal itu membantu Anda tetap sinkron secara mental dengan otak Windows Anda, tetapi ini masih tampak seperti cara yang mudah untuk dilakukan. (Setidaknya bagi kita yang cukup beruntung tidak perlu khawatir tentang bagaimana hal-hal dilakukan pada Windows.)
sumber