>
command > filename
Takes the output of command
and saves it in filename
. This will overwrite the file if it already exists.
>>
command >> filename
Takes the output of command
and appends it to the end of the content of filename
. This will create the file if it does not yet exist.
|
command1 | command2
Pipes the results from command1
as input to command2
, and then the results of command2
are printed to the console.
First, lets install a new command fortune
brew install fortune
sudo apt-get install fortune
fortune > wisething.txt
fortune | cowsay
fortune | cowsay > wisecow.txt
echo "Mars is dusty." > ~/Development/universe/solar_system/planets/mars.txt
echo "Mars has an 687 day year." >> ~/Development/universe/solar_system/planets/mars.txt
cat ~/Development/universe/solar_system/planets/mars.txt
mars.txt
.You can check if there is a newline at the end of the file if there is no %
sign that appears at the end of the file.
In this screenshot, the first example with the %
at the end has no newline. The latter example does.
Count the number of characters in the string “hello world” using wc
.
echo "hello world" | wc -c
Count the number of lines in the file mars.txt
cat ~/Development/universe/solar_system/planets/mars.txt | wc -l
Count the number of characters in the first line of mars.txt
cat ~/Development/universe/solar_system/planets/mars.txt | head -n 1 | wc -c
Count the number of characters in mars.txt
Count the number of characters in the last line of mars.txt
Count number of folders in the universe
folder.
cd ~/Development/universe
find . -type d | wc -l
Count number of files in the universe
folder.
Lets install a new command-line tool. On macOS use brew install slackcat
. For linux, see the bottom of this page https://github.com/vektorlab/slackcat for instructions.
Configure slackcat by running this command and following the instructions in your web browser:
slackcat --configure
Let’s use slackchat to send a simple message to the #scratchwork
channel.
echo "hello world" | slackcat -c scratchwork
Notice how the message is being sent as a snippet. Figure out how to send a normal, non-snippet, message using slackcat.
~/Development/universe/
directory and send this to the person sitting next to you using slackcat. Use only one line and piping. You can use the --noop
flag to first test it out without sending the message, then you can remove it to send the message. (hint: start with tree
)~/Development/universe
directory, run ls
, pipe the output of that into slackcat and send it to the #scratchwork
channel. This time, make sure to send it as a snippet.House Office Expenditure Data: https://projects.propublica.org/represent/expenditures
Let’s start a new directory for the house expenditure data.
cd ~/Development
mkdir house-expenditure
cd house-expenditure
Download the Q2 2017 expenditure detail data and pipe it into a file.
curl "https://projects.propublica.org/congress/assets/staffers/2017Q2-house-disburse-detail.csv" > 2017Q2-house-disburse-detail.csv
Print the header (first line) of this file.
head -n 1 2017Q2-house-disburse-detail.csv
Print the last 12 lines of this file.
tail -n 12 2017Q2-house-disburse-detail.csv
Count the number of lines in this file.
cat 2017Q2-house-disburse-detail.csv | wc -l
Count the number of rows in this file that contains the word “technology” (case insensitive)
cat 2017Q2-house-disburse-detail.csv | grep -i technology | wc -l
Return only the rows containing the word “technology” and redirect the output into a file. Keep the header.
head -1 2017Q2-house-disburse-detail.csv > technology.csv
cat 2017Q2-house-disburse-detail.csv | grep -i technology >> technology.csv
Grep a word of your choice and send the first 5 lines to #scratchwork channel on slack.
cat 2017Q2-house-disburse-detail.csv | grep -i technology | head -n 5 | slackcat --filename technology.csv -c scratchwork