Kirjoittaja Aihe: .sh tiedosto  (Luettu 7117 kertaa)

eliasj

  • Käyttäjä
  • Viestejä: 4075
    • Profiili
.sh tiedosto
« : 03.05.06 - klo:13.51 »
Siis jos teen jollain tekstieditorilla tekstitiedoston, jonka pääte on .sh, niin silloin kun komentaa sh <ohjelman_nimi>.sh, niin se tekee ne komennot mitä tiedostossa on?
Jos laitan sinne apt-get install ja sitten liuta ohjelmia, asentaako se ne riippuvuudetkin, kun komenna sudo sh <tiedoston_nimi>.sh?
alias vililikku

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Re: .sh tiedosto
« Vastaus #1 : 03.05.06 - klo:15.21 »
Siis jos teen jollain tekstieditorilla tekstitiedoston, jonka pääte on .sh, niin silloin kun komentaa sh <ohjelman_nimi>.sh, niin se tekee ne komennot mitä tiedostossa on?
Jos laitan sinne apt-get install ja sitten liuta ohjelmia, asentaako se ne riippuvuudetkin, kun komenna sudo sh <tiedoston_nimi>.sh?

Kyllä asentaa. Se, ajetaanko apt-get scriptistä vai käsin shellistä ei mitenkään muuta sen toimintatapaa. Sama pätee pääsääntöisesti kaikkiin muihinkin ohjelmiin.


eliasj

  • Käyttäjä
  • Viestejä: 4075
    • Profiili
Re: .sh tiedosto
« Vastaus #2 : 03.05.06 - klo:15.35 »
Ookoo, hyvä tietää. Ajattelin tehdä scriptin, joka asentaisi kaikki perusohjelmat, jos asentaa server -installina.
alias vililikku

Kupuntu

  • Käyttäjä
  • Viestejä: 804
  • Kubuntu 8.10 @ Amilo A1645
    • Profiili
Re: .sh tiedosto
« Vastaus #3 : 03.05.06 - klo:17.49 »
Ookoo, hyvä tietää. Ajattelin tehdä scriptin, joka asentaisi kaikki perusohjelmat, jos asentaa server -installina.
Pistäs se skripti sit tänne kun se on valmis niin ei tartte ite tehä semmosta...
Amilo A1645: AMD 3300+ 2.0 Ghz, 512 mb RAM, 80 gb kiintolevy.
Last.fm

eliasj

  • Käyttäjä
  • Viestejä: 4075
    • Profiili
Re: .sh tiedosto
« Vastaus #4 : 03.05.06 - klo:18.01 »
No mun tarpeet on iha eri kun sun... Laitan kuitenkin:
Lainaus
#Asennetaan ohjelmia.... :)
apt-get update
apt-get dist-upgrade
apt-get install aterm xmms-dev wine libxpm-dev libxpm4 xpmutils libstdc++5 x-window-system-core xbase-clients xserver-xorg automake1.9 libncurses5 libncurses5-dev nvidia-glx nvidia-kernel-common mozilla-firefox mozilla-firefox-locale-fi-fi gaim gaim-data w32codecs sysv-rc-conf idesk gnomebaker aterm gnome-volume-manager gnome-system-monitor leafpad menu  rox-filer gimp gimp-data gimp-data-extras file-roller gthumb xqf abiword abiword-common  synaptic flashplugin-nonfree gtk2-engines-clearlooks xmms xmms-skins sun-j2re1.5 flashplugin-nonfree acroread mozilla-acroread acroread-plugins gstreamer0.10-ffmpeg idesk openbox openbox-themes fbpanel  obconf gstreamer0.10-gl gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse easytag audacity gparted rar xfonts-intl-arabic xfonts-intl-asian xfonts-intl-chinese xfonts-intl-chinese-big xfonts-intl-european xfonts-intl-japanese xfonts-intl-japanese-big xfonts-intl-phonetic gsfonts-x11 msttcorefonts sun-j2re1.5 unrar rox-filer build-essential cvs realplay openoffice.org2-soikko gcc mplayer-k7 mplayer-fonts mozilla-mplayer libdvdcss2
Eli jos asentaisin serverinä ja asentaisin Openboxin, niin nuo ohjelmat minä asentaisin. Sources.list:iäni muokkaisin tälläiseksi (sudo nano /etc/apt/sources.list):
Lainaus
# Ubuntu supported packages (packages, GPG key: 437D05B5)
deb http://fi.archive.ubuntu.com/ubuntu dapper main restricted
deb http://fi.archive.ubuntu.com/ubuntu dapper-updates main restricted
deb http://security.ubuntu.com/ubuntu dapper-security main restricted

