Bash is the shell from the GNU project. It is the standard shell on many Linux distributions and often available on other *NIXes.
21
votes
4answers
1k views
Alternative to .bashrc
Is ~/.bashrc the only place where I can specify user specific ENV Variables, aliases, modifications to PATH variable, etc?
I ask because it seems that ~/.bashrc would be bash only...
51
votes
9answers
9k views
Preserve bash history in multiple terminal windows
I consistently have more than one terminal open. Anywhere from two to ten, doing various bits and bobs. Now let's say I restart and open up another set of terminals. Some remember certain things, some ...
95
votes
9answers
7k views
In Bash, when to alias, when to script, and when to write a function?
It's taken me almost 10 years of Linux usage to ask this question. It was all trial and error and random late-night internet surfing.
But people shouldn't need 10 years for this. If I were just ...
17
votes
7answers
5k views
Batch renaming files
I have a directory full of images:
image0001.png
image0002.png
image0003.png
...
And I would like a one-liner to rename them to (say).
0001.png
0002.png
0003.png
...
How do I do this?
22
votes
5answers
3k views
What Unix commands can be used as a semaphore/lock?
I want to run multiple Bash shell scripts in parallel. However, I want to avoid race conditions. What Unix commands are truly atomic that I could use for this purpose, and how can I use them?
21
votes
4answers
814 views
Quick way to include a directory path when calling mv?
Often I will work out of the root of a rails directory where I find my self navigating the same path twice every time I would like to move a file:
mv app/views/layouts/application.html.erb ...
17
votes
3answers
2k views
When would you use an additional file descriptor?
I know you can create a file descriptor and redirect output to it. e.g.
exec 3<> /tmp/foo # open fd 3.
echo a >&3 # write to it
exec 3>&- # close fd 3.
But you can do the same ...
6
votes
1answer
3k views
File descriptors & shell scripting
I am having a very hard time understanding how does one use file descriptors in shell scripts.
I know the basics such as
exec 5 > /tmp/foo
So fd 5 is attached to foo for writing.
exec 6 < ...
16
votes
3answers
2k views
How can I use two bash commands in -exec of find command?
Is it possible to use 2 commands in the -exec part of find command ?
I've tried something like:
find . -name "*" -exec chgrp -v new_group {} ; chmod -v 770 {} \;
and I get:
find: missing ...
19
votes
3answers
2k views
using single or double bracket - bash
I'm confused with using single or double bracket. look at code:
dir="/home/mazimi/VirtualBox VMs"
if [[ -d ${dir} ]]; then
echo "yep"
fi
It works perfectly although the string contains space. ...
3
votes
4answers
4k views
Renaming multiple files (changing extension)
I would like to change file extension from *.txt file to *.text file, tried using the basename command, but I am having trouble on changing more than 1 file, I am getting a basename: too many ...
15
votes
1answer
1k views
Is there a way in bash to redirect output and still have it go to stdout?
Okay. If I wanted to redirect the output of a program to a file, I'd do something like this
prog > file
If I wanted to redirect both stdout and stderr to that file, then I'd do
prog > file ...
10
votes
1answer
385 views
How do ${0##*/} and ${0%/*} work?
I'm quite confused about the following regular expressions I found in a shell script:
${0##*/}
${0%/*}
How do they work?
79
votes
14answers
11k views
How to do integer & float calculations, in bash or other languages/frameworks?
Using echo "20+5" literally produces 20+5
What command can I use to get the actual sum, e.g. 25 in this case.
Also, what's the easiest way to do it just using bash for floating point, e.g.
echo ...
70
votes
1answer
10k views
Difference between nohup, disown and &
What is the difference between
$ nohup foo
and
$ foo &
and
$ foo &
$ disown
33
votes
4answers
44k views
How to correctly add a path to PATH?
I'm wondering where a new path has to be added to PATH environment variable. I know this is accomplished editing .bash_rc (for example), but it's not clear how to do this.
This way:
export ...
9
votes
6answers
16k views
How can I read line by line from a variable in bash?
I have a variable which contains multiline output of a command. What's the most effecient way to read the output line by line from the variable?
For example:
jobs="$(jobs)"
if [ "$jobs" ]; then
...
16
votes
2answers
1k views
Display stuff below the prompt at a shell prompt?
Lets's say my prompt looks like this (the _ represents my cursor)
~ % _
Is there any way I could make it look like this
~ % _
[some status]
The question was originally about zsh, but now has ...
13
votes
3answers
454 views
What is the difference between [[ $a == z* ]] and [ $a == z* ]?
Is there is any difference between these two.
[[ $a == z* ]]
and
[ $a == z* ]
Can I have an example where they would have different outputs?
Furthermore, how does the working of [[ ]] differs ...
6
votes
6answers
4k views
Shell script for moving oldest files?
How do I write a script for moving just the 20 oldest files from one folder to another? Is there a way to grab the oldest files in a folder?
28
votes
4answers
788 views
Using '.' to execute files in bash
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 ...
11
votes
5answers
6k views
Show only stderr on screen but write both stdout and stderr to file
How can I use BASH magic to achieve this?
I want to only see stderr output on the screen,
but I want both stdout and stderr to be written to a file.
Clarification:
I want both stdout and stderr to ...
7
votes
6answers
3k views
bash directory shortcuts
When I type cd ~foo, I'd like bash to take me to some directory foo as a shortcut for typing the full directory path of foo. and I'd like to be able to cp ~foo/bar.txt ~/bar.txt to copy a file from ...
6
votes
1answer
251 views
What is the best way to detect (from a script) whether software is installed?
I've been frustrated before with differences in output from the which command across different platforms (Linux vs. Solaris vx. OS X), with different shells possibly playing into the matter as well. ...
22
votes
4answers
1k views
unix, difference between path starting with '/' and '//'
In unix/linux, any number of consecutive forwardslashes in a path is generally equivalent to a single forwardslash. eg.
$ cd /home/shum
$ pwd
/home/shum
$ cd /home//shum
$ pwd
/home/shum
$ cd ...
5
votes
4answers
918 views
Make cd automatically ls
I find that I often do the following:
%> cd bla/bla
%> ls
I would like it that whenever I cd into a directory it automatically does an ls.
I fiddled with my .bashrc for a while, but couldn't ...
6
votes
5answers
4k views
sh startup files over ssh
I have some important commands I need to execute before any sh shell starts. This is required for passing SSH commands in the SSH command (ssh host somecommand) and other programs that run commands.
...
17
votes
7answers
22k views
Looping through files with spaces in the names?
I wrote the following script to diff the outputs of two directores with all the same files in them as such:
#!/bin/bash
for file in `find . -name "*.csv"`
do
echo "file = $file";
diff ...
30
votes
4answers
2k views
What features are in zsh and missing from bash, or vice versa?
As a Linux user, I've always just used bash because it was the default on every distro I used. People using other Unix systems such as BSD seem to use other shells far more frequently. In the ...
24
votes
6answers
2k views
Is it possible to configure Bash so that STDERR can be a different color than STDOUT?
I'd like to set up my terminal to have STDOUT print regularly, but have STDERR print out in a different color, namely red, so I can tell the difference between the two, ie:
STDOUT: HELLO WORLD
...
14
votes
1answer
1k views
Execute bash scripts on entering a directory
What is the best way to execute a script when entering into a directory? When I move into a new directory I would like bash to execute the projectSettings.bash script much like RVM does.
8
votes
1answer
223 views
Order of redirections
I don't quite understand how the computer reads this command.
cat file1 file2 1> file.txt 2>&1
If I understand, 2>&1 simply redirect Standard Error to Standard Output.
By that ...
5
votes
1answer
330 views
Why is my bash prompt getting bugged when I browse the history?
Often when I start looking at history of commands some of the characters from a command displayed aren't erased, for example:
What's happening:
prompt$ some_command
prompt$ some_commanother_command
...
5
votes
3answers
1k views
What is IFS in context of for looping?
I'm learning bash scripting right now.
I was reading this thread: How to loop over the lines of a file?
What is IFS?
With for and IFS:
5
votes
3answers
2k views
Storing output of command in shell variable
I have an operation using cut that I would like to assign result to a variable
var4=ztemp.xml |cut -f1 -d '.'
I get the error:
ztemp.xml is not a command
The value of var4 never gets ...
9
votes
2answers
353 views
running script with “. ” and with “source ”
I was wondering if the following two ways of running a bash script
are equivalent?
. ./myScript.sh
source myScript.sh
Are they both running the content of the script instead of running the script, ...
7
votes
2answers
1k views
Parallelizing a for loop
I want to parallelize the for loops of the following code. How to do this?
#!/bin/bash
N=$1
n=$2
for (( i=1; i<=$N; i++ )); do
min=100000000000000 //set min to some garbage value
for (( ...
6
votes
3answers
978 views
How to delete part of a path in an interactive shell?
Is there a shortcut in bash and zsh to delete one component of a path? For example, if I type ls ~/local/color/, and the cursor is at the end of line, is there a shortcut to delete the color/ at the ...
16
votes
5answers
428 views
How to determine where an environment variable came from
I have a linux instance that I set up some time ago. When I fire it up and log in as root there are some environment variables that I set up but I can't remember or find where they came from. I've ...
7
votes
3answers
3k views
How do I reverse a for loop?
How do I properly do a for loop in reverse order?
for f in /var/logs/foo*.log; do
bar "$f"
done
I need a solution that doesn't break for funky characters in the file names.
5
votes
7answers
864 views
Bash, remove oldest files
I`m trying to delete old files from directory and leave only 3 newest files.
cd /home/user1/test
while [ `ls -lAR | grep ^- | wc -l` < 3 ] ; do
rm `ls -t1 /home/user/test | tail -1`
...
4
votes
1answer
2k views
How to check if pipe is empty
I have piped line in bash script and want to check if pipe has data, before feeding program
Searching I found about test -t 0 but it doesn't work here. Always returns false.
So how to be sure that ...
6
votes
1answer
3k views
bash multi line command with comments after the continuation character
Consider
echo \ # this is a comment
foo
This gives:
$ sh foo.sh
# this is a comment
foo.sh: line 2: foo: command not found
After some searching on the web, I found a solutionby DigitalRoss on ...
0
votes
1answer
819 views
.bashrc doesn't get executed
I have a user (non-root) which has a ~/.bashrc file with some aliases in it.
But it doesn't look like the file is executed at log in time. If I do source ~/.bashrc then it does what it's supposed to. ...
46
votes
8answers
2k views
Remember a half-typed command while I check something
I often find myself in the following position: I've started typing a long command at the bash prompt, but half-way through I find out I need to check something with another command. This is a problem ...
46
votes
10answers
5k views
How to grep a specific line _and_ the first line of a file?
Assuming a simple grep such as:
$ psa aux | grep someApp
1000 11634 51.2 0.1 32824 9112 pts/1 SN+ 13:24 7:49 someApp
This provides much information, but as the first line of the ps ...
21
votes
4answers
1k views
Is there a one-liner that allows me to create a directory and move into it at the same time?
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.
26
votes
4answers
2k views
Is there any way to keep a command from being added to your history?
Is there any way to keep a command from being added to your history? I have a command that I want to keep out of my history file, and I really don't care to have it there when I search the history ...
7
votes
4answers
780 views
Can I easily search my history across many screen windows?
My current screen session has 12 open windows on it. It's been running for weeks... I know I executed an ImageMagick convert command in one of these 12 screen windows sometime last week... is there ...
25
votes
1answer
6k views
What is $debian_chroot in .bashrc?
What is the debian_chroot variable in my bashrc file? and what is it doing here?
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

