Expand a path name, for example by replacing a leading tilde by
the user's home directory (if defined on that platform).
*A* path name. The argument is a character vector.
If multiple path names are passed, they are passed
On most builds of R *A LEADING* "~user" will be replaced...
Nothing is said in the R documentation about *multiple* or
*non-leading* tildes being replaced.
The actual behaviour is inconsistent with the documentation.
SOMETHING is a bug.
It's not clear to me why this is in any way dependent on
readline. I've implemented tilde expansion several times
and always without readline.
It sounds as though R might be calling tilde_expand()
when it *should*, to be consistent with the documentation,
be calling tilde_expand_word().
I'm hesitant to be "that guy", but in case no one else has brought this up
to you, having files with a tilde in their names (generally but especially
on a linux system, where ~ in file names has a very important special
meaning in some cases, as we know) strikes me as an exceptionally bad
practice anyway. In light of that, the solution with the smallest amount of
pain for you is almost surely to just... not do that. Your filenames will
be better for it anyway.
There is a reason no one has complained about this before, and while I
haven't run a study or anything, I strongly suspect its that "everyone"
else is already on the "no tildes in filenames" bandwagon, so this
behavior, even if technically a bug, has no ability to cause them problems.
On Tue, Jun 11, 2019 at 8:25 AM Frank Schwidom <[hidden email]> wrote:
I actually want to make renames over thousands of files. But if I am not able to express the source filename of the rename operation I will not be able to get the work done. Besides the fact that there are issues I think that R is qualified for solving my problem by the method how it can handle long vectors of strings, booleans and also lists.
Note that R treats tildes in file names differently on Windows and Linux.
On Windows, it is only replaced if it it at the beginning of the line and
is followed by a forward or backward slash or end-of-line. On Linux it is
replaced no matter where it is in the text and ~someUser will be replaced
by someUser's home directory (if 'someUser' is a user with a home
Hence, if you have a Windows machine that can look at the file system on
your Linux machine you can use file.rename on Windows to change the names.
My inclination would be to use a bash script on Linux to change the names,
but if you are not comfortable with bash try the Windows approach.
On Tue, Jun 11, 2019 at 1:13 PM Frank Schwidom <[hidden email]> wrote:
With c76695 in the trunk, we now only tilde expand file names starting
with a tilde also when using readline.
> On 11/06/2019 4:34 p.m., William Dunlap via R-devel wrote:
>> Note that R treats tildes in file names differently on Windows and Linux.
>> On Windows, it is only replaced if it it at the beginning of the line and
>> is followed by a forward or backward slash or end-of-line. On Linux it is
>> replaced no matter where it is in the text and ~someUser will be replaced
>> by someUser's home directory (if 'someUser' is a user with a home
> That's not quite true: On Linux the bug is in the code that uses
> libreadline, which you don't have to use. If you just specify
> "--no-readline" when you start R, it will be fine on Linux, as far as I
> can see.
> I wouldn't choose that as the default way to run R (it's pretty
> irritating not to have readline support), but it is a workaround for
> this bug.
I'm aware of that, but that isn't the case that is being discussed, as the
example given clearly had a tilde (and spaces) in the middle of the file.
Backup files witilde suffix does not trigger the bug being discussed. It's
*only* files paths where the tilde is surrounded on both by spaces (or on
the right by the end fo the string) that trigger it.
> path.expand("a ~ b")
 "a /Users/gabrielbecker b"
> path.expand("myfile.txt ~")
 "myfile.txt /Users/gabrielbecker"
All that said I'm really not interested in participating in a flame war
over this. I gave my 2 cents as respectfully as I could, so as of now
please consider my participation and interest in this thread closed.
At the risk of looking silly, note that all of this is now largely moot
anyway (or will be with the next release of R), thanks to Kurt Hornik's
fixing of the bug in question (which he announced on this thread prior to
but I read after Paul's).
On Wed, Jun 12, 2019 at 11:51 PM Gabriel Becker <[hidden email]>
I apologize. I did not mean to flame, merely to point out a typical usage
of tilde that might have escaped the discussion.
As you say, Kurt's fix makes this all moot.
I also apologize for wasting everyone's time with my spam.
On Thu, Jun 13, 2019 at 2:13 AM Gabriel Becker <[hidden email]>
On 14/06/2019 14:43, Frank Schwidom wrote:
> Hi John,
> First, the unix and linux filesystem allows the use of any nonzero character in its filesystem filenames
Well, even it's not the central point of the discussion let make this
assertion more correct. It depends on file system. E.g. JFS
(https://en.wikipedia.org/wiki/JFS_%28file_system%29) abides to this
rule while very popular ext4 (https://en.wikipedia.org/wiki/Ext4) does
not. In addition to NUL character, the latter forbids '/' as well.