shell命令(持续)

目录

  • 一、认识shell
  • 二、shell命令的格式
    • 2.1 命令提示符
    • 2.2 命令格式
  • 三、shell命令
    • 3.1 用户系统相关命令
      • 3.1.1 用户和用户组管理(id / useradd等 / passwd / groupadd等 / newgrp)
      • 3.1.2 用户切换命令(su)
      • 3.1.3 系统管理命令(ps、kill及pstree)
      • 3.1.4 磁盘相关命令(fdisk)
      • 3.1.5 磁盘挂载命令(mount)
    • 3.2 文件、目录相关命令
      • 3.2.1 cd & pushd & popd
      • 3.2.2 ls
      • 3.2.3 mkdir和touch
      • 3.2.4 cat、more、less、head和tail
      • 3.2.5 cp、mv和rm
      • 3.2.6 chown和chgrp
      • 3.2.7 chmod
      • 3.2.8 grep
      • 3.2.9 find / whereis / which
      • 3.2.10 ln
      • 3.2.11 wc
      • 3.2.12 man
    • 3.3 压缩打包相关命令
      • 3.3.1 gzip
      • 3.3.2 tar
    • 3.4 文件比较命令diff
    • 3.5 脚本执行命令source/bash/sh/./
    • 3.6 控制系统服务命令service
    • 3.7 网络拷贝命令scp
    • 3.8 系统任务相关(&、jobs、fg、bg)
      • 3.8.1 &
      • 3.8.2 ctrl + z
      • 3.8.3 jobs
      • 3.8.4 fg
      • 3.8.5 bg
  • 四、参考资料

一、认识shell

英文单词shell可直译为“贝壳”,“贝壳”在动物中作为外在保护的一种工具。
Linux操作系统的体系结构:shell命令(持续)_第1张图片

  • 内核是操作系统的核心,决定着系统的性能和稳定性。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。

  1. sh(Bourne Shell):由AT&T贝尔实验室开发。
  2. csh(C Shell):由加利福尼亚大学伯克利分校开发。
  3. ksh(Korn Shell):解决了sh的用户交互问题。
  4. 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:命令参数,指出命令作用的对象和目标,有的命令允许带多个参数。

注意:

  1. 一条命令的三要素之间用空格隔开;
  2. 若将多个命令在一行书写,用分号(;) 将各命令隔开;
  3. 如果一行命令不能在一行写完,在行位使用反斜杠(\) 标明该命令未结束。

三、shell命令

3.1 用户系统相关命令

3.1.1 用户和用户组管理(id / useradd等 / passwd / groupadd等 / newgrp)

用户创建文件的时候,文件权限分为:当前用户、同组其它用户、其它用户,对于用户来说可以属于多个组,通过切换确定当前工作组,那么创建文件中的【同组其它用户】就是这个工作组用户的权限。

1、id:查看当前用户及所属组

[linux@ubuntu ~]$ id
uid=1001(linux) gid=1001(linux_group) groups=1001(linux),1002(group_test)

其中:
uid:当前用户id
gid:当前工作组
group:当前用户所属的附加组

2、useradd:增加用户

useradd 选项 用户名

注意:需要在 root 权限下使用。

选项 参数含义
-d 指定用户主目录,如果此目录不存在,则同时使用 -m 选项,可以创建主目录
-g 指定用户所属的用户组
-G 指定用户所属的附加组
-s 指定用户的登录Shell
-u 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

用法示例:

useradd -d /home/gem -s /bin/sh -g group –G adm,root -m gem

3、userdel:删除用户

用法示例:
userdel -r gam

-r :用户的主目录一起删除

注意:删除用户的时候,需要该用户退出登录。

4、usermod:修改用户

usermod 选项 用户名

常用的选项包括 -d, -m, -g, -G, -s等,这些选项的意义与 useradd 命令中的选项一样。

5、passwd:指定和修改口令

超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。

passwd 选项 用户名

普通用户用法示例:passwd (如果以前设置过命令,还得输入旧命令)
超级用户用法示例:passwd 用户名 (不用输入旧命令)

6、groupadd:增加一个新的用户组

groupadd 选项 用户组

选项 参数含义
-g 指指定新用户组的组标识号(GID)
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

用户和用户组的对应关系有以下 4 种:

  • 一个用户对应一个用户组
  • 一个用户对应多个用户组
  • 多个用户对应一个用户组
  • 多个用户对应多个用户组

示例用法:

# 创建一个group_test新用户组
groupadd group_test

7、groupdel:删除用户组

用法示例:

# 删除一个group_test用户组
groupdel group_test

8、groupmod:修改用户组

groupmod 选项 用户组

选项 -g 和 -o 作用同 groupadd 的作用一致。
选项 -n :将用户组的名字改为新名字。

