[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#9742: touch option for existence?
From: |
Jim Meyering |
Subject: |
bug#9742: touch option for existence? |
Date: |
Thu, 13 Oct 2011 15:37:42 +0200 |
tags 9742 + notabug
thanks
Morty wrote:
> On Thu, Oct 13, 2011 at 10:05:05AM +0100, Pádraig Brady wrote:
>
>> Note the above is easier to express in shell like:
>>
>> [ -e "$file" ] || touch "$file"
>
> Thanks, I'm familiar with it. :)
>
>> But that is racy. If you were using touch for locking purposes
>
> I'm using touch to make sure the file exists before an operation that
> will yield an error if it doesn't exist. For example:
Thanks for the suggestion.
However, when there's such an easy and portable way to do what you want,
touch_if_absent() { test -e "$1" || touch "$1"; }
it is counterproductive (and contrary to the "Unix way") to encumber
a tool like "touch" with an option to provide that functionality.
Besides, then you'd have to wait until a release including your
option makes it into whatever distribution you use (or build from source).
With the above, you have something that is portable and works now.
> resolv=/etc/resolv.conf
> touch $resolv
> ci -l -t-$resolv -m"check-in existing" $resolv
> grep -q domain $resolv || echo domain $domain >> $resolv
> ci -l -m"add domain $domain" $resolv
>
> The intent of code like the above is to make sure a certain file is in
> revision control and contains a certain setting. If the file already
> is in revision control and has the setting, the code should do
> nothing. But touch changes the mtime. The problem could be fixed by
> slinging around ifs, but that's inelegant.