# [gelöst] bash: Mehrfachumleitung

## V10lator

Hi,

Ich versuche mit Hilfe der Bash eine Mehrfachumleitung zu realisieren. Um genau zu sein versuche ich alle USB-Geräte in den automatischen Powersaving-Modus zu bringen.

Zuerst versuchte ich:

echo auto > /sys/bus/usb/devices/?-?/power/level

Aber dies schlägt mit der Meldung "bash: /sys/bus/usb/devices/?-?/power/level: Mehrdeutige Umlenkung." fehl.

Also versuchte ich es mit find:

find /sys/bus/usb/devices/?-? -exec echo 'on > {}/power/level' ';'

Aber das funktioniert auch nicht. Ich habe auch noch viele andere Möglichkeiten mit find -exec versucht, sie funktionierten aber alle nicht.

Hat jemand eine funktionierende Lösung?Last edited by V10lator on Wed Jan 05, 2011 3:26 am; edited 1 time in total

----------

## tuam

 *TAXI wrote:*   

> find /sys/bus/usb/devices/?-? -exec echo 'on > {}/power/level' ';'
> 
> Aber das funktioniert auch nicht.

 

Hallo Taxi,

das dürfte von der Anführungszeichensetzung her nicht gehen - keine Ahnung, ob find -exec oder find | xargs überhaupt die Umleitung so unterstützen. Aus dem Kopf würde ich es mit einer for-Schleife in Bash probieren

```
for f in /sys/bus/usb/devices/?-? ; do echo auto ${f}/power/level ; done
```

FF,

Daniel

----------

## Christian99

In diesem Fall hätte ich auch zu einer for-Schleife geraten,

eine Mehrfachumleitung lässt sich mit "tee" verwirklichen:

```

$ echo hallo | tee test1 | tee test2 > test3

$ cat test[123]

hallo

hallo

hallo

```

----------

## V10lator

Vielen Dank.

Ich habe jedoch eine andere Möglichkeit gefunden welche ich euch natürlich nicht vorenthalten möchte:

```
find /sys/bus/usb/devices/?-?/power/level -exec /bin/bash -c 'echo auto > {}' \;
```

----------

## mv

 *TAXI wrote:*   

> 
> 
> ```
> find /sys/bus/usb/devices/?-?/power/level -exec /bin/bash -c 'echo auto > {}' \;
> ```
> ...

 

Das ist aber natürlich das Langsamste: X Instanzen der Bash (nimm da wenigstens dash, die startet schneller) + ein find-Prozess.

Und hier haben wir übrigens ein weiteres Beispiel, weshalb man zsh benutzen will: Da ginge Dein erstes Kommando exakt so, wie Du es erwartest...

----------

## V10lator

 *mv wrote:*   

> Und hier haben wir übrigens ein weiteres Beispiel, weshalb man zsh benutzen will: Da ginge Dein erstes Kommando exakt so, wie Du es erwartest...

 

Ich benutze zsh als interaktive Shell.  :Wink: 

Ich habe auch versucht die erste Zeile des Scriptes von #!/bin/bash durch #!/bin/zsh zu ersetzen, komischerweise klappte das Kommando so im Script aber auch nicht.

----------

## mv

 *TAXI wrote:*   

> [Ich habe auch versucht die erste Zeile des Scriptes von #!/bin/bash durch #!/bin/zsh zu ersetzen, komischerweise klappte das Kommando so im Script aber auch nicht.

 

Bei mir hat es (mit anderen Filenamen) beim interaktiven Testen funktioniert. Vielleicht gibt es ein anderes Problem...

----------

## V10lator

 *mv wrote:*   

> Bei mir hat es (mit anderen Filenamen) beim interaktiven Testen funktioniert.

 

Genau hier ist das Problem. Gebe ich den Befehl in eine interaktive zsh shell ein funktioniert er. Schreibe ich ihn jedoch in ein Script mit "#!/bin/zsh" am Anfang funktionert er nicht.

Aber naja, es funktioniert ja mitlerweile über Umwege, wozu sich also weiter den Kopf zerbrechen?  :Smile: 

----------

## mv

 *TAXI wrote:*   

> Gebe ich den Befehl in eine interaktive zsh shell ein funktioniert er. Schreibe ich ihn jedoch in ein Script mit "#!/bin/zsh" am Anfang funktionert er nicht.

 

Kann ich nicht nachvollziehen: Bei mir funktioniert er auch im Script. Vielleicht hast Du vergessen das Skript ausführbar zu machen, oder es wird durch irgendeine Fehlkonfiguration von /bin/sh statt zsh aus gesourced? Du kannst ja mal testweise $ZSH_VERSION in dem Skript ausgeben, ob wirklich die zsh da ist...

----------

## V10lator

 *mv wrote:*   

> Kann ich nicht nachvollziehen: Bei mir funktioniert er auch im Script.

 

Tatsache, nun funktionert es.

Vielleicht hab ich mich beim ersten mal irgendwo vertippt?  :Confused: 

----------

