That does not fit to my wish, it is certainly readable for you, but not for me.
On Wednesday, December 28, 2016 at 2:53:46 PM UTC+1, Konstantin Khomoutov wrote: > > On Wed, 28 Dec 2016 10:25:54 -0300 > Aldrin Leal <ald...@leal.eng.br <javascript:>> wrote: > > > > As explain ~/ in golang > > > <https://github.com/golang/go/issues/18443> , I am trying to > > > request the user to cat a file with a gocat program. > > > > > > The point is that if the user tell to the terminal the full address, > > > /home/user/file, the program works, but if the user use ~/file the > > > program brokes. > > > > > > How can I use Golang to use ~/ in terminal request? > > I believe this sums it up pretty well: > > > > > http://stackoverflow.com/questions/17609732/expand-tilde-to-home-directory > > The accepted answer presents an obvious solution -- since dealing > with tilde expantion is what Unix shells do, make a shell do it -- but > that solution contains a subtle problem: we accept the input from the > user and then submit it as a script to `/bin/sh -c`. So the user can > happily enter "rm -rf something" or something like this. > Validating such input for sanity is an excersise in futility IMO. > > BTW Aurélien seems to have asked this same question over there on SO, > and I provided them with an an answer [1]. > The answer is > > ----------------8<---------------- > The ~ and a more general ~username "things" belong to the so-called > "tilde expansion" of the standard Unix shell (as standardized by > POSIX). They have no bearing on environment. > > So in order to interpret those shortcuts, you'd need to parse them > manually and substitute them in the input string¹ or see if > path/filepath.Abs() is able to help you (I'm afraid it's not). > > ---- > > ¹ Parsing ~ and ~username is hard because you need to > > 1. For just ~, heck the environment variable "HOME", and if it > exists use its value. > > 2. Otherwise ask whatever subsystem of your OS is responsible for > this for the location of the user's home directory. For ~ this will > be the current user; for ~username this will be the user with the > username login name. > > Note that on *nix it does not have to be equal to the user's > login name. Instead it's located in a special database. > > And if you think this database is the /etc/passwd you're wrong > because the login subsystem can be configured to use other sources > for this information—with LDAP servers being one common example. > > Note that the Unix shell itself does not fail if the ~username cannot > be expanded; consider: > > $ whoami > kostix > $ echo ~kostix > /home/kostix > $ echo ~doesnotexist > ~doesnotexist > ----------------8<---------------- > > Aurélien, can you elaborate on what's wrong with it? > > 1. http://stackoverflow.com/a/41361431/720999 > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.