cat
Concatenates files. Often used to display the contents of a file. Often used to display the contents of a file, or to create a multi-line file, such as a hea document.
NAME
cat -- concatenate and print files
SYNOPSIS
cat [-benstuv] [file ...]
github
- The file in jupyter notebook format on github is here .
google colaboratory
- To run it in google colaboratory here cat_nb.ipynb)
environment
The author’s OS is macOS, and the options are different from those of Linux and Unix commands.
When you actually run the command, you will need to use the prefix ! and %%bash in the first line.
!sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G95
!bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
Usage examples
Display and concatenate files
cat file
cat file1 file2
cat file1 file2 > file3
Creates a file and displays its contents.
%%bash
echo "a b c" > temp.txt
cat temp.txt
a b c
Create two files and concatenate them.
%%bash
echo "e f g" > temp1.txt
echo "h i j" > temp2.txt
cat temp1.txt temp2.txt > temp3.txt
You can see that temp3.txt is created, and temp1.txt and temp2.txt are concatenated in it.
%%bash
cat temp3.txt
e f g
h i j
Creating a Heard Document
This is often used to create multi-line files in scripts. The EOF notation can be anything you want. Redirects the file when it is created.
%%bash
cat << EOF > temp10.txt
a b c
e f g
h i j
EOF
cat temp10.txt
a b c
e f g
h i j
However, this does not allow you to include the command as is. The result of the command, variables, etc. will be expanded and displayed.
%%bash
cat << EOF > temp11.sh
#! /bin/bash
user="test"
echo ${user}
EOF
If you don’t want to expand the variables here, or if you want to keep the notation of the command itself, enclose EOF in single quotation marks.
%%bash
cat << 'EOF' > temp12.sh
#! /bin/bash
user="test"
echo ${user}
EOF
cat temp12.sh
#! /bin/bash
user="test"
echo ${user}
and you can see that ${user}
is properly listed in the file without being expanded.
Typical options
- t : Display tabs explicitly (^I).
- e : Print newline code explicitly (displayed as $)
%%bash
echo -e "a\tb\tc" > temp2.txt
cat -t temp2.txt
a^Ib^Ic
%%bash
echo -e "a\tb\tc" > temp3.txt
cat -e temp3.txt
a b c$