《Linux命令行与Shell脚本编程大全第2版》读书笔记

公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先。。。。。

近3年前的了,只有一半的章节,后面的没空记录了。。。。


第1章

可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的当前状态

ipcs命令专门用来查看系统上的当前共享内存页面

Ubuntu使用一个表来管理在系统开机时要自动启动的进程,在/etc/init.d目录,可将开机时启动或停止某个应用的脚本放在这个目录下。这些脚本通过/etc/rcX.d目录下的入口启动,这里X代表运行级(run level)

Linux才做系统有5个启动运行级。运行级为1时,只有基本的系统进程会启动,同时会启动唯一一个控制台终端进程。我们称之为单用户模式。单用户模式通常用来在系统有问题时进行紧急的文件系统维护。

标准的启动运行时3。在这个运行级上,大多数应用软件都会启动。另一个Linux中常见的运行级是5。在这个运行级上系统会启动图形化的X Window系统,同时允许用户通过图形化桌面窗口系统登录系统。

linux系统将硬件设备当成特殊的文件,称为设备文件。有3种不同的分类:字符型设备文件、块设备文件和网络设备文件。

第3章

bash shell启动时会自动处理用户主目录下.bashrc文件中的命令。

用man bash可以查看bash的手册

Linux将文件存储在单个目录结构中,这个目录称之为虚拟目录(virtual directory)。虚拟目录包含了安装在PC上的所有存储设备的文件路径,并将其并入到一个目录结构中。 / 为根(root)目录

Linux PC上安装的第一块硬盘为根驱动器,它包含了虚拟目录的核心。Linux会在根驱动器上创建一些特别的目录,称之为挂载点(mount point)。挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上他们却存储在另外一个驱动器中。

/ 虚拟目录的根目录,通常不会在这里存储文件

/bin 二进制目录,存放许多GNU用户级的工具

/boot 启动目录,存放启动文件

/dev 设备目录,Linux在这里创建设备节点

/etc 系统配置文件目录

/home 主目录,linux在这里创建用户目录

/lib 库目录,存放系统和应用程序的库文件

/media 媒体目录,存放可移动媒体设备挂载点的地方

/mnt 挂载目录,另一个存放可移动媒体设备挂载点的地方

/opt 可选目录,通常用于存放可选的软件包

/root 根主目录

/sbin 系统二进制目录,存放许多GNU管理员级工具

/tmp 临时目录,可以在该目录中创建和删除临时工作文件

/usr 用户安装软件的目录

/var 可变目录,用以存放经常变化的文件,比如日志文件

在安装支持彩色的终端模拟器,可用带

-F参数的ls命令来区分文件和目录,目录名后会增加正斜线(/),会在可执行文件后加个星号。

把隐藏文件一起显示,用-a参数。

-R会遍历输出子目录和所有文件。

-l参数在每一行列出单个文件和目录。每一行都包含下列信息:

文件类型,比如目录(d),文件(-),字符型文件(c)或块文件(b)

文件的权限

文件的硬链接总数

文件属主的用户名

文件属组的组名

文件的大小(以字节为单位)

文件上次修改时间

文件名或目录名

可用通配符过滤:

问号代表一个字符,可用在过滤器字符串中替代任意位置的单个字符

星号代表零个或多个字符

(通配符和正则表达式不是一回事)

可以用touch命令创建空文件,还可用来改变已有文件的访问时间和修改时间,而不改变文件的内容。

如果只改变访问时间,可用-a参数。如果只改变修改时间,可用-m参数。默认情况下,touch使用当前时间。可以通过-t参数加上特定的时间戳来指定时间

cp用于复制

-a 归档文件,并保留他们现有的属性

-b 创建已存在目标文件的备份,而非覆盖它

-d 保留

-f 强制覆盖已有的目标文件,不提示

-i 在覆盖目标文件之前提示

-l 创建文件链接而非复制文件

-p 如果可能,保留文件属性

-r 递归地复制文件

-R 递归地复制目录

-s 创建一个符号链接而非复制文件

-S 覆盖默认的备份文件的后缀(默认是~)

