# FAQ Tips > Tipps und Tricks >  Rätsel

## keiner_1

Hallo Tuxer

Ich habe einige Rätel (wie verhaltet sich die Shell) für euch, viel Spass bei ausprobieren :-) (oder wissen)

Aufgabe 1) command a || command b | c
Aufgabe 2) { command a || command b} |command c

Da ich dieses Forum nicht nur mit Fragen eröffnen will hier ein nützlicher Befehl:

Wie finde ich alle Programme die ein SUID Bit gesezt haben und dem User Root gehören??? für die die SUID nie gehört hatten, hier  eine Beschreibung!

mittels find

find / -user root -perm +7000 -print

das gleiche

find / -uid 0 -perm +7000 -print

Findet alle Files die dem Root gehören und höchstens die Rechtemaske 7000 haben, dann auf die Konsole herausgeschrieben

postet alles was euch dazu einfällt, sollte ein langer thread werden :-)

greetz

adme

----------


## CboyGeek

[QUOTE]_Original geschrieben von adme_ 
[B]Hallo Tuxer

Ich habe einige Rätel (wie verhaltet sich die Shell) für euch, viel Spass bei ausprobieren :-) (oder wissen)

Aufgabe 1) command a || command b | c
Aufgabe 2) { command a || command b} |command c

Aufgabe 1: command a oder command b und command c
Aufgabe 2: keine ahnung...

lieg ich richtig?

----------


## keiner_1

@CboyGeek

Ja du liegst nicht  richtig: er führt wenn a nicht erfolgreich war, die Pipe b | c aus, wenn er erfolgreich war dann komme die Pipe b | c nicht an die Reihe

die commands werde von links nach rechts abgearbeitet, oder?

@alle

die erste Aufgabe habe ich verraten, nun findet die zweite heraus!

greetz

adme

----------


## Trillian

*bla || foo*
foo wird nur ausgeführt, wenn bla mit einem Fehler beendet wurde / sich beendet hat (Gegenteil von &&)

*bla | foo* 
War wahrscheinlich ne Fangfrage  :Big Grin: 
Erst durch || verunsichern, dann mit | kommen (stdout von bla an stdin von foo übergeben; | heisst "pipe")

*Edit:*
Ups, zu spät  :Wink:

----------


## keiner_1

@Trillian ja ich gebe zu ich war ein bisschen fies :-) ich wills ja nicht zu einfach machen

übrigens die Augabe zwei kann man auch ausprobieren!!

greetz

adme

----------


## Trillian

> _Original geschrieben von adme_ 
> *übrigens die Augabe zwei kann man auch ausprobieren!!*


Ich bin schon erleuchtet, will aber nicht alles vorher verraten. Die anderen wollen auch noch was zum "rätseln" haben  :Big Grin:

----------


## McG.linux

rätseln?

na conmand a oder comand b und auf jeden Fall danach command c, oder?  :Wink: 

Gruß
McG.linux

----------


## keiner_1

genau!

was meint ihr zu dem find command, kennt ihr noch clevere Optionen

greetz

adme

----------


## msi

ja ne sehr clevere Option sogar:

man find

da kann man alle optionen sehen ;-)

----------


## keiner_1

Sali

weiss du Newbies werden nicht immer von den man Seiten schlau!!! die haben lieber einen HOWTO text oder sowas!

greetz

adme

----------


## zander

Um für jeden Treffer einer Suche mit find einen Befehl auszuführen bieten sich zwei Möglichkeiten; der interne exec Befehl und xargs:

find . -name \*.c | xargs grep -li "printf"
find . -name \*.c -exec grep -li "printf" {} \;

----------


## Sandal

Manchmal muß man die Klammern auch mit einem \ versehen:

find . -name \*.c -exec grep -li "printf" \{\} \;

Ein beliebter Fehler (von mir zumindest) ist auch das Leerzeichen vor dem \; zu vergessen.

Sandal

----------

