[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: realpath quoting



On 5/2/24 19:56, Max Nikulin wrote:
On 03/05/2024 09:19, Greg Wooledge wrote:
I still insist that this is a workaround that should *not*  be used
to try to cancel out quoting bugs in one's shell scripts.

There are still specific cases when quoting is necessary, e.g. ssh remote command


+1


(however you have to be sure concerning shell on the remote host).


+1


In BASH printf has %q format. GNU coreutils supports it as well, but dash does not, so be careful.


My practice is to start with '#!/bin/sh' and migrate to '#!/usr/bin/env perl' as complexity increases.


Likely Jeremy's case does not really require this kind of quoting.


We need to see the full range of file names the OP is trying to deal with.


While "ls -l" output is for humans, realpath is often used in scripts. Certainly it should nor return quoted output by default. I am in doubts if a dedicated option should be added to realpath.


Thank you for helping me realize that my solution fails to print the resolved absolute file name. Here is the updated solution:

2024-05-02 21:57:56 dpchrist@laalaa ~
$ touch 'name with spaces'

2024-05-02 22:23:01 dpchrist@laalaa ~
$ touch 'name with
> newline'

2024-05-02 22:28:36 dpchrist@laalaa ~
$ perl -MString::ShellQuote '-MFile::Spec::Functions qw(rel2abs)' -e 'print shell_quote(map { rel2abs $_ } @ARGV), "\n"' name*
'/home/dpchrist/name with
newline' '/home/dpchrist/name with spaces'


David


Reply to: