428 Stimmen

Wie führe ich ein Programm mit einem anderen Arbeitsverzeichnis als dem aktuellen in der Linux-Shell aus?

Mit einer Linux-Shell Wie starte ich ein Programm mit einem anderen Arbeitsverzeichnis als dem aktuellen Arbeitsverzeichnis?

Ich habe zum Beispiel eine Binärdatei helloworld die die Datei hello-world.txt en el aktuelles Verzeichnis .

Diese Datei befindet sich in dem Verzeichnis /a .

Derzeit befinde ich mich im Verzeichnis /b . Ich möchte mein Programm laufen lassen ../a/helloworld und erhalten die hello-world.txt irgendwo in einem dritten Verzeichnis /c .

10voto

Luther Blisset Punkte 117

Ich denke immer, dass UNIX-Tools als Filter geschrieben werden sollten, die Eingaben von stdin lesen und Ausgaben nach stdout schreiben. Wenn möglich, könnten Sie Ihr Helloworld-Binary so ändern, dass es den Inhalt der Textdatei nach stdout und nicht in eine bestimmte Datei schreibt. Auf diese Weise können Sie die Shell benutzen, um Ihre Datei überall hin zu schreiben.

$ cd ~/b

$ ~/a/helloworld > ~/c/helloworld.txt

6voto

Sahil Punkte 469

Warum nicht einfach halten

cd SOME_PATH && run_some_command && cd -

der letzte 'cd'-Befehl bringt Sie zurück zum letzten pwd-Verzeichnis. Dies sollte auf allen *nix-Systemen funktionieren.

4voto

Jin Kim Punkte 14924

Eine Möglichkeit, dies zu tun, ist die Erstellung eines Wrapper-Shell-Skripts.

Das Shell-Skript würde das aktuelle Verzeichnis in /c ändern und dann /a/helloworld ausführen. Sobald das Shell-Skript beendet wird, kehrt das aktuelle Verzeichnis zu /b zurück.

Hier ist ein Beispiel für ein Bash-Shell-Skript:

#!/bin/bash
cd /c
/a/helloworld

2voto

Tom Ritter Punkte 97450

Wenn Sie wollen, dass die Datei immer unter /C gespeichert wird, geben Sie beim Schreiben der Datei einen absoluten Pfad an.

-1voto

Harold Punkte 228

Wenn Sie dies innerhalb Ihres Programms durchführen wollen, würde ich etwas wie folgt tun:

#include <unistd.h>
int main()
{
  if(chdir("/c") < 0 )  
  {
     printf("Failed\n");
     return -1 ;
  }

  // rest of your program...

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X