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 $1
ve $2
fonksiyondaki komutlar tarafından kullanılacak argümanlar mv
ve cd
; (3) $(echo $2-)
var dizesinin sonuna bir yaban kedisi karakteri ekler ve değişkenin yalnızca yol içeriyorsa $2
davranışı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 ~/bin
veya 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
.