Bash-Befehl, der eine Nachricht auf stderr ausgibt

8

Ich möchte wissen, ob es einen integrierten BASH-Befehl gibt, der etwas Text auf stderr druckt, genau wie der echo -Befehl, der Text auf stdout druckt. Ich möchte keine temporäre io-Umleitung verwenden. Ich benutze einen eingebauten Befehl, um einen Fehler auf stderr wie ls --asdf (ls: unerkannte Option '--asdf') zu generieren, aber ich möchte etwas sauberer.

Bearbeiten ----

Eigentlich versuche ich die stderr / stdout-Umleitung zu demonstrieren, und mein Beispiel sieht so aus:

%Vor%

Aus Gründen der Übersichtlichkeit möchte ich die Datei test.sh so einfach und sauber wie möglich halten, das heißt, > operator in der Datei zu vermeiden.

    
Salman A 15.04.2010, 06:27
quelle

6 Antworten

11

echo something >&2 ist der richtige Weg, um das zu tun, was Sie wollen.

Wie auch immer ...

Dadurch wird ein kleines Programm erstellt, das seine Argumente an stderr zurückgibt:

%Vor%

Sie können es wie folgt verwenden:

%Vor%     
Dennis Williamson 15.04.2010, 11:20
quelle
2

Kein eingebautes, Sie könnten verwenden:

%Vor%     
Jürgen Hötzel 15.04.2010 06:41
quelle
1

Sie könnten auch einen Alias ​​erstellen.

%Vor%     
Chris Cooper 15.04.2010 06:50
quelle
1

Nur eine Randnotiz: Wenn Sie bash demonstrieren möchten, sollten Sie bash verwenden, nicht sh:

%Vor%

Auch wenn sh ein Link zu bash auf Ihrem System ist, wird es überprüfen, wie es aufgerufen wurde (arg0) und sh-Aufrufe wie ein Aufruf behandeln

%Vor%

was zu manchmal subtilen unterschiedlichen Verhaltensweisen führt. Ein häufiger Fehler, wie Shebang # / bin / sh, aber es hat in der Shell funktioniert (was / bin / bash war).

    
user unknown 16.04.2010 05:10
quelle
1

Niemand hat das erwähnt, aber Sie können das auch tun:

echo An error message > /dev/stderr

Es ist möglicherweise lesbarer als >&2 , aber ich denke, das hängt davon ab, wer du bist.

    
nic ferrier 18.08.2014 21:45
quelle
0

Im Allgemeinen denke ich, dass es keinen wirklichen Unterschied zwischen "zeitweiliger Weiterleitung" und dem, was Sie wollen, gibt. stderr ist ein Dateideskriptor wie jeder andere, und jedes Built-in, das das tut, was Sie wollen, würde innerlich dasselbe tun, indem Sie echo wie Jürgen weiterleiten, nämlich write () aufrufen.

    
Personman 15.04.2010 06:49
quelle

Tags und Links