Dosyaları taşımak için Bash betiği


11

Ben bir acemiyim ve yardıma ihtiyacım var.

Başka bir dizindeki bir dizinden bazı dosyaları taşımak için bir komut dosyası yapmaya çalışıyorum. Komut dosyasını oluşturmadan önce komutu test ettim ve çalışıyordu:

mv /path/to/source  /path/to/destination

Senaryoyu yaptıktan sonra nano:

#!bin/bash/
echo "mv /path/to/source  /path/to/destination"

Komut dosyasını ile çalıştırılabilir hale getirdim chmod +x file ve sonra çalıştırdım, ./fileancak aşağıdaki hata görünüyor:

bash: ./move.sh: /bin/bash/: bad interpreter: Not a directory

Denedim ve ile sudo ./fileve bash dosyası ama çalışmıyor.

VirtualBox ile kurulu Ubuntu kullanıyorum.


Yanıtlar:


20

Çünkü kullandınız #!bin/bash/ve bu yanlış. Doğru yol:

#!/bin/bash

Buna bir shebang denir ve kabuğa yürütüldüğünde komut dosyasını hangi programla yorumlayacağını söyler.

Başka bir şey: Ubuntu'daki bash tercümanının mutlak yolu /bin/bash, bin/bash/ya da başka bir şeydir. which bashKomut kullanarak bunu kontrol edebilirsiniz .

Ve başka bir şey, ama muhtemelen bunu biliyorsunuz: aşağıdaki satır:

echo "mv /path/to/source /path/to/destination"

yalnızca ile bir metin mesajı görüntüler mv /path/to/source /path/to/destination. Dosyaları gerçekten taşımak için aşağıdaki komut dosyasını kullanın:

#!/bin/bash
mv /path/to/source /path/to/destination

Senaryonun böyle görünmesi gerekir.


1
Ubuntu, tarihsel olarak inanılmaz derecede faydalı whichkomutun berbat bir versiyonunu paketledi . GNU'yu almak için manuel yüklemeye değer .
djeikyb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.