(gelöst) Was bedeutet ln -1 in einem script?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
medias
Beiträge: 90
Registriert: 18.05.2014 11:21:43

(gelöst) Was bedeutet ln -1 in einem script?

Beitrag von medias » 08.08.2018 11:13:15

for i in `ln -1`; do sed -e "s/<title>[a-zA-Z0-9]*<\/title>/<title>$i<\/title>/g" $i > .tmp; cat .tmp> $i; done

Quelle: https://www.quora.com/How-can-I-use-bas ... e-filename
-1 (also eins) gibt es nicht lt. man. Google kennt es ebenfalls nicht. Desweiteren stimmt was mit den $i nicht. Was wird in dem script Dateien mäßig überhaupt gemacht um den Dateinamen zwischen den html title tag zu bekommen? Es wird irgendwas via symlink auf einer bestimmten Verzeichnisebene (daher wohl -1) gemacht. Mir erschließt sich das aber nicht.
Zuletzt geändert von medias am 08.08.2018 18:50:59, insgesamt 1-mal geändert.

Benutzeravatar
hikaru
Moderator
Beiträge: 13900
Registriert: 09.04.2008 12:48:59

Re: Was bedeutet ln -1 in einem script?

Beitrag von hikaru » 08.08.2018 11:17:23

Das wird wohl ein Tippfehler sein. Mit ls statt ln ergibt die Sache Sinn.

Benutzeravatar
Meillo
Moderator
Beiträge: 9228
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Was bedeutet ln -1 in einem script?

Beitrag von Meillo » 08.08.2018 12:05:23

hikaru hat geschrieben: ↑ zum Beitrag ↑
08.08.2018 11:17:23
Das wird wohl ein Tippfehler sein. Mit ls statt ln ergibt die Sache Sinn.
Sehe ich auch so.


In Scripten kann man sich das `-1' zudem sparen, weil ls(1), wenn die Ausgabe kein Terminal ist, sich automatisch wie mit `-1' verhaelt.

Btw: Eigentlich braucht man dieses `-1' gar nicht, weil man es immer durch `ls | cat' ersetzen kann. Trotzdem es nicht noetig ist und nur in BSD zu finden war, ist es in POSIX aufgenommen worden: http://pubs.opengroup.org/onlinepubs/96 ... es/ls.html Das wundert mich etwas, denn normalerweise sind es gerade diese Faelle, die bewusst aus POSIX ausgespart worden sind.
Use ed once in a while!

owl102

Re: Was bedeutet ln -1 in einem script?

Beitrag von owl102 » 08.08.2018 12:37:26

Meillo hat geschrieben: ↑ zum Beitrag ↑
08.08.2018 12:05:23
In Scripten kann man sich das `-1' zudem sparen, weil ls(1), wenn die Ausgabe kein Terminal ist, sich automatisch wie mit `-1' verhaelt.
Man kann sich in fast allen Fällen auch das 'ls' sparen, denn dafür hat uns sh/bash die Globs gegeben:

Code: Alles auswählen

for i in *; do ...
Siehe auch: https://mywiki.wooledge.org/ParsingLs#E ... with_files

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: Was bedeutet ln -1 in einem script?

Beitrag von Milbret » 08.08.2018 12:55:37

Damit machst du aber eben das skript wieder von der bash abhängig, was man vermeiden sollte.
Da Debian auch die dash als Standard Shell verwendet, würde ich auf solche Sonderwege verzichten und auch ls verwenden, was dann auch verständlicher beim lesen ist, wenn man Bash Sonderfälle nicht kennt.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

owl102

Re: Was bedeutet ln -1 in einem script?

Beitrag von owl102 » 08.08.2018 14:55:59

Milbret hat geschrieben: ↑ zum Beitrag ↑
08.08.2018 12:55:37
Damit machst du aber eben das skript wieder von der bash abhängig, was man vermeiden sollte.
Erstens sehe ich hier keine bash-Abhängigkeit. Globbing ist im POSIX Standard definiert, und

Code: Alles auswählen

for i in *; do
  printf "Datei: $i\n"
done
funktioniert dementsprechend auch genauso in der dash. Ich finde auch nicht, daß dies unverständlicher beim Lesen ist, im Gegenteil. Hinzu kommen diverse andere Gründe, die gegen die Verwendung von ls hier sprechen; die stehen in dem Link, den ich gepostet hatte.

Und zweitens sehe ich nicht, warum man bash-Abhängigkeiten vermeiden sollte. Auch wenn in Debian die Standard-Systemshell dash ist, kann man ja "#!/bin/bash" in die erste Zeile schreiben. Aber das hat in diesem Thread nichts zu suchen, finde ich.

DeletedUserReAsG

Re: Was bedeutet ln -1 in einem script?

Beitrag von DeletedUserReAsG » 08.08.2018 15:07:25

… und was -1 in Kontext des Einzeilers oben bedeutet (auch gerne mit ls statt ln), weiß medias immer noch nicht …

Edit: doch, im Link ist’s zu lesen. Sry

Benutzeravatar
Meillo
Moderator
Beiträge: 9228
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Was bedeutet ln -1 in einem script?

Beitrag von Meillo » 08.08.2018 15:40:53

owl102 hat geschrieben: ↑ zum Beitrag ↑
08.08.2018 12:37:26
Meillo hat geschrieben: ↑ zum Beitrag ↑
08.08.2018 12:05:23
In Scripten kann man sich das `-1' zudem sparen, weil ls(1), wenn die Ausgabe kein Terminal ist, sich automatisch wie mit `-1' verhaelt.
Man kann sich in fast allen Fällen auch das 'ls' sparen, denn dafür hat uns sh/bash die Globs gegeben:

Code: Alles auswählen

for i in *; do ...
Siehe auch: https://mywiki.wooledge.org/ParsingLs#E ... with_files
Aeh, ja. Das ist natuerlich nochmal besser.
Use ed once in a while!

medias
Beiträge: 90
Registriert: 18.05.2014 11:21:43

Re: Was bedeutet ln -1 in einem script?

Beitrag von medias » 08.08.2018 18:50:20

Alles klar, danke für die Infos. :)

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: (gelöst) Was bedeutet ln -1 in einem script?

Beitrag von rendegast » 08.08.2018 19:47:13

owl102 hat geschrieben: Man kann sich in fast allen Fällen auch das 'ls' sparen, denn dafür hat uns sh/bash die Globs gegeben:
for i in *; do ...
Nicht ganz, falls das "*" nicht expandiert wird mangels gefundener Objekte,
wird i zu "*", was unerwartete Ergebnisse bringen kann.
'ls -1' besteht in dem Sinne gleichzeitig aus einem Test.

Für "*" spricht hingegen, daß ein Leerzeichen-Name korrekt übergeben wird.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

owl102

Re: (gelöst) Was bedeutet ln -1 in einem script?

Beitrag von owl102 » 08.08.2018 20:14:53

rendegast hat geschrieben: ↑ zum Beitrag ↑
08.08.2018 19:47:13
Nicht ganz, falls das "*" nicht expandiert wird mangels gefundener Objekte,
wird i zu "*", was unerwartete Ergebnisse bringen kann.
Das kann man aber behandeln, und in dem Link von mir wird dies auf zwei verschiedene Arten exemplarisch getan. (Wobei die eine der beiden Methoden nur mit der bash funktioniert.)

Antworten