Автор Тема: Как да се изпълняват няколко команди с една такава  (Прочетена 3554 пъти)

cyberpro

  • Напреднали
  • *****
  • Публикации: 36
  • Distribution: Ubuntu 14.04
    • Профил
Здравейте на всички.

Нов съм тук и определено съм нов във Линукс средите, за което моля да ме извините ако задавам смешни(за някои) въпроси.

Не можах да намеря темата която търся, даже не съм сигурен дали тук трябва да си задам въпроса. А въпроса ми е следния:

Как да напиша скрипт за шел(ако не се бъркам така се казва на терминала където се пишат командите) , с който да присвоя на една команда, няколко такива? По възможност този скрипт да се вкара в изпълним файл, който да се изпълнява при стартиране на системата.

Поздрави
Христо
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
Добре дошъл във форума!
Не казваш каква дистрибуция ползваш. В Slackware, например, в директорията /etc/rc.d има няколко скрипта, които можеш да разгледаш. Така се правят скриптове :) . В скрипта /etc/rc.d/rc.local можеш да поставиш твои си команди, които ще се изпълняват при всяко стартиране на системата.
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
По принцип, ако подадеш на терминала някакъв текстови файл, който да бъде изпълнен, всеки ред от този файл се приема за команда. Например, създаваш си файла script в директорията /home/user, вписваш в него някакви команди, всяка на отделен ред, например
Цитат
ls -la
echo "Някакъв текст"
df -h
след което го извикваш с някой shell в терминала, например команда за извикване на файла с bash
Цитат
bash /home/user/script
а може и да направиш файла изпълним с команда
Цитат
chmod +x /home/user/script
след което да извикаш файла директно по име с команда
Цитат
/home/user/script
Отделянето на командите във файла можеш да го направиш не само с нов ред, но и с "&&" (без кавичките, ако искаш следващата команда да е зависима от изпълнението на предходната) или с ";" (без кавичките, ако искаш следващата команда да е независима от изпълнението на предходната).

Като цяло обаче е хубаво в самия скрипт да опишеш shell-а, който ще се използва за изпълнението на скрипта. Това става с подобен ред в началото на файла
Код
GeSHi (Bash):
  1. #!/bin/bash
В случая сме описали, че скриптът трябва да се изпълни в среда на bash, като сме описали пълния път до изпълнимия файл на bash.
Имай предвид, че shell обвивките в Linux не предоставят просто среда за изпълнение на поредност от команди, но и някои условности, променливи и т.н., характерни за програмните езици. Има обаче някои разлики в поддържаните синтаксиси между отделните shell-ове, така че има значение какъв точно синтаксис следваш спрямо това какъв shell си си избрал за изпълнението. Като начало по въпроса може да чуеш лекцията на Петър Пенчев на OpenFest-а преди 3 години, където в един от Lightning Talks зачекна темата. За още ще се поровиш в Интернет, а ние ще помагаме, когато се спънеш някъде ;)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

CTEHATA

  • Напреднали
  • *****
  • Публикации: 101
    • Профил
Как да напиша скрипт за шел(ако не се бъркам така се казва на терминала където се пишат командите) , с който да присвоя на една команда, няколко такива? По възможност този скрипт да се вкара в изпълним файл, който да се изпълнява при стартиране на системата.

Имам странното чуство, че питаш за alias.
Ако напишеш
Код:
alias ls2="ls -alh; date; uptime"

след това всяко изписване на "ls2" в терминала ще ти изпълнява трите команди последователно.

Ако искаш да направиш тази промяна перманентна, просто добави този ред в края на /etc/profile (ще важи за всеки потребител) или в .profile в директорията на потребителя ти, за да важи само за него.

Поздрави и успех!


П.П. Ако това, което искаш да правиш е по-сложно, писането на скрипт, както те посъветваха горе е много по-интелигентният подход.
« Последна редакция: Jun 04, 2013, 16:54 от CTEHATA »
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
laskov +1

Малка подробност - в скрипта /etc/rc.d/rc.local респективно /etc/rc.local командите трябва да се запишат преди реда "exit 0" ако такъв има.
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

cyberpro

  • Напреднали
  • *****
  • Публикации: 36
  • Distribution: Ubuntu 14.04
    • Профил
Добре дошъл във форума!
Не казваш каква дистрибуция ползваш.
..........
Ползвам Fedora 15 на VirtualBox(за сега)

Абе я, да ви обясня направо какво се опитвам да направя.
Значи, VirtualBox-a или самата инсталация на Федора не ми поддържа разделителната способност на дисплея, който е 16:9
Значи не съм сигурен дали е от VB или от федора, понеже търсих във VB настройки за това, но не открих. А като пробвах с xrandr --newmode, --addmode, --output и т.н някъде около 5 реда команди, които намерих в нета и се получи. Но след като рестартнах Федора и ми изчезнаха настройките.

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

Благодаря предварително.
 [_]3
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
Аз мисля, че е от VirtualBox-а, понеже каквото и да пусна в него, всичко ми е 4:3 и се надявам, че след твоето питане това ще се промени :)
За информация на останалите, ОС Fedora 16, GNOME 3
« Последна редакция: Jun 04, 2013, 22:09 от laskov »
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

backinblack

  • Напреднали
  • *****
  • Публикации: 3201
    • Профил
А виртуалните добавки инсталирани ли са!?
При мен Виртуал бокса няма никакви проблеми! Монитора ми 1360х768.
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Препоръчвам инсталирането на Виртуални Добавки (Guest Additions) във виртуалната машина. Това става от прозореца на включената виртуална машина, меню Устройства (Devices), опцията Инсталиране на Виртуални Добавки (Install Guest Additions). При това във виртуалната машина ще бъде монтиран виртуален компакт диск, в който се съдържат инсталатори на Виртуални Добавки за различни операционни системи. Вас (cyberpro и laskov) ви интересува файлът VBoxLinuxAdditions.run. Изпълнете го в конзолата под root или със sudo. Възможно е да ви бъде поискано инсталирането на linux-headers, kernel-headers или там, както ви се казва пакетът в дистрибуцията. След като се инсталират Виртуални Добавки е нужен рестарт на виртуалната машина.
При това ще получите възможност за избор от повече разделителни способности, ще ви се активира интеграцията на мишката (влизане и излизане от екрана на виртуалната машина без натискане на десен Ctrl), ще ви се активира възможността за Авто-преоразмеряване на виртуалния изглед (при което разделителната способност ще следва динамично размерът на прозореца с виртуалната машина) и разни други оптимизации ;)

П.П.: Ей го, backinblack знае. Писали сме едновременно [_]3

Забравих да кажа, че ефектът от активираното Авто-преоразмеряване може да не се усети веднага след рестарта на виртуалната машина, ако прозорецът е разпънат (максимизиран). В този случай може прозорецът да се намали, след което отново да се разпъне и би трябвало да се види ефектът.
« Последна редакция: Jun 04, 2013, 23:11 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8792
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
По между  другото това го има в пакетната система на Дебиан. Почти съм убеден, че не може да го няма и във Федора. Наистина описаният начин е начина, но е начина ако се ползва една друга ОС или неподдържана дистрибуция. Федора бивайки от лидерите, едва ли  е такава.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

cyberpro

  • Напреднали
  • *****
  • Публикации: 36
  • Distribution: Ubuntu 14.04
    • Профил
А това kernel-headers как се инсталира, защото на мен ми дава следната грешка:
Код:
/tmp/vbox.0/Makefile.include.header:97: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.  Stop.
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
cyberpro, инсталирай следните пакети със следната команда с root права
Цитат
yum install kernel-devel kernel-headers gcc make
и пробвай пак да пуснеш инсталатора на Виртуални Добавки. Обърни внимание дали инсталираните версии на kernel-devel и kernel-headers съответстват на версията на ядрото, което ползваш. В RPM пакетната система тези пакети не са свързани чрез зависимост с ядрото, и ако в хранилищата има тяхна по-нова версия, се качват версии, неотговарящи на ядрото, което текущо ползваш. Ако това се случи, инсталаторът на Виртуални Добавки пак ще ти изкара същото съобщение, защото пак няма да намери хедърите на ядрото, което текущо ползваш. Решението в този случай е да обновиш и ядрото си с команда под root
Цитат
yum update kernel
след което трябва да рестартираш виртуалната машина, за да се зареди системата с новото ядро.

go_fire, точно така, пакетът за Виртуални Добавки го има в хранилищата на някои дистрибуции. Има обаче едно "но". Версията на Виртуални Добавки до известна степен зависи от версията на VirtualBox. И тъй като разминаване в тези версии за момента няма как да бъде избегнато (на реалната машина си свободен да качиш която версия на VirtualBox поискаш, а наличната в хранилищата на виртуалната система версия на Виртуални Добавки обикновено е една), ако качиш Виртуални Добавки от хранилищата на виртуалната система има много голям шанс да получиш разминаване във версиите, при което инсталираните Виртуални Добавки да не работят или поне да не работят на максимум. За разлика от хранилищата на виртуалната система, изображението на Виртуални Добавки, което се монтира като компакт диск във виртуалната система при избиране на споменатата опция, е част от пакета на VirtualBox и винаги отговаря точно на версията му. При ползване на това изображение разминаване във версиите се получава само в последствие, когато излезе нова версия на VirtualBox. Когато VirtualBox бъде обновен на реалната машина трябва да се мине отново процедурата по инсталиране на Виртуални Добавки от въпросното изображение, за да се гарантира съответствието на версиите.
Та така, Виртуални Добавки може да се инсталират и от хранилищата на системата във виртуалната машина, но инсталирането им от изображението на VirtualBox е препоръчително, за да се спестят главоблъсканици с разминаващи се версии ;)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

cyberpro

  • Напреднали
  • *****
  • Публикации: 36
  • Distribution: Ubuntu 14.04
    • Профил
Всичко мина ОК. ;) Нямаше нужда от ъпдейт на ядрото.

Много ви благодаря! Трбява да почерпя. [_]3
Активен

cyberpro

  • Напреднали
  • *****
  • Публикации: 36
  • Distribution: Ubuntu 14.04
    • Профил
Сега ме мъчи друго нещо. Изтеглих си BackTrack4  ама не ми засича wlan0 адаптера. С Live CD ще стане ли или или трябва да го инсталирам на харда?

П.С Да не би да трябва и за него да инсталирам VirtualBoxAdditions?
Активен