As has been submitted to debian BTS, http://bugs.debian.org/761423#10 -- sometimes, pipe between two components of bysybox (in this case it is find and dd) does not work in a reliable way. Quoting the testcase here. ---- % busybox sh BusyBox v1.22.1 (Debian 1:1.22.0-8) built-in shell (ash) Enter 'help' for a list of built-in commands. ~ $ mkdir /tmp/emptytest ~ $ touch /tmp/emptytest/.x ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null /tmp/emptytest/ ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null /tmp/emptytest/ ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null /tmp/emptytest/ /tmp/emptytest/.x ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null /tmp/emptytest/ ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null /tmp/emptytest/ /tmp/emptytest/.x ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null /tmp/emptytest/ ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null /tmp/emptytest/ /tmp/emptytest/.x The output should be always: /tmp/emptytest/ /tmp/emptytest/.x ---- I can confirm this result on my box too.
(In reply to comment #0) > As has been submitted to debian BTS, http://bugs.debian.org/761423#10 -- > sometimes, pipe between two components of bysybox (in this case it is find and > dd) does not work in a reliable way. Quoting the testcase here. > > ---- > % busybox sh > > BusyBox v1.22.1 (Debian 1:1.22.0-8) built-in shell (ash) > Enter 'help' for a list of built-in commands. > > ~ $ mkdir /tmp/emptytest > ~ $ touch /tmp/emptytest/.x > ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null > /tmp/emptytest/ > ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null > /tmp/emptytest/ > ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null > /tmp/emptytest/ > /tmp/emptytest/.x > ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null > /tmp/emptytest/ > ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null > /tmp/emptytest/ > /tmp/emptytest/.x > ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null > /tmp/emptytest/ > ~ $ find /tmp/emptytest/ -name "*?" | dd count=1 2>/dev/null > /tmp/emptytest/ > /tmp/emptytest/.x > > The output should be always: > > /tmp/emptytest/ > /tmp/emptytest/.x I think you are mistaken. { echo a; echo b; } | dd count=1 2>/dev/null usually (almost always) prints two lines: "a", "b". But { echo a; sleep 1; echo b; } | dd count=1 2>/dev/null always prints only one line, "a". Because dd is instructed to do only one read (count=1), and if only "a\n" is ready to be read, then dd gets that, outputs it, and exits. No, it should not be always this.