# Ubuntu supported packages (sources, GPG key: 437D05B5)
deb-src http://fi.archive.ubuntu.com/ubuntu dapper main restricted
deb-src http://fi.archive.ubuntu.com/ubuntu dapper-updates main restricted
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted

# Ubuntu community supported packages (packages, GPG key: 437D05B5)
deb http://fi.archive.ubuntu.com/ubuntu dapper universe multiverse
deb http://fi.archive.ubuntu.com/ubuntu dapper-updates universe multiverse
deb http://security.ubuntu.com/ubuntu dapper-security universe multiverse

# Ubuntu community supported packages (sources, GPG key: 437D05B5)
deb-src http://fi.archive.ubuntu.com/ubuntu dapper universe multiverse
deb-src http://fi.archive.ubuntu.com/ubuntu dapper-updates universe multiverse
deb-src http://security.ubuntu.com/ubuntu dapper-security universe multiverse

# Cipherfunk multimedia packages (packages, GPG key: 33BAC1B3)
deb ftp://cipherfunk.org/pub/packages/ubuntu/ dapper main

# Cipherfunk multimedia packages (sources, GPG key: 33BAC1B3)
deb-src ftp://cipherfunk.org/pub/packages/ubuntu dapper main

## OpenOffice.org2 soikko
deb http://dtw.silverentertainment.fi/oo2-soikko/ gcc34 non-free 

# Penguin Liberation Front (packages, sources)
deb ftp://ftp.free.fr/pub/Distributions_Linux/plf/ubuntu/plf/ breezy free non-free
deb-src ftp://ftp.free.fr/pub/Distributions_Linux/plf/ubuntu/plf/ breezy free non-free

E: Lisäsin paketin libdvdcss2.
« Viimeksi muokattu: 03.05.06 - klo:18.08 kirjoittanut Vililikku »
alias vililikku

Tomaatti

  • Käyttäjä
  • Viestejä: 151
    • Profiili
Re: .sh tiedosto
« Vastaus #5 : 03.05.06 - klo:22.42 »
Suosittelen pypanelia Openboxin kanssa.

eliasj

  • Käyttäjä
  • Viestejä: 4075
    • Profiili
Re: .sh tiedosto
« Vastaus #6 : 04.05.06 - klo:07.59 »
Itse suosittelen Fbpanelia Openboxin kanssa. :D
alias vililikku

Snacho

  • Käyttäjä
  • Viestejä: 10
    • Profiili
Re: .sh tiedosto
« Vastaus #7 : 28.06.06 - klo:22.42 »
scriptiähän voisi kehittää siten että lisää automaagisesti nuo lähteet sources.listiin.. tehdään elämä liiankin helpoksi, mutta miten tämä tapahtuu, echo "lähteitä niin pirusti ">/etc/apt/sources.list  ei taida oikein toimia, pitäisi ensin tyhjentää jollain sources.list, kait tähän joku ohjelma löytyy vai pitääkö mennä palikkameiningillä ja poistaa tiedosto ensin ja luoda se sitten?

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Re: .sh tiedosto
« Vastaus #8 : 28.06.06 - klo:23.16 »
echo "lähteitä niin pirusti ">/etc/apt/sources.list  ei taida oikein toimia, pitäisi ensin tyhjentää jollain sources.list, kait tähän joku ohjelma löytyy vai pitääkö mennä palikkameiningillä ja poistaa tiedosto ensin ja luoda se sitten?

