mvİkinci bağımsız değişkene tam yolu yazmadan komut yürütmenin herhangi bir yolu var mı ?
Misal:
mv my/file/that/has/a/really/long/path/foo.bar some_magic_operator_that_means_the_same_directory/foo.baz
mvİkinci bağımsız değişkene tam yolu yazmadan komut yürütmenin herhangi bir yolu var mı ?
Misal:
mv my/file/that/has/a/really/long/path/foo.bar some_magic_operator_that_means_the_same_directory/foo.baz
Yanıtlar:
Bash küme ayracı genişletmeyi kullanabilirsiniz. Bu:
mv my/file/that/has/a/really/long/path/foo.{bar,baz}
genişleyecek:
mv my/file/that/has/a/really/long/path/foo.bar my/file/that/has/a/really/long/path/foo.baz
ve sonra mvbu iki argümanla yürütülür. Destek genişletme hakkında daha fazla bilgi için http://wiki.bash-hackers.org/syntax/expansion/brace adresine bakın .
Destek genişletmeye alternatif olarak, bash kabuğunun geçmiş genişletme özelliklerini kullanabilirsiniz:
! bir tarih genişlemesi sunar# geçerli komutu belirten olay belirleyicisi$ son argümanla ilgili kelime belirleyici Sed benzeri bir s/pattern/replacementsözdizimi kullanarak genişletme üzerinde değişiklik yapabilirsiniz.
somecommand path/to/foo.bar !#$:s/.bar/.baz
Ör.
$ mv -v somepath/Original/Dir3/SubDir1/foo.bar !#$:s/.bar/.baz
mv -v somepath/Original/Dir3/SubDir1/foo.bar somepath/Original/Dir3/SubDir1/foo.baz
'somepath/Original/Dir3/SubDir1/foo.bar' -> 'somepath/Original/Dir3/SubDir1/foo.baz'
Özellikle yolu (örneğin, mvikame ile kolayca elde edilemeyen tamamen farklı bir ada sahip bir dosyaya) istiyorsanız, hdeğiştiriciyi kullanabilirsiniz :
$ mv -v somepath/Original/Dir3/SubDir1/foo.baz !#$:h/baz.foo
mv -v somepath/Original/Dir3/SubDir1/foo.baz somepath/Original/Dir3/SubDir1/baz.foo
'somepath/Original/Dir3/SubDir1/foo.baz' -> 'somepath/Original/Dir3/SubDir1/baz.foo'
Dahil olmak üzere diğer seçenekler için readline, bkz son argüman yank tuş kombinasyonları şu anda bash konsolda parametresinde yazılan yinelerseniz nasıl?
`DIR=./really/long/path/mv "$DIR"foo.bar "$DIR"foo.bzBir satırda: DIR=./really/long/path/; mv "$DIR"foo.bar "$DIR"foo.bz
cdçalışmak istediğiniz dizine de ulaşabilirsiniz:cd ./really/long/pathmv foo.bar foo.bzBir satırda: cd ./really/long/path && mv foo.bar foo.bz
&&Bu son tek astarda en iyi kullanım . Aksi takdirde, cdbaşarısız olursa,mv yanlış dizinde çalıştırılır ve muhtemelen bir dosyanın üzerine yazılır. İle cd ./really/long/path && mv foo.bar foo.baz,mv yalnızca cddizin değiştirilirse çalıştırılacaktır .
cddizine vemvoradan gitmenizin bir nedeni var mı?