OS specific PATH separator in Julia - julia

I couldn't find whether Julia provides the OS specific char to separate PATH-like strings, such as PATH=c:\windows\systems32;c:\windows;... and similar environment variables in Linux. OS specific because Windows is using ";" and Linux ":". I neither could find a helper function that does the splitting already and just not exposing the separator char. But couldn't find that either.
It's easy enough to define these myself, I was only surprised not to find them.
thanks lot for your help

No, there isn't a path list separator by default. What you can do is
Sys.iswindows() ? ';' : ':'

Related

Why R uses forward slash (/) and not backslash (\) in file paths

I was teaching an online course and a student asked me why R only uses / and not \ in file paths when using read.csv and other related functions. I tried looking at the documentation but it didn’t really mention anything about it. Never really thought about it because I use a Mac, and the default in Macs is \, but not so in Windows machines.
I’m not trained in computer science so I was left a bit stumped to answer the question a I’m afraid. Students always ask the darnest things!
Interesting question.
First off, the "forward slash" / is actually more common as it used by Unix, Linux, and macOS.
Second, the "backward slash" \ is actually somewhat painful as it is also an escape character. So whenever you want one, you need to type two in string: "C:\\TEMP".
Third, R on Windows knows this and helps! So you can you use a forward slash whereever you would use a backward slash: "C:/TEMP" works the same!
Fourth, you can have R compute the path for you and it will use use the separator: file.path("some", "dir").
So the short answer: R uses both on Windows and lets you pick whichever you find easier. But remember to use two backward slashes (unless you use the very new R 4.0.0 feature on raw strings which I'll skip for now).
(Note: backslashes as directory folder separators on Macs is a recent innovation.See History of Mac folder separators
I think if you review the history (or look it up if you were not there when it occurred as I was) you will find that Unix (which Linux copied completely) got there first. It preceded either MS-DOS or Macs or last of all Windows. R is a work-alike clone of S which was developed like Unix at Bell Labs.
Mac originally used colons (:) as folder separators (and still won't accept them in file names) and converted to slashes sometime during its long transition to BSD Unix which it licensed from ATT.
Shouldn't the question be: why Microsoft chose to use a backslash?

Pycharm does not identify a colon

I am new to python and I am using Pycharm as my environment.
I am working with dictionaries now.
For some reason, Pycharm cannot recognize my : when I used it in a dictionary.
Weird thing is that it recognized it for previous keys and values..
Any help?
It is not the colon. You are missing the comma (,) which separates the elements in the dictionary.
pan = {'name':'poguaa','age':12}
will do.

pathnames in Common Lisp, filenames with wildcards in them

The characters * and ? are used as wildcards in pathnames. How does one refer to a filename that has ? as one of its actual characters? For example:
[18]> (wild-pathname-p #p"foo")
NIL
[19]> (wild-pathname-p #p"foo?")
T
So referring to the filename "foo?" cannot be done this way. I tried to escape the ? with a backslash, but that didn't work. I tried going unicode by using \u3f or \u003f, but that didn't work.
How do I refer to a file that contains a wildcard as part of its name: How to probe it, open it, etc.?
It depends on the implementation, but for some, a backslash does in fact work. But because namestrings are strings, to get a string with a backslash in it, you have to escape the backslash with another backslash. So, for example, "foo?" is escaped as "foo\\?", not "foo\?".
Last time I checked, in CLISP, there is no way to refer to files with wildcards in the names. My solution to that is to avoid CLISP.
On my Mac running Mac OS X 10.10.3: Clozure CL, SBCL and LispWorks write a pathname with * like this:
#P"/private/tmp/test.\\*"
They might differ in some other details, though.
SBCL supports (make-pathname :directory "" :name file) to escape a string to a proper pathname.

Is it possible to disable Command Substitution in Bash?

Is it possible to disable Command Substitution in Bash?
I want to pass a string containing several backticks characters as command-line argument to a program, without trailing backslashs or quoting the string.
Thank you.
I assume there is a misconception which grounds your question. Quoting is most likely the solution to your situation. But maybe you haven't found the right way of quoting yet or similar.
If your dangerous string shall be verbatim (without quoting or escaping) in the source code, you can put it in a separate file and read it from there:
dangerous_string=$(cat dangerous_string_file.txt)
If it shall be passed without interpretation to a command, use the double quotes to prevent interpretation:
my_command "$dangerous_string"
If you have to pass it to a command which needs to receive a quoted version of your string because it is known to carelessly pass the string without using sth like the double quotes to prevent interpretation, you can always use printf to get a quoted version:
quoted_dangerous_string=$(printf "%q" "$dangerous_string")
careless_command "$quoted_dangerous_string"
If all these options do not help in your situation, please explain in more detail where your problem lies.

Path separator for Windows and Unix

Is there any special character that cannot be a part of the path in Windows or Unix that I can use it as a separator?
what about the delimiter for PATH environment variable? ; for windows, and : for Linux.
Wikipedia helpfully lists the reserved characters for different filesystems. Neither NTFS nor POSIX will accept the null or slash (/) characters in filenames. The slash character is obviously not a good separator, since it's common in POSIX paths, so maybe you could use null.
Of course null isn't suited to all situations (e.g. it isn't usually visible when printed), in which case you might have to use some sort of escaping scheme.
Java, which aims to work across different platforms, doesn't even try to find a common path separator. Instead each platform has its own character, accessible through an API.
Path separator are platform dependent :
For windows, it’s \ and for unix it’s /.
Technically, Unix does allow any character in a folder/filename, except / of course, which would be interpreted as as part of the path.
Windows does only support printable characters and some special characters excluding \ / : * ? " < > |.
In java you can use:
WindowsNTFileSystem
s.split(File.pathSeparator) for windows it will give ; (semicolon)
s.split(File.separator) for windows it will give \ (backward)
Linux
s.split(File.pathSeparator) for windows it will give : (colon)
s.split(File.separator) for windows it will give / (forward)
I would be careful with custom separators because they might break in the future, e.g. if someone uses unicode and your custom separator is part of another character.

Resources