Saat saya mengetik cd ~foo
, saya ingin bash membawa saya ke beberapa direktori foo
sebagai jalan pintas untuk mengetik lintasan direktori lengkap foo
. dan saya ingin dapat cp ~foo/bar.txt ~/bar.txt
menyalin file dari /foo/
direktori ke direktori home ... Jadi pada dasarnya, saya ingin sesuatu yang berfungsi persis seperti ~/
tidak, tetapi di mana saya menentukan apa direktori seharusnya. [Aku yakin aku harus jfgi, tapi aku tidak tahu harus berbuat apa]
29
Jawaban:
Cara yang biasa saya lakukan adalah membuat direktori yang berisi symlink ke direktori yang Anda inginkan, dan menambahkan direktori itu ke CDPATH Anda. CDPATH mengontrol di mana
cd
akan mencari ketika Anda berpindah direktori, jadi jika direktori symlink ada di CDPATH Anda, Anda bisacd
ke direktori yang disinkronkan secara instan:Kelemahannya tentu saja tidak akan bekerja jika ada direktori di direktori Anda saat ini bernama "b" - yang diutamakan dari CDPATH
Saya biasanya tidak menyukai jawaban yang mengatakan "pertama Anda harus mengganti shell", tetapi fitur yang tepat ini ada di ZSH , jika Anda bersedia menggunakannya; itu disebut direktori bernama . Anda mengekspor variabel
foo
, dan ketika Anda merujuknya,~foo
nilai ditentukan oleh$foo
. Ini sangat nyaman karena berfungsi dalam perintah selaincd
:sumber
Anda dapat menulis fungsi pembungkus untuk
cd
dan menyebutnya "cd" (akhirnya fungsi akan memanggilbuiltin cd
- menggunakanbuiltin
kata kunci). Anda bisa menggunakan karakter awalan yang tidak akan diperluas Bash pada baris perintah sebelum fungsi Anda melihatnya dan itu tidak akan muncul sebagai karakter awal dalam nama direktori Anda, mungkin ":". Anda ingin membuatnya lebih kuat, tetapi inilah garis besar sederhana:sumber
dengan bash:
~foo
dicadangkan untuk direktori home dari pengguna foo. Saya tidak akan merekomendasikan membuat pengguna hanya untuk kenyamanan itu.Anda dapat membuat hidup Anda lebih mudah (atau lebih sulit) ketika mengubah direktori dengan mengatur
CDPATH
variabel lingkungan (cari dibash(1)
).Terlepas dari itu, satu-satunya cara untuk berpikir adalah dengan menetapkan variabel lingkungan untuk direktori yang ingin Anda menyingkat.
sumber
Variabel Bash dapat digunakan untuk membuat sistem bookmark. Variabel akan bekerja dengan perintah apa pun dan bash akan tab melengkapi nama variabel. Dalam versi bash yang lebih baru, jika a / ditambahkan ke nama variabel, path yang berisi variabel dapat juga dilengkapi tab.
Untuk kegigihan, deklarasi variabel dapat disimpan dalam file yang bersumber dari .bashrc. Karena file ini adalah skrip bash, ini bisa berisi deklarasi yang merujuk variabel lain, seperti
aur="${HOME}/AUR"
, atau yang hanya berjalan di host tertentuif [[ $HOSTNAME == foo ]]; then bar=baz; fi
, yang berguna jika Anda menggunakan kembali file konfigurasi di beberapa host dan pengguna.Fungsi bash berikut (untuk ditambahkan ke .bashrc, atau bersumber dari itu) memungkinkan bookmark untuk ditambahkan dan dihapus dari file bookmark. Ini cukup baru dan tidak dijamin bebas dari bug.
sumber
Suatu cara akan membuat alias untuk cd yang menggantikan
~c
ke jalur yang diinginkan. Atau cukup gunakan zsh;)sumber
Untuk mengubah direktori, Anda dapat menggunakan wcd: Di mana pun Direktori Ubah
Dengan itu, akan seperti itu
wcd plugin_root
.sumber
cd
juga ...Saya memiliki fungsi di bawah ini yang akan membuat alias dengan cepat,
Ketika saya ingin mem-bookmark direktori, saya cukup mengetik
s dirName
. Ini menciptakan alias sepertialias dirName="cd /my/current/directory/;pwd"
. jadi saya bisa kembali ke direktori ini hanya dengan mengetikdirName
. Saya memiliki versi yang menyimpannya ke bash_aliases juga. Ini bekerja di shell apa pun.sumber