I've downloaded an installation package of weblogic server and in the README, there's this command to execute:  Linux/Mac $ . ./configure.sh   It's not the first time I see this. Why is there an extra dot at the start of the command? When I do only ./configure.sh, the result is the same
35015
What's the difference between executing a script like this:  ./test.sh  and executing a script like this:  . test.sh?  I tried a simple, two-line script to see if I could find if there was a difference:  #!/bin/bash ls   But both . test.sh and ./test.sh returned the same information.
37028
If you copy the contents of   httpd.conf   and then paste it into a cat command.. such as this one..  #!/bin/bash cat &gt; /test &lt;&lt; EOF pasted here.. EOF   you run into this error:  -bash: command substitution: line 1: unexpected EOF while looking for matching `'' -bash: command substitution: line 4: syntax error: unexpected end of file   perhaps the solution is to escape the dollar signs and maybe even quotes and so on..  but given that this is such a large file.. can dollar signs be automatically be escaped ?  is my only option to escape them via another program and then give it to the cat command ?
95497
I saw sed 's=.*/==' in context of sh script and I'm puzzled. I could not find in sed manual or web search (for sed s=) how s is used, not s///. Apart from s I see only one potential command here = (Print the current input line number), but in such case what the rest is doing...   Running the command in shell produces same output as input for e.g echo 'jkfdsa=335r34',  whereas echo 'jkfdsa=335r34' | sed 's/=.*/==/' does replacement as per manual. Also slightly modifying command to e.g. echo 'jkfdsa=3' | sed 's798=.*/==/' gives sed: -e expression #1, char 11: unterminated 's' command, so original should have some correct meaning. What is it?
94692
I have a script called jsl in /usr/local/bin. Running which jsl finds it there.  I want to temporarily use a different version, and when I echo $PATH I see that /usr/bin is earlier in the path. So I added a script called jsl in that folder and I've verified that it is executable and runs correctly when called with the full path.  However, which jsl still finds the first version, and jsl still runs it.  Why isn't my new jsl being found by which or executed by name?
51665
I was surprised recently when I did something like mv ./* ../somedirectory and found that files like .gitignore were not moved.  I do most of my work in zsh on OS X, and this surprise bit me in bash on CentOS.  I tried bash on OS X and found the same behavior: * does not match dot files.  This seems very undesirable to me, but apparently it's the bash default.  (It may be the zsh default too for all I remember, but I may have changed it years ago in my .zshrc and forgotten it ever worked differently.)  How can I configure bash to behave as I expected: for * to match all files, and not ignore dot files.  In case this is at all unclear, here's how to reproduce it    cd /tmp mkdir {t,d}est touch test/{.,}{1,2,3,4,5,6,7} ls -hal test mv test/* dest ls -hal test     # notice dot files are still there ls -hal dest     # notice only some files were mv'ed
395
In a remote CentOS with Bash 5.0.17(1) where I am the only user via SSH I have executed read web_application_root with: $HOME/www  or with: ${HOME}/www  or with: &quot;${HOME}&quot;/www  or with: &quot;${HOME}/www&quot;  Aiming to get an output with an expanded (environment) variable such as MY_USER_HOME_DIRECTORY/www. While ls -la $HOME/www works fine, ls -la $web_application_root fails with all examples; an error example is: ls: cannot access '$HOME/www': No such file or directory  I understand that read treats all the above $HOME variants as a string (due to the single quote marks in the error) and hence doesn't expand it. How to expand variables inside read?
101133
Some of the files in my directories under Linux have a . at the end of the permissions listing.     What does the dot mean at the end of -rw-r--r--?  How do you set it with chmod?
13284
I tried which cd and it didn't give a path but instead returned the exit code 1 (checked with echo $?). The coreutil cd itself is working, so the executable should be there, right? I also ran a find for cd, but there was no executable file shown. How is it implemented then?  Update:  I don't know if I should ask this in another post but since I think it is good here, I'm expanding (?) the post... So the answer was actually quite simple, there's no executable for that — because it's a builtin — But I've found some builtins (bash shell in Fedora) have the executable files! So builtin -> no executable isn't right I suppose? Maybe an answer explaining what builtins actually are (builtin commands?), which actually is the matter here, rather than focusing more on cd... Some good links posted previously indicate that builtins are not programs... so what are they? How do they work? Are they just functions or threads of the shell?
12595
I'm using find with the -exec option in console, on FreeBSD (for example, find . -exec sha1 {} \;).   How do I correctly place (and if needed, escape) redirect and other execution control symbols that could syntactically apply to either of the exec command or the find command, such as > >> | and &amp;, where I might want the symbol to apply to the find or the exec commands on different occasions?  On the same theme, what is the syntax if I want to use tee to view the output of the -exec commands on the console (to watch progress) and also appended to a file (for later use)?   (I know shells vary but hopefully the most used shells such as sh/csh are quite similar?)  Update:  In part, I want to learn if nested find -exec can be done without scripting, as a simple command. Here is the use-case that prompted the questio :   outer find: find all subdirs matching DIR_MATCH_TEXT in DIR1  inner find: for each matching subdir found in the outer loop (call it DIR2), execute the commandfind DIR2 -name "FILE_MATCH_TEXT" -exec sha1 {} \; &gt;&gt; DIR1/DIR2_hashes.txt   The aim being to create a set of files, one for each matching subdir, containing the output of some find -exec action on that subdir.  By this I mean that, if /backups contains /jan2017 and /feb2017, the result will be two files at /backups/jan2017_hashes.txt and /backups/feb2017_hashes.txt, with jan2017_hashes.txt containing the output from sha1 for (say) all .pdf files in /backups/jan2017, and feb2017_hashes.txt containing the output from sha1 for all .pdf files in /backups/feb2017.  From replies so far I gather the outer find would have to use a shell call as the argument to -exec?
22652
I was working in the bash terminal on my system (OSX 10.8.3 / bash version 3.2.48(1)-release (x86_64-apple-darwin12)) and I accidentally typed "cd //" instead of "cd /" to get back to the root directory.    Strange thing was that it took me to "//" which when I listed looked exactly like "/".    So my questions are:  Is there any semantic difference betweens these two paths?  What if anything is the purpose of these two paths?   and/or is it a bug?
48283
I am taking the Linux Essentials class and was doing well until I hit the scripting chapter. I simply do not understand these concepts.  Wondering if someone can break the following down into ultra simplistic terms or point me to a better reference to learn it. I'm currently using netacad's curriculum.        From the text book (with minor formatting changes):     There are some special variables in addition to the ones you set. You   can pass arguments to your script:  #!/bin/bash echo "Hello $1"       A dollar sign followed by a number N corresponds to the Nth argument   passed to the script. If you call the example above with ./test.sh the   output will be Hello Linux. The $0 variable contains the name of the   script itself.      After a program runs, be it a binary or a script, it returns an exit   code which is an integer between 0 and 255. You can test this through   the $? variable to see if the previous command completed successfully.     I understand how to assign variables and how they work with the $ but the whole issue with $0 and $1 -- I just don't get it.    Any help would be much appreciated.
21492
Using the following command, could someone please explain what exactly is the purpose for the ending curly braces ({}) and plus sign (+)?  And how would the command operate differently if they were excluded from the command?  find . -type d -exec chmod 775 {} +
110327
I have separate scripts for tasks in bash. Here is the broken one:  #!/bin/bash PATH=/home/name/ mkdir $PATH cd $PATH &amp;&amp; echo "done." exit 0   Today it broke and first time it simply didn't want to run cd, but created directory. Second time it just said "mkdir command not found." Running this commands exactly with semicolon works fine. What the case?
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.
3595
Do I have to do any configuration to start brace expansion? When I run mkdir {1..10}, it just creates a dir naming {1..10}.
45542
When I enter single quote ' in terminal it goes to some other mode, and commands don't execute. What is this mode and when do we use it?  root@sai:~# ' &gt; ls &gt; ' ls : command not found root@sai:~#
85780
I would like to know which are the standard commands available in every Linux system.  For example if you get a debian/ubuntu/redhat/suse/arch/slackware etc, you will always find there commands like:  cd, mkdir, ls, echo, grep, sed, awk, ping etc.  I know that some of the mentioned commands are shell-builtin but others are not but they are still always there (based on my knowledge and experience so far).   On the other hand commands like gawk, parted, traceroute and other quite famous commands are not installed by default in different Linux distributions.  I made different web searches but I haven't found a straight forward answer to this.  The purpose is that I would like to create a shell script and it should make some sanity checks if the commands used in the script are available in the system. If not, it should prompt the user to install the needed binaries.