codecademy-command line-inputoutput
What happens when you type this command?
$ echo "Hello"
Hello
The echo
command accepts the string "Hello" asstandard input, and echoes the string "Hello" back to the terminal as standard output.
Let's learn more about standard input, standard output, and standard error:
standard input, abbreviated as
stdin
, is information inputted into the terminal through the keyboard or input device.standard output, abbreviated as
stdout
, is the information outputted after a process is run.standard error, abbreviated as
stderr
, is an error message outputted by a failed process.
Redirection reroutes standard input, standard output, and standard error to or from a different location.
How does redirection work?
$ echo "Hello" > hello.txt
The >
command redirects the standard output to a file. Here, "Hello"
is entered as the standard input. The standard output "Hello"
is redirected by >
to the filehello.txt.
$ cat hello.txt
The cat
command outputs the contents of a file to the terminal. When you type cat hello.txt
, the contents of hello.txt are displayed.
$ cat oceans.txt > continents.txt
>
takes the standard output of the command on the left, and redirects it to the file on the right. Here the standard output of cat oceans.txt
is redirected tocontinents.txt.
Note that >
overwrites all original content incontinents.txt. When you view the output data by typing cat
on continents.txt, you will see only the contents of oceans.txt.
$ cat glaciers.txt >> rivers.txt
>>
takes the standard output of the command on the left and appends (adds) it to the file on the right. You can view the output data of the file with cat
and the filename.
Here, the the output data of rivers.txt will contain
$ cat < lakes.txt
<
takes the standard input from the file on the right and inputs it into the program on the left. Here,lakes.txt is the standard input for the cat
command. The standard output appears in the terminal.
the original contents of rivers.txt with the content ofglaciers.txt appended to it.
$ cat volcanoes.txt | wc
|
is a "pipe". The |
takes the standard output of the command on the left, and pipes it as standard input to the command on the right. You can think of this as "command to command" redirection.
Here the output of cat volcanoes.txt
is the standard input of wc
. in turn, the wc
command outputs the number of lines, words, and characters involcanoes.txt
, respectively.
$ cat volcanoes.txt | wc | cat > islands.txt
Multiple |
s can be chained together. Here the standard output of cat volcanoes.txt
is "piped" to thewc
command. The standard output of wc
is then "piped" to cat
. Finally, the standard output of cat
is redirected to islands.txt
.
You can view the output data of this chain by typingcat islands.txt
.
$ sort lakes.txt
sort
takes the standard input and orders it alphabetically for the standard output. Here, the lakes insort lakes.txt
are listed in alphabetical order.
$ cat lakes.txt | sort > sorted-lakes.txt
Here, the command takes the standard output fromcat lakes.txt
and "pipes" it to sort
. The standard output of sort
is redirected to sorted-lakes.txt.
You can view the output data by typing cat
on the filesorted-lakes.txt.
$ uniq deserts.txt
uniq
stands for "unique" and filters out adjacent, duplicate lines in a file. Here uniq deserts.txt
filters out duplicates of "Sahara Desert", because the duplicate of 'Sahara Desert' directly follows the previous instance. The "Kalahari Desert" duplicates are not adjacent, and thus remain.
$ sort deserts.txt | uniq
A more effective way to call uniq
is to call sort
to alphabetize a file, and "pipe" the standard output to uniq
. Here by pipingsort deserts.txt
to uniq
, all duplicate lines are alphabetized (and thereby made adjacent) and filtered out.
sort deserts.txt | uniq > uniq-deserts.txt
Here we simply send filtered contents to uniq-deserts.txt, which you can view with the cat
command.
$ grep Mount mountains.txt
grep
stands for "global regular expression print". It searches files for lines that match a pattern and returns the results. It is also case sensitive. Here, grep
searches for "Mount" in mountains.txt.
$ grep -i Mount mountains.txt
grep -i
enables the command to be case insensitive. Here, grep
searches for capital or lowercase strings that match Mount
inmountains.txt.
The above commands are a great way to get started with grep
. If you are familiar with regular expressions, you can use regular expressions to search for patterns in files.
$ grep -R Arctic /home/ccuser/workspace/geography
grep -R
searches all files in a directory and outputs filenames and lines containing matched results. -R
stands for "recursive". Heregrep -R
searches the /home/ccuser/workspace/geographydirectory for the string "Arctic" and outputs filenames and lines with matched results.
$ grep -Rl Arctic /home/ccuser/workspace/geography
grep -Rl
searches all files in a directory and outputs only filenames with matched results. -R
stands for "recursive" and l
stands for "files with matches". Here grep -Rl
searches the/home/ccuser/workspace/geography directory for the string "Arctic" and outputs filenames with matched results.
$ sed 's/snow/rain/' forests.txt
sed
stands for "stream editor". It accepts standard input and modifies it based on an expression, before displaying it as output data. It is similar to "find and replace".
Let's look at the expression 's/snow/rain/'
:
s
: stands for "substitution". it is always used when usingsed
for substitution.snow
: the search string, the text to find.rain
: the replacement string, the text to add in place.
In this case, sed
searches forests.txt for the word "snow" and replaces it with "rain." Importantly, the above command will only replace the first instance of "snow" on a line.
$ sed 's/snow/rain/g' forests.txt
The above command uses the g
expression, meaning "global". Here sed
searches forests.txt for the word "snow" and replaces it with "rain", globally. All instances of "snow" on a line will be turned to "rain".
Congratulations! You learned how to use the command line to redirect standard input and standard output. What can we generalize so far?
Redirection reroutes standard input, standard output, and standard error.
The common redirection commands are:
>
redirects standard output of a command to a file, overwriting previous content.>>
redirects standard output of a command to a file, appending new content to old content.<
redirects standard input to a command.|
redirects standard output of a command to another command.
A number of other commands are powerful when combined with redirection commands:
sort
: sorts lines of text alphabetically.uniq
: filters duplicate, adjacent lines of text.grep
: searches for a text pattern and outputs it.sed
: searches for a text pattern, modifies it, and outputs it.
nano is a command line text editor. It works just like a desktop text editor like TextEdit or Notepad, except that it is accessible from the command line and only accepts keyboard input.
- The command
nano hello.txt
opens a new text file named hello.txt in the nano text editor. "Hello, I am nano"
is a text string entered in nano through the cursor.The menu of keyboard commands at the bottom of the window allow us to save changes to hello.txt and exit nano. The
^
stands for theCtrl
key.Ctrl
+O
saves a file. 'O' stands for output.Ctrl
+X
exits the nano program. 'X' stands for exit.Ctrl
+G
opens a help menu.clear
clears the terminal window, moving the command prompt to the top of the screen.
In this lesson, we'll use nano to implement
- The command
codecademy-command line-inputoutput的更多相关文章
- Linux Command Line learning
https://www.codecademy.com/en/courses/learn-the-command-line Background The command line is a text i ...
- How to build .apk file from command line(转)
How to build .apk file from command line Created on Wednesday, 29 June 2011 14:32 If you don’t want ...
- Can't use Subversion command line client: svn Probably the path to Subversion executable is wrong. Fix it.
1.最近使用SVN工具时,Checkout出项目到本地后后,然后将其导入到Intellij idea中开发,在提交svn代码的时候,出现这样的错误:Can't use Subversion comma ...
- How to Use Android ADB Command Line Tool
Android Debug Bridge (adb) is a tool that lets you manage the state of an emulator instance or Andro ...
- Chrome-Console( Command Line API Reference)
来源于:https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference The Comma ...
- logoff remote desktop sessions via command line tools
This trick I learned from my one of ex-college. In Windows servers, only two remote desktop session ...
- 使用intellij的svn时提示出错: Can't use Subversion command line client: svn.Errors found while svn working copies detection.
使用Intellij的svn时提示出错:Can't use Subversion command line client: svn. Errors found while svn working co ...
- ubuntu16.04安装virtualbox5.1失败 gcc:error:unrecognized command line option ‘-fstack-protector-strong’
系统:ubuntu16.04.1 软件:Virtualbox-5.1 编译器:GCC 4.7.4 在如上环境下安装Vbx5.1提示我在终端执行/sbin/vboxconfig命令 照做 出现如下err ...
- Linux Command Line 笔记(1)
Yunduan CUI graphical user interfaces make easy tasks easy, while command line interfaces make diffi ...
- Can't use Subversion command line client:svn
在Intellij IDEA里checkout东西时出先这个错误提示:Can't use Subversion command line client:svn Subversion command l ...
随机推荐
- Java并发编程核心方法与框架-Fork-Join分治编程(一)
在JDK1.7版本中提供了Fork-Join并行执行任务框架,它的主要作用是把大任务分割成若干个小任务,再对每个小任务得到的结果进行汇总,这种开发方法也叫做分治编程,可以极大地利用CPU资源,提高任务 ...
- iwebshop二次开发
1.iwebshop中写hello world ① 动作action方式 controllers目录下,然后创建text.php. <?php class Test extends IContr ...
- vim 配置,我本机的配置[windows]
set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set ...
- mybatis 基础1(动态代理)
我目前使用的是mybatis 3.3.0版本. 可使用 1.xml文本, 2.dao类, 3.sqlSession.getMapper(Class<T> type), 生成sql类, 原理 ...
- noip2012 疫情控制
[问题描述] H国有n个城市,这n个城市用n-1条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点. H国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边境城市(叶子 ...
- LYDSY模拟赛day3 涂色游戏
/* 非常好的题 */ #include <cstdio> #include <iostream> #include <cstdlib> #include < ...
- Ruby类的继承
Ruby继承的语法 class DerivedClass < BaseClass #some stuff end < 为继承符号 重写(override) 的概念 有时, 我们希望子类从父 ...
- 天翼宽带政企网关B2-1P 如何获得超级管理员账号?
RT 用useradmin没办法做NAT,想进telecomadmin里面看看,,,,,并且已经使用过nE7jA%5m这个密码登录,没有用! 求办法!!! 最佳答案 查找超级管理员密码方法: 1.用光 ...
- Mac Pro 使用 ll、la、l等ls的别名命令
在 Linux 下习惯使用 ll.la.l 等ls别名的童鞋到 mac os 可就郁闷了~~ 其实只要在用户目录下建立一个脚本“.bash_profile”, vim .bash_profile 并输 ...
- Windbg学习使用
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. 1. WinDbg介绍: Debuggin ...