学习shell有一段时间了, 一直懒于学习更多的用法, 趁着现在工作中有用到的机会, 打算好好掌握之. 这篇笔记是读<unix shell 编程>的笔记, 进行了一些改动, 以实例为主.
Chapter 1 复习基础命令和知识
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
基础命令和知识
常用命令: ls, echo, cp , mv , mkdir, rm , rmdir ,cd,ln,date, who/who am i,cat ,wc
概念和知识点:
2> 标准输入和标准输出的概念
3> 输入重定向和输出重定向的概念. > 和 >> 的区别.
4> 管道连接命令的概念
5> shell默认的有限字符匹配功能. ?: 匹配1个字符, *:匹配0-n个字符. 例如 ls *file*.txt
部分命令用法:
cat filename: 查看文件内容
ln fromfile tofile: 建立文件链接. 用windows的术语, 就是建立快捷方式. ln有两种链接方式, 请用 man ln 查看更多细节.
wc filename: 统计文件的单词个数. (注: wc表示 word count, 在K&R的<C Programming Language>里能看到算法)
wc 和 sort 都可以在命令行输入多行字符串, 用ctrl + d 结束输入. 试试:
wc -l <敲回车>
This is text <敲回车>
is typed on the standard input device <敲回车, ctrl+d>
练习:
# 输出重定向例子. 现在输出并不是显示在控制台, 而是在文件中.
who > users.txt
who >> users.txt
#输入重定向例子. wc的输入是文件users.txt
wc -l < users.txt
#重定向错误. 并没有asdf这个命令, 所以shell会报错, 但错误信息重定向到了文件. 注意, 2和>之间不能有空格.
asdf 2> errors.txt
#管道连接. 某个命令的输出可以作为另一个命令的输入, 中间用 | 连接
who | wc -l
#有趣技巧. 一行键入多条命令
date;pwd;who
实用技巧:
#往文件写简单的内容时, 不需要用文本编辑器打开文件再编辑, 直接用 >> 命令即可. 例如, 这条命令把某个源添加到debian的source文件:
echo "This is a source " >> /etc/apt/source.list