-u 仅在源文件比目标文件新的情况下复制(相当于更新)

-v 详细模式,解释到底发生了什么

-x 仅限于当前文件系统的复制

如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本或多个虚拟副本的方法。这种虚拟的副本就成为链接。Linux有两种不同类型的文件链接:

符号链接,即软链接

硬链接。硬链接会创建一个独立文件,其中包含了源文件的信息以及位置。引用硬链接文件等同于引用了源文件。

硬链接在ls -l中会显示相同的索引节点号,表明实际上它们是同一个文件。软链接的索引节点号不同,而且文件大小也不同,也就是一个新文件。

可用ln命令来替代cp命令。默认情况下,ln命令会创建硬链接。加-s参数创建软链接

mv(moving)命令用来移动文件和重命名。移动一个有软链接指向它的文件,软链接将失效。

rm(removing)命令是删除文件。bash shell中没有回收站或者垃圾箱,所以文件一旦删除就无法再找回了。

文件test1含有一个指向它的硬链接test4和一个指向它的软链接test5,而它被删除后,两个链接文件依然都在。查看硬链接test4的内容时能显示文件内容,而查看软链接test5文件的内容时,bash表明它已经不存在了。硬链接文件采用和源文件相同的索引节点号。硬链接会一直维持这个索引节点号来保留数据,直到你删除了最后一个硬链接它的文件。所有的软连接文件都知道它所指向的文件不在了,所以指向的也就是一个无效文件。

可以用-f参数来强制删除文件而不会被提示符烦到。

mkdir命令创建目录

rmdir命令删除空目录。可以使用--ignore-fail-on-non-empty参数来删除非空目录。

也可用rm -r来递归地删除目录中的文件,最后删除目录自身。-rf可无条件删除

stat命令可以提供文件系统上某个文件的所有状态信息

file命令用来查看文件类型,能够探测文件的内部并决定文件时什么类型。file命令将文件分成3类:

文本文件:包含可打印字符的文件

可执行文件:可在系统上运行的文件

数据文件:包含不可打印二进制文件、又不能在系统上运行的文件

cat用于查看文件

-n 给所有的行加上行号

-b 给有文本的行加上行号

-s 将多个空白行压缩到单个空白行

more命令会显示文本文件的内容,但会在显示每业数据之后停下来。有很多选项可使用

less命令是more的升级版,(文件游戏,less is more)。

tail命令会显示文件末尾部分的内容,默认会显示末尾10行。

-c byte 显示文件最后的bytes个字节的字符

-n lines 显示文件最后的lines行

-f 让tail程序一直保持活动状态,如果有新的内容加到文件的末尾就显示出来

--pid=PID 和-f参数一起,跟踪一个文件直到进程ID为PID的进程结束

-s sec 和-f参数一起,在每次循环输出之间休眠sec秒

-v 总是显示带文件名的头

-q 从不显示带文件名的头

-f参数是tail命令的一个突出的特性,它允许你在其他进程使用该文件时查看文件的内容。tail命令会保持活动状态并不断添加到文件的内容。这是实时监测系统日志的绝妙方式。

head命令会显示文件开头那些行的内容,默认显示文件前十行的文本。head命令是不知道文件内容而想知道大致内容时的利器。

第4章

ps监测进程(process)。输出内容中每列的意义还需要查查man

-e 显示所有进程

-f 显示更多额外输出

-F 比-f显示更多额外输出

-l 长格式输出

top命令实时显示进程信息

Linux沿用了Unix进行进程间通信的方法。在Linux上,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能识别它并决定忽略还是作出反应

信号   名称   描述

1  HUP  挂起

2  INT  中断

3  QUIT 结束运行

9  KILL 无条件终止

11 SEGV 段错误

15 TERM 尽可能终止

17 STOP 无条件停止运行,但不终止

18 TSTP  停止或暂停,但继续在后台运行

19  CONT 在STOP或TSTP之后恢复运行

在linux上有两个命令可以向运行中的进程发出进程信号,kill命令和killall命令

kill命令可通过PID(进程号)给进程发信号。默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号。要发送进程信号,你必须是进程的属主或登录为root用户。

