一、文件的其它操作命令
(一)文本内容统计
1.作用
wc 命令用于统计指定文本文件的行数、字数或字节数
2.格式
wc -参数 文件名
3.参数
|----|--------|
| 选项 | 作用 |
| -l | 只显示行数 |
| -w | 只显示单词数 |
| -c | 只显示字节数 |
4.示例
统计所有(行数 单词数 字节数):

配合管道符计算:

(二)查找文件
1. whereis 命令
作用:可以搜索系统命令的可执行文件路径和说明文档
格式:whereis 命令名
示例:

2. which 命令
作用:搜索系统命令的可执行文件
格式:which 命令名
示例:

3. find 命令
作用:按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件
格式:find 查找路径 查找条件 具体条件 操作
注意:find 命令默认的操作是 print 输出,且它是检索文件的,grep 是过滤文件中字符串
参数:
|-----------------------------------|-------------------------------------------------------|
| 参数 | 作用 |
| -name | 根据文件basename匹配名称 |
| -size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
| -mtime [+|-]n | 匹配修改内容的时间(-4指小于等于4天内的文件名;+4,大于等于5天前的文件名;4指前4~5那一天的文件 |
| -atime [+|-]n | 匹配访问文件的时间 |
| -ctime [+|-]n | 匹配修改文件权限的时间 |
| -newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
| -perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
| -user | 匹配所有者 |
| -group | 匹配所有组 |
| -nouser | 匹配无所有者的文件 |
| -nogroup | 匹配无所属组的文件 |
| -type b/d/c/p/l/f | 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
| -depth | 先从该目录子目录下查找,再查找该目录 |
| -maxdepth levels -mindepth levels | 最多查找多少层目录;最少查找多少层目录 |
| -delete | 将找到的文件删除,如果是目录只能删除找到的空目录。 |
| -exec ... {}\; | 后面可跟用于进一步处理搜索结果的命令 |
示例:
按照文件名搜索
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索
搜索位置越大,消耗系统资源越多,在生产服务器上搜索的时候,尽量不在根目录下搜索,把搜索的范围尽量控制在最小。
/目录下检索名为passwd的文件:

在/目录中查找以b开头的不区分大小写的文件:

在/etc目录下检索第二个字母为c的文件:

按照文件大小搜索
可以通过 man find 查看 size 参数的单位:

单位为 b 或不写单位,则按照512 Byte 搜索;c 是按字节搜索;w 是按照双字节(中文)搜索。



按照修改时间搜索
需注意时间范围问题,如:

-5:代表 5 天内修改的文件。
5:代表前 5~6 天那一天修改的文件。
+5:代表 6 天前修改的文件。

按照权限搜索
-perm 权限模式: 查找文件权限刚好等于"权限模式"的文件 ,常用
-perm -权限模式: 查找文件权限全部包含"权限模式"的文件
-perm +权限模式: 查找文件权限包含"权限模式"的任意一个权限的文件


按照所有者和所属组搜索
-uid 用户 ID: 按照用户 ID 查找所有者是指定 ID 的文件
-gid 组 ID: 按照用户组 ID 查找所属组是指定 ID 的文件
-user 用户名: 按照用户名查找所有者是指定用户的文件
-group 组名: 按照组名查找所属组是指定用户组的文件
-nouser: 查找没有所有者的文件 ,主要用于查找垃圾文件,还有一种情况就是外来文件,比如光盘和U盘中的文件如果是由 Windows 复制来的(也就是文件是由windows建立的),在 Linux 中查看就是没有所有者的文件;再比如手工源码包安装的文件,也有可能没有所有者(由其他系统打的源码包)


逻辑运算符
-a: and 逻辑与(默认)
-o: or 逻辑或
-not: not 逻辑非
优先级:与>或>非


-exec 参数
作用:用于把 find 命令搜索到的结果交由紧随其后的命令作进一步处理,类似于管道符,该参数必须为带减号的长参数;使用此命令结尾必须为\。
将 /root 目录下属于 root 账户的文件检索出来后,拷贝到 / 目录下的 find1 目录中:

(三)压缩和解压缩
1. zip 和 unzip 命令
格式:
zip 文件名(压缩)
unzip 文件名(解压缩)
示例:
准备

例1:使用 zip 压缩文件

-1 : 最快压缩,压缩率最差,-9 : 最大压缩,压缩率最佳

例2:将当前目录 dir1 连同目录下所有文件一起压缩

例3:向压缩文件 test1.zip 中添加 test2. txt 文件

例4:删除压缩文件中的文件

例5:压缩文件时排除某个文件

例6:解压文件

例7:将压缩文件 text.zip 在指定目录 dir1下 解压缩

例8: 查看压缩文件目录,但不解压

2. gzip 命令
示例;
例1:使用 gzip 压缩文件

例2:使用 gzip 压缩目录下文件,压缩之后原始文件就没有了

例3:压缩但保留原始文件

3. bzip2 命令
示例:
bzip2 是 Linux 更新的压缩工具,比 gzip 有着更高的压缩率
例1:源文档不保留:

例2:用最佳的压缩比压缩,并保留原本的档案

4. xz、unxz 命令
示例:
例1:压缩文件

例2:压缩 dir1 目录下文件

例3:查看压缩文件内容

例4:解压缩(xz -d等价于unxz)

(四)归档命令
1.基础格式
tar -参数
2.参数
(1)常用参数
|----|--------------|
| 选项 | 功能 |
| -c | 创建.tar格式的包文件 |
| -x | 释放.tar格式的包文件 |
| -t | 查看包中的文件列表 |
(2)必选参数
|----|---------------------------------------------------------------------------------|
| 选项 | 功能 |
| -f | 用于指定打包文件名。 当与 -c 选项一起使用时,创建的 tar 包文件使用该选项指定的文件名 当与 -x 选项一起使用时,则释放该选项指定的 tar 包文件 |
(3)辅助参数
|----|-------------------------------------------|
| 选项 | 功能 |
| -v | 表示在命令执行时显示详细的提示信息 |
| -p | 打包时保留文件及目录的权限 |
| z | 调用 gzip 程序,以 gzip 格式压缩或解压缩文件(.tar.gz) |
| -j | 调用 bzip2 程序,以 bzip2 格式压缩或解压缩文件(.tar.bz2) |
| -J | 使用xz压缩或解压缩文件(.tar.xz),xz 的压缩率通常比 bzip2 更高 |
| -C | 和 -x 选项一起使用,表示释放包时指定释放的目标路径 |
(4)额外参数
打包时排除某个文件:
tar cf 文件名.tar --exclude=路径/文件 路径
注:此处的路径前后需要保持保持一致,统一使用绝对路径或者相对路径
3.打包格式
tar cvf/cfv/-cvf 文件名.tar 要打包的目录或文件名
作用:创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份生成为一个指定的包文件
tar t[v]f 包文件名
作用:列出包文件中的文件列表
4.打包压缩格式
tar czf/-czf 文件名.tar.gz 要打包压缩的目录或文件名
tar cjf/-cjf 文件名.tar.bz2 要打包压缩的目录或文件名
tar cJf/-cJf 文件名.tar.xz 要打包压缩的目录或文件名
作用:为节省存储空间,通常需要生成压缩格式的 tar 包文件,tar 命令支持三种不同的压缩方式
tar xf/-xf/-xzf 文件名.tar.gz [-C 目标路径]
tar xf/-xf/-xjf 文件名.tar.bz2 [-C 目标路径]
tar xf/-xf/-xJf 文件名.tar.xz [-C 目标路径]
作用:提取包文件到指定目录
5.示例
将 /etc 下所有内容打包压缩到 /root 目录中:

解压缩:

注意:参数中-c 与 -x 不能同时使用
二、远程文件传输
(一)scp 命令
1.作用
scp 是基于 SSH 协议的安全文件传输工具,用于在本地与远程服务器之间快速上传或下载文件/目录。
2.格式
上传单个文件到远程服务器:scp 本地文件路径 远程用户名@远程服务器地址:远程目标路径
上传整个目录到远程服务器:scp -r 本地目录路径 远程用户名@远程服务器地址:远程目标路径
从远程服务器下载单个文件:scp 远程用户名@远程服务器地址:远程文件路径 本地目标路径
从远程服务器下载整个目录:scp -r 远程用户名@远程服务器地址:远程目录路径 本地目标路径
3.示例
上传文件:

上传目录:

下载文件:

下载目录:

(二)sftp 命令
1.作用
sftp 是交互式的文件传输工具,登录后可以像操作本地文件一样管理远程文件,更适合复杂的文件操作。
2.格式
sftp 远程用户名@远程服务器地址
3.核心操作规则
操作本地文件/目录:所有命令前加 l (local)。
操作远程服务器文件/目录:直接使用常规命令(如 ls , cd )
4.示例
登录成功后,命令提示符变为 sftp> ,表示进入交互式模式:


get 和 put 命令分别为下载和上传文件:

三、命令解释器
(一)概述
1.概念
shell:壳,命令解释器,负责解析用户输入的命令

2.分类
内置命令 (shell 内置),shell 为了完成自我管理和基本的管理,不同的 shell 内置不同的命令,但是大部分都差不多
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
3.type命令
(1)作用
查看命令是内置命令还是外置命名、alias 命令
(2)格式
type -参数 命令名
(3)参数
|----|---------------|
| 选项 | 功能 |
| -a | 列出当前命令可以如何执行 |
| -t | 仅列出命令按照哪种方式执行 |
(4)示例


4.执行原理
系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量 PATH 中,使得 shell 知道命令的可执行文件位置。
PATH 环境变量:当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。

(二)Linux中的特殊符号
|-----------------|-----------------------------------------|-------------------------------------------------------------------------------------|
| 符号 | 功能 | 说明 |
| ; | 可使用分号分隔多条命令 | 在一行上输入和执行多条较短的命令,可使用分号来分隔命令 |
| * | 匹配任意零个或者多个字符 | 不能用于创建文件 |
| ? | 匹配任意单个字符 | 不能用于创建文件 |
| [] | 匹配方括号中的任意一个字符,表示范围可以用"-" | 不能用于创建文件 |
| [^]或者[!] | 匹配方括号中的任意一个字符或数字后进行取反 | 用于查找和删除文件,不用于创建文件 |
| {string,string} | 匹配括号中的任意一个字符串,表示一个范围时,字符串之间个".." | 可用于创建、查看、删除文件 |
| \ | 使 \ 后面的特殊字符失效 | 例如:可以在命令行后面加一个 \ ,再按回车键时并不表示执行该命令,而是表示换行,通过此方式将一个较长的命令分成多行表达,增强命令的可读性。换行后系统自动显示提示符 |
| 、 | 反引号,一般用于引用命令,执行的时候反引号里面的命令会被执行,与()作用相同 | |
| ' | 单引号,将单引号内的所有内容都原样输出 | 所有特殊字符在单引号里面都会失去特殊含义 |
| " | 双引号,除了几个特殊字符外,将双引号内的几乎所有内容都原样输出 | "" 和 "\" 以及 " ` " 在双引号里面仍然保留自己的特殊含义 |
(三)命令别名
1.作用
命令的快捷方式,对于需要经常执行,且要很长时间输入的长命令很有用。
2.格式
alias 别名='原命令 - 参数'
3.查看设置的别名

4.常用的别名
(1)untar
由于 tar 命令的参数太多不好记忆,所以将解压缩设为如下:
alias untar='tar -zxvf '
(2)wget
下载大文件时的断点续连,防止网络异常中断:
alias wget='wget -c '
(3)getpass
生成 20 个字符的随机数密码,使用 openssl 命令,但命令又很长不方便,可以设置别名:
alias getpass="openssl rand -base64 20"
(4)ping
ping url 时会无限次输出,但其实没多大意义,可以使用 -c 命令将其限制为 5 次输出:
alias ping='ping -c 5'
(5)speed
测试网速命令 speedtest-cli(基于 python 编写的需要使用 pip 工具下载 ),为了方便使用可以设置别名,id要更换:

(6)ipe
公网 IP别名设置:

(7)c
清屏,一般使用 ctrl + l 快捷键,也可以将 clear 命令定义得更短,这样使用起来更直接:

5.删除别名
(1)格式
unalias 别名
(2)注意
在命令行中使用 alias 命令设置的别名仅在该次登入有效,如果重新开启一个 Shell ,或者重新登录系统,则这些 alias 将无法使用。
在linux中提供alias永久化的方法:
将别名命令写入到 ~/.bashrc 和 /etc/bashrc 文件中
执行 source ~/.bashrc 和 source ~/etc/bashrc 生效
示例:

(四)命令历史
1.作用
history 命令可以查阅命令历史记录
2.格式
history -参数(常与 |grep 搭配)
3.参数
number:显示最近 number 条命令历史
-c:清空当前历史记录
-a:将历史命令写到文件中
-w:将历史命令覆盖到文件中
!数字:将第几条命令再执行一遍
示例:

4.设置记录命令条数
