Başka bir yaklaşım, bu amaca yönelik kendi komutunuzu oluşturmaktır. Bu, aşağıdakine benzeyen bir işlevle yapılabilir :
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
Burada: (1) mv-special işlev adıdır; (2) değişkenler $1ve $2fonksiyondaki komutlar tarafından kullanılacak argümanlar mvve cd; (3) $(echo $2-) var dizesinin sonuna bir yaban kedisi karakteri ekler ve değişkenin yalnızca yol içeriyorsa $2davranışını düzeltir ; (4) yalnızca yoldan filtre uygular .dirname$2 $(dirname $(echo $2-))$2
Bu cevaba göre fonksiyon şöyle görünebilir:
$ function mv-special { mv $1 $2; cd ${2%/*}; }
Nerede: ${2%/*}yalnızca yoldan filtre uygular $2.
Komut olarak kullanılabilmesi için bu işlevin dışa aktarılması gerekir :
$ export -f mv-special
Kullanımı:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
veya:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
Lütfen her iki değişken için de ikinci argümanın ( $2) dosya adı veya eğik çizgi ( /) ile bitmesi gerektiğine dikkat edin .
Kalıcı olarak kullanılabilen yeni komutumuz olmak için, işlevin tanımı ve dışa aktarma komutunun aşağıdakilere eklenmesi gerekir ~/.bashrc:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
export -f mv-special
veya:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd ${2%/*}; }
export -f mv-special

Özel komut, içine ~/binveya içine yerleştirilen yürütülebilir komut dosyası aracılığıyla yapılabilir /usr/sbin: Nasıl özel bir terminal komutu oluşturabilirim (komut dosyasını çalıştırmak için)? Ama dürüst olmak gerekirse, bu senaryoda davranışıyla ilgili bir sorunla karşılaştım cd.