如果要强制终止,-s参数支持指定其他信号(用信号名或信号值),如kill -s HUP 3940

killall命令支持通过进程名而不是进程号来结束进程,并支持通配符。

mount命令会输出当前系统上挂载的设备列表,并可使用参数来手动挂载设备

umount命令卸载可移动设备

sort命令用来对数据进行排序

默认情况下,会把数字当做字符而执行标准的字符排序。可用-n参数把数组识别成数字而不是字符

-k=POS1[,POS2] 排序从POS1位置开始;如果指定了POS2的话,到POS2位置结束

-t=SEP 指定一个用来区分键位置的字符

压缩数据的工具 文件扩展 描述

bzip2  .bz2  采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码

compress  .Z  原始的Unix文件压缩工具,逐渐消失中

gzip  .gz  GNU压缩工具,用Lempel-Ziv编码

zip  .zip  Windows上PKZIP工具的Unix实现

Unix和Linux上最广泛使用的归档工具是tar命令。格式

tar function [options] object1 object2

function参数定义了tar命令应该做什么

功能  全字名称  描述

-A  --concatenate  将一个已有tar归档文件追加到另一个tar归档文件

-c  --create  创建一个新的tar归档文件

-d  --diff  检查归档文件和文件系统的不同之处

     --delete  从已有tar归档文件中删除

-r  --append  追加文件到已有tar归档文件末尾

-t  --list  列出已有tar归档文件的内容

-u  --update  将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中

-x  --extract  从已有tar归档文件中提取文件

选项:

-C dir  切换到指定目录

-f file  输出结果到文件或设备file

-j  将输出重定向给bzip2命令来压缩内容

-p  保留所有文件权限

-v  在处理文件时显示文件

-z  将输出重定向给gzip命令来压缩内容

这些选项经常合并到一起使用。可以用

tar -cvf test.tar test/ test2/

来创建一个归档文件,用

tar -xvf test.tar

来提取内容。

gzip压缩过的tar文件是以.tgz结尾,可用

tar -zxvf filename.tgz来解压

第5章

bash shell用一个称作环境变量(environment variables)的特性来存储有关shell会话和工作环境的信息。

printenv命令查看所有全局变量

set命令会显示特定进程设置的所有环境变量,包括全局和局部环境变量

全局环境变量在设定该全局环境变量的进程创建的所有子进程中都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出export到全局环境中。

unset命令删除环境变量。在unset命令引用环境变量时,记住不要用美元符号$

bash shell提供了跟Unux Bourne shell兼容的环境变量:

变量  描述

CDPATH  冒号分隔的目录列表,作为cd命令的搜索路径

HOME 当前用户的主目录

IFS shell用来分隔文本字符串的一列字符

PATH  冒号分隔的shell查找命令的目录列表

除了默认的Bourne的环境变量,bash shell还提供了一些自有的变量。(不只下列这些)

变量  描述

BASH  运行当前shell示例的全路径名

BASH_ARGC  含有传给子函数或shell脚本的参数总数的可变数组

BASH_ARGV  含有传给子函数或shell脚本的参数的可变数组

BASH_COMMAND  shell正在执行的命令或马上就执行的命令

BASH_CMDS  shell执行过的命令的所在位置的关联数组

BASHPID  当前bash进程的PID

COLUMNS  当前bash shell实例所用终端的宽度

PPID  bash shell父进程的PID

PWD  当前工作目录

OLDPWD  shell之前的工作目录

可以修改PATH=$PATH:mypath,程序员通常用的办法是将单点符也加到PATH环境变量里。

启动bash shell有三种方式,登录时当做默认登录shell,作为非登录shell的交互式shell,作为运行脚本的非交互shell

登录shell会从4个不同的启动文件里读取命令,依次是(Ubuntu有不同):

/etc/profile

$HOME/.bash_profile

$HOME/.bash_login

$HOME/.profile

其中/etc/profile是熊上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行这个启动文件,另外三个是用户专有的。

.bash_profile启动文件会先去检查HOME目录中是不是还有另一个叫.bashrc的启动文件。如果有,会先去执行它里面的命令

