/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Ændre/oprette en række filer via et sh scr~
Fra : Dennis Pedersen


Dato : 22-05-02 14:03

Hej!
First of all må jeg nok sige at jeg er absolut ikke den stiveste person i
FreeBSD ej heller shell scripting (jeg aner ikke lige hvordan jeg skal
spørge google så here goes)
Jeg skal via et lille shell script have oprettet nogle filer, men nogle af
disse filer indeholder #! hvilket er grisefy i /bin/sh reci så vidt jeg kan
forstå. Er der nogen måde jeg kan omgåes dette på eller?
Ydermere hvordan kan jeg på en nem måde indsætte et tegn i starten af en
bestemt fil, på en specifik linje hvor der allerede står noget tekst?
Via echo >> kan jeg appende til filen, men jeg har ikke rigtig kunne
gennemskue hvordan jeg kan bestemme hvilket linje nr i filen det skal smides
ind - nogen der har et hint?
Hvorvidt det bliver en pæn løsning eller ej er sådan set underordnet - bare
det virker ;)


/Dennis



 
 
Claus Rasmussen (22-05-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 22-05-02 14:18

Dennis Pedersen wrote:

> Jeg skal via et lille shell script have oprettet nogle filer, men nogle af
> disse filer indeholder #! hvilket er grisefy i /bin/sh reci så vidt jeg
> kan forstå. Er der nogen måde jeg kan omgåes dette på eller?

Det har du fået forkert fat i. Sekvensen '#!' har en speciel betydning, hvis
den kommer først i en fil /og/ du forsøger at udføre filen. Ellers ikke.


> Ydermere hvordan kan jeg på en nem måde indsætte et tegn i starten af en
> bestemt fil, på en specifik linje hvor der allerede står noget tekst?

Lad os sige, at du har en fil med flg. indhold:

hej
med
dig

Du vil så gerne have indsat "TEKST" før linien "med". Det gør du sådan
her:

sed '/^med/s/^/TEKST/' filnavn

Forklaring:

/^med/ Find alle linier, der starter (^) med 'med'.
s/^/TEKST/ Lav en søg-og-erstat hvor du erstatter starten
af linien (^) med 'TEKST'.

MVH
-Claus


Klaus Alexander Seis~ (22-05-2002)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 22-05-02 15:15

Claus Rasmussen skrev:

> Sekvensen '#!' har en speciel betydning, hvis den kommer først
> i en fil /og/ du forsøger at udføre filen. Ellers ikke.

Bortset fra at # er et kommentartegn, således at man ikke får # og
resten af linjen med hvis man forsøger at echo'e #! til en fil.

Hvis shell'en er /bin/bash, vil !'et af og til udløse et "event not
found".

Så hvis man har brug for at echo'e # og !, gør man klogt i at
escape tegnene, fx

$ echo \#\!/bin/sh
#!/bin/sh
$ echo '#!/bin/sh'
#!/bin/sh
$

// Klaus

--
><>    vandag, môre, altyd saam

Claus Rasmussen (22-05-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 22-05-02 17:51

Klaus Alexander Seistrup wrote:

> Så hvis man har brug for at echo'e # og !, gør man klogt i at
> escape tegnene, fx
>
> $ echo \#\!/bin/sh

Det er meget nemmere (og mere læseligt) at sætte pinger (') omkring.
Altså: echo '#!/bin/sh' . Gås (") dur' til gengæld ikke.

-Claus


Klaus Alexander Seis~ (22-05-2002)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 22-05-02 18:25

Claus Rasmussen skrev:

>> $ echo \#\!/bin/sh
>
> Det er meget nemmere (og mere læseligt) at sætte pinger (') omkring.

Det gjorde jeg jo osse lige nedenunder, i det stykke du har klippet væk.


// Klaus

--
><>    vandag, môre, altyd saam

Claus Rasmussen (22-05-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 22-05-02 19:07

Klaus Alexander Seistrup wrote:

> Det gjorde jeg jo osse lige nedenunder, i det stykke du har klippet væk.

Ups...

Hvad er det man siger - "Gentagelse fremmer forståelsen" ?

-Claus


Dennis Pedersen (22-05-2002)
Kommentar
Fra : Dennis Pedersen


Dato : 22-05-02 19:16


"Klaus Alexander Seistrup" <jakabov119@magnetic-ink.dk> wrote in message
news:jakabov+95639d54-14bb-44dd-9bd5-4028afdb1330@news.szn.dk...
> Claus Rasmussen skrev:
>
> > Sekvensen '#!' har en speciel betydning, hvis den kommer først
> > i en fil /og/ du forsøger at udføre filen. Ellers ikke.
>
> Bortset fra at # er et kommentartegn, således at man ikke får # og
> resten af linjen med hvis man forsøger at echo'e #! til en fil.
>
> Hvis shell'en er /bin/bash, vil !'et af og til udløse et "event not
> found".
>
> Så hvis man har brug for at echo'e # og !, gør man klogt i at
> escape tegnene, fx
>
> $ echo \#\!/bin/sh
> #!/bin/sh
> $ echo '#!/bin/sh'
> #!/bin/sh
> $

Aahh...Mange tak det var lige det jeg manglede :)

/Dennis



Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408877
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste