Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: ivo_18 в Dec 29, 2011, 11:32



Титла: Създаване на sh файл - автоматично използване на команди - как?
Публикувано от: ivo_18 в Dec 29, 2011, 11:32
Здравейте,

Искам да попитам, как се създава sh файл в който да бъдат добавени комадни от рода на:

cp -r downloads /data/VMBACKUP


Идеята ми е, да не пиша всеки път една и съща команда за копиране на дадена директория от едно място на друго, как мога да направя така, че да запиша например 10 еднакви команди но за различни директории които да се прехвърлят на едно и също място?

Четох за този sh файл, че се създава от контролния терминал посредством текстов редактор след което се запаметява като .sh

Kакъв е скрипта и как мога да го напиша този sh файл?

Благодаря предварително.

Поздрави!


Титла: Re: Създаване на sh файл - автоматично използване на команди - как?
Публикувано от: AMD в Dec 29, 2011, 12:37
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. echo "Избери файл 1"
  4. read file1
  5. echo "Избери файл 2"
  6. read file2
  7. echo "Избери файл 3"
  8. read file3
  9. echo "Избери файл 4"
  10. read file4
  11. echo "Избери файл 5"
  12. read file5
  13. echo "Избери файл 6"
  14. read file6
  15. echo "Избери файл 7"
  16. read file7
  17. echo "Избери файл 8"
  18. read file8
  19. echo "Избери файл 9"
  20. read file9
  21. echo "Избери файл 10"
  22. read file10
  23.  
  24. echo "Избери директория в която да се копират."
  25. read dir
  26.  
  27. cp -rva $file1 $file2 $file3 $file4 $file5 $file6 $file7 $file8 $file9 $file10 $dir
  28.  

Ако някой има по-добра идея да я каже, но и този вариант работи.


Титла: Re: Създаване на sh файл - автоматично използване на команди - как?
Публикувано от: Филип Бонев в Dec 29, 2011, 12:52
Здравей,

Просто ще нахвърлям няколко неща :)

За да напишеш скриптов файл не ти трябва нищо специално.

В линукс/уникс разширението не оказва значение дали един файл е изпълним, това става от правата на файла, т.е. дадено разширение не дава права за изпълнение. За да направиш един файл изпълним трябва да изпълниш примерно:
Код
GeSHi (Bash):
  1. chown +x script.sh

В друга тема беше писал за VMWare Server мисля че там единствения редактор беше VI. Малко е сложен за хора които не са го пускали, но ще напиша няколко неща за него.

Отваряне на файл с VI, ако не съществува ще се създаде.
Код
GeSHi (Bash):
  1. vi script.sh

При отваряне на VI не си в режим на редактиране, за да влезеш в такъв ползваш един от следните бутони:
"i" - влизаш в режим редакция
"o" - минаваш на нов ред и влизаш в режим редакция
"a" - преместваш курсора на следващия символ  и влизаш в режим редакция
След като приключиш с редактирането, трябва да запишеш файл. Натискаш ESC за да излезеш от режим за редакция.
Въвеждането на команди става с натискане на ":" и след това командата
:w - записва файла
:q - излизаш от редактора
:!q - излизаш от редактора без да записваш промените
:wq - записваш и излизаш

Все пак може да пробваш дали случайно няма "nano" той е малко по лесен за ползване.

В почти всички линукси има команден интерпретатор sh, ето и как трябва да изглежда един такъв файл:
Код
GeSHi (Bash):
  1. #!/bin/sh
  2. #редовете започващи с # са коментари с изключение на първия, в него се оказва командния интерпретатор
  3. #тук си пишеш командите, примерно:
  4. mount /data/VMBACKUP
  5. cp -r downloads /data/VMBACKUP
  6. co -r neshto /data/VMBACKUP
  7. umount /data/VMBACKUP

Редакция:
Ако ще подаваш параметри може да ползваш $1, $2 и т.н. Това са параметрите подадени на скрипта. При ползване за cp и други команди ти препоръчвам да ги слагаш в кавички примерно:
Код
GeSHi (Bash):
  1. cp -r "$1" "$2"
После извикваш скрипта така
Код
GeSHi (Bash):
  1. script.sh /mainstuff/ /data/VMBACKUP

За повече инфо ти препоръчвам да потърсиш в gооgle за уроци по VI, Bash(скриптов интерпретатор, доста общо с простия sh и на доста дистрибуции sh е връзка към bash).


Титла: Re: Създаване на sh файл - автоматично използване на команди - как?
Публикувано от: ivo_18 в Dec 29, 2011, 13:12
Много благодаря за бързите отговори, имам nano editor в операционната система която в open Suse 10.0.

Да, бях пуснал тема за VMware Server, и темата е актуална защото не мога да рестартирам VMware Server-a, преди малко ъпнах темата.

Извинявам се за отклонението, та по същество, ето моя примерен Sh файл, който искам да създам:


Код:
GNU nano 1.3.12                                    New Buffer                                                                    Modified  

#!/bin/sh

#cp -r data/downloads /data/VMBACKUP

#cp -r data/downloads1 /data/VMBACKUP

#cp -r data/downloads12 /data/VMBACKUP

#cp -r data/downloads123 /data/VMBACKUP

#cp -r data/downloads1234 /data/VMBACKUP

#cp -r data/downloads12345 /data/VMBACKUP

#cp -r data/downloads123456 /data/VMBACKUP

#cp -r data/downloads1234567 /data/VMBACKUP

#cp -r data/downloads12345678 /data/VMBACKUP

#cp -r data/downloads123456789 /data/VMBACKUP



^G Get Help            ^O WriteOut            ^R Read File           ^Y Prev Page           ^K Cut Text            ^C Cur Pos
^X Exit                ^J Justify             ^W Where Is            ^V Next Page           ^U UnCut Text          ^T To Spell



Как се завършва файла, има ли нещо с което се приключва преди да се запише?
Трябва ли да има разстояние между командите, както аз съм ги написал с по един ред разстояние, или не трябва?


Титла: Re: Създаване на sh файл - автоматично използване на команди - как?
Публикувано от: Филип Бонев в Dec 29, 2011, 13:15
Махни # пред командите, това както написах оказва че реда е коментар.

Няма нищо специално за край на файл.

Просто Ctrl+O за запис от нано и после Ctrl+X за изход.

Код
GeSHi (Bash):
  1. #!/bin/sh
  2. cp -r data/downloads /data/VMBACKUP
  3. cp -r data/downloads1 /data/VMBACKUP
  4. cp -r data/downloads12 /data/VMBACKUP
  5. cp -r data/downloads123 /data/VMBACKUP
  6. cp -r data/downloads1234 /data/VMBACKUP
  7. cp -r data/downloads12345 /data/VMBACKUP
  8. cp -r data/downloads123456 /data/VMBACKUP
  9. cp -r data/downloads1234567 /data/VMBACKUP
  10. cp -r data/downloads12345678 /data/VMBACKUP
  11. cp -r data/downloads123456789 /data/VMBACKUP


Титла: Re: Създаване на sh файл - автоматично използване на команди - как?
Публикувано от: b2l в Dec 30, 2011, 20:49
//оff
@AMD ти за цикли не си ли чувал?


Титла: Re: Създаване на sh файл - автоматично използване на команди - как?
Публикувано от: dejuren в Dec 30, 2011, 21:53
Махни # пред командите, това както написах оказва че реда е коментар.

Няма нищо специално за край на файл.

Просто Ctrl+O за запис от нано и после Ctrl+X за изход.

Код
GeSHi (Bash):
  1. #!/bin/sh
  2. cp -r data/downloads /data/VMBACKUP
  3.  
Последно - избягвайте използването на относителен път в скрипт, винаги използвайте пълния:
Код
GeSHi (Bash):
  1. #!/bin/sh
  2. cp -r /full/path_to/data/downloads /data/VMBACKUP
  3.