内容来源于“实验楼”,经过学习整理成文档
1 简单的文本处理
1.1 tr 命令
# 删除 "hello shiyanlou" 中所有的'o','l','h'
$ echo 'hello shiyanlou' | tr -d 'olh'
# 将"hello" 中的ll,去重为一个l
$ echo 'hello' | tr -s 'l'
# 将输入文本,全部转换为大写或小写输出
$ echo 'input some text here' | tr '[:lower:]' '[:upper:]'
# 上面的'[:lower:]' '[:upper:]'你也可以简单的写作'[a-z]' '[A-Z]',当然反过来将大写变小写也是可以的
1.2 col 命令
-x 将 Tab 转换为空格
-h 将空格转换为 Tab
2 数据流重定向
2.1 重定向到文件
创建文件 Documents/test.c, 并不创建 hello.c 文件。使用命令:
$ cat Documents/test.c hello.c
会报错,因为 hello.c 不存在。
将标准输出重定向到文件,使用命令:
# 将标准错误重定向到标准输出,再将标准输出重定向到文件,注意要将重定向到文件写到前面
$ cat Documents/test.c hello.c >somefile 2>&1
# 或者只用bash提供的特殊的重定向符号"&"将标准错误和标准输出同时重定向到文件
$ cat Documents/test.c hello.c &>somefilehell
此时,somefile 和 somefilehell 文件里的内容一致。
2.2 重定向到文件和终端
使用命令:
$ echo 'hello shiyanlou' | tee hello
此时会在 hello 文件和终端同时输出内容
2.3 永久重定向
使用命令 exec 实现永久重定向,exec命令的作用是使用指定的命令替换当前的 Shell,即使用一个进程替换当前进程,或者指定新的重定向:
# 先开启一个子 Shell
$ zsh
# 使用exec替换当前进程的重定向,将标准输出重定向到一个文件
$ exec 1>somefile
# 后面你执行的命令的输出都将被重定向到文件中,直到你退出当前子shell,或取消exec的重定向(后面将告诉你怎么做)
$ ls
$ exit
$ cat somefile
2.4 创建输出文件描述符
2.5 关闭文件描述符
$ exec 3>&-
$ cd /dev/fd;ls -Al;cd -
2.6 屏蔽命令的输出
使用如下命令将得不到任何输出
$ cat Documents/test.c 1>/dev/null 2>&1
3 彩色火焰
$ sudo apt-get install caca-utils
$ cacaview <pic_file>
$ cacademo
$ cacafire
会生成彩色的火焰