文章目录
新建文件
touch 文件1 [文件2,……]
,创建空文件
重定向(如果指定的的文件不存在则新建文件)
>
,表示覆盖写入文件
>>
,表示追加写入文件
例
ls > ./f1.log # 将ls命令的结果覆盖写入文件f1.log
ls -l >> ./f1.log # 将ls -l命令的结果追加写入文件f1.log
编辑文件
打开文件
语法:vi [参数] 文件1 ……
,如果打开的文件不存在,则新建该文件
参数:+n
,打开文件,光标置于第n行行首;+
,打开文件,光标置于最后一行行首
关闭文件
首先按ESC
键退出编辑模式
:q
,退出
:q!
,强制退出
:w
, 保存
:wq
,保存退出
命令模式
查询
/str
, 从光标位置开始往文件尾找出制定内容 str ,按 n
跳转下一个,N
跳转上一个
?str
,从光标位置开始往文件首查找制定内容str ,按 n
跳转下一个,按N
跳转上一个
复制
yw
,从光标位置开始复制一个单词
nyw
,从光标位置开始复制n个单词
yy
,复制光标所在行
nyy
,复制光标所在行在内的n行
粘贴:p
删除
x
, 删除光标后的1个字符
nx
,删除光标后的n个字符
X
, 删除光标前的1个字符
nX
,删除光标签的n个字符
dd
, 删除光标所在行
ndd
,删除光标所在内的n行
替换
:s/str1/str2/g
,将光标所在行中的str1 替换为str2
:g/str1/s//str2/g
, 将文件中的所有 str1 替换为 str2
编辑模式
在命令模式下,按a/A
,i/I
,o/O
进入编辑模式,编辑完成后按ESC
退出编辑模式
a
,在光标后输入
A
,在光标所在行的行尾插入
i
, 在光标前插入
I
,在光标所在行的行首插入
o
,在光标所在行下一行插入
O
,在光标所在行的上一行插入
查看文件
-
cat [参数] 文件1……
,查看文件内容,一次性将文件内容全部显示出来-n
,对文件中所有行编号-b
,对文件中所有的非空行编号 -
head [-n] 文件
,显示文件前n行内容, 默认前10行 -
tail [参数] 文件
-n
,显示文件后n行内容 ,默认后10行-f
,实时显示文件中新增加的内容(常用语查看日志文件) -
more +n -m 文件
,分页显示文件内容+n
,表示从文件的第n行开始显示-m
, 表示每页显示m行内容翻页:
z
, 下一页,b
, 上一页q
,退出
复制文件
cp 原文件 目的路径
,将文件复制到指定目录中
例1:`cp ./f2.log ./d1` ,将当前目录下的文件`f2.log`复制到当前目录下的`d1`目录中
例2:`cp ./*.log ./d2`, 将当前目录下所有的`.log`文件复制到当前目录下的`d2`文件中
cp 源文件 目的文件
, 将文件的内容复制到指定文件中
剪切文件
mv 源文件 目的路径
,将文件剪切到指定目录
例1:`mv ./f3.txt ./d1` ,单个文件剪切
例2: `mv ./*.txt ./d1` ,批量文件剪切
统计文件内容
wc [参数] 文件
,统计指定文件中的行数、字符数、字节数等
-l
,统计行数
-w
,统计单词数
-c
,统计字节数
-m
,统计字符数
-L
,统计最长行的长度
对文件内容排序
-
sort [参数] 文件
, 排序,默认以第一列升序排,排序依据是ASCII-n
,制定以数值大小排序-r
,降序-t
,指定分隔符(默认为空格)-k
,指定用于排序的列
例: 新建文件f3.log 文件内容如下
2011,张三,608
2021,张三,88
1010,张三,68
1190,李四,79
1021,王五,87
sort ./f3.log
,排序,默认以第一列升序排
sort -r ./f3.log
降序排
sort -t, -k 3 ./f3.log
, 以逗号将文件内容分隔为3列,以第三排排序
sort -t, -k 3 -n ./f3.log
,以逗号将文件内容分隔以3列,以第三列数值大小排序
查找文件内容
-
语法:
grep [参数] 查询内容 文件
-c
,返回与查询内容匹配的行的数量-n
,标记包含查询内容的行和行号-v
,返回不包含查询内容的行-i
,忽略大小写
例:文件f1.log内容如下
总用量 62
lrwxrwxrwx. 1 root root 7 2月 25 21:04 bin -> USR/sbin
dr-xr-xr-x. 6 root root 1024 2月 25 21:11 boot
drwxxxxxxxxxxxxxxxxxxr-xr-x. 20 root root 3240 2月 25 21:14 dev
odrwxr-xr-x. 74 root root 4096 2月 25 21:14 etc
lrwxrwxrwx. 1 root root 7 2月 25 21:04 lib -> usr/lib
drw-r-xr-x. 4 root root 4096 2Mon 25 21:07 home
drwxr-xr-x. 4 root root 4096 2Mon 25 21:07 home
drwx------. 2 root root 16384 2月 25 21:04 lost+found
drwxr-xr-x. 3 root root 4096 2月 25 21:10 media
lrwxrwxrwx. 1 root root 8 2月 25 21:04 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 4月 11 2018 srv
drwxr-xr-x. 13 root root 4096 2月 25 21:04 usr
drwxr-xr-x. 19 root root 4096 2月 25 21:11 var
例1:
[root@centos-linux work]# grep "usr/sbin" ./f1.log
lrwxrwxrwx. 1 root root 8 2月 25 21:04 sbin -> usr/sbin
[root@centos-linux work]# grep -c "usr/sbin" ./f1.log
1
[root@centos-linux work]# grep -n "usr/sbin" ./f1.log
19:lrwxrwxrwx. 1 root root 8 2月 25 21:04 sbin -> usr/sbin
[root@centos-linux work]# grep -ni "usr/sbin" ./f1.log
3:lrwxrwxrwx. 1 root root 7 2月 25 21:04 bin -> USR/sbin
19:lrwxrwxrwx. 1 root root 8 2月 25 21:04 sbin -> usr/sbin
-
范围匹配:
[]
[abc]d
,匹配ad ,bd ,cd[a-z]
, 匹配小写字母[A-Z]
,匹配大写字母[0-9]
,匹配数字
例:
[root@centos-linux work]# grep -n "[abcd]i" ./f1.log
3:lrwxrwxrwx. 1 root root 7 2月 25 21:04 bin -> USR/sbin
12:drwxr-xr-x. 3 root root 4096 2月 25 21:10 media
13:lrwxrwxrwx. 1 root root 8 2月 25 21:04 sbin -> usr/sbin
[root@centos-linux work]# grep -n "[1-5]月" ./f1.log
3:lrwxrwxrwx. 1 root root 7 2月 25 21:04 bin -> USR/sbin
4:dr-xr-xr-x. 6 root root 1024 2月 25 21:11 boot
5:drwxxxxxxxxxxxxxxxxxxr-xr-x. 20 root root 3240 2月 25 21:14 dev
6:odrwxr-xr-x. 74 root root 4096 2月 25 21:14 etc
7:lrwxrwxrwx. 1 root root 7 2月 25 21:04 lib -> usr/lib
11:drwx------. 2 root root 16384 2月 25 21:04 lost+found
12:drwxr-xr-x. 3 root root 4096 2月 25 21:10 media
13:lrwxrwxrwx. 1 root root 8 2月 25 21:04 sbin -> usr/sbin
14:drwxr-xr-x. 2 root root 4096 4月 11 2018 srv
15:drwxr-xr-x. 13 root root 4096 2月 25 21:04 usr
16:drwxr-xr-x. 19 root root 4096 2月 25 21:11 var
匹配首行 : ^
[root@centos-linux work]# grep "^d" ./f1.log
dr-xr-xr-x. 6 root root 1024 2月 25 21:11 boot
drwxr-xr-x. 20 root root 3240 2月 25 21:14 dev
drwxr-xr-x. 4 root root 4096 2月 25 21:07 home
drwx------. 2 root root 16384 2月 25 21:04 lost+found
drwxr-xr-x. 3 root root 4096 2月 25 21:10 media
drwxr-xr-x. 2 root root 4096 4月 11 2018 mnt
drwxr-xr-x. 2 root root 4096 4月 11 2018 opt
dr-xr-xr-x. 113 root root 0 2月 25 21:11 proc
dr-xr-x---. 2 root root 4096 2月 25 21:11 root
drwxr-xr-x. 25 root root 780 2月 25 21:14 run
drwxr-xr-x. 2 root root 4096 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 2月 25 21:11 sys
drwxrwxrwt. 10 root root 4096 8月 11 16:27 tmp
drwxr-xr-x. 13 root root 4096 2月 25 21:04 usr
drwxr-xr-x. 19 root root 4096 2月 25 21:11 var
drwxr-xr-x. 2 root root 4096 8月 11 16:33 work
匹配行尾: $
[root@centos-linux work]# grep "r$" ./f1.log
drwxr-xr-x. 13 root root 4096 2月 25 21:04 usr
drwxr-xr-x. 19 root root 4096 2月 25 21:11 var
.
,匹配任意一个字符
*
匹配前一个字符任意次
例:
[root@centos-linux work]# grep ".rwx*" ./f1.log
lrwxrwxrwx. 1 root root 7 2月 25 21:04 bin -> USR/sbin
drwxxxxxxxxxxxxxxxxxxr-xr-x. 20 root root 3240 2月 25 21:14 dev
odrwxr-xr-x. 74 root root 4096 2月 25 21:14 etc
lrwxrwxrwx. 1 root root 7 2月 25 21:04 lib -> usr/lib
drw-r-xr-x. 4 root root 4096 2Mon 25 21:07 home
drwxr-xr-x. 4 root root 4096 2Mon 25 21:07 home
drwx------. 2 root root 16384 2月 25 21:04 lost+found
drwxr-xr-x. 3 root root 4096 2月 25 21:10 media
lrwxrwxrwx. 1 root root 8 2月 25 21:04 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 4月 11 2018 srv
drwxr-xr-x. 13 root root 4096 2月 25 21:04 usr
drwxr-xr-x. 19 root root 4096 2月 25 21:11 var
查找文件
-
ls +管道符 + grep
管道符—
|
,将左边命令的结果作为右边命令的操作对象例:
[root@centos-linux work]# ls -l 总用量 20 drwxr-xr-x. 2 root root 4096 8月 11 17:02 d1 drwxr-xr-x. 2 root root 4096 8月 11 16:59 d2 -rw-r--r--. 1 root root 743 8月 12 09:59 f1.log -rw-r--r--. 1 root root 112 8月 11 17:25 f2.log -rw-r--r--. 1 root root 76 8月 11 17:41 f3.log [root@centos-linux work]# ls -l | grep "f1" -rw-r--r--. 1 root root 743 8月 12 09:59 f1.log
-
ls -l
列出文件或者目录信息
```text
[root@centos-linux work]# ls -l
总用量 20
d rwx r-x r-x. 2 root root 4096 8月 11 17:02 d1
- rw- r-- r--. 1 root root 76 8月 11 17:41 f3.log
-- --- --- ---- - ---- ---- ----- ------------- ------
1 2 3 4 5 6 7 8 9 10
1、表示对象类型。d-目录,l-链接文件,-表示普通文件
2、表示对象所有者的权限
3、表示对象所属组用户的权限
4、表示其他用户的权限
5、表示链接数
6、表示对象所有者
7、表示对象所属用户组
8、大小
9、最后一次修改时间
10、对象名
```
-
find
目录 查找方式 [匹配条件] ,在指定目录及其子目录中查找文件-name
,表示以对象名称查找
```text
[root@centos-linux work]# find ./ -name "f1*"
./f1.log
./d2/f1.log
./f11
```
-
-type
,表示以对象类型查找, f-普通文件 d-目录 l - 链接文件[root@centos-linux work]# find ./ -type l ./f5.txt [root@centos-linux work]# find ./ -type d ./ ./d1 ./d2 ./f11 ./f2 [root@centos-linux work]# find ./ -type f ./d1/f2.log ./d1/f6.txt ./d1/f4.txt ./d1/f5.txt ./d1/f3.txt ./f1.log ./f3.log ./f2.log ./d2/f1.log ./d2/f2.log [root@centos-linux work]# find ./ -name "f1*" -type f ./f1.log ./d2/f1.log
-
-exec 命令{} \;
,对find命令查找的结果执行命令
```text
# 对查找到的文件执行删除命令
[root@centos-linux work]# find ./ -name "f1*" -type f -exec rm -f {} \;
```
链接文件
-
软连接 :
ln -s 源文件 链接文件
链接文件与源文件的内容同步的 ,如果源文件被删除则链接文件不可用
-
硬链接 :
ln 源文件 链接文件
链接文件与源文件的内容同步的,如果源文件被删除,链接文件不受影响
安装文件
在线安装:yum [-y] 命令 文件
-y
,操作过程中所有问题都回答YES
install
安装指定软件包
search
查询指定软件包
provides
,查询指定软件包
remove
,卸载已经安装的软件包
例:使用yum安装下载工具 wget
# 查询
[root@centos-linux work]# yum provides wget
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
wget-1.14-18.el7_6.1.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
源 :base
# 安装
[root@centos-linux work]# yum -y install wget
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 wget.x86_64.0.1.14-18.el7_6.1 将被 安装
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================
正在安装:
wget x86_64 1.14-18.el7_6.1 base 547 k
事务概要
==========================================================================================================================
安装 1 软件包
总下载量:547 k
安装大小:2.0 M
Downloading packages:
wget-1.14-18.el7_6.1.x86_64.rpm | 547 kB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : wget-1.14-18.el7_6.1.x86_64 1/1
验证中 : wget-1.14-18.el7_6.1.x86_64 1/1
已安装:
wget.x86_64 0:1.14-18.el7_6.1
完毕!
# 使用
[root@centos-linux work]# wget http://s1.dgtle.com/dgtle_img/article/2021/08/08/c069b8480cc85496dc5e6be5b9183098.jpg
--2021-08-12 12:02:59-- http://s1.dgtle.com/dgtle_img/article/2021/08/08/c069b8480cc85496dc5e6be5b9183098.jpg
正在解析主机 s1.dgtle.com (s1.dgtle.com)... 118.112.225.41
正在连接 s1.dgtle.com (s1.dgtle.com)|118.112.225.41|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:55463 (54K) [image/jpeg]
正在保存至: “c069b8480cc85496dc5e6be5b9183098.jpg.1”
100%[================================================================================>] 55,463 --.-K/s 用时 0.1s
2021-08-12 12:03:00 (405 KB/s) - 已保存 “c069b8480cc85496dc5e6be5b9183098.jpg.1” [55463/55463])
# 卸载
[root@centos-linux work]# yum -y remove wget
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 wget.x86_64.0.1.14-18.el7_6.1 将被 删除
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================
正在删除:
wget x86_64 1.14-18.el7_6.1 @base 2.0 M
事务概要
==========================================================================================================================
移除 1 软件包
安装大小:2.0 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : wget-1.14-18.el7_6.1.x86_64 1/1
验证中 : wget-1.14-18.el7_6.1.x86_64 1/1
删除:
wget.x86_64 0:1.14-18.el7_6.1
完毕!
离线安装(针对rpm格式文件)
查询: rpm -qa
,列出当前已经安装的所有软件包
[root@centos-linux work]# rpm -qa|grep "openssh"
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
安装: rpm -ivh file.rpm
例:搭建ftp 服务器
1、下载ftp安装包
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm
2、安装vsftpa软件包
3、编辑配置文件:/etc/vsftpd
目录下
将ftpusers文件中的root那一行删除或者注释
将user_list文件中的root那一行删除或者注释
4、启用服务:systemctl start vsftpd
5、查询服务:systemctl status vsftpd
6、客户端远程连接ftp服务器
- 卸载 :
rpm -e 软件包