I always do this when passing variable to command  mkdir -p "$dir_to_make"   are those quotes needed? I tried to google but didn't find much. I always write them, just interested if they are necessary.
9335
The old advice used to be to double-quote any expression involving a $VARIABLE, at least if one wanted it to be interpreted by the shell as one single item, otherwise, any spaces in the content of $VARIABLE would throw off the shell.  I understand, however, that in more recent versions of shells, double-quoting is no longer always needed (at least for the purpose described above).  For instance, in bash:  % FOO='bar baz' % [ $FOO = 'bar baz' ] &amp;&amp; echo OK bash: [: too many arguments % [[ $FOO = 'bar baz' ]] &amp;&amp; echo OK OK % touch 'bar baz' % ls $FOO ls: cannot access bar: No such file or directory ls: cannot access baz: No such file or directory   In zsh, on the other hand, the same three commands succeed.  Therefore, based on this experiment, it seems that, in bash, one can omit the double quotes inside [[ ... ]], but not inside [ ... ] nor in command-line arguments, whereas, in zsh, the double quotes may be omitted in all these cases.  But inferring general rules from anecdotal examples like the above is a chancy proposition.  It would be nice to see a summary of when double-quoting is necessary.  I'm primarily interested in zsh, bash, and /bin/sh.
26088
I find myself repeating a lot of:  mkdir longtitleproject cd longtitleproject   Is there a way of doing it in one line without repeating the directory name? I'm on bash here.
8853
Could you explain the following sentences from Bash manual about $_, especially the parts in bold,  maybe with some examples?      At shell startup, set to the absolute pathname used to   invoke the shell or shell script being executed as passed in the environment   or argument list.      Subsequently, expands to the last argument to the previous   command, after expansion.      Also set to the full pathname used to invoke each   command executed and placed in the environment exported to that command.     When checking mail, this parameter holds the name of the mail file.
73474
What does and should go into /opt/ and what should/does go into /usr/?  My understanding is that /usr/ used to be for user home directories, but since they exist in /Users/ - what is the purpose now?  Is there a manual or guide to what all of the built-in directories should be used for?  Like what is /home/, or /net/?
14808
I have a module in the parent directory of my script and I would like to 'use' it.  If I do  use '../Foo.pm';   I get syntax errors.  I tried to do:  push @INC, '..'; use EPMS;   and .. apparently doesn't show up in @INC  I'm going crazy!  What's wrong here?
99178
Consider I've set variable site and needs to be printed by echo or printf, but If I use single quote to write something and want to use variable then how?  Example:  $ site=unix.stackexchange.com $ echo "visit:$site" visit:unix.stackexchange.com   But If I use single quote:  $ echo 'visit:$site' visit:$site   Then we know that '' is strong quote and will not expand the variable   I've tried something:  $ echo 'visit:"$site"' visit:"$site"   but do not succeed. So, I am looking for way to print value inside variable while using single quote.
108303
I'm working on a Perl script. How can I pass command line parameters to it?  Example:  script.pl "string1" "string2"
121958
I've read that you need double quotes for expanding variables, e.g.  if [ -n "$test" ]; then echo '$test ok'; else echo '$test null'; fi   will work as expected, while  if [ -n $test ]; then echo '$test ok'; else echo '$test null'; fi   will always say $test ok even if $test is null.  but then why don't we need quotes in echo $test?
43519
There are several ways to execute a script. The ones I know are: /path/to/script # using the path (absolute or relative) . script        # using the . (dot) source script   # using the `source` command  Are there any other way? What are the differences between them? Are there situations that I must use one and not another?
66311
Possible Duplicate:          I was trying to figure out how to export my environmental via script instead of changing my .bashrc file.   I found  that said:     Variables can only be exported to subordinate processes, you can't   pass them back up to the parent. If you really want your script to   affect the parent shell's environment, run the script as  . ./yourprogram    I just want to know what the difference is between . ./script and ./script?  When I look at it, they booth mean to me, run the script from the current directory?
7201
Is there a linux command that I'm overlooking that makes it possible to do something along the lines of: (pseudo)  $ mkdir -R foo/bar/zoo/andsoforth   Or is there no alternative but to make the directories one at a time?
45221
&gt; echo "hi" hi &gt; VAR='echo "hi"' &gt; $VAR "hi"   Why is the output of the above commands different?  A similar thing occurs with single quotes:  &gt; VAR="echo 'hi'" &gt; $VAR &gt; 'hi'
13829
This is a situation I often find myself in:  mkdir /Some/really/long/path/to/a/directory/ cd /Some/really/long/path/to/a/directory/   I know that ideally you would cd /Some/...etc.../a/ and then mkdir directory, but I've often performed mkdir first and then had to cd to the end of the same lengthy file path I just created.  Short of doing...  var="/Some/...etc.../a/" mkdir $var/directory; cd $var   ...which is even worse, is there some way to reuse the parameter passed to the previous command? I'm aware of course of tab completion, but in a series of nested directories with similar names this doesn't always help that much. Ideally, I'm hoping for a shortcut like $# or $@.  Failing this, the next best time-saving solution would be equally appreciated!
119848
I am looking for a convenient way to add and/or modify and/or delete an environment variable from the command line. Particularly, I find myself at times in situations when I have to add a few variables in cmd.exe.  I'd be grateful if someone showed me a non-GUI way to modify (that is: to add a new directory to) the %PATH% variable.  The change should be be permanent, not just for duration of the cmd session.
12024
What is the difference between find . and /home/user/* as an input to for command.? For example:  for var in $(find .) do echo "$var" done   or  for var in /home/user/* do echo "$var" done   In the first case for command breaks up the file with names containing spaces. While in the second case it does not. Why?
71753
I've seen in many places used install -d to create directories and install -c to copy a file. Why not use mkdir and cp? Is there an advantage in using install?
87437
I'm trying to beat my head against the syntax of this. I'm getting problems with whitespaces and I can't see if there's a better way to do this.  vardir=/home/user cd $vardir for i in $(ls "$vardir") ; do timestamp="$(stat -c %Y $i)" echo "$i" echo "$timestamp"  done   Result is similar no matter where I quote and I'm not sure what I'm doing wrong:  stat: cannot stat ‘Temporary’: No such file or directory Temporary  stat: cannot stat ‘Items’: No such file or directory Items   My goal is I want to grab the timestamps off of backup directories and touch the current ones to restore the original modified dates.