1. 标准输入输出
Linux程序中,一般有一个入口和两个出口,分别叫做标准输入,标准输出/标准错误输出。
一般意义的标准输入为keyboard输入,输出为display输出。
2. 重定向( > )
console中,能将标准输出的文字列,通过重定向将其写入到文件中,重定向符号使用>
。
2.1 输出重定向
$ cd /etc
$ ls > ~/ls-output
$ cat ~/ls-output
2.2 使用cat生成文件
$ cat > cat-output
Hello
This is cat redirect.
(「Ctrl」 D を押すとEOFで終了)
$
3. 标准错误输出
- 例1,将ls内容定向到指定文件中
$ ls -l tekitou > ls-l-output
(tekitou というディレクトリ内の詳細出力を ls-l-output にリダイレクト)
ls: cannot access tekitou: そのようなファイルやディレクトリはありません
(tekitou というディレクトリが見つからなかったというエラーメッセージ)
- 例2,将ls的错误内容定向到指定文件中
$ ls -l tekitou 2> ls-l-output
(エラー出力を ls-l-output にリダイレクト)
- 例3,標準出力と標 準エラー出力を 1 つのファイルに出力したい場合、次のように入力します。
$ ls -l tekitou > ls-l-output-second 2>&1
4. pipe管道(|)
# 将前面的输出,作为后面的输入
$ ls -l /usr/bin | less
$ ls -l xxx /usr/bin 2>&1 | less
command A ** →(标准输出)→ **pipe →(标准输入)→**command B **
5. grep命令 (正则表达式)
更多关于正则表示参考正则表达式
通过grep命令,可以在文件中对数据进行查找,也可以使用|grep
,对标准输入过来的数据进行查找。
grep [オプション] 検索条件 [指定ファイル]
1. 关于指定文件,可以是单个文件,也可以是*形式的多个文件。
2. -e 文字列を検索パターンとして扱う。
3. -i 検索パターンと入力ファイルの双方で、英大文字と小文字の区別を行わない。
4. -v 検索パターンとマッチしなかった行を選択する。
其中的检索条件,使用的是正则表达式。
記号 | 意义 | 例:记号 | 例:意义 |
---|---|---|---|
^ | 行頭を表す | ^a | aで始まっている行 |
$ | 行末を表す | b$ | bで終わっている行 |
. | 任意の一字を意味する | a.b | aとbの間に1文字入っている |
* | 直前文字の0回以上の繰り返しを意味する | ||
[…] | ..の中の任意の一字を意味する | [ab]ab | aもしくはbに続くab(aab,bab) |
[^…] | ..の文字が含まれないことを意味する | [^ab]ab | aもしくはbで始まらない(not)で、abが続くもの |
\ | 正規表現の記号をエスケープする |
- 例:
$grep^xy /etc/*
:
/etc/services:xyplex-mux 173/tcp
:
- 例:
$ grep -i hostname /etc/*
(/etc ディレクトリにある、大文字または小文字の hostname という文字列を含むファイル)
/etc/rc.sysinit: HOSTNAME=localhost
(略)
/etc/rc.sysinit: # Reset the hostname.
(略)
$ grep abc /etc/* | grep -v tcp
(/etc ディレクトリにある、 abc という文字列を含むが tcp という文字列は含まないファイル)
(略)
/etc/services:abcvoice-port 3781/udp# ABCvoice server port
(略)
- 例,查询以
d
结尾的文件或是目录名:
$ ls /usr/bin/ | grep -e d$
:
:
xxd
yppasswd
$