On Fri, Mar 14, 2008 at 09:02:19PM +1300, Richard Toohey wrote:
> On 14/03/2008, at 8:31 PM, Richard Toohey wrote:
>> On 14/03/2008, at 8:15 PM, Erwin van Maanen wrote:
>>> if [ X"${dhcpd_flags}" != X"NO" -a -f /etc/dhcpd.conf ]; then
>>> Now i have no clue what " -a -f " does (anyone care to point me to the
>>> right
>>> manual?)
> [cut]
>> man test
>> -f file True if file exists and is a regular file.
>> expression1 -a expression2
>> True if both expression1 and expression2 are true.
>>
>
> Apologies to all who know this already - but I wondered about that [ file
> for ages until I was enlightened.
>
> So, if you are wondering why man test ... at the top of the man page:
>
> SYNOPSIS
> test expression
> [ expression ]
>
> (See the square brackets?) And if you look in /bin:
>
> $ ls -l /bin
> total 13652
> -r-xr-xr-x 2 root bin 79136 Aug 29 2007 [
> [cut]
> -r-xr-xr-x 2 root bin 79136 Aug 29 2007 test
>
> man [ will take you to the test man page.
>
> See, for example:
>
> http://developer.apple.com/documentation/OpenSource/Conceptual/ShellScripting/shell_scripts/chapter_2_section_10.html#//apple_ref/doc/uid/TP40004268-CH237-SW4
Some background...
Originally, the shell had vitually no builtin commands, all processing
was done by external commands. Even loops were implemented by forking
a child that interpreted the condition and moved the seek position in
the shell script being executed. That could be done since fd's were
shared.
Of course that was all dog slow, and that's why more and more commands
are now executed as builtins. External version of the commands still
remain, though.
-Otto