Question: I'm re-writing GNU's `wc` utility in a different language, and I ran across this command which *should* cause wc to output 0 bytes counted.

`(dd ibs=99k skip=1 count=0; ./wc -c) < /etc/group`

As I currently understand it, `dd` is started in a separate (sub) shell, then `wc` is started, and then the contents of `/etc/group` are redirected inside the shell?

The `dd` command uses an input block size of 99kB and skips one of those before reading the input? That's where I get tripped up.

Right now my version reports ~980 bytes read, so I'd like to better understand this command so my utility can reflect that.

Answer: 
The `dd` command is used with `/etc/group` as input. With those arguments, we have a block file of `99k`, 1 block of `99k` is skipped due to the `ibs argument`and then 0 blocks of `99k` are copied. Then you are using your custom command `./wc -c` with the result of this command as input. What dd achieves in the end is to to ignore a block of `99k` and then feed the remaining data into your custom command.

e.g. 

```
$ wc -c /etc/group
1011 /etc/group
$ (dd ibs=500 skip=1 count=0; wc -c) < /etc/group
511

```

Of course you'll expect different results through your custom `wc` command.
Beware, it depends of the implementation

Using the @nalipar's example on my OS X.

```
$ wc -c /etc/group
    2317 /etc/group

$ gwc -c /etc/group #the GNU version of the wc
2317 /etc/group

```

the system default `wc`

```
(dd ibs=500 skip=1 count=0; wc -c) < /etc/group

```

prints

```
0+0 records in
0+0 records out
0 bytes transferred in 0.000012 secs (0 bytes/sec)
    2317

```

using the GNU `wc`

```
(dd ibs=500 skip=1 count=0; gwc -c) < /etc/group
0+0 records in
0+0 records out
0 bytes transferred in 0.000013 secs (0 bytes/sec)
1817

```