[R] Open a file which name contains a tilde

Richard O'Keefe r@oknz @end|ng |rom gm@||@com
Sat Jun 8 05:27:54 CEST 2019


?path.expand
    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().



as separate elements of the character vector.



On Sat, 8 Jun 2019 at 04:10, Berry, Charles <ccberry using ucsd.edu> wrote:

>
>
> > On Jun 6, 2019, at 2:04 PM, Richard O'Keefe <raoknz using gmail.com> wrote:
> >
> > How can expanding tildes anywhere but the beginning of a file name NOT be
> > considered a bug?
> >
> >
>
> I think that that IS what libreadline is doing if one allows a whitespace
> separated list of file names.
>
> As reported in R-help,
>
>         https://www.mail-archive.com/r-help@r-project.org/msg254116.html
>
> path.expand seems to expand tildes beginning whitespace separated strings
> that could be filenames, but not other tildes.
>
> Thus,
>
> > path.expand("~/.newsrc ~/.R/*")  # expands both tildes
> [1] "/Users/cberry/.newsrc /Users/cberry/.R/*"
> > path.expand("~/.newsrc~/.R/*")   # expands only the first
> [1] "/Users/cberry/.newsrc~/.R/*"
> >
>
> This could be a feature if what one wanted was to pass the result to a
> system command that will process multiple file arguments, e.g.
>
> > system(paste( "wc", path.expand("~/.newsrc ~/.R/*"))) # run wc on some
> files
>
> I doubt that this was intended by R-core, but perhaps the readline devs
> had this in mind.
>
> Chuck
>
>
> > On Thu, 6 Jun 2019 at 23:04, Ivan Krylov <krylov.r00t using gmail.com> wrote:
> >
> >> On Wed, 5 Jun 2019 18:07:15 +0200
> >> Frank Schwidom <schwidom using gmx.net> wrote:
> >>
> >>> +> path.expand("a ~ b")
> >>> [1] "a /home/user b"
> >>
> >>> How can I switch off any file crippling activity?
> >>
> >> It doesn't seem to be possible if readline is enabled and works
> >> correctly.
> >>
> >> Calls to path.expand [1] end up [2] in R_ExpandFileName [3], which
> >> calls R_ExpandFileName_readline [4], which uses libreadline function
> >> tilde_expand [5]. tilde_expand seems to be designed to expand '~'
> >> anywhere in the string it is handed, i.e. operate on whole command
> >> lines, not file paths.
> >>
> >> I am taking the liberty of Cc-ing R-devel in case this can be
> >> considered a bug.
> >>
> >> --
> >> Best regards,
> >> Ivan
> >>
> >> [1]
> >>
> >>
> https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/main/names.c#L807
> >>
> >> [2]
> >>
> >>
> https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/main/platform.c#L1915
> >>
> >> [3]
> >>
> >>
> https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/unix/sys-unix.c#L147
> >>
> >> [4]
> >>
> >>
> https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/unix/sys-std.c#L494
> >>
> >> [5]
> >>
> https://git.savannah.gnu.org/cgit/readline.git/tree/tilde.c?h=devel#n187
> >>
> >> ______________________________________________
> >> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >> https://stat.ethz.ch/mailman/listinfo/r-help
> >> PLEASE do read the posting guide
> >> http://www.R-project.org/posting-guide.html
> >> and provide commented, minimal, self-contained, reproducible code.
> >>
> >
> >       [[alternative HTML version deleted]]
> >
>
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list