Kyllä se toimii oikein vaikkakin hieman kyseenalaisesti, sillä järkevää olisi tehdä vanhasta sources.list:stä varmuuskopio ja vasta sitten jyrätä se. Käyttämäsi tulostuksenohjaus ">" on kyllä oikea jos tiedosto halutaan korvata. Mikäli haluttaisiin pelkästään lisätä uutta tietoa tiedoston loppuun niin silloin oikea ohjauskomento olisi ">>".

Tomaatti

  • Käyttäjä
  • Viestejä: 151
    • Profiili
Re: .sh tiedosto
« Vastaus #9 : 29.06.06 - klo:00.48 »
Shelliscripteihin kai pitää laittaa alkuun "#!/bin/bash". En tiedä miksi, mutta jokaisessa scriptassa sellainen on. Siksi minäkin sellaisen olen aina laittanut.

Jonkun EOF jutun näin jossakin scriptassa, joka korvasi sources.listan. Mutta helposti sen tiedoston saa pyyhittyä komennolla:
rm -f /polku/tiedostoon
Tai mielummin näin:
mv /polku/tiedostoon /polku/tiedostoon.bak
Jolloin meillä on backuppikin.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Re: .sh tiedosto
« Vastaus #10 : 29.06.06 - klo:03.17 »
Shelliscripteihin kai pitää laittaa alkuun "#!/bin/bash". En tiedä miksi, mutta jokaisessa scriptassa sellainen on. Siksi minäkin sellaisen olen aina laittanut.

Se kertoo millä komennolla tiedosto suoritetaan. Jos se on "#!/bin/bash" niin se suoritetaan bash-skriptinä, jos se on "#!/usr/bin/perl" niin se suoritetaan perl-skriptinä ja niin edelleen. Ymmärsit varmaan idean :)

Tuon lisäksi tiedostolla pitää tietysti olla suoritusoikeudet. Tiedostopäätteellä ei ole mitään merkitystä sillä jos tiedoston sisällä vain on skripti ja sillä on suoritusoikeudet niin se myös suoritetaan riippumatta siitä onko sen nimi "pamela.sh", "pamela.jpg" vai pelkkä "pamela".

Lainaus
Jonkun EOF jutun näin jossakin scriptassa, joka korvasi sources.listan.

Tarkoittanetkohan bashin manuaalista kohdan "Here Documents" alta löytyvää juttua?

Koodia: [Valitse]
Here Documents
       This  type  of  redirection  instructs the shell to read input from the
       current source until a line containing  only  word  (with  no  trailing
       blanks)  is seen.  All of the lines read up to that point are then used
       as the standard input for a command.

       The format of here-documents is:

              <<[-]word
                      here-document
              delimiter

       No parameter expansion, command substitution, arithmetic expansion,  or
       pathname expansion is performed on word.  If any characters in word are
       quoted, the delimiter is the result of quote removal on word,  and  the
       lines  in the here-document are not expanded.  If word is unquoted, all
       lines of the here-document are subjected to parameter  expansion,  com‐
       mand  substitution,  and arithmetic expansion.  In the latter case, the
       character sequence \<newline> is ignored, and \ must be used  to  quote
       the characters \, $, and ‘.

       If the redirection operator is <<-, then all leading tab characters are
       stripped from input lines and  the  line  containing  delimiter.   This
       allows  here-documents within shell scripts to be indented in a natural
       fashion.

Lainaus
Mutta helposti sen tiedoston saa pyyhittyä komennolla:
rm -f /polku/tiedostoon
Tai mielummin näin:
mv /polku/tiedostoon /polku/tiedostoon.bak
Jolloin meillä on backuppikin.

Totta, ja vielä parempi on jos meillä on korvattava tiedosto muuttujassa jolloin sen käsittely on mukavampaa.

Koodia: [Valitse]
list="/etc/apt/sources.list"

# Yksinkertainen varmuuskopio
mv "$list" "$list.backup"

# "Monimutkaisempi" varmuuskopio aikaleimalla (sekunnin tarkkuus)
mv "$list" "$list.backup.$(date -u +%Y-%m-%dT%H:%M:%S)"