Karena ini adalah variabel lingkungan (alias memiliki definisi berbeda bash
), Anda perlu mengevaluasinya dengan sesuatu seperti:
cd "${myFold}"
atau:
cp "${myFold}/someFile" /somewhere/else
Tetapi saya sebenarnya merasa lebih mudah, jika Anda hanya ingin kemudahan beralih ke direktori itu, untuk membuat alias nyata (di salah satu bash
file startup seperti .bashrc
), jadi saya bisa menyimpan penekanan tombol:
alias myfold='cd ~/Files/Scripts/Main'
Maka Anda bisa menggunakan (tanpa cd
):
myfold
Untuk menghilangkan definisi tersebut, Anda menggunakan unalias
. Transkrip berikut menunjukkan semua tindakan ini:
pax> cd ; pwd ; ls -ald footy
/home/pax
drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy
pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd
/home/pax/footy
pax> cd ; pwd
/home/pax
pax> alias footy='cd /home/pax/footy' ; footy ; pwd
/home/pax/footy
pax> unalias footy ; footy
bash: footy: command not found
in one of the bash startup files like .bashrc
. Menempatkan alias ke dalam file startup yang sesuai akan memastikan itu tersedia untuk semua sesi.Ada opsi shell
cdable_vars
:Anda dapat menambahkan ini ke
.bashrc
:shopt -s cdable_vars export myFold=$HOME/Files/Scripts/Main
Perhatikan bahwa saya telah mengganti tilde dengan
$HOME
; kutipan mencegah ekspansi tilde dan Bash akan mengeluh bahwa tidak ada direktori~/Files/Scripts/Main
.Sekarang Anda dapat menggunakan ini sebagai berikut:
cd myFold
Tidak
$
diperlukan. Itulah intinya, sebenarnya - seperti yang ditunjukkan dalam jawaban lain,cd "$myFold"
berfungsi tanpa opsi shell.cd myFold
juga berfungsi jika jalur dimyFold
berisi spasi, tidak perlu kutipan.Ini biasanya bahkan bekerja dengan pelengkapan otomatis tab sebagai
_cd
fungsi dalambash_completion
pemeriksaan jikacdable_vars
disetel - tetapi tidak setiap implementasi melakukannya dengan cara yang sama, jadi Anda mungkin harus mencaribash_completion
lagi di.bashrc
(atau edit/etc/profile
untuk menyetel opsi shell).Kerang lain memiliki opsi serupa, misalnya Zsh (
cdablevars
).sumber
setopt cdablevars
sepertinya memang begitu, tapi saya tidak tahu sama sekali.cdable_vars
cd
disediakan oleh penyelesaian bash, yang menggunakan_cd
fungsi (complete -o nospace -F _cd cd
). Menambahkan-v
ke itu (untuk menyelesaikan pada variabel) bekerja, tetapi dapat memiliki efek samping yang tidak diinginkan - bagi saya, ini menunjukkan lingkungan lengkap saya ketika tab saya selesai.Mungkin lebih baik menggunakan tautan
Tautan Lunak
Tautan simbolis atau lunak (file atau direktori, lebih fleksibel dan mendokumentasikan sendiri)
# Source Link ln -s /home/jake/doc/test/2000/something /home/jake/xxx
Tautan Keras
Tautan keras (hanya file, kurang fleksibel dan tidak mendokumentasikan sendiri)
# Source Link ln /home/jake/doc/test/2000/something /home/jake/xxx
Cara membuat tautan ke direktori
Petunjuk : Jika Anda tidak ingin melihat tautan di rumah Anda, Anda dapat memulainya dengan titik. ; maka itu akan disembunyikan secara default maka Anda dapat mengaksesnya seperti
cd ~/.myHiddelLongDirLink
sumber
Anda dapat menambahkan jalur apa pun yang Anda inginkan ke hashtable bash Anda:
hash -d <CustomName>=<RealPath>
Sekarang Anda akan bisa
cd ~<CustomName>
. Untuk membuatnya permanen, tambahkan ke skrip bashrc Anda .Perhatikan bahwa hashtable ini dimaksudkan untuk menyediakan cache bagi bash agar tidak perlu mencari konten setiap kali perintah dijalankan, oleh karena itu tabel ini akan dihapus pada peristiwa yang membuat cache tidak valid, misalnya memodifikasi
$PATH
.sumber
zsh
tetapi tidak dalambash
.zsh
hanya berfungsi , setidaknya di sistem Ubuntu saya.Pertama, Anda perlu menghapus tanda kutip:
Tanda kutip mencegah shell memperluas tilde ke arti khususnya sebagai
$HOME
direktori Anda .Anda kemudian dapat menggunakan
$myFolder
lingkunganvariabel shell:bashboy@host:~$ cd $myFolder bashboy@host:~/Files/Scripts/Main$
Untuk membuat alias , Anda perlu menentukan alias:
alias myfolder="cd $myFolder"
Anda kemudian dapat memperlakukan perintah semacam ini:
sumber
export
..bashrc
file sumber daya Anda atau apa pun yang Anda gunakan, dan itu akan ditentukan di shell langsung, tetapi tidak di skrip shell.Pertama, Anda memerlukan
$
untuk mengakses nilai "myFold" agar kode dalam pertanyaan berfungsi:cd "$myFold"
Untuk menyederhanakan ini, Anda membuat alias di
~/.bashrc
:alias cdmain='cd ~/Files/Scripts/Main'
Jangan lupa untuk membuat sumber
.bashrc
sekali agar alias tersedia di sesi bash saat ini:source ~/.bashrc
Sekarang Anda dapat mengubah ke folder menggunakan:
sumber
Pilihan lain adalah menggunakan tautan simbolis. yaitu:
Setelah itu Anda bisa melakukan operasi untuk
~/myFold
, seperti:yang akan memasukkan file tersebut
~/Files/Scripts/Main
. Anda dapat menghapus tautan simbolis kapan saja denganrm ~/myFold
, yang akan menyimpan direktori asli.sumber
cd myFold
demikianpwd
, itu akan menunjukkan bahwa Anda berada di myFold. Ini adalah deal breaker bagi saya karena perintah relatif dengan kontrol sumber p4 bergantung pada direktori saat ini.pwd -P
tetapi alias sebenarnya untuk dir juga dimungkinkan, coba
myScripts="~/Files/Scripts/Main" alias myScripts="cd $myScripts"
Dengan cara ini Anda memiliki konvensi penamaan umum (untuk setiap pasangan dir / alias), dan jika Anda perlu menyalin sesuatu dari direktori saat ini ke myScripts, Anda tidak perlu memikirkannya.
IHTH
sumber
Jawaban sebelumnya yang saya coba tidak mengizinkan perluasan otomatis (pelengkapan otomatis) subdirektori dari direktori alias.
Namun, jika Anda mendorong direktori yang ingin Anda alias ke
dirs
stack ...$ pushd ~/my/aliased/dir
... Anda kemudian dapat mengetik
dirs -v
untuk melihat posisi numeriknya di tumpukan:dan merujuknya menggunakan nomor itu untuk sebagian besar, jika tidak semua perintah yang mengharapkan parameter direktori:
Anda bahkan dapat menggunakan Tabuntuk menampilkan subdirektori langsung dari direktori "aliased":
$ cd ~0/<Tab> child_dir1 child_dir2
sumber
Letakkan baris berikut di myscript Anda
set myFold = '~/Files/Scripts/Main'
Dalam penggunaan terminal
source myscript cd $myFold
sumber