目录
一、认识shell
英文单词shell可直译为“贝壳”,“贝壳”在动物中作为外在保护的一种工具。
Linux操作系统的体系结构:
内核是操作系统的核心,决定着系统的性能和稳定性。Linux内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。
shell是一个命令行解释器,其实就是一个程序(bash、sh等)。将用户命令解析为操作系统所能理解的指令,从而实现用户与操作系统的交互。
shell是系统的用户接口,用户接口有两种,分别为GUI接口(图形用户界面)和CLI接口(命令行界面)。
GUI接口:
windows选用的程序为:explore.exe程序。
linux(X-window)选用的程序有:Gnome、KDE(centos选用)、Xface。
(关闭这些程序用户界面的看不到了。)
CLI接口:
windows选用的程序为:cmd程序。
linux选用的程序有:sh、csh、ksh、bash、zsh、tcsh。
- sh(Bourne Shell):由AT&T贝尔实验室开发。
- csh(C Shell):由加利福尼亚大学伯克利分校开发。
- ksh(Korn Shell):解决了sh的用户交互问题。
- bash(Bourne Again Shell):同样由AT&T贝尔实验室开发,是sh的增强版。它具有以下特点:能够提供环境变量、配置用户的shell环境、支持历史记录、内置算术功能、支持通配符表达式。
这些接口都对应一个应用程序,不管是windows还是linux,平常所用的图形桌面实际上它属于一个应用程序,而命令行也是一个应用程序,这两个应用程序属于一个类别,都叫用户接口的应用程序。
一般一个用户登录后会启动一个用户接口程序,如果没有启动是无法使用这台计算机。(多开一个终端就会多一个shell在运行,可用ps命令查看:ps aux | grep bash)
二、shell命令的格式
2.1 命令提示符
username@hostname:direction$
username:用户名,显示当前登录用户的账户名。
hostname:主机名。
direction:目录名,显示当前所处的路径,当在根目录下显示为“/”,当在用户主目录下显示为"~"。
2.2 命令格式
$ Command [-Options] Argument1 Argument2…
通常一条指令包含3个要素:命令名称、选项、参数。命令名称是必须的,选项和参数都坑能是可选项。
Command:命令名称,Shell命令或程序,严格区分大小写。命令分为内部命令和外部命令。
- 如何查看是哪种命令:type命令,例如$ type cd,输出为cd is a shell builtin,这表明属于内部命令。
- 查看内部命令的帮助文档:help命令,例如$ help cd
- 查看外部命令的帮助文档:1、man命令,/xxx查找关键字,n上翻,N下翻,输入q表示退出,例如$ man ls; 2、ls --help
命令在不断更新,同样可通过type命令进行查看,例如$ type ls,输出为ls is aliased to `ls --color=auto’,说明输入ls等价于ls --color=auto,表示自动显示(彩色),输入ls -f,则为不同文件类型同一颜色显示。
Options:命令选项,用于改变命令所执行动作的类型。选项分为长选项和段选项。
- 长选型,由"–"来引导。
- 段选项,由"-"来引导。
Argument:命令参数,指出命令作用的对象和目标,有的命令允许带多个参数。
注意:
- 一条命令的三要素之间用空格隔开;
- 若将多个命令在一行书写,用分号(;) 将各命令隔开;
- 如果一行命令不能在一行写完,在行位使用反斜杠(\) 标明该命令未结束。
三、shell命令
3.1 用户系统相关命令
3.1.1 用户切换命令(su)
(1)格式:su [选项] [使用者 ]
选项 | 参数含义 |
---|---|
-,-l,–login | 切换用户时,同时切换成相应的环境变量和工作目录 |
-m,-p | 执行su时不改变环境变量 |
-c,–command | 变更账号为USER的使用者,并执行指令后再变回原来使用者身份,例如su -c ls |
(2)使用说明
- 将普通用户变更为root用户时,建议使用“-”选项,这样可以将root的环境变量和工作目录同时带入,否则在以后的使用中可能会由于环境变量的原因而出错。
- 在转变为root权限后,提示符变为“#”。
su、sudo、su - root 的区别:请点击
3.1.2 系统管理命令(ps、kill及pstree)
命令 | 命令含义 | 格式 |
---|---|---|
ps | 显示当前系统中由该用户运行的进程列表 | ps [选项] |
top | 动态显示系统中运行的程序 | ps |
kill | 输出特定的信号给指定PID(进程号)的进程,当选项是默认时为输出终止信号给该进程 | kill [选项] 进程号(PID) |
shutdow | 关闭或重启linux系统 | shutdow [选项] [时间] |
uptime | 显示系统已经运行了多长时间 | uptime |
clear | 清除屏幕上的信息 | clear |
ps命令常见参数列表:
选项 | 参数含义 |
---|---|
-ef | 查看所有进程及其PID、系统时间、命令详细目录、执行者等 |
aux | 除可显示-ef所有内容外,还可显示CPU及内存占用率,进程状态 |
-w | 加宽以显示较多的信息,通常最多写3次,例如ps aux w w w |
kill命令常见参数列表:
选项 | 参数含义 |
---|---|
-s | 根据指定信号发送给进程,如kill -s SIGKILL 7357 |
-p | 打印出进程号,但不发出信号,man手册中没有-p选项 |
-l | 列出所有可用的信号名称 |
-signal_name | 指定进程发送信号名称 |
-signal_number | 指定进程发送信号数字 |
pstree命令查看进程树
Linux pstree命令
3.1.3 磁盘相关命令(fdisk)
命令 | 命令含义 | 格式 |
---|---|---|
free | 查看当前系统内存的使用情况 | free [选项] |
df | 查看文件系统的磁盘空间占用情况,如df -h | df [选项] |
du | 统计目录(或文件)所占磁盘空间的大小,如du -sh | du [选项] |
fdisk | 查看硬盘分区情况对硬盘进行分区管理,fdisk也是一个非常好的硬盘分区工具 | fdisk [-l] |
fdisk使用说明:
- 使用fdisk必须是root权限,如果不是,会出现不报错不打印信息。
- IDE硬盘对用的设备名称分别为hda、hdb、hdc和hdd,SCSI硬盘对应的设备名称则为sda、sdb…此外,hda1代表hda的第一个硬盘分区,hda2代表hda第二个分区,以此类推。
- 通过查看“/var/log/messages”文件,可以找到Linux系统已辨认出来的设备代号。(有个系统可能没有)
du命令详解 ?
3.1.4 磁盘挂载命令(mount)
(1)作用
- 挂载文件系统的使用权限是超级用户或/etc/fstab中允许的使用者。
- 挂载是指把分区和目录对应的过程,而挂载点是指文件数中的挂载目录。通常,Linux下/mnt是专门用于挂载不同文件系统的目录,可以在该目录下新建不同的子目录来挂载不同的设备文件系统。
(2)格式
- mount [选项] [类型] 设备文件名 挂载点目录
- 这里的设备文件名是驱动程序中的设备节点,一般是/dev/xxx
- umount 挂载点目录 (卸载挂载点)
mount命令选项常见参数列表:
选项 | 参数含义 |
---|---|
-a | 依照/etc/fstab中的内容装载所有相关的硬盘 |
-l | 列出当前已挂载的设备、文件系统名称和挂载点 |
-t 类型 | 将后面的设备以指定类型的文件格式装载到挂载点上。常见的类型有VFAT、ext3、ext2、ISO9660、NFS等 |
-f | 通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常和-v一起使用 |
3.2 文件、目录相关命令
3.2.1 cd & pushd & popd
cd:
(1)作用:改变工作目录。
(2)格式:cd [路径],这里的路径可以是相对路径也可以是绝对路径。
(3)使用说明:
- 如果没有指定路径,则回到用户的主目录。
- 该命令可以使用通配符。
- 使用"cd ~",回到用户的主目录,同cd。
- 使用"cd -",回到前次工作目录。
- "./"代表当前目录,两个点代表上级目录。
pushd:
(1)作用:创建一个目录栈,可以把你目前常见的几个目录压入栈中,并可以迅速地进行切换
(2)格式:pushd [路径],这里的路径可以是相对路径也可以是绝对路径。
(3)效果:将指定的路径压入目录栈中,然后跳转到对应路径下
popd:
(1)作用:从目录栈中的路径弹出
(2)格式:popd
(3)效果:按照栈的特点,先进后出,依次将之前的路径弹出,然后跳转到弹出的路径处。
3.2.2 ls
(1)作用:列出目录的内容。
(2)格式:ls [选项] [文件]
其中“文件”选项为指定要查看的相关内容,若未指定文件,默认查看当前目录下的所有文件。
ls命令常见参数列表:
选项 | 参数含义 |
---|---|
-l,–format=single-column | 一行输出一个文件(单列输出),文件大小以字节为单位进行显示 |
-h | 人性化阅读,以KB、MB…为单位进行显示 |
-a,-all | 列出目录中所有文件,包括以“.”开头的文件 |
-i | 打印文件索引编号inode |
-d | 将目录名和其他文件一样列出,而不是列出目录的内容 |
-f | 不排序目录内容,按它们在磁盘上存储的顺序列出 |
total 9184,这里的9184表示大小为9184B
显示格式说明如下:
文件类型与权限 | 链接数(硬链接) | 文件属主 | 文件属组 | 文件大小 | 修改时间 | 名字 |
---|
一个文件有两种数据:元数据和内容数据。
内容数据:文件内容本身。
元数据:除了内容数据之外的,比如文件大小、文件访问时间等。
文件有三种时间:
- 最后一次访问时间
- 最后一次修改时间:内容的改动叫修改
- 最后一次改变时间:文件(内容和元数据)的改动叫改变
stat命令查看文件信息:
3.2.3 mkdir和touch
mkdir:
(1)作用:创建一个目录。
(2)格式:mkdir [选项] 路径
mkdir命令常见参数列表:
选项 | 参数含义 |
---|---|
-m | 对新建目录设置存取权限,也可以用chmod命令设置 |
-p | mkdir创建的目录可以是一个路径名称。此时若此路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 |
![]() | |
touch: | |
(1)作用:修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。 | |
(2)格式:touch [选项] [文件或目录…] | |
(3)使用示例: |
$ touch testfile #若文件不存在,创建文件;若文件存在修改文件时间属性为当前系统时间。
3.2.4 cat、more、less、head和tail
cat:
(1)作用:连接并显示指定的一个或多个文件的有关信息。
(2)格式:cat [选项] 文件1 文件2 …
选项 | 参数含义 |
---|---|
-n | 由第一行可是对所有输出的行数编号 |
-b | 和“-n”相似,只不过对于空白行不编号 |
more:
(1)作用:分页显示文件内容
(2)格式:more 文件
(3)使用说明
- 敲回车查看下边的内容,不支持回看。
- 中间停止:q
- 显示内容百分比
less:
(1)作用:分页显示文件内容。
(2)格式:less 文件
(3)使用说明
- 可以通过上、下、左、右查看文件具体内容。
- 中间停止:q
- 没有百分比显示
head:
(1)作用:查看文件前n行内容。
(2)格式:head -n 文件
head:
(1)作用:查看文件末尾n行内容。
(2)格式:tail -n 文件
3.2.5 cp、mv和rm
(1)作用
- ① cp:将给出的文件或目录复制到另一个文件或目录中。
- ② mv:为文件或目录改名或将文件由一个目录移入另一个目录中。
- ③ rm:删除一个目录中的一个或多个文件或目录。
(2)格式
- ① cp:cp [选项] 源文件或目录 目标文件或目录
- ② mv:mv [选项] 源文件或目录 目标文件或目录
- ③ rm:rm [选项] 文件或目录
(3)常见参数
cp命令常见参数列表:
选项 | 参数含义 |
---|---|
-a | 保留链接、文件属性,并复制其子目录,其作用等于dpr选项的组合 |
-d | 复制时保留链接 |
-f | 删除已经存在的目标文件而不提示 |
-i | 在覆盖目标文件之前将给出提示,要求用户确认。回答y时目标文件将被覆盖,而且是交互式复制 |
-p | 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中 |
-r | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。 |
mv命令常见参数列表:
选项 | 参数含义 |
---|---|
-i | 若mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,并要求用户回答y或n,这样可以避免误覆盖文件。 |
-f | 禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,在指定此选项后,i选项将不再起作用。 |
rm命令常见参数列表:
选项 | 参数含义 |
---|---|
-i | 进行交互式删除 |
-f | 忽略不存在的文件,但从不给出提示。 |
-r | 指示rm将参数中列出的全部目录和子目录均递归地删除 |
(4)使用说明
- mv命令根据第二个参数的类型(是目标文件还是目标目录)来判断是重命名还是移动文件。
- 在跨文件系统移动文件时,mv先复制,再将原有文件删除,而链至该文件的链接也将丢失。
- 使用rm命令删除文件,是不能恢复的。
3.2.6 chown和chgrp
(1)作用
- ① chown:修改文件所有者和组别。
- ② chgrp:改变文件的组所有权。
(2)格式
- ① chown:chown [选项]… 文件所有者[所有者组名] 文件 ,其中的文件所有者为修改后的文件所有者。
- ② chgrp:chgrp [选项]… 文件所有组 文件 ,其中的文件所有组为改变后的文件组拥有者。
(3)常见参数
chown和chgrp的常见参数意义相同。
chown和chgrp命令常见参数列表:
选项 | 参数含义 |
---|---|
-c,-changes | 详尽地描述每个file实际改变了哪些所有权 |
-f,–silent,–quiet | 显示全部错误信息 |
(4)使用说明
使用chown和chgrp命令必须拥有root权限。
(5) 示例
sudo chown linux 1.c #将1.c文件的文件属主切换为linux
sudo chgrp linux 1.c #将1.c文件的文件属组切换为linux
sudo chown linux:linux 1.c #将1.c文件的文件属主和文件属组切换为linux
3.2.7 chmod
(1)作用:改变文件的访问权限。
(2)格式:chmod可使用符号标记和八进制数指定两种方式进行更改。
- ① 符号标记:chmod [选项] … 符号权限 [,符号权限]… 文件,其中的符号权限可以指定多个,也就是说,可以指定多个用户级别的权限,但它们中间要用逗号分开表示,若没有显示指出,则表示不作更改。
- ② 八进制数:chmod [选项] … 八进制权限 文件…,其中的八进制权限是指要更改后的文件权限。
(3)选项参数
chmod命令常见参数列表:
选项 | 参数含义 |
---|---|
-c | 若该文件权限确实已经更改,才显示其更改动作 |
-f | 若该文件权限无法被更改也不要显示错误信息 |
-v | 显示权限变更的详细资料 |
(4)使用说明
文件的访问权限可表示成:- rwx rwx rwx
这里有3中不同的访问权限:读(r)、写(w)和运行(x)。
3个不同的用户级别:文件拥有者(u)、所属的用户组(g)和系统里的其他用户(o)。在此增加一个用户级别a(all)来表示所有这3个不同的用户级别。
- ① 对于第一种符号连接方式的chmod命令中,用加好“+”代表增加权限,用减号“-”删除权限,用等号“=”设置权限。
- ② 对于第二种八进制指定的方式。
使用chmod必须具有root权限。
3.2.8 grep
(1)作用:在指定文件中搜索特定的内容,并将含有这些内容的行标准输出。
ls -l | grep test,这种方式可以查找当前目录下test的文件,这并不能说明grep能匹配文件名,grep只是匹配文件里的内容。之所以可以查找文件名可以,是因为管道的关系,ls命令的输出结果,相当于文件的形式,作为grep命令的输入。所以grep搜索文件的本质还是没有变。
(2)格式:grep [选项] 格式 [文件及路径],其中的格式是指要搜索的内容格式,若缺省“文件及路径”,则默认表示在当前目录下搜索。
(3)常见参数
grep命令常见参数列表:
选项 | 参数含义 |
---|---|
-c | 只输出匹配行的计数 |
-I(i的大写) | 不区分大小写(只适用于单字符) |
-h | 查询多文件时不显示文件名 |
-l(L的小写) | 查询多文件时只输出包含匹配字符的文件名 |
-n | 显示匹配行及行号 |
-s | 不显示不存在或无匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
“. -r”用于指定文件,表示搜索当前目录下的所有文件。
“grep -d skip”忽略子目录。
当预料到有许多输出,可以通过管道将其转到less(分页器)上阅读,如grep “h” ./ -r | less
grep特殊用法:
grep pattern1 | pattern1 files:显示匹配pattern1或pattern2的行。
grep pattern1 files | grep pattern2:显示既匹配 pattern1,又匹配pattern2的行。
3.2.9 find / whereis / which
find:
(1)作用:在指定目录下搜索文件,它的使用权限是所有用户。
(2)格式:find [路径] [选项] [描述] ,
其中“路径”为文件搜索路径,系统开始沿着此目录树向下查找文件。它是一个路径列表,相互用空格分离。若缺省路径,那么默认为当前目录。
“描述”部分是匹配表达式,即find命令接受的表达式。
(3)常见参数
find选项常见参数列表:
选项 | 参数含义 |
---|---|
-depth | 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容 |
-mount | 不在其他文件系统的目录和文件中查找 |
find描述常见参数列表:
选项 | 参数含义 |
---|---|
-name | 支持通配符“*”和“?” |
-user | 用户名:搜索文件属主为用户名(ID或名称)的文件 |
输出搜索结果,并打印 |
该例中使用-name选项以支持通配符。
find命令中双引号的重要性!!!
(4)使用说明
在find命令中可以使用混合查找的方法,例如,想在“/etc”目录中查找大于500000B,并且在24h内修改了的某个方法,则可以使用“-and”(与)把两个查找参数链接起来组合成一个混合的查找方式,如find /etc -size +500000c -and -mtime +1
whereis:
Linux whereis命令 ?
which:
(1)作用:which 命令用于查找文件。which 指令会在环境变量 $PATH
设置的目录里查找符合条件的文件。
(2)格式:which [文件…],例如,which bash
参考:Linux which命令?
3.2.10 ln
ln命令用于在文件之间建立链接,链接文件类似于Windows的快捷方式,只保留目标文件的地址,而不占用存储空间。使用链接文件与使用目标文件的效果是一样的。可为链接文件指定不同的访问权限,以控制对文件的共享和安全性问题。
Linux中有两种类型的链接:硬链接和软链接。
硬链接是利用Linux中为每个文件分配的物理编号——inode,建立链接。因此,硬链接不能跨越文件系统。(i节点是文件和目录的唯一标识,每个文件和目录必有i节点)
硬链接等于cp -p 加 同步更新。
软链接(符号链接)是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性。
(1)格式
ln [选项] 源文件或目录 要生成的链接文件或目录名
(2)常见参数
“-s”,建立符号链接(这也是通常唯一使用的参数)
(3)使用示例
- 从红色框中可知,软链接文件为链接文件,硬链接文件为普通文件
- 从黄色框中可知,软链接不是复制源文件,它只会在用户选定的位置(当前目录)上生成一个文件镜像,不会重复占用磁盘空间。硬链接会在用户选定的位置(当前目录)上生成一个文件大小相同的文件。对应上文说的硬链接是cp -p加同步更新。
- 从蓝色框中可知,软链接生成文件的操作要早,但是硬链接生成文件时间要早且与源文件时间相同,相当于执行了cp -p的命令。
- 无论是软链接还是硬链接,文件都保持同步变化。
- 硬链接的inode与源文件的inode相同,即一个i节点可以对应多个文件名。
注意:
- 如果修改硬链接的源文件名,链接依然有效;如果修改软链接的源文件,则链接将断开。
- 对一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。
- 假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。
3.2.11 wc
(1)作用:利用计算文件的Byte数、字数、或是列数。
(2)格式:wc [-clw] [–help] [–version] [文件…]
“文件…”表示多个文件。
(3)主要参数
参数 | 参数含义 |
---|---|
-c或–bytes或–chars | 只显示Bytes数 |
-l或–lines | 只显示行数 |
-w或–words | 只显示字数 |
- -help | 在线帮助 |
- -version | 显示版本信息 |
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。
(3)使用示例
其中,3 个数字分别表示test.c文件的行数、单词数,以及该文件的字节数。
统计多个文件时,最后一行还有这些文件总的行数、单词数以及字节数。
3.2.12 man
参考:Linux中man命令的使用方法再解释 ?
3.3 压缩打包相关命令
命令 | 命令含义 | 格式 |
---|---|---|
bzip2 | 文件的压缩和解压程序,压缩后文件后缀为.bz2 | bzip2 [选项] [-压缩等级] 压缩(或解压)文件名 |
bunzip2 | .bz2文件的解压缩程序 | bunzip2 [选项] .bz2压缩文件 |
bzip2recover | 用来修复损坏的.bz2文件 | bzip2recover .bz2压缩文件 |
gzip | 文件的压缩和解压程序,压缩后文件后缀为.gz | gzip [选项] 压缩(或解压)的文件名 |
gunzip | 解压被gzip压缩过的文件 | gunzip [选项] .gz文件名 |
unzip | 解压被WinZip压缩过的.zip文件 | unzip [选项] .zip压缩文件 |
compress | 早期的压缩和解压程序(压缩后文件名为.Z) | compress [选项] 文件 |
tar | 对文件目录进行打包和解压 | tar [选项] [打包后文件名] 文件目录列表 |
3.3.1 gzip
(1)作用:对文件进行压缩和解压缩,而且gzip根据文件类型可自动识别压缩或解压。
(2)格式
gzip [选项] 压缩(解压缩)的文件名
(3)常见参数
选项 | 参数含义 |
---|---|
-c | 将输出信息写到标准输出上,并保留原有文件 |
-d | 将压缩文件解压 |
-l(小写的L) | 对每个压缩文件,显示下列字段:压缩文件大小、未压缩文件的大小、压缩比、未压缩文件的名字 |
-r | 查找指定目录并压缩或解压缩其中的所有文件 |
-t | 测试,检查压缩文件是否完整 |
-v | 对每一个压缩或解压的文件,显示文件名和压缩比 |
(4)使用实例
(5)使用说明
- 使用gzip命令 只能压缩单个文件,而不能压缩目录。其选项“-d”可以多个文件进行解压。
- 选项“-r”对目录进行压缩,只是将该目录下的所有文件逐个进行,而不是将这个目录进行压缩成一个文件。
- gzip压缩存在链接文件时,会报错,软链接和硬链接的报错不同。
3.3.2 tar
(1)作用:对文件目录进行打包或解包
打包是指将一些文件或目录变成一个总的文件,而压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
Linux中的很多压缩程序(如gzip)只能针对一个文件进行压缩,这样当想要压缩较多文件时,就要借助它的工具将这些堆文件先打包成一个包,然后再用原来的压缩程序进行压缩。
(2)格式
tar [选项] [打包后文件名] 文件目录列表
tar可自动根据文件名识别或解包动作,其中,“打包后文件名”为用户自定义的文件名称;“文件目录列表”可以是要进行打包备份的文件目录列表,也可以是进行解包的文件目录列表。
注意:“选项”、“打包后文件名”和“文件目录列表”的顺序不能乱。
(3)主要参数
选项 | 参数含义 |
---|---|
-c | 建立新的打包文件 |
-r | 向打包文件末尾追加文件 |
-x | 从打包文件中解出文件 |
-o | 将文件解开到标准输出 |
-v | 处理过程中输出相关信息 |
-f | 对普通文件操作 |
-c | 调用gzip来压缩打包文件,与“-x”联用时调用gzip完成解压缩 |
-j | 调用bzip2来压缩打包文件,与“-x”联用时调用bzip2完成解压缩 |
-Z | 调用compress来压缩打包文件,与“-x”联用时调用compress完成解压缩 |
(4)使用示例
打包:
tar压缩:tar -zcvf
举例,将当前目录下的dir文件夹压缩成dir.tar.gz,放在当前目录下: tar -zcvf ./dir.tar.gz ./dir
tar解压: tar -zxvf
举例,将当前目录下的dir.tar.gz文件解压缩: tar -zxvf ./dir.tar.gz
3.4 文件比较命令diff
(1)作用:比较两个不同的文件或不同目录下的两个同名文件功能,并生成补丁文件。
(2)格式
diff [选项] 文件1 文件2
diff比较文件1和文件2的不同之处,并按照选项所指定的格式加以输出。
diff的格式分为命令格式和上下文格式。
命令格式分为标准命令格式、简单命令格式及混合命令格式。
上下文格式分为旧版上下文格式和新版上下文格式。
当选项默认时,diff默认使用混合命令格式。
(3)主要参数
选项 | 参数含义 |
---|---|
-r | 对目录进行递归处理 |
-r | 只报告文件是否有不同,不输出结果 |
-e,-ed | 命令格式 |
-f | RCS(修订控制系统)命令简单格式 |
-c,–context | 旧版上下文格式 |
-u,–unified | 新版上下文格式 |
-Z | 调用compress来压缩归档文件,与“-x”联用时调用compress完成解压缩 |
(4)使用示例
以下有两个文件test.c和test1.c
旧版上下文格式:
用旧版上下文格式进行输出,在显示每个有差别行的同时还显示该行的上下3行。区别的地方用“!”加以标出。
新版上下文格式:
新版上下文格式输出时,仅把两个文件的不同之处分别列出,而相同之处没有重复列出。
命令格式:
命令格式输出时仅输出了不同的行,其中命令符“7c”中的数字表示行数。
字母的含义为:a—添加,b—删除,c—更改。
使用选项“-f”和选项“-e”显示的内容基本相同,就是数字和字母顺序的交换,以下是输出结果。
diff选项默认情况下,输出结果如下:
3.5 脚本执行命令source/bash/sh/./
source命令也称为“点命令”,也就是一个点符号(.)。
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。这里的初始化文件一般为脚本文件。
用法:source filename或 . filename
source、bash\sh、./ (当前目录的意思,不加也可以,怕环境变量没有脚本所在路径,找不到脚本文件)均能执行是脚本命令,且用法都是相同的。配置环境变量后,为什么使环境变量立即生效用source命令?
权限 | 执行环境 | |
---|---|---|
source | 不需要脚本具有执行权限 | 当前shell(称为父shell)执行 |
bash/sh | 不需要脚本具有执行权限 | 子shell环境执行 |
./ | 需要脚本具有执行权限 | 子shell环境执行 |
这些在子shell环境中执行完后,子shell环境随即关闭,然后回到父shell中,也就不能对当前的环境变量进行配置,这也是为什么用source命令的原因。
3.6 控制系统服务命令service
linux service命令解析(重要)
service的绝对路径为/sbin/service ,打开这个文件cat /sbin/service,会发现其实它是一个很普通的shell脚本。
3.7 网络拷贝命令scp
Linux scp命令
链接中的remote_ip远程ip即可以用IP地址(点分形式)表示,也可以用域名来表示。
3.8 系统任务相关(&、jobs、fg、bg)
3.8.1 &
(1)作用:这个用在一个命令的最后,可以把这个命令放到后台执行。
(2)示例:./a.out &
3.8.2 ctrl + z
(1)作用:可以将一个正在前台执行的命令放到后台,并且暂停。
3.8.3 jobs
(1)作用:查看当前有多少在后台运行的命令(注意:只能在一个终端下有效)。
(2)示例:jobs
3.8.4 fg
(1)作用:将后台中的命令调至前台继续运行。
(2)示例:fg 1
,将1号后台程序调用至前台。
3.8.5 bg
(1)作用:将一个在后台暂停的命令,变成在后台继续执行。
(2)示例:bg 1,将1号后台程序在后台继续运行。
四、参考资料
[1]: Linux操作系统学习笔记
[2]: Linux中执行shell脚本的4种方法总结