数组是能够存储多个值的变量。值可按单个值或整个数组来引用。

mytest=(one two three four five)   定义数组

echo $mytest     显示第一个值

echo ${mytest[2]}     显示第3个值

echo ${mytest[*]}    显示所有的值

mytest[2]=seven   赋值

alias命令创建别名, 可用-p参数打印已有的别名列表

第6章

useradd 添加新用户

userdel 删除用户

groupadd 添加新组

groupdel 删除

ls -l输出结果的第一个字段是描述文件和目录权限的码。这个字段的第一个字符代表了对象的类型

-代表文件

d代表目录

l代表链接

c代表字符型设备

b代表块设备

n代表网络设备

之后有3组三字符的码,每一组字符码表示三重访问权限:

r代表对象是可读的

w代表对象是可写的

x代表对象是可执行的

如果没有权限,在该权限位会出现单破折线。这3组三字符码分别对应对象的3个安全级别:

对象的属主

对象的属组

系统其他用户

umask命令用来设置用户创建文件和目录的默认权限,即设置后,touch命令会默认用这个权限创建文件。

umask命令可以显示这个默认权限,为0022

这4个数字,第一位代表了一项特别的安全特性,叫做粘着位(sticky bit),后面的3位表示文件或目录的umask的八进制值。

八进制模式的安全性设置先获取这3组rwx权限的值,然后将其转换成3位二进制值来表示一个八进制值。在这个二进制表示中,每个位置代表一个二进制位。因此,如果读权限是唯一置位的权限,权限值就是r--,转换成二进制值就是100,代表的八进制值是4.

权限  二进制值  八进制值

---   000   0

00x  001  1

-w-  010  2

-wx  011  3

r--  100  4

r-x  101  5

rw-  110  6

rwx  111 7

umask值是个掩码,它会屏蔽掉不想授予该安全级别的权限。

chmod命令用来改变文件和目录的安全性设置。格式如下:

chmod options mode file

mode参数后可跟八进制模式或符号模式来设置安全性设置。

八进制模式: chmod 755 file

符号模式下的格式:

[ugoa...][+-=][rwxXstugo...]

u代表用户,g代表组,o代表其他,a代笔所有。

X:如果对象是目录或者它已有执行权限(3个组中有一个是x),赋予执行权限

s:运行时重新设置UID或GID

t:保留文件或目录

u:将权限设置为跟属主一样

g:将权限设置为根属组一样

o:将权限设置为跟其他用户一样

chown命令用来改变文件的属主,chgrp命令用来改变文件的默认属组。

第8章

包管理系统(Package Management System, PMS),利用一个数据库来记录:系统上已安装了什么软件包,每个包安装了什么文件,每个已安装软件包的版本。还有一些用来安装、管理和删除软件用的命令行工具。

dpkg命令是基于Debian系PMS工具的核心。包含在这个PMS中的其他工具有:

apt-get

apt-cache

aptitute

到目前为止,最常用的命令行工具是aptitude,而这是有原因的。aptitude工具本质上是apt工具和apkg的前端。dpkg是一个软件包管理系统工具,而aptitude则是一个完整的软件包管理系统。

在shell提示符下键入aptitude并按下回车键,会且到aptitude的全屏模式(交互式界面)。

aptitude show package_name 显示某个特定包的详细信息

dpkg -L package_name 显示所有跟某个特定包关联的所有文件的列表

dpkg --search absolute_file_name 查找某个特定文件属于哪个软件包,注意用绝对文件路径

aptitude search package_name 查找特定的软件包。会隐式添加通配符到包名。在结果中,每个包名字之前都有一个p或一个i。i说明已经安装,p说明还没安装。还可能有u,可以升级。

aptitude safe-upgrade 安全地用软件库中的新版本更新系统上所有的软件包

aptitude full-upgrade 或 aptitude dist-upgrade 与safe-upgrade的区别是不会检查包与包之间的依赖关系

aptitude remove 只删除软件包但不删除数据和配置文件。之后在用aptitude search会看到软件包名称前有个c,表示软件已被删除,但配置文件尚未从系统中清除。

aptitude purge 删除软件包和相关的数据和配置文件