用法示例:

# GID为 10000,用户重新命名为 group3
groupmod –g 10000 -n group3 group2

9、newgrp:在附加组中切换用户所属的用户组

当用户拥有多个附加组,则该用户同时拥有该组的权限。

用法示例:

# 将当前用户切换到 root 用户组
newgrp root

10、与用户和用户组相关的配置文件

  • 与用户相关的配置文件

/etc/passwd 用户的配置文件;
/etc/shadow 用户影子口令文件;

  • 与用户组相关的配置文件

/etc/group 用户组的配置文件;
/etc/gshadow 用户组影子口令文件;

详细请参考:
[1]: Linux UID和GID(用户ID和组ID)
[2]: Linux 用户和用户组管理
[3]: Linux用户和用户组(包含两者之间的关系)

3.1.2 用户切换命令(su)

(1)格式:su [选项] [使用者 ]

选项 参数含义
-,-l,–login 切换用户时,同时切换成相应的环境变量和工作目录
-m,-p 执行su时不改变环境变量
-c,–command 变更账号为USER的使用者,并执行指令后再变回原来使用者身份,例如su -c ls

(2)使用说明

  • 将普通用户变更为root用户时,建议使用“-”选项,这样可以将root的环境变量和工作目录同时带入,否则在以后的使用中可能会由于环境变量的原因而出错。
  • 在转变为root权限后,提示符变为“#”。

su、sudo、su - root 的区别:请点击

3.1.3 系统管理命令(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.4 磁盘相关命令(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.5 磁盘挂载命令(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命令查看文件信息:
shell命令(持续)_第2张图片

3.2.3 mkdir和touch

mkdir:
(1)作用:创建一个目录。
(2)格式:mkdir [选项] 路径

mkdir命令常见参数列表:

选项 参数含义
-m 对新建目录设置存取权限,也可以用chmod命令设置
-p mkdir创建的目录可以是一个路径名称。此时若此路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

在这里插入图片描述
touch:
(1)作用:修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
(2)格式:touch [选项] [文件或目录…]
(3)使用示例:

$ touch testfile  #若文件不存在,创建文件;若文件存在修改文件时间属性为当前系统时间。

创建文件时默认的权限是0666,创建目录时默认权限是0777,但是这个不是最终的权限,还需要根据umask值,去掉对应位的权限,最终得到创建的文件/目录的权限。

参考:umask:文件/目录创建权限掩码(查看/修改)

touch详情参考

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命令中,用加好“+”代表增加权限,用减号“-”删除权限,用等号“=”设置权限。
    shell命令(持续)_第3张图片
  • ② 对于第二种八进制指定的方式。
    shell命令(持续)_第4张图片
    使用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或名称)的文件
-print 输出搜索结果,并打印

shell命令(持续)_第5张图片
该例中使用-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)使用示例
shell命令(持续)_第6张图片

  • 从红色框中可知,软链接文件为链接文件,硬链接文件为普通文件
  • 从黄色框中可知,软链接不是复制源文件,它只会在用户选定的位置(当前目录)上生成一个文件镜像,不会重复占用磁盘空间。硬链接会在用户选定的位置(当前目录)上生成一个文件大小相同的文件。对应上文说的硬链接是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)使用示例
shell命令(持续)_第7张图片
其中,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)使用实例
shell命令(持续)_第8张图片

解压 1.txt.gz 文件:
gzip -d 1.txt.gz 或者 gzip -d 1.txt
gunzip 1.txt.gz 或者 gunzip 1.txt

(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)使用示例
打包:
shell命令(持续)_第9张图片
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
shell命令(持续)_第10张图片
旧版上下文格式:
shell命令(持续)_第11张图片
用旧版上下文格式进行输出,在显示每个有差别行的同时还显示该行的上下3行。区别的地方用“!”加以标出。

新版上下文格式:
shell命令(持续)_第12张图片
新版上下文格式输出时,仅把两个文件的不同之处分别列出,而相同之处没有重复列出。

命令格式:
在这里插入图片描述
命令格式输出时仅输出了不同的行,其中命令符“7c”中的数字表示行数。
字母的含义为:a—添加,b—删除,c—更改。

使用选项“-f”和选项“-e”显示的内容基本相同,就是数字和字母顺序的交换,以下是输出结果。
在这里插入图片描述
diff选项默认情况下,输出结果如下:
shell命令(持续)_第13张图片

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命令的原因。

Linux中执行shell脚本的4种方法总结

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号后台程序在后台继续运行。

参考:Linux 中 &、jobs、fg、bg 等命令

四、参考资料

[1]: Linux操作系统学习笔记
[2]: Linux中执行shell脚本的4种方法总结

你可能感兴趣的:(Linux系统使用,linux,windows)