Saya sedang mencari cara untuk membuat alias berikut ini berfungsi untuk nama file apa pun.
alias dim='cd /home/jason/Documents; vim *the desired file*; cd'
Saya bertanya-tanya apakah ada cara saya bisa mengubah alias ini untuk membuatnya sehingga saya bisa mengetikkan nama file apa pun seperti:
dim *the desired file*
Dan masih mendapatkan hasil yang sama. Pada dasarnya adakah cara untuk memanggil apa saja yang diketik setelah nama alias ke alias itu sendiri? Sesuatu seperti:
alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'
Jawaban:
Tidak, Anda tidak dapat melakukannya menggunakan alias shell. Anda harus menggunakan suatu fungsi.
Berikut adalah fungsi sederhana untuk melakukan pekerjaan:
Fungsi
dim
akan mengambil nama file sebagai argumen. Anda dapat menempatkan potongan kode ini di akhir~/.bashrc
file Anda dan kemudian menjalankannya sebagai:Ganti
file.txt
dengan nama file yang Anda inginkan.Untuk menjalankannya dari sesi shell saat ini,
source
yang~/.bashrc
file pertama:sumber
$1
menunjukkan parameter posisi pertama atau argumen untuk fungsi..pikirkan itu sebagai cara untuk memberikan input ke fungsi atau skrip .. seperti semua bahasa pemrogramanbash
juga menggunakan ini .... Anda akan temukan banyak sumber tentang ini di Google ..Bukan dengan alias, gunakan fungsi saja.
Dari halaman manual Bash :
Jadi fungsi Anda bisa:
sumber
cd
untuk membawa Anda ke direktori rumah Anda;cd ..
naik satu tingkat ke atas.cd -
membawa Anda ke direktori sebelumnya dari mana Andacd
mengedit.$*
seperti$1 $2 $3...
hanya memberikan seluruh daftar ke vim, bukan argumen pertama yang Anda ketikkan. Dan seperti yang dikatakan Chriki,cd -
akan kembali ke direktori sebelumnya (yang dulu ketika Anda memanggil fungsi).