这本书比较容易读,也比较容易上手。里面有一些惊喜,学到一些以前不知道的linux概念。
初学linux的好帮手,比学视频培训好很多,先搞懂以下两章,会操作文件,会安装软件。
第4章 操作文件与目录
第14章 软件包管理
适合的读者:Linux新用户
目标:掌握Linux命令行的使用,理解命令行的工作原理和方式,增强与linux的亲近感。
全书36章,主要内容:
一、命令行语言介绍
命令结构
文件系统
命令行编辑
命令帮助与使用手册
二、配置文件编辑
三、利用命令行完成常规任务
四、shell编程
date # 显示当前系统的时间和日期
cal # 显示当月的日历
df # 查看磁盘驱动器当前可用空间
free # 显示可用内存
exit # 关闭终端
pwd # 查看当前工作目录
cd # 改变目录, “.”工作目录,“..”工作目录的父目录
ls # 查看目录内容,文件和目录属性;ls -a 可看到隐藏目录
ls:查看当前工作目录中包含的一系列文件和子目录;
ls /usr :查看特定目录,此处为/usr
ls ~ /usr :查看多个目录
ls -l : 查看详细信息
类UNIX系统以分层目录结构(树形结构)组织文件。tree命令
大部分命令行形式: command -options arguments "-"连字符
file # 确定文件类型
less # 查看文件内容 less filename
less常见的键盘命令
Linux文件系统层次标准(Linux Filesystem Hierarchy Standard)
第4章 操作文件与目录
cp:复制文件和目录。
mv:移动或重命名文件和目录。
mkdir:创建目录。
rm:移除文件和目录。
in:创建硬链接和符号链接。
通配符(也叫文件名替换)允许用户依据字符模式选择文件名,可以快速帮助查找文件名。
rm命令与通配符在一起使用时要特别小心。
类UNIX操作系统(如Linux)并不包含还原删除操作的命令。一旦使用rm命令,就彻底地删除。
第5章 命令的使用
type:显示命令的类型。 type command
which:显示可执行程序的位置。 which command
help: 获得shell内置命令的帮助文档,显示命令的使用信息。 help command 或者 command --help
man:显示命令的手册页。
apropos:显示一系列合适的命令。
info:显示命令的info条目。
whatis:显示命令的简要描述
alias:创建一条命令的别名。
man命令显示的“手册文档”被分成多个部分(section),它不仅包括用户命令,也包括系统管理命令、程序接口、文件格式等。
$man 5 passwd # 该命令将会显示文件/etc/passwd的文件格式描述手册。
GNU项目提供了info页面来代替手册文档。
系统中安装的很多软件包都有自己的文档文件,它们存放在/usr/share/doc目录中。
第6章 重定向
命令行最酷的功能——I/O重定向。
这个功能可以把命令行的输入重定向为从文件中获取内容,也可以把命令行的输出结果重定向到文件中。如果我们将多个命令行关联起来,将形成非常强大的命令——管道。
UNIX“一切都是文件”的思想
I/O重定向功能可以改变输出内容发送的目的地,也可以改变输入内容的来源地。
重定向标准输出
$ > ls-output.txt # 仅仅使用重定向符,并在它之前不加任何命令,就可以删除一个已存在的文件内容或者创建一个新的空文件。
如何不从文件的首位置开始覆盖文件,而是从文件的尾部开始添加输出内容呢?可以使用重定向符“>>”来实现,使用重定向符>>将使得输出内容添加在文件的尾部。如果这个文件并不存在,将与操作符>的作用一样创建这个文件。
文件描述符(file descriptor)。一个程序可以把生成的输出内容发送到任意文件流中。如果把这些文件流中的前三个分别对应标准输入文件、标准输出文件和标准错误文件,那么shell将在内部用文件描述符分别索引它们为0、1和2。shell提供了使用文件描述符编号来重定向文件的表示法。由于标准错误等同于文件描述符2,所以可以使用这种表示法来重定向标准错误。
$ ls -l /bin/usr 2> ls-error.txt # 文件描述符“2”紧放在重定向符之前,将标准错误重定向到ls-error.txt文件中。
重定向标准错误
6.1.3 将标准输出和标准错误重定向到同一个文件
$ ls -l /bin/usr &> ls-output.txt # 使用标记符“&>”把标准输出和标准错误都重定向到了lsoutput.txt文件中
6.1.4 处理不想要的输出
想把输出丢弃,尤其是在输出错误和状态信息的情况下。通过把输出重定向到/dev/null的特殊文件来实现它。这个文件是一个称为位桶(bit bucket)的系统设备,它接受输入但是不对输入进行任何处理。
$ ls -l /bin/usr 2> /dev/null
6.1.5 标准输入重定向
cat——合并文件
cat命令读取一个或多个文件,并把它们复制到标准输出文件中,格式:cat [file...]
如果cat命令没有给定任何参数,它将从标准输入读取内容。Ctrl-D退出。
$ cat > lazy_dog.txt #标准输入用文本输出
The quick brown fox jumped over the lazy dog.
然后Ctrl-D退出。
6.2 管道
Command1 | command2
使用管道操作符“|”(竖线)可以把一个命令的标准输出传送到另一个命令的标准 输入中。
通过使用该技术,可以很方便地检查任意一条生成标准输出的命令的运行结果。
过滤器(filter)接受输入,按照某种方式对输入进行改变,然后再输出它。
$ ls /bin /usr/bin | sort | less # 把/bin和/usr/bin目录下的所有可执行程序合并成一个列表,并且按照顺序排列,最后再查看这个列表
$ ls /bin /usr/bin | sort | uniq | less # uniq命令,删除列表中的所有重复行。
$ ls /bin /usr/bin | sort | uniq -d | less # 查看重复行的列表,可以在uniq命令后面添加-d选项
wc(字数统计,word count)命令用来显示文件中包含的行数、字数和字节数。
$ wc ls-output.txt # 输出行数、字数和字节数
$ ls /bin /usr/bin | sort | uniq | wc -l # -l选项限制命令只报告行数
grep是一个功能强大的程序,它用来在文件中查找匹配文本
grep pattern [file...]
$ ls /bin /usr/bin | sort | uniq | grep zip # 搜索出文件名中包含zip的所有文件
选项:
-i,该选项使得grep在搜索时忽略大小写(通常情况下,搜索是区分大小写的);
-v,该选项使得grep只输出和模式不匹配的行。
只是需要输出开头几行或者最后几行。
head命令将输出文件的前10行,tail命令则输出文件的最后10行;
使用-n选项来调整输出的行数。
$ head -n 5 ls-output.txt
$ tail -n 5 ls-output.txt
$ ls /usr/bin | tail -n 5
$ tail -f /var/log/messages # tail中-f选项很有用,用来实时查看文件,一旦添加了新行,新行将会立即显示在屏幕上。该选项在观察正在被写入的日志文件的进展状态时很有用。
按Ctrl-C后退出
tee——从stdin读取数据,并同时输出到stdout和文件
tee程序读取标准输入,再把读到的内容复制到标准输出和一个或更多的文件中去。
当在某个中间处理阶段来捕获一个管道中的内容时,会很有用。
$ ls /usr/bin | tee ls.txt | grep zip # 在使用grep命令过滤管道内容之前,我们先使用tee命令来获取整个目录列表并输出到ls.txt文件中
cat:合并文件。
sort:对文本行排序。
uniq:报告或删除文件中重复的行。
wc:打印文件中的换行符、字和字节的个数。
grep:打印匹配行。
head:输出文件的第一部分内容。
tail:输出文件的最后一部分内容。
tee:读取标准输入的数据,并将其内容输出到标准输出和文件中。
echo:显示一行文本。
clear:清屏。
history:显示历史列表的记录。
第9章 权限
id:显示用户身份标识。
chmod:更改文件的模式。
umask:设置文件的默认权限。
su:以另一个用户的身份运行shell。
sudo:以另一个用户的身份来执行命令。
chown:更改文件所有者。
chgrp:更改文件所属群组。
passwd:更改用户密码。
第10章 进程
Linux内核通过使用进程来管理多重任务。
ps:显示当前所有进程的运行情况。
top:实时显示当前所有任务的资源占用情况。
jobs:列出所有活动作业的状态信息。
bg:设置在后台中运行作业。
fg:设置在前台中运行作业。
kill:发送信号给某个进程。
killall:杀死指定名字的进程。
shutdown:关机或者重启系统。
第二部分 配置与环境
程序使用存储在环境中的数据来确定我们的配置
printenv:打印部分或全部的环境信息。
set:设置shell选项。
export:将环境导出到随后要运行的程序中。
alias:为命令创建一个别名。
第三部分 常见任务和主要工具
第14章 软件包管理
决定Linux发行版本质量最重要的因素是软件包系统和支持该发行版本社区的活力。
多数Linux发行版采用的不外乎两种软件包技术阵营,即Debian的.deb技术和Red Hat的.rpm技术。
软件包管理系统通常包含两类工具——执行如安装、删除软件包文件等任务的低级工具和进行元数据搜索及提供依赖性解决的高级工具。
常见软件包管理任务
在库里面查找软件包
通过使用高级工具来搜索库元数据时,我们可以根据包文件名或其描述来查找该包。
yum search emacs # 搜索emac文本编辑器
安装库中的软件包
高级工具允许从库中下载、安装软件包,同时安装所有的依赖包。
package_name指软件包名称,package_file指包含该软件包的文件名。
安装软件包文件中的软件包
低级工具安装,不会解决依赖性关系。在安装过程中发现缺少依赖包,就会跳出错误后退出。
删除软件包
卸载软件包既可利用高级工具也可用低级工具,高级工具的相关命令:
更新库中的软件包
更新软件包文件中的软件包
如果软件包的更新版本已从非库源中下载,可以用以下命令进行安装更新从而取代原版本。
rpm -U emacs-22.1-7.fc7-i386.rpm # 将Red Hat系统上已安装好的emac程序更新为emacs-22.1-7.fc7-i386.rpm软件包文件中的版本
列出已安装的软件包列表
Debian系统 dpkg --list
Red Hat系统 rpm -qa
判断软件包是否安装
Debian系统 dpkg --status package_name
Red Hat系统 rpm -q package_name # 要完整的软件包名,不然找不到
显示已安装软件包的相关信息
Debian系统 apt-cache show package_name
Red Hat系统 yum info package_name
查看某具体文件由哪个软件包安装得到
Debian系统 dpkg --search file_name
Red Hat系统 rpm -qf file_name
rpm -qf /usr/bin/vim # 查看Red Hat系统中哪个软件包安装了/usr/bin/vim目录下的文件
第15章 存储介质
设备级别的数据处理。
管理存储设备的一些重要命令:
mount:挂载文件系统。
unmount:卸载文件系统。
fdisk:硬盘分区命令。
fsck:检查修复文件系统。
fdformat:格式化软盘。
mkf:创建文件系统。
dd:向设备直接写入面向块数据。
genisoimage(mkisofs):创建一个ISO 9600映像文件。
wodim(cdrecord):向光存储介质写入数据。
md5sum:计算MD5校验码。
第16章 网络
在网络连接方面,Linux可以说是万能的。
ping:向网络主机发送ICMP ECHO_REQUEST数据包。
traceroute:显示数据包到网络主机的路由路径。
netstat:显示网络连接、路由表、网络接口数据、伪连接以及多点传送成员等信息。
ftp:文件传输命令。
lftp:改善后的文件传输命令。
wget:非交互式网络下载器。
ssh:OpenSSH(SSH协议的免费开源实现)版的SSH客户端(远程系统登录命令)。
scp:secure copy 的缩写,是远程复制文件命令。
sftp:secure file transfer program的缩写,安全文件传输程序。
IP (Internet protocol) address:互联网协议地址。
host and domain name:主机名和域名。
URI (uniform resource identifier):统一资源标识符。
第17章 文件搜索
locate:通过文件名查找文件。
find:在文件系统目录框架中查找文件。
xargs:从标准输入中建立、执行命令行。
touch:更改文件的日期时间。
stat:显示文件或文件系统的状态。
第18章 归档和备份
维护系统数据安全是计算机系统管理者的基本任务之一,及时创建系统文件的备份文件是维护系统数据安全的一种常用方法
文件压缩程序:
gzip:压缩和解压缩文件工具。
bzip2:块排序文件压缩工具。
文件归档程序:
tar:磁带归档工具。
zip:打包和压缩文件。
文件同步程序:
rsync:远程文件和目录的同步。
第19章 正则表达式
第20章 文本处理
操控和格式化文本的工具
由于所有类UNIX操作系统都严重依赖于文本文件来进行某些数据类型的存储,所以需要
有很多可以进行文本操作的工具。
cat:连接文件并打印到标准输出。
sort:对文本行排序。
uniq:报告并省略重复行。
cut:从每一行中移除文本区域。
paste:合并文件文本行。
join:基于某个共享字段来联合两个文件的文本行。
comm:逐行比较两个已经排好序的文件。
diff:逐行比较文件。
patch:对原文件打补丁。
tr:转换或删除字符。
sed:用于过滤和转换文本的流编辑器。
aspel:交互式拼写检查器。
第21章 格式化输出
nl:对行进行标号。
fold:设定文本行长度。
fmt:简单的文本格式化工具。
pr:格式化打印文本。
printf:格式化并打印数据。
grof:文档格式化系统。
第22章 打印
pr:转换文本文件,从而进行打印操作。
lpr:打印文件。
lp:打印文件(System V)。
a2ps:格式化文件,以在PostScript打印机上打印。
lpstat:显示打印状态信息。
lpq:显示打印机队列状态。
lprm:取消打印任务。
cancel:取消打印任务(System V)。
第23章 编译程序
通过源代码生成可执行程序。
编译的复杂程度完全取决于所要安装的软件包。
make—维护程序的工具。
第四部分 编写shell脚本
第24章 编写第一个shell脚本
通过自行设计,将命令行组合成程序的方式,shell就可以独立完成一系列复杂的任务。
shell脚本是一个包含一系列命令的文件。shell读取这个文件,然后执行这些命令,就好像这些命令是直接输入到命令行中一样。
shell 很独特,因为它既是一个强大的命令行接口,也是一个脚本语言解释器。我们将会看到,大多数能够在命令行中完成的工作都可以在脚本中完成,反之亦然。