Suppose I am having file named file1.txt
with the content as 1,2,3.. upto 100 linewise.
$> head -n 5 file1.txt //will display first 5 lines i.e. 1,2,3,4,5
$> tail -n 5 file1.txt // will display last 5 lines i.e. 96,97,98,99,100
I want to display the content as first 5 lines and last 5 lines together in 1 command,
$> head tail -n 5 file1.txt // Something like this 1,2,3,4,5 96,97,98,99,100 (both together)
how can I achieve this ?
You can use curly braces in bash to combine more than one command and having also their stdout and stderr combined:
Notice that there is space character between the braces and the commands enclosed within them. That is because
{
and}
are reserved words here (commands built into the shell). They mean group the outputs of all these commands together.Also notice that the list of commands has to end with a semicolon (
;
).If you want to create an "alias" for such a command combination, you can create a function (a simple Bash alias will not work) in your
.bash_aliases
file like this:And you can call this function like this, for example:
In the above example, if
file1.txt
is has at least 6 lines, you will get an output of12
from thewc
command.Processing in a sub-shell: