The shell is unix's command-line interface. You can type commands in a shell interactively, or write scripts to automate tasks.
232
votes
4answers
41k views
What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'?
I think these terms almost refer to the same thing, when used loosely:
terminal
shell
tty
console
What exactly do each of these terms refer to?
100
votes
3answers
5k views
What's the difference between $(stuff) and `stuff`?
Running top -p $(pidof init) and top -p `pidof init` gives the same output. Are these two ways of doing the same thing, or are there differences?
75
votes
13answers
10k views
How to do integer & float calculations, in bash or other languages?
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 ...
60
votes
6answers
2k views
Run a command that is shadowed by an alias
Let's say i have the following alias in bash - alias ls='ls --color=auto' - and i want to call ordinary ls without options. Is the only way to do that is to unalias, do the command and then alias ...
57
votes
6answers
4k views
Why is cd not a program?
I've always wondered why cd isn't a program, but never managed to find the answer.
Anyone know why this is the case?
48
votes
21answers
4k views
Quick directory navigation in the terminal
I would like to frequently switch between directories that are in totally unrelated paths, for example /Project/Warnest/docs/ and ~/Dropbox/Projects/ds/test/.
But I don't want to type cd ...
48
votes
8answers
12k views
Turn off buffering in pipe
I have a script which calls two commands:
long_running_command | print_progress
The long_running_command prints a progress but I'm unhappy with it. I'm using print_progress to make it more nice ...
43
votes
5answers
848 views
Resources for portable shell programming
What resources exist for portable shell programming? The ultimate answer is to test on all targeted platforms, but that's rarely practical.
The POSIX / Single UNIX specification is a start, but it ...
42
votes
4answers
2k views
What is the difference between “&&” and “;” when chaining commands
What is the difference between the following methods of chaining commands?
cmd1; cmd2
cmd1 && cmd2
37
votes
8answers
24k views
Colorizing your terminal and shell environment?
I spend most of my time working in Unix environments and using Terminal emulators. I try to use color on the command-line, because color makes the output more useful and intuitive.
What are some good ...
34
votes
6answers
24k views
How to split the terminal into more than one “view”?
From vi, if you issue the command :sp, the screen splits into two "views", allowing you to edit more than one file from the same terminal.
Along those same lines, is there a way to have multiple ...
31
votes
5answers
17k views
Allow setuid on shell scripts
The setuid permission bit tells Linux to run a program with the effective user id of the owner instead of the executor:
> cat setuid-test.c
#include <stdio.h>
#include <unistd.h>
int ...
30
votes
12answers
2k views
best way to search my shell's history
Is there a better way to search my history file for a command than grep? I do have some idea what the command starts as, but I don't know how far back in the history it is.
update: was formerly zsh ...
30
votes
2answers
6k views
What does “--” (double-dash) mean?
I have seen -- used in the compgen command.
For example:
compgen -W "foo bar baz" -- b
What is the meaning of the --.
29
votes
3answers
894 views
How can I cd to a directory just by typing the directory's name?
I either had this somewhere 20 years ago or I dreamed about it.
Basically:
If if type blobblob I get
blobblob: command not found
Fair enough.
I would like it so that when my shell gets those ...
28
votes
11answers
20k views
How can I get distribution name and version number in a simple shell script?
I'm working on a simple bash script that should be able to run on Ubuntu and CentOS distributions (support for Debian and Fedora/RHEL would be a plus) and I need to know the name and version of the ...
26
votes
7answers
3k views
How do I delete a file whose name begins with “-” (hyphen a.k.a. dash or minus)?
How do you remove a file whose filename begins with a dash (hyphen or minus) -? I'm ssh'd into a remote OSX server and I have this file in my directory:
tohru:~ $ ls -l
total 8
-rw-r--r-- 1 me ...
26
votes
12answers
1k views
How to quickly store and access often used commands?
I have a lot of commands I routinely need to execute, often with the slightest variation.
Right now I'm storing them all in .bash_history and use CTRL-R to access them, but I wonder if there's a ...
26
votes
4answers
2k views
What is the difference between a builtin command and one that is not?
Is there any intrinsic difference between a builtin command and another command which can nominally do the same thing?
eg. Do builtins get "special" treatement? ... is there less overhead running ...
26
votes
8answers
2k views
Output “Hollywood-hacker-scene” from a shell
This might seem like a strange question, but what would you use for creating the typical hollywood hacking scene?
I got this request from a friend and my brain was blank. All I could think of was ...
26
votes
2answers
835 views
Why is '.' a hard link in Unix?
I've seen many explanations for why the link count for an empty directory in Unix based OSes is 2 instead of 1. They all say that it's because of the '.' directory, which every directory has pointing ...
26
votes
4answers
3k views
Timing out in a shell script
I have a shell script that's reading from standard input. In rare circumstances, there will be no one ready to provide input, and the script must time out. In case of timeout, the script must execute ...
23
votes
10answers
5k views
Get exit status of process that's piped to another
I have two processes foo and bar, connected with a pipe:
$ foo | bar
bar always exits 0; I'm interested in the exit code of foo. Is there any way to get at it?
23
votes
4answers
2k views
Redirecting stdout to a file you don't have write permission on
When you attempt to modify a file without having write permissions on it, you get an error:
> touch /tmp/foo && sudo chown root /tmp/foo
> echo test > /tmp/foo
zsh: permission ...
23
votes
2answers
1k views
$VAR vs ${VAR} and to quote or not to quote
I can write
VAR=$VAR1
VAR=${VAR1}
VAR="$VAR1"
VAR="${VAR1}"
the end result to me all seems about the same. Why should I write one or the other? are any of these not portable/POSIX?
22
votes
5answers
1k views
When do you use brace expansion?
I understand what brace expansion is, but I don't know how best to use it.
When do you use it?
Please teach me some convenient and remarkable examples if you have your own tip.
22
votes
5answers
2k views
What are the fundamental differences between the mainstream *NIX shells?
What are the fundamental differences between the mainstream *NIX shells and what scenarios might prompt you to use one over the other? I understand that some of it probably comes down to user ...
22
votes
3answers
1k views
How to use `which` on an aliased command?
Like most users, I have a bunch of aliases set up to give a default set of flags for frequently used programs. For instance,
alias vim='vim -X'
alias grep='grep -E'
alias ls='ls -G'
The problem is ...
22
votes
1answer
624 views
Avoiding “BASH-isms” in shell scripts
Does there exist a tool similar to Perl::Critic that will inspect your shell scripts and point out flaws, portability issues, uses of non-standard programs without fallbacks, depreciated program uses, ...
21
votes
7answers
2k views
why does ls -d also list files, and where is it documented?
when specifying ls --directory a* it should list only directories starting with a*
BUT it lists files AND directories starting with a
Questions:
where might I find some documentation on this, ...
21
votes
1answer
337 views
A shell tool to “tablify” input data
A long time ago I remember using a command that makes its input into a nicely formatted table.
For example, for this input,
apple 1 100
orange 20 19
pineapple 1000 87
avocado 4 30
The output will ...
20
votes
4answers
969 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.
20
votes
1answer
658 views
Why does echo >file use more real time than echo | sed >file?
The example, below, surprised me. It seems to be counter intuitive... aside from the fact that there is a whisker more user time for the echo | sed combo.
Why is echo using so much sys time when it ...
19
votes
6answers
1k views
Why can't I redirect a path name output from one command to “cd”?
I am trying to get cd to accept a directory name redirected to it from another command. Neither of these methods work:
$ echo $HOME | cd
$ echo $HOME | xargs cd
This does work:
$ cd $(echo $HOME)
...
19
votes
5answers
874 views
Recovering from setting root's shell to a bad file
Let's say I've gone and done a silly thing, such as using 'chsh' to change the root user's shell to a bad file path. Future logins to the root account will abruptly fail, citing /bin/whatever not ...
19
votes
2answers
2k views
What does dash “-” at the end of a command mean?
Given the following command:
gzip -dc /cdrom/cdrom0/file.tar.gz | tar xvf –
What does the - at the end of the command mean? Is it some kind of placeholder?
19
votes
2answers
836 views
Can a bash script be hooked to a file?
I want a script to sleep unless a certain file is modifed/deleted (or a file created in a certain directory, or ...). Can this be achieved in some elegant way? The simplest thing that comes to my mind ...
18
votes
4answers
735 views
What's the difference between running a program as a daemon and forking it into background with '&'?
What are the practical differences from a sysadmin point of view when deploying services on a unix based system?
18
votes
2answers
763 views
What does a “< <(…)” redirection mean?
I've seen that rvm (ruby version manager) is installed using the following command:
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
So as I ...
18
votes
5answers
5k views
How to test what shell I am using in a terminal?
How to check what shell I am using in a terminal? What is the shell I am using in MacOS?
18
votes
6answers
474 views
Why is aliasing over standard commands not recommended?
For example, a common alias I've seen in the ~/.bashrc file (or equivalents) is
alias rm='rm -i'
However, I've seen people recommend against this because
the alias might not exist on another ...
17
votes
9answers
987 views
Bash commands inside vi
Is it possible to type a bash command inside vi and get the stdout?
I find it often tedious to close and reopen vi just because I want to look something up in the shell.
17
votes
5answers
691 views
Difference between “. myscript” and “./myscript” [duplicate]
I am confused by "one only dot - space - shell script name" (like . myshellscript) and "path to shell script" (like ./myshellscript) commands.
What for they are? I noticed the command . myshellscript ...
17
votes
1answer
649 views
Why doesn't 'find' show this file?
Using find with grep, one can locate files that match a pattern:
# find | grep error
./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html
./error_log
./includes/classes/error_log
However, using ...
17
votes
10answers
4k views
How do I reuse the last output from the command line?
This is a noob question, but I'd like to know how to reuse the last output from the console, ie:
pv-3:method Xavier$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
...
17
votes
4answers
5k views
Why is `while IFS= read` used so often, instead of `IFS=; while read..`?
It seems that normal practice would put the setting of IFS outside the while loop in order to not repeat setting it for each iteration... Is this just a habitual "monkey see, monkey do" style, as it ...
17
votes
2answers
3k views
Is it possible to rename a Unix user account?
I installed an ubuntu on a computer that is now used by somebody else. I renamed the account with her name, but it only changes the fullname, not the user name, which is still displayed in the top ...
17
votes
7answers
7k views
What's the difference between /sbin/nologin and /bin/false
Technically, unless pam is set up to check your shell with pam_shells neither of these can actually prevent your login, if you're not on the shell. On my system they are even different sizes, so I ...
16
votes
5answers
2k views
Why is echo a shell built in command?
$ which echo
echo: shell built-in command.
$ which ls
/bin/ls
$ which cat
/bin/cat
Why is echo not an independent utility like ls, ps, cat etc? Why is it shell specific? Any good reasons?
16
votes
5answers
908 views
In what situations would a user not let the shell record his command into history?
If I add export HISTCONTROL=ignorespace in .bashrc, bash won't record any commands which have whitespace before them into history. But I do not understand under what situations it will be useful. ...

