wie kann ich - escapen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
xris
Beiträge: 75
Registriert: 11.11.2003 14:40:36
Wohnort: Antibes (Frankreich)
Kontaktdaten:

wie kann ich - escapen?

Beitrag von xris » 08.08.2005 15:13:28

hi!

ich habe eine datei mit dem Namen: -file1.dat
(also mit dem minuszeichen)

cp -file1.dat file1.dat

funktioniert nicht, was muss ich ändern, dass das funktioniert?

danke un grüße

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 08.08.2005 15:42:46

Hallo xris,
leider bin ich jetzt nicht an einem Linuxrechner, aus dem Kopf würde ich sagen:

Code: Alles auswählen

cp -- -file1.dat file1.dat
...spätestens heute abend kann ich genauer nachsehen :wink:

Gruß fuzzy

xris
Beiträge: 75
Registriert: 11.11.2003 14:40:36
Wohnort: Antibes (Frankreich)
Kontaktdaten:

Beitrag von xris » 08.08.2005 16:19:51

super, funktioniert. was bedeutet denn das -- ohne weitere angaben? heisst das, dass nachher keine optionen mehr kommen?

grüße

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22447
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 08.08.2005 16:22:53

Das einzelne - bedeutet das ist ein Parameter. Und nur das doppelte -- bedeutet hier sind die Parameter zu Ende. Alles was danach kommt zählt nicht mehr dazu.
Zuletzt geändert von KBDCALLS am 09.08.2005 21:53:17, insgesamt 1-mal geändert.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

codi
Beiträge: 120
Registriert: 18.10.2004 20:20:22

Beitrag von codi » 09.08.2005 21:19:01

hi, kann jemand erklären worum es geht? was ist mir escapen gemeint?

danke und gruß

Codi

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 09.08.2005 21:26:08

codi hat geschrieben:hi, kann jemand erklären worum es geht? was ist mir escapen gemeint?
Die können das ...
http://www.fossilverlag.de/lexikon/current/node1143.html hat geschrieben: Escapen
Kodieren von unerlaubten Zeichen mittels eines reservierten Steuerzeichens (ËscapeZeichen). Solche Verfahren werden z.B. von Gateways bei der Konvertierung von Adressen oder von Übertragungsprotokollen zur Übertragung von Zeichen verwendet, die in der darunterliegenden Übertragungsebene nicht zulässig sind. Beim Empfänger müssen ËscapeZeichen erkannt und die Daten wieder in den ursprünglichen Zustand zurückverwandelt werden. Dadurch erhöht sich sowohl der Aufwand auf Empfänger- wie Senderseite, als auch das zu übertragende Datenvolumen.
Alles klar :wink:

Gruß
gms

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22447
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 09.08.2005 22:09:15

Um mal an einem Beispiel zu verdeutlichen

Nehmen wir mal an du willst ein Verzeichnis

Code: Alles auswählen

romeo & julia
anlegen

Du schreibst

Code: Alles auswählen

mkdir romeo & julia
Geht natürlich nicht. Es wird nur das Verzeichnis romeo angelegt und julia wir mit einem

Code: Alles auswählen

bash: julia: command not found 
quitiert. Also müssen wirs escapen und das sind gleich drei Zeichen. Und dafür ist der
backslash \ vorgesehen. Also müssen mir folgendes eingeben damits klappt.

Code: Alles auswählen

mkdir romeo\ \& \julia
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

codi
Beiträge: 120
Registriert: 18.10.2004 20:20:22

Beitrag von codi » 10.08.2005 22:04:35

Achso, und in dem Beispiel ging es halt darum das cp versucht das - als Parameter zu interpretieren. Dann is escapen in diesem Zusammenhang also, der Bash daran zu hindern, ungewollt Text oder Sonderzeichen als Steuerzeichen zu interpretieren. Also mit / die Ausführung des nächsten oder mit ' ' der eingeschlossenen Zeichen zu unterdrücken. Oder wie hier mit -- die Eingabe von Parametern abzuschließen.

Alles Paletti, besten Dank! Wieder was gelernt ;-)

Gruß
Codi

Code: Alles auswählen

romeo\ \&\ julia
;-)

Benutzeravatar
panflute
Beiträge: 31
Registriert: 23.07.2004 21:37:31
Wohnort: /dev/net
Kontaktdaten:

Re: wie kann ich - escapen?

Beitrag von panflute » 10.08.2005 22:48:57

xris hat geschrieben:hi!
cp -file1.dat file1.dat

funktioniert nicht, was muss ich ändern, dass das funktioniert?

danke un grüße
versuch's mal so:

cp "\-file1.dat" "\file1.dat"

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: wie kann ich - escapen?

Beitrag von gms » 11.08.2005 07:04:37

panflute hat geschrieben: versuch's mal so:

cp "\-file1.dat" "\file1.dat"
was soll das bringen ?

Code: Alles auswählen

root@gms1:~# cp "\-file1.dat" "\file1.dat"
cp: Aufruf von stat für ,,\\-file1.dat" nicht möglich: Datei oder Verzeichnis nicht gefunden

Benutzeravatar
panflute
Beiträge: 31
Registriert: 23.07.2004 21:37:31
Wohnort: /dev/net
Kontaktdaten:

Beitrag von panflute » 11.08.2005 11:25:41

codi hat geschrieben:Achso, und in dem Beispiel ging es halt darum das cp versucht das - als Parameter zu interpretieren.
Hmm, eher dass das "-" das direkt darauf folgende als Parameter auffasst, also dass einige potentiell mögliche Zeichen aus "file1.dat" als Parameter angesehen werden, das sagt ja letztlich auch die Fehlermeldung, die man erhält:

Code: Alles auswählen

cp -file1.dat file1.dat
cp: Ungültige Option -- e
„cp --help“ gibt weitere Informationen.
So hab auch ich wieder was dazugelernt :D

codi
Beiträge: 120
Registriert: 18.10.2004 20:20:22

Beitrag von codi » 11.08.2005 18:56:26

hmm,... also könnte man acuh eine Parmeterdatei erstellen und diese mit z.B. "cp -datei" aufrufen, oder?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 11.08.2005 21:08:20

"-file1.dat" wird hier als Parameterliste gedeutet:

-f .. force
-i ... interactive
-l ... link
-e ... GIBT ES NICHT

Dh: kommt die Fehlermeldung "Ungültige Option -e"

Gruß
gms

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 12.08.2005 04:45:43

...eben bin ich über folgendes "gestolpert".

Code: Alles auswählen

fuzzy@sid:/tmp$ rm -file.dat
rm: invalid option -- l
Try `rm --help' for more information.

fuzzy@sid:/tmp$ rm --help
[...]
To remove a file whose name starts with a `-', for example `-foo',
use one of these commands:
  rm -- -foo

  rm ./-foo
[...]
Dieses für "cp" nutzen :wink:

Code: Alles auswählen

fuzzy@sid:/tmp$ cp -- -file.dat file01.dat
fuzzy@sid:/tmp$ cp ./-file.dat file02.dat
fuzzy@sid:/tmp$ ls
file01.dat  file02.dat  -file.dat
Gruß fuzzy

Antworten