第10章

创建shell脚本文件时,必须在文件的第一行指定要使用的shell,其格式为:

#!/bin/bash

echo命令可用单引号或双引号来将文本字符串圈起来。如果你在字符串中用到了它们,你需要在文本中使用其中一种引号,而用另外一种来将字符串圈起来

echo -n 输出字符串后不换行

要显示美元符,在前面放置一个反斜线 \$

用户变量可以是任何不超过20个字母、数字或下划线的文本字符串,区分大小写。

反引号允许你将shell命令的输出赋给变量。 例如var=`date`

date +%y%m%d%H%M%S 输出年月日时分秒

大于号(>)输出重定向,会创建文件,如果已存在则覆盖

双大于号(>>)追加数据

wc命令提供了对数据中文本的计数。默认输出3个值,文本的行数,文本的词数,文本的字节数

内联输入重定向(inline input redirection),允许在命令行而不是在文件输入重定向的数据。符号是双小于号(<<),除了这个符号,必须指定一个文本标记来划分要输入数据的开始和结尾。你可以用任何字符串的值来作为文本标记,但在数据的开始和结尾必须一致。例如:

wc <<EOF

test line 1

test line 2

EOF

管道将一个命令的输出重定向到另一个上。不要以为管道链接会一个一个地运行,实际上会同时运行这两个命令,在系统内部将他们连接起来。在第一个命令产生输出的同时,输出会被立即送给第二个命令。传输数据不会用到任何中间文件或缓冲区域。

时间: 2024-09-16 16:07:34

《Linux命令行与Shell脚本编程大全第2版》读书笔记的相关文章

《职场动物进化手册》读书笔记

前看过<职场动物进化手册>,但是一直没有将http://www.aliyun.com/zixun/aggregation/9752.html">读书笔记整理出来.下面只是我的一些小感想,欢迎指正. 对主管而言: 如同自然界的动物一样,任何员工都有自己的存在价值,也都在为生存而相互争斗: 主管最重要的是保持系统的 稳定,尽可能发挥各自的特长: 内耗是不可避免的,但是是可以降低的: 内耗减少,就可能因为缺少平衡而风险加大: 珍视缺乏政治头脑的动物,保护他们的热情,但是也需要 防止他

《隐婚男女》北京再演交出职场相恋手册(组图)

<隐婚男女>重磅开演 <隐婚男女>主创齐聚 新浪娱乐讯 有关于职场相恋当隐不当隐的李伯男导演作品<隐婚男女>历时一年时光,巡演24城回归北京,将于2月23日在人艺实验剧场再度开演.鉴于李伯男导演新戏已经开始了紧锣密鼓的筹备工作,本轮也将是该剧本年度在北京的最后一轮献演,再为全城观众献上职场相恋手册,给力支招.努力不"添堵". 那么多人又爱了又离了,那么多人曾经指天明誓的对世界宣告最初爱的开场曲,若隐瞒一旦开始,这一段曾经指望对彼此忠诚到老的感情藏匿何

白领热捧职场圣经不败之书满足心理需求(图)

资料图片资料图片 白领热捧"职场圣经" 借鉴论 教人怎么揭开办公室幕后江湖.身处不败之地的"职场书",满足了白领心理上的安全需求. 混迹职场,不少白领手头都装备了一部或者数部职场"宝典","去年毕业前,我就去书城买了一本<杜拉拉升职记>回来仔细研读,看主人公对职场各种漩涡见招拆招,增长一些见识,也好对即将开始的生活找一点安全感."工作一年的"菜鸟"元媛告诉记者,多数年龄相仿的"85&q

《进化——我们在互联网上奋斗的故事》一一1.4 从精兵到强将 ——技术人员的职场发展之路

1.4 从精兵到强将 --技术人员的职场发展之路 进化--我们在互联网上奋斗的故事 因兴趣而进入互联网行业 2000年,踏着世纪交替的步伐,我走进入了西北工业大学,学习航空飞行器动力专业而不是计算机专业.在入学之前,我就对计算机有不小的兴趣,进入大学后经常去学校图书馆或实验室上网,对计算机的兴趣越来越浓厚,就去图书馆找一些网页设计.网页特效等书籍学习并动手做一些练习.之后我就很喜欢用263的邮箱,因为它的邮箱支持自定义网页格式,我可以给同学和朋友发送自己设计的个性化的网页格式E-mail.那时很

