Pendekatan lain adalah membuat perintah sendiri yang didedikasikan untuk tujuan ini. Ini dapat dilakukan melalui fungsi yang dapat terlihat seperti:
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
Di mana: (1) mv-special
adalah nama fungsi; (2) variabel $1
dan $2
argumen dalam fungsi yang akan digunakan oleh perintah mv
dan cd
; (3) $(echo $2-)
menambahkan karakter wildcat ke akhir string di var $2
, dan memperbaiki perilaku dirname
jika variabel $2
hanya berisi path; (4) $(dirname $(echo $2-))
hanya akan memfilter jalur dari $2
.
Menurut jawaban ini fungsinya bisa seperti:
$ function mv-special { mv $1 $2; cd ${2%/*}; }
Di mana: ${2%/*}
akan menyaring hanya jalur dari $2
.
Agar tersedia sebagai perintah, fungsi ini harus diekspor :
$ export -f mv-special
Pemakaian:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
atau:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
Harap perhatikan bahwa - untuk kedua varian - argumen kedua ( $2
) harus diakhiri dengan nama file atau slash ( /
).
Agar perintah baru kami tersedia secara permanen, definisi fungsi dan perintah ekspor harus ditambahkan ke ~/.bashrc
:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
export -f mv-special
atau:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd ${2%/*}; }
export -f mv-special
Perintah kustom dapat dibuat dan melalui file skrip yang dapat dieksekusi yang ditempatkan di ~/bin
atau di /usr/sbin
: Bagaimana cara membuat perintah terminal kustom (untuk menjalankan skrip)? Tapi jujur saja, saya menghadapi masalah dengan perilaku cd
dalam skenario ini.