Ich möchte den install
Befehl verwenden, um eine neue ausführbare Datei mit vorab ausgefülltem Inhalt zu erstellen (z. B. mit einem einzelnen pwd
Befehl).
Also habe ich dieses Beispiel erweitert, das eine neue leere ausführbare Datei erstellt:
install -b -m 755 /dev/null newfile
in diesen:
install -m755 <(echo pwd) newfile
oder:
echo pwd | install -m755 /dev/stdin newfile
Wo ich erwarte, eine neue newfile
ausführbare Datei zu erstellen, die mit Inhalten pwd
darin erstellt wird.
Es funktioniert unter Linux, schlägt jedoch unter OS X mit dem folgenden Fehler fehl:
BSD
install
(/usr/bin/install
)install
/dev/fd/63
:: Unangemessener Dateityp oder FormatGNU
install
(/usr/local/opt/coreutils/libexec/gnubin/install
)install: Datei
/dev/fd/63
wird übersprungen , da sie beim Kopieren ersetzt wurde
Warum funktioniert das nicht unter Unix, aber unter Linux? Ich vermisse etwas? Gibt es eine Möglichkeit, die obige Warnung mit einer anderen Syntax zu umgehen ( ohne eine Datei in separaten Befehlen zu erstellen und chmod
danach zu verwenden)?
In beiden Umgebungen (Linux & OS X) habe ich dieselbe Version von install
:
$ install --version
install (GNU coreutils) 8.23
zsh
, können Sie die =(cmd)
Syntax anstelle von versuchen <(cmd)
. Vom Mann: "Wenn =(...)
anstelle von verwendet wird <(...)
, ist die als Argument übergebene Datei der Name einer temporären Datei, die die Ausgabe des Listenprozesses enthält. Dies kann anstelle des <
Formulars für ein Programm verwendet werden, das dies erwartet lseek
(siehe lseek(2)
) in der Eingabedatei. " Ansonsten mkfifo
ist Ihre beste Wahl.
cp
. Dies ist nur ein Beispiel: permalink.gmane.org/gmane.os.cygwin/129935
install
Versionen.
install -m755 <(echo pwd) newfile
auf einercentOS 7
Maschine ausprobiert und sie hat korrekt funktioniert. Die Verwendung der Syntaxinstall -m755 <(echo pwd)> newfile
führte jedoch zu dem Fehler, den Sie erhalten. Mir ist klar, dass dies Ihnen nicht implizit hilft, aber es zeigt, dass Ihre Prämisse zumindest solide ist. Es sollte funktionieren