《Excel 职场手册:260招菜鸟变达人》一导读

前 言 Excel 职场手册:260招菜鸟变达人 2015年4月,我人生中的第一本书<Excel高手捷径:一招鲜,吃遍天>出版了.出版后的第一个月在当当网计算机新书热榜排名第一,这让我感到很意外.出书后向我请教问题的人更多了,不仅仅是腾讯内部的同事,还有公司外面的粉丝.在帮助大家解决问题的过程中,我钻研了更多的技巧,更加深刻地体会到Excel的博大精深.我特别想把这些技巧分享给大家,因此,两年后我准备再版.在此特别感谢腾讯公司以及老东家江西移动的领导和同事们对我的大力支持,感谢我的亲朋好友以及

《Excel 职场手册:260招菜鸟变达人》一第一篇 数据操作与处理

第一篇 数据操作与处理 Excel 职场手册:260招菜鸟变达人本篇讲解单元格数据录入与编辑以及整理.查找与替换.行与列.工作表和文件等方面的操作技巧,主要内容包含快捷键的功能介绍.特殊数据的录入技巧.查找替换.条件格式.数据有效性定义.自定义单元格.合并单元格取消后快速输入空白区域.文本与数字格式的相互转换.工作表以及工作表标签的显示与隐藏.工作表和工作簿的保护.Excel文件减肥瘦身秘诀.Excel文件打印技巧等.

《Excel 职场手册:260招菜鸟变达人》一第1章 单元格数据录入与编辑

第1章 单元格数据录入与编辑 Excel 职场手册:260招菜鸟变达人本章介绍单元格数据录入与编辑技巧,主要内容包含快捷键(组合键).特殊数据的录入技巧.数据验证.快速填充.合并单元格取消后快速输入空白区域等.

小小指纹膜折射职场众生相

对于公司来说,打卡机就是用来严格约束员工考勤制度的"紧箍咒".然而上有政策下有对策,如今网上热销的一款指纹膜却成为一些上班族的秘密武器.     "以后除非老板天天守着那考勤机,不然休想扣咱辛辛苦苦挣的那么点工资."--这是很多使用指纹膜的上班族的共同心声.尽管屡试不爽成功骗过考勤,可一旦被识破,不但丢了面子.扣了工资,严重者还将落个被炒鱿鱼的下场.一款小小的指纹膜,折射出喜.怒.哀.愁的职场众生相.     喜 金蝉脱壳防迟到     天气越发寒冷,让家住沈阳铁西

《UML及建模》读书笔记

<UML及建模>读书笔记     (一)面向对象技术概述   一.软件及其特性 软件是计算机系统的思维中枢,是软件产业的核心.作为信息技术的灵魂--计算机软件,在现代社会中起着极其重要的作用. 概念: 软件是计算机系统操作有关的程序.规程.规则及其文档和数据的统称. 程序是按事先设计的功能和性能要求执行的语句序列.数据是程序所处理信息的数据结构.文档是与程序开发.维护和使用相关的各种图文资料,如规范说明书.设计说明书.用户手册等. 软件由两部分组成:一是机器可执行的程序和有关的数据:二是与软件

升为领导十大忌 职场百悟大之六

进入职场3--5年后,可能你会因优异的表现,晋升个部门领导,这时候千万不能得意忘形,失去了做人的原则.我没学过什么企业管理MBA之类的课程,我当领导后要求自己的唯一标准就是:过去我希望领导怎样对我,我就应该怎样对待我的下级,除此之外,我还对当好领导总结有以下十忌:   忌自己做不到的事推给下级去做 我没当领导时,我的领导如果让我看出来他做不到的事情让我做,我会很瞧不起他,他说什么我都即使表面上不说,心里也不服,心想:你干不了的事让我干,你不配当我领导,当了个让下级瞧不起的领导又有什么意义呢? 我