~~~
# day04

@[toc]
### 1. 文件管理概述

```bash

创建 复制 移动 删除 查看 编辑 压缩

2. 系统的目录结构

Windows

D:\Linux脱产10期视频\基础阶段 反斜线


Linux

所有的文件或者目录的起点或者顶点都是以根开始的 / 斜线

Linux的目录结构就像是一个倒挂的树形结构


必知必会的目录及文件


[root@qls ~]# ls -1 /


软连接文件

/bin #存放系统命令的目录 普通用户可以执行的命令
/sbin #存放系统命令的目录 需要管理员权限才可以执行的命令
/lib #库文件目录 32位库文件
/lib64 #库文件目录 64位库文件

====

/usr/bin
/usr/sbin
/usr/lib
/usr/lib64


/boot #系统引导目录 存放的是系统内核和grub的配置
/dev #系统设备目录

/dev/cdrom -> sr0 #光盘镜像
/dev/null #黑洞设备 将一些不用的数据导入到黑洞设备
/dev/zero #字符设备 源源不断的产生数据 字符
/dev/random #产生随机数的设备

/dev/stderr -> /proc/self/fd/2 #错误输出 2>
/dev/stdin -> /proc/self/fd/0 #标准输入 <
/dev/stdout -> /proc/self/fd/1 #标准输出 >

/dev/pts/ #存放的是虚拟终端信息

#磁盘设备及分区
/dev/sda
/dev/sda1 /
/dev/sda2
/dev/sda3 /boot


/etc #系统的主配置文件存放目录 程序配置文件存放目录

/etc/sysconfig/network-scripts/ifcfg-* #系统网卡配置文件

/etc/hosts #本地域名解析文件 记录 IP地址与主机名的对应的映射关系

/etc/resolv.conf #本地DNS配置文件

/etc/fstab #设备挂载目录配置文件 开机自启动挂载列表

/etc/hostname #主机名配置文件


/home #普通用户的家目录 /home/test

/media #挂载一些可移动的设备 CD 相机

/mnt #临时挂载目录


/opt #早期第三方软件安装目录


/proc #虚拟可变的目录 记录了系统的实时状态


/root #超级用户管理员root的家目录


/run #进程运行时产生的一些pid文件

/srv #物理设备所产生的一些文件
/sys #物理设备的驱动信息文件


/tmp #公共临时目录 公共场所 系统会定时的删除这个目录下长时间没有访问的文件


/usr #系统目录 系统文件目录 跟Windows目录一样

/usr/local #软件安装目录


/var #可变的目录 系统日志信息

/var/log #系统日志存放目录

/var/log/messages #系统级别日志

/var/log/secure #用户登录日志

/var/tmp #程序运行时所产生的一些进程文件

/var/run #程序运行时所产生的进程的pid文件目录

3. 路径的定位


包含整个文件名称及文件的位置,这样的定位称之为路径

路径就是对于文件的定位的一种方式


每个目录下都有一个点和两个点,都表示什么意思


. #表示的是当前所在的目录

.. #当前目录的上一级目录


[root@qls usr]# ./local/ #当前目录下的local目录 == /usr/local


[root@qls usr]# ../ #当前目录的上一级目录 / 根


./ #表示当前的目录

. #表示当前的目录

../ #从当前目录的上一级目录开始

.. #上一级目录


什么是绝对路径 什么又是相对路径


绝对路径: 凡是以根开始的路径就是绝对路径 或者以~开头的路径也是绝对路径 ~ === /root ~ == /home/xxx

/usr/local/ #绝对路径


相对路径: 不是以根为开头的路径就是相对路径 相对路径是针对当前目录而言的

./local/

local/

4. 文件管理基础命令

1. pwd          #显示当前工作目录的绝对路径    告诉我,你在哪里  

[root@qls usr]# pwd
/usr
[root@qls usr]# cd local/
[root@qls local]# pwd
/usr/local



2. cd #切换工作目录 切换路径

[root@qls local]# cd #直接切换到当前用户的家目录
[root@qls ~]#
[root@qls ~]# cd ~ #切换当前用户的家目录 ==== cd /root

[root@qls ~]# cd . #保持当前目录不变
[root@qls ~]# cd ./ #保持当前目录不变

[root@qls ~]# cd .. #切换当前目录的上一级目录
[root@qls /]# cd
[root@qls ~]# cd ../ #切换当前目录的上一级目录
[root@qls /]#

[root@qls usr]# cd ./local/
[root@qls local]# pwd
/usr/local

[root@qls local]# cd ../etc #进入当前目录的上一级目录/usr下的etc目录
[root@qls etc]# pwd
/usr/etc

[root@qls usr]# cd ../etc #不同目录下。执行的相对路径操作,得到的结果是不同的
[root@qls etc]# pwd
/etc


[root@qls etc]# cd / #切换到根目录 根本身也是一个目录



[root@qls /]# cd - #切换到你上一次所在的目录 快速的到达上一次所在的路径
/etc
[root@qls etc]#



3. ls #显示文件或者目录列表信息 打开目录 显示目录里面的内容

常用选项:

-l #以长格式形式显示文件或者目录的详细属性信息

-i #显示文件或者目录的inode信息 索引节点信息

-h #以字节大小的形式显示文件大小 B KB MB GB

-a #显示所有的文件,隐藏文件 所有以点开头的文件就是隐藏文件

-S #以文件大小进行排序 从大到小显示

-t #根据时间进行排序 最新的时间在最上面

-r #倒叙排序

-F #给不同的文件加上不同的标识符

-d #显示目录本身信息


/ #目录

* #可执行文件

= #套接字文件 socker文件

| #管道文件



[root@qls ~]# ls #如果不加目录信息,默认针对的是当前目录操作
anaconda-ks.cfg

[root@qls ~]# ls /root
anaconda-ks.cfg

[root@qls ~]# ls -l
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg

=== 系统自带的别名 ll === ls -l

[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg


[root@qls ~]# ls -li
total 4
134317667 -rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg

[root@qls ~]# ll -h
total 4.0K
-rw-------. 1 root root 1.4K Jul 6 02:17 anaconda-ks.cfg


10月24日 程序员日


[root@qls ~]# ll -a
total 28
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc

[root@qls ~]# ll -aS
total 28
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout


[root@qls ~]# ll -at
total 28
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc


[root@qls ~]# ll -atr
total 28
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history


[root@qls ~]# ll -aSr
total 28
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
dr-xr-x---. 2 root root 135 Jul 6 09:06 .
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ..
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg


[root@qls ~]# ll -aF
total 28
dr-xr-x---. 2 root root 135 Jul 6 09:06 ./
dr-xr-xr-x. 17 root root 224 Jul 6 02:16 ../
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
-rw-------. 1 root root 879 Jul 7 18:59 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc

[root@qls ~]# ll -d /root
dr-xr-x---. 2 root root 135 Jul 6 09:06 /root



[root@qls ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@qls ~]# ls -1 / #以行的形式显示文件名称
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys

4. tree #以树状形式显示目录列表


[root@qls ~]# yum install -y tree



选项:

-a #显示所有文件或者目录 隐藏文件

-d #只显示目录及目录的数量

-h #显示文件的大小

-F #给不同类型的文件加上不同的标识符

/ #目录

* #可执行文件

= #套接字文件 socker文件

| #管道文件

-L #根据目录的基本显示


[root@qls ~]# tree
.
└── anaconda-ks.cfg

0 directories, 1 file

[root@qls ~]# tree -a
.
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
└── .tcshrc

0 directories, 7 files



[root@qls ~]# tree -d /var/log/
/var/log/
├── anaconda
├── audit
├── rhsm
└── tuned

4 directories




[root@qls ~]# tree -h /var/log/
/var/log/
├── [ 176] anaconda
│ ├── [ 26K] anaconda.log
│ ├── [3.9K] ifcfg.log
│ ├── [1.5M] journal.log
│ ├── [ 0] ks-script-3PCKae.log
│ ├── [108K] packaging.log
│ ├── [ 29K] program.log
│ ├── [121K] storage.log
│ ├── [275K] syslog
│ └── [ 21K] X.log


[root@qls ~]# tree -L 2 /


5. mkdir #创建目录

选项:

-p #创建多级目录 递归创建 当目录已经存在时,再次创建不会提示报错

-v #显示创建的过程

-m #创建的时候,给目录设置一个权限


{} #生成序列 有规律和无规律 有规律使用..分割 无规律的使用逗号分割

* #通配符 所有的意思


在相同的路径下,不能存在相同的文件名称

在不同的路径下,可以存在相同的文件名称


[root@qls ~]# mkdir /data #使用绝对路径进行创建
[root@qls ~]# mkdir data #使用相对路径进行创建

[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
[root@qls ~]# ll /
total 20
lrwxrwxrwx. 1 root root 7 Jul 6 02:13 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jul 6 02:17 boot
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data


[root@qls ~]# mkdir /root/data
mkdir: cannot create directory ‘/root/data’: File exists



File exists #文件已经存在

解决:

1. 你要创建的目录已经存在,无需再次进行创建

2. 你要创建的目录路径书写错误


[root@qls ~]# mkdir -p /root/data

[root@qls ~]# mkdir test/oldboy
mkdir: cannot create directory ‘test/oldboy’: No such file or directory
[root@qls ~]# mkdir -p test/oldboy
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test
[root@qls ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Jul 8 19:57 oldboy



[root@qls ~]# mkdir oldboy
[root@qls ~]# mkdir 'oldboy '
[root@qls ~]#
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test
[root@qls ~]# ll -F
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data/
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy/
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy /
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test/
[root@qls ~]# root 6 Jul 8 20:00 oldboy/


[root@qls ~]# mkdir -v data01
mkdir: created directory ‘data01’


[root@qls ~]# mkdir -m 700 data02
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 2 root root 6 Jul 8 20:02 data01
drwx------. 2 root root 6 Jul 8 20:04 data02
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 2 root root 6 Jul 8 20:00 oldboy
drwxr-xr-x. 3 root root 20 Jul 8 19:57 test



[root@qls ~]# echo {01..10}
01 02 03 04 05 06 07 08 09 10


[root@qls ~]# mkdir test/data{01..10} #批量创建10个目录
[root@qls ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data01
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data02
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data03
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data04
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data05
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data06
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data07
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data08
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data09
drwxr-xr-x. 2 root root 6 Jul 8 20:09 data10

[root@qls ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@qls ~]# echo {a..g}
a b c d e f g
[root@qls ~]# echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

[root@qls ~]# mkdir test/oldboy-{a..g}


[root@qls ~]# ll -d test/oldboy-*
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-a
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-b
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-c
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-d
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-e
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-f
drwxr-xr-x. 2 root root 6 Jul 8 20:11 test/oldboy-g


[root@qls ~]# mkdir data-{a,c,d,h}
[root@qls ~]# ll
total 4
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 8 19:51 data
drwxr-xr-x. 2 root root 6 Jul 8 20:02 data01
drwx------. 2 root root 6 Jul 8 20:04 data02
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-a
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-c
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-d
drwxr-xr-x. 2 root root 6 Jul 8 20:12 data-h

[root@qls ~]# mkdir -p oldboy/{01..10}/data{01..10}/test{01..10}

#在Linux系统中,是区分大小写的

[root@qls ~]# mkdir a
[root@qls ~]# mkdir A
[root@qls ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Jul 8 12:25 a
drwxr-xr-x. 2 root root 6 Jul 8 12:25 A





6. touch #创建文件 创建空文件 当文件已经存在时,创建的时候不会报错,但是会改变文件的时间戳

{} #生成序列 有规律和无规律 有规律使用..分割 无规律的使用逗号分割

[root@qls ~]# touch test.txt


[root@qls ~]# touch data.{txt,sh,log,xml,tar,py,js}
[root@qls ~]# ll
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.js
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.log
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.py
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.sh
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.tar
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.txt
-rw-r--r--. 1 root root 0 Jul 8 12:27 data.xml


[root@qls ~]# touch data{01..10}.txt
[root@qls ~]# ll
-rw-r--r--. 1 root root 0 Jul 8 12:28 data01.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data02.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data03.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data04.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data05.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data06.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data07.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data08.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data09.txt
-rw-r--r--. 1 root root 0 Jul 8 12:28 data10.txt



~~~bash
# day05

@[toc]
### 1. cp命令

```bash
复制,拷贝

语法:

命令 源文件 目标目录

选项:

-r #递归复制 复制目录时所使用的

-p #保持源文件属性

-d #复制的时候保持软连接

-a === -pdr

-t #把源文件的位置根目标目录的位置进行调换 在批量拷贝文件时使用

-i #当拷贝的文件在目标目录已经存在时,提示是否覆盖 系统自带的别名


[root@qls ~]# cp /etc/hosts /root
[root@qls ~]# cp /etc/passwd ./
[root@qls ~]# cp /etc/resolv.conf .
[root@qls ~]# ll
total 12
-rw-r--r--. 1 root root 158 Jul 9 09:11 hosts
-rw-r--r--. 1 root root 873 Jul 9 09:11 passwd
-rw-r--r--. 1 root root 51 Jul 9 09:11 resolv.conf



[root@qls ~]# cp /opt/ ./
cp: omitting directory ‘/opt/’
[root@qls ~]# cp -r /opt/ ./
[root@qls ~]# ll
total 12
-rw-r--r--. 1 root root 158 Jul 9 09:11 hosts
drwxr-xr-x. 2 root root 6 Jul 9 09:14 opt
-rw-r--r--. 1 root root 873 Jul 9 09:11 passwd
-rw-r--r--. 1 root root 51 Jul 9 09:11 resolv.conf


[root@qls ~]# ll /etc/grub2.cfg
lrwxrwxrwx. 1 root root 22 Jul 6 02:14 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[root@qls ~]# cp /etc/grub2.cfg ./
[root@qls ~]# ll
total 20
-rw-r--r--. 1 root root 4229 Jul 9 09:16 grub2.cfg
-rw-r--r--. 1 root root 158 Jul 9 09:11 hosts
drwxr-xr-x. 2 root root 6 Jul 9 09:14 opt
-rw-r--r--. 1 root root 873 Jul 9 09:11 passwd
-rw-r--r--. 1 root root 51 Jul 9 09:11 resolv.conf
[root@qls ~]# rm -f grub2.cfg
[root@qls ~]# cp -d /etc/grub2.cfg ./
[root@qls ~]# ll
total 12
lrwxrwxrwx. 1 root root 22 Jul 9 09:16 grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jul 9 09:11 hosts
drwxr-xr-x. 2 root root 6 Jul 9 09:14 opt
-rw-r--r--. 1 root root 873 Jul 9 09:11 passwd
-rw-r--r--. 1 root root 51 Jul 9 09:11 resolv.conf


[root@qls ~]# cp -t ./ /etc/fstab
[root@qls ~]# ll
total 16
lrwxrwxrwx. 1 root root 7 Jul 6 02:13 bin -> usr/bin
-rw-r--r--. 1 root root 501 Jul 9 09:21 fstab
lrwxrwxrwx. 1 root root 22 Jul 9 09:16 grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jul 9 09:11 hosts
drwxr-xr-x. 2 root root 6 Jul 9 09:14 opt
-rw-r--r--. 1 root root 873 Jul 9 09:11 passwd
-rw-r--r--. 1 root root 51 Jul 9 09:11 resolv.conf



[root@qls ~]# cp /etc/hosts ./
cp: overwrite ‘./hosts’? n

[root@qls ~]# alias
alias cp='cp -i'


#强制覆盖不提示 临时取消别名

[root@qls ~]# \cp /etc/hosts ./


```

### 2. mv命令

```bash

移动和重命名文件

语法:

命令 源文件 目标目录

选项:

-i #当文件已经存在时,移动的时候,提示是否覆盖目标文件 系统自带别名

-f #强制覆盖,不提示

-t #把源文件的位置跟目标目录的位置进行调换

[root@qls ~]# ll /opt/
total 12
-rw-r--r--. 1 root root 501 Jul 9 09:28 fstab
-rw-r--r--. 1 root root 158 Jul 9 09:28 hosts
-rw-r--r--. 1 root root 51 Jul 9 09:28 resolv.conf
[root@qls ~]# mv /opt/hosts ./
[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 09:28 hosts
[root@qls ~]# ll /opt/
total 8
-rw-r--r--. 1 root root 501 Jul 9 09:28 fstab
-rw-r--r--. 1 root root 51 Jul 9 09:28 resolv.conf


[root@qls ~]# cp -r /mnt/ /opt/
[root@qls ~]# ll /opt/
total 8
-rw-r--r--. 1 root root 501 Jul 9 09:28 fstab
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mnt
-rw-r--r--. 1 root root 51 Jul 9 09:28 resolv.conf
[root@qls ~]# mv /opt/mnt/ ./ #在移动目录的时候,不需要加任何的选项
[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 09:28 hosts
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mnt


[root@qls ~]# cp /etc/hosts /opt/
[root@qls ~]# ll /opt/
total 12
-rw-r--r--. 1 root root 501 Jul 9 09:28 fstab
-rw-r--r--. 1 root root 158 Jul 9 10:00 hosts
-rw-r--r--. 1 root root 51 Jul 9 09:28 resolv.conf
[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 09:28 hosts
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mnt
[root@qls ~]# mv /opt/hosts ./ #文件已经存在时,提示是否覆盖
mv: overwrite ‘./hosts’? n

[root@qls ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'

#强制覆盖不提示

[root@qls ~]# \mv /opt/hosts ./

#强制覆盖不提示

[root@qls ~]# mv -f /opt/hosts ./
[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 10:00 hosts
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mnt
[root@qls ~]# ll /opt/
total 8
-rw-r--r--. 1 root root 501 Jul 9 09:28 fstab
-rw-r--r--. 1 root root 51 Jul 9 09:28 resolv.conf


[root@qls ~]# mv -t /opt/ ./hosts
[root@qls ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mnt
[root@qls ~]# ll /opt/
total 12
-rw-r--r--. 1 root root 501 Jul 9 09:28 fstab
-rw-r--r--. 1 root root 158 Jul 9 10:00 hosts
-rw-r--r--. 1 root root 51 Jul 9 09:28 resolv.conf

#在移动文件或者目录的过程中,修改了名称

[root@qls ~]# mv mnt/ mot
[root@qls ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mot
[root@qls ~]# mv /opt/hosts ./host
[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 10:00 host
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mot

```

### 3. rename命令了解

```bash
利用替换字符串的方式进行重命名


[root@qls ~]# rename test oldboy test.txt
[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 10:00 host
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mot
-rw-r--r--. 1 root root 0 Jul 9 10:08 oldboy.txt


```

### 4. rm命令

```bash
命令特别的危险



选项:

-i #在删除文件的时候,提示你是否确认删除 系统别名

-f #强制删除不提示

-r #删除目录使用 递归删除



[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 10:00 host
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mot
-rw-r--r--. 1 root root 0 Jul 9 10:08 oldboy.txt
[root@qls ~]# rm host
rm: remove regular file ‘host’? n
[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 10:00 host
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mot
-rw-r--r--. 1 root root 0 Jul 9 10:08 oldboy.txt
[root@qls ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'



[root@qls ~]# rm -f host
[root@qls ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 9 09:59 mot
-rw-r--r--. 1 root root 0 Jul 9 10:08 oldboy.txt



[root@qls ~]# rm -f mot/
rm: cannot remove ‘mot/’: Is a directory


[root@qls ~]# rm -rf mot/
[root@qls ~]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 9 10:08 oldboy.txt


[root@qls ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul 9 10:31 hosts
-rw-r--r--. 1 root root 0 Jul 9 10:08 oldboy.txt


[root@qls ~]# rm -rf ./* #删除目录下的所有 排除 隐藏文件


```

### 5. echo命令

```bash

#打印你所要输出的内容 打印变量的值 创建新文件 修改文件 输出加上颜色 脚本中使用的多


选项:

-n #不自动换行

-e #支持一些特殊字符的使用

\n #换行符

\t #tab键



[root@qls ~]# echo hello world
hello world
[root@qls ~]# echo -n hello world
hello world[root@qls ~]#

#定义和打印变量

[root@qls ~]# Name=qls
[root@qls ~]# Name
-bash: Name: command not found
[root@qls ~]# echo $Name
qls


[root@qls ~]# echo $PWD
/root
[root@qls ~]# cd /opt/
[root@qls opt]# echo $PWD
/opt


#创建新文件

> #标准输出重定向 如果文件不存在,会自动创建,如果文件存在,会首先把文件的内容清空,然后再把你要输出的内容重定向进去


[root@qls ~]# echo 1 > test.txt
[root@qls ~]# ll
total 8
-rw-------. 1 root root 1429 Jul 6 02:17 anaconda-ks.cfg
-rw-r--r--. 1 root root 2 Jul 9 10:56 test.txt
[root@qls ~]# cat test.txt
1

[root@qls ~]# echo 2 > test.txt
[root@qls ~]# cat test.txt
2

>> #标准输出追加重定向 如果文件不存在,会自动创建,如果文件存在,会把你要输出的内容追加到文件的底部


[root@qls ~]# echo 3 >> test.txt
[root@qls ~]# cat test.txt
2
3


[root@qls ~]# echo -e "hello\nworld"
hello
world


[root@qls ~]# echo -e "1\n2\n3"
1
2
3
[root@qls ~]# echo -e "1\n2\n3" > oldboy.txt
[root@qls ~]# cat oldboy.txt
1
2
3


字颜色:30—–37

  echo -e "\033[30m 黑色字 \033[0m"
  echo -e "\033[31m 红色字 \033[0m"
  echo -e "\033[32m 绿色字 \033[0m"
  echo -e "\033[33m 黄色字 \033[0m"
  echo -e "\033[34m 蓝色字 \033[0m"
  echo -e "\033[35m 紫色字 \033[0m"
  echo -e "\033[36m 天蓝字 \033[0m"
  echo -e "\033[37m 白色字 \033[0m"


字背景颜色范围:40—–47

  echo -e "\033[40;37m 黑底白字 \033[0m"
  echo -e "\033[41;37m 红底白字 \033[0m"
  echo -e "\033[42;37m 绿底白字 \033[0m"
  echo -e "\033[43;37m 黄底白字 \033[0m"
  echo -e "\033[44;37m 蓝底白字 \033[0m"
  echo -e "\033[45;37m 紫底白字 \033[0m"
  echo -e "\033[46;37m 天蓝底白字 \033[0m"
  echo -e "\033[47;30m 白底黑字 \033[0m"

```

### 6. cat命令

```bash
#显示文件内容 把文件内容全部显示出来 创建新文件 修改文件 合并文件


选项:

-n #显示文件时,显示文件的行号

-A #给显示的文件内容的每行结尾加上一个标识符


[root@qls ~]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown


[root@qls ~]# cat -n passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown


[root@qls ~]# cat -A passwd
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$
daemon:x:2:2:daemon:/sbin:/sbin/nologin$
adm:x:3:4:adm:/var/adm:/sbin/nologin$
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
sync:x:5:0:sync:/sbin:/bin/sync$
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown$

[root@qls ~]# echo "123456 " >> pass.txt
[root@qls ~]# cat pass.txt
123456
[root@qls ~]# cat -A pass.txt
123456 $

[root@qls ~]# hostname -I
10.0.0.100
[root@qls ~]# hostname -I | cat -A
10.0.0.100 $

# << 标识符限定输入重定向 命令从标准输入中输入,直到遇到标识符的分解符结束




[root@qls ~]# cat >123.txt<<EOF
> 123
> 456
> 789
> EOF
[root@qls ~]# cat 123.txt
123
456
789


[root@qls ~]# cat >>123.txt<<oldboy
> 000
> oldboy
[root@qls ~]# cat 123.txt
123
456
789
000

cat >456.txt<<EOF
123
456
789
EOF


#将多个文件合并为一个文件

[root@qls ~]# cat pass.txt
123456
[root@qls ~]# cat test.txt
2
3
[root@qls ~]# cat pass.txt test.txt
123456
2
3
[root@qls ~]# cat pass.txt test.txt > new.txt
[root@qls ~]# cat new.txt
123456
2
3


[root@qls ~]# cp /etc/services ./

```

### 7. more命令

```bash

#分页显示文件内容 文件显示完成之后,会自动退出


选项:

-num #num是数字 指定一页显示多少行

+num #num是数字 指定从第几行开始显示文件内容


空格或者f键 #向下翻页

b键 #向上翻页

回车 #向下一行

h #帮助信息

q #退出

/xxx #搜索你要搜索的内容 搜索出来的内容不会高亮显示

n #向下查找 不能向上查找

= #显示当前光标所在的行号



[root@qls ~]# more services


[root@qls ~]# more -1 services
# /etc/services:
--More--(0%)


[root@qls ~]# more +5 services
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known

```

### 8. less命令

```bash
#分页显示文件内容 文件显示完成之后,不会自动退出


选项:

-N #显示文件内容的时候,加上行号

-i #在搜索的时候,忽略大小写

空格或者f键 #向下翻页

b键 #向上翻页

回车 #向下一行

q #退出

h #显示帮助

/xxxx #搜索指定的内容 会把搜索出来的内容高亮显示

n #向下查找

N #向上查找


= #显示当前页的内容是由哪些行组成的 显示总行数

显示文件从开头到当前行总共显示了多少字节内容 总字节大小


[root@qls ~]# less -N services


[root@qls ~]# less -i services
# day06

@[toc]
### 1. head命令

```bash

#显示文件的头部信息,默认显示文件的前十行内容


选项:

-n #取消默认输出

-c #显示文件的最前面的字符

[root@qls ~]# head passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin



[root@qls ~]# head -n 2 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

===

[root@qls ~]# head -2 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin


[root@qls ~]# head -20 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@qls ~]# head -c5 passwd
root:[root@qls ~]#


```

### 2. tail命令

```

#显示文件的尾部信息,默认显示文件最后10行

选项:

-n #取消默认输出

-c #显示最后几个字符

-f #实时显示文件的尾部变化信息

-F #实时更新文件的内容,当文件不存在,不会退出,会一直尝试读取这个文件,直到文件存在

[root@qls ~]# tail passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@qls ~]# tail -n 1 passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

===

[root@qls ~]# tail -1 passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@qls ~]# tail -c5 passwd #显示最后5个字符,只能看见4个,另外一个是换行符
ogin
[root@qls ~]#


[root@qls ~]# tail -f passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin



hello

#另外一个窗口进行测试
[root@qls ~]# echo 'hello' >> passwd



[root@qls ~]# tail -f test.log
tail: cannot open ‘test.log’ for reading: No such file or directory
tail: no files remaining
[root@qls ~]# tail -F test.log
tail: cannot open ‘test.log’ for reading: No such file or directory



tail: ‘test.log’ has appeared; following end of new file
test


```

### 3. tailf命令

```bash
#实时更新文件的内容


tailf ==== tail -f

当文件内容没有发生变化时,tailf不会去读取磁盘中的信息,减少磁盘的读写 ,tail -f 当文件内容没有发生变化时,会一直向磁盘进行读取


选项:

-n #取消默认输出


```

### 4. locate命令

```bash
#根据本地的数据库进行查找文件,不会查找到最新的文件

[root@qls ~]# yum install -y mlocate

选项:

-i #不区分大小写

-r #简单使用正则表达式 $ 结尾

/var/lib/mlocate/mlocate.db

[root@qls ~]# updatedb #更新数据库

#把系统中所有文件名称包含passwd的文件全部查找出来

[root@qls ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/root/passwd
/usr/bin/gpasswd
/usr/bin/grub2-mkpasswd-pbkdf2
/usr/bin/passwd
/usr/lib/firewalld/services/kpasswd.xml


[root@qls ~]# locate hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl

[root@qls ~]# touch hostnamectl

[root@qls ~]# updatedb

[root@qls ~]# locate hostnamectl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl

[root@qls ~]# updatedb
[root@qls ~]# locate hostnamectl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl
[root@qls ~]# locate -i hostnamectl
/opt/HOSTNAMEctl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl


[root@qls ~]# locate -r hostname$
/etc/hostname
/etc/selinux/targeted/active/modules/100/hostname
/usr/bin/hostname
/usr/bin/nmtui-hostname
/usr/lib64/gettext/hostname

```

### 5. which命令

```bash
#查找命令的绝对路径

[root@qls ~]# which ping
/usr/bin/ping

#查找命令的绝对路径时,是通过PATH环境变量中的路径进行查找
[root@qls ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#不使用which的别名进行查找命令的绝对路径

[root@qls ~]# \which cp
/usr/bin/cp


[root@qls ~]# rpm -qf `which ping`
iputils-20160308-10.el7.x86_64

[root@qls ~]# rpm -qf /usr/bin/ping
iputils-20160308-10.el7.x86_64

```

### 6. whereis命令

```bash
#查找系统二进制程序、man帮助文件、源代码文件 查找不到自己创建的文件

选项:

-b #只查找二进制程序文件

-m #查找man帮助文件

-s #查找源代码文件

[root@qls ~]# whereis ping
ping: /usr/bin/ping /usr/share/man/man8/ping.8.gz


[root@qls ~]# whereis -b ping
ping: /usr/bin/ping
[root@qls ~]# whereis -m ping
ping: /usr/share/man/man8/ping.8.gz

```

### 7. type命令

```bash
#显示命令的类型

选项:

-a #显示内置命令的绝对路径

-p #只显示命令的绝对路径

help命令可以显示系统中所有的内置命令


[root@qls ~]# type ping
ping is /usr/bin/ping

[root@qls ~]# type cd
cd is a shell builtin

[root@qls ~]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd


[root@qls ~]# type -p ping
/usr/bin/ping


[root@qls ~]# type -ap cd
/usr/bin/cd


```

### 8. find命令

```bash
#查找和搜索文件

选项:

-type #根据文件类型进行查找

f #普通文件

d #目录

l #软连接文件

s #socket文件 套接字文件

p #管道文件


-name #根据名称进行查找


-iname #查找的时候忽略大小写


语法:
选项,条件 干什么


命令 地区 类型 名称 动作 默认动作就是打印

#在/etc目录下进行查找 查找类型为普通文件 名称为 hostname 精确查找
[root@qls ~]# find /etc -type f -name "hostname"
/etc/hostname


[root@qls ~]# touch /opt/hostname{,ctl}
[root@qls ~]# ll /opt/
total 0
-rw-r--r--. 1 root root 0 Jul 10 10:32 hostname
-rw-r--r--. 1 root root 0 Jul 10 10:32 hostnamectl
[root@qls ~]# touch /opt/test_hostname
[root@qls ~]# touch /opt/test_hostname.txt
[root@qls ~]# ll /opt/
total 0
-rw-r--r--. 1 root root 0 Jul 10 10:32 hostname
-rw-r--r--. 1 root root 0 Jul 10 10:32 hostnamectl
-rw-r--r--. 1 root root 0 Jul 10 10:32 test_hostname
-rw-r--r--. 1 root root 0 Jul 10 10:33 test_hostname.txt
[root@qls ~]# find /opt/ -type f -name "hostname"
/opt/hostname


#查找以hostname开头的文件

[root@qls ~]# find /opt/ -name "hostname*"
/opt/hostname
/opt/hostnamectl

#查找以hostname为结尾的文件

[root@qls ~]# find /opt/ -name "*hostname"
/opt/hostname
/opt/test_hostname

#查找文件名称包含hostname的文件

[root@qls ~]# find /opt/ -name "*hostname*"
/opt/hostname
/opt/hostnamectl
/opt/test_hostname
/opt/test_hostname.txt

#查找所有文件,包括隐藏文件

[root@qls ~]# touch /opt/.hostname.log
[root@qls ~]# find /opt/ -name "*hostname*"
/opt/hostname
/opt/hostnamectl
/opt/test_hostname
/opt/test_hostname.txt
/opt/.hostname.log


[root@qls ~]# find /opt/ -type d -iname "*hostname*"
/opt/HOSTNAMECTL


```

### 9. rz命令

```bash
#将本地的文件上传到Linux操作系统

#不能上传目录,需要将目录打成一个压缩包进行上传 只能上传 4G以下的文件

[root@qls ~]# yum install lrzsz -y

选项:

-E #当上传的文件已经存在时,系统会进行重命名 会在原来的文件名称后面加上.数字 从0开始


#执行命令,会跳出一个Windows界面的窗口,选择你要上传的文件

[root@qls ~]# rz

[root@qls ~]# ll
total 16
-rw-r--r--. 1 root root 13140 Jul 7 12:23 day03.md


[root@qls ~]# rz -E

[root@qls ~]# ll
total 32
-rw-r--r--. 1 root root 13140 Jul 7 12:23 day03.md
-rw-r--r--. 1 root root 13140 Jul 7 12:23 day03.md.0


```

### 10. sz命令

```bash
#将Linux系统的文件下载到本地

[root@qls ~]# sz /etc/hosts




```

### 11. wget命令

```bash
[root@qls ~]# yum install -y wget

#联网下载软件包


选项:

-O #指定下载的路径和名称

-q #静默输出

--limit-rate=10k #限制下载的速率 k ===KB m == MB



[root@qls ~]# wget http://www.baidu.com
--2020-07-10 11:57:50-- http://www.baidu.com/
Resolving www.baidu.com (www.baidu.com)... 112.80.248.75, 112.80.248.76
Connecting to www.baidu.com (www.baidu.com)|112.80.248.75|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2381 (2.3K) [text/html]
Saving to: ‘index.html’

100%[===============================================================================>] 2,381 --.-K/s in 0.008s

2020-07-10 11:57:51 (290 KB/s) - ‘index.html’ saved [2381/2381]

[root@qls ~]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
--2020-07-10 12:00:16-- http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 95.211.80.227, 62.210.92.35, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|95.211.80.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: ‘nginx-1.18.0.tar.gz’

100%[===============================================================================>] 1,039,530 282KB/s in 3.6s

2020-07-10 12:00:20 (282 KB/s) - ‘nginx-1.18.0.tar.gz’ saved [1039530/1039530]

[root@qls ~]# ll
total 1020
-rw-r--r--. 1 root root 2381 Jul 10 11:57 index.html
-rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz


[root@qls ~]# wget -O /opt/nginx.tar.gz http://nginx.org/download/nginx-1.18.0.tar.gz
--2020-07-10 12:01:41-- http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: ‘/opt/nginx.tar.gz’

100%[===============================================================================>] 1,039,530 272KB/s in 3.7s

2020-07-10 12:01:46 (272 KB/s) - ‘/opt/nginx.tar.gz’ saved [1039530/1039530]

[root@qls ~]# ll /opt/
total 1016
-rw-r--r--. 1 root root 0 Jul 10 10:32 hostname
-rw-r--r--. 1 root root 0 Jul 10 10:32 hostnamectl
drwxr-xr-x. 2 root root 6 Jul 10 10:39 HOSTNAMECTL
-rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx.tar.gz


[root@qls ~]# wget -q http://nginx.org/download/nginx-1.19.1.tar.gz
[root@qls ~]# ll
total 2100
-rw-r--r--. 1 root root 41240 Mar 23 00:20 032220_1620_Zabbix1.png
-rw-r--r--. 1 root root 9810 Jul 8 00:06 download.html
-rw-r--r--. 1 root root 2381 Jul 10 11:57 index.html
-rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz
-rw-r--r--. 1 root root 1047223 Jul 7 23:59 nginx-1.19.1.tar.gz



[root@qls ~]# wget --limit-rate=10k http://nginx.org/download/nginx-1.18.0.tar.gz ^C
[root@qls ~]# rm -rf ./*
[root@qls ~]# wget --limit-rate=10k http://nginx.org/download/nginx-1.18.0.tar.gz
--2020-07-10 12:11:13-- http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: ‘nginx-1.18.0.tar.gz’

32% [========================> ] 335,872 10.0KB/s eta 70s




```

### 12. curl命令

```bash
#通过url规则进行文件传输工具

#测试网站使用的命令


选项:

-o #将访问的数据内容写入到指定的文件中

-s #静默输出



[root@qls ~]# curl -o ./baidu.html www.baidu.com
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2381 100 2381 0 0 311 0 0:00:07 0:00:07 --:--:-- 657
[root@qls ~]# ll
total 1356
-rw-r--r--. 1 root root 2381 Jul 10 12:15 baidu.html


[root@qls ~]# curl -s -o ./nginx.tar.gz http://nginx.org/download/nginx-1.18.0.tar.gz





```
# day07

@[toc]
### 1. sort命令

```
#排序 将不相同的行进行排序在一起 默认是根据第一列进行排序 默认是以空白字符为分割符 默认以字母进行排序


选项:

-k #指定哪一列为分隔符

-n #以数值大小的方式进行排序

-r #倒叙排序

-t #指定分割符

cat>sort.txt<<EOF
b 5
c 3
a 11
f 2
d 9
EOF



[root@qls ~]# cat sort.txt
b 5
c 3
a 11
f 2
d 9
[root@qls ~]# sort sort.txt
a 11
b 5
c 3
d 9
f 2

[root@qls ~]# sort -k2 sort.txt
a 11
f 2
c 3
b 5
d 9
[root@qls ~]# sort -nk2 sort.txt
f 2
c 3
b 5
d 9
a 11

[root@qls ~]# sort -rnk2 sort.txt
a 11
d 9
b 5
c 3
f 2


[root@qls ~]# cp /etc/passwd ./
[root@qls ~]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@qls ~]# sort -t ":" -nk3 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin


cat>file.txt<<EOF
123
abc
123
edf
456
123
abc
EOF


[root@qls ~]# cat file.txt
123
abc
123
edf
456
123
abc

[root@qls ~]# sort file.txt
123
123
123
456
abc
abc
edf


```

### 2. uniq命令

```bash
#去重 去除重复的行 只能去除相同相邻的行 统计 将重复的行的次数统计出来 跟sort结合使用


| #管道 将前面命令的执行结果交给后面的命令继续执行 操作的是数据


选项:

-c #统计重复的行的次数

[root@qls ~]# sort file.txt
123
123
123
456
abc
abc
edf

[root@qls ~]# sort file.txt | uniq
123
456
abc
edf

[root@qls ~]# sort file.txt | uniq -c
3 123
1 456
2 abc
1 edf


[root@qls ~]# sort file.txt | uniq -c | sort
1 456
1 edf
2 abc
3 123
[root@qls ~]# sort file.txt | uniq -c | sort -n
1 456
1 edf
2 abc
3 123
[root@qls ~]# sort file.txt | uniq -c | sort -rn
3 123
2 abc
1 edf
1 456

```

### 3. cut命令

```bash
#取列 awk命令的小弟 默认的分隔符为tab键

选项:

-d #指定分隔符

-f #取出指定的列

-c #取出指定的字符 按照行进行处理的

[root@qls ~]# echo "root:x:0:0:root:/root:/bin/bash" >test.txt
[root@qls ~]# cat test.txt
root:x:0:0:root:/root:/bin/bash

#取出第七列
[root@qls ~]# cut -d ":" -f7 test.txt
/bin/bash

#取出第一列和第七列
[root@qls ~]# cut -d ":" -f1,7 test.txt
root:/bin/bash

#取出第五列到第七列
[root@qls ~]# cut -d ":" -f5-7 test.txt
root:/root:/bin/bash

[root@qls ~]# cut -d ":" -f7 passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
[root@qls ~]# cut -d ":" -f7 passwd | sort
/bin/bash
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/shutdown
[root@qls ~]# cut -d ":" -f7 passwd | sort | uniq
/bin/bash
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/shutdown
[root@qls ~]# cut -d ":" -f7 passwd | sort | uniq -c
1 /bin/bash
1 /bin/sync
1 /sbin/halt
14 /sbin/nologin
1 /sbin/shutdown
[root@qls ~]# cut -d ":" -f7 passwd | sort | uniq -c | sort -n
1 /bin/bash
1 /bin/sync
1 /sbin/halt
1 /sbin/shutdown
14 /sbin/nologin
[root@qls ~]# cut -d ":" -f7 passwd | sort | uniq -c | sort -rn
14 /sbin/nologin
1 /sbin/shutdown
1 /sbin/halt
1 /bin/sync
1 /bin/bash


[root@qls ~]# cat test.txt
root:x:0:0:root:/root:/bin/bash
[root@qls ~]# cut -c 6 test.txt
x
[root@qls ~]# cut -c 6 passwd
x
:
n
:
4
x
o
x
x
t
#取出不同的字符
[root@qls ~]# cut -c 6,8 test.txt
x0

#取出连续的字符
[root@qls ~]# cut -c 1-4 test.txt
root


#取出系统eth0的IP地址

[root@qls ~]# yum install -y net-tools

[root@qls ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
RX packets 1634 bytes 464970 (454.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1033 bytes 114568 (111.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@qls ~]# ifconfig eth0 | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
[root@qls ~]# ifconfig eth0 | head -2 | tail -1
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
[root@qls ~]# ifconfig eth0 | head -2 | tail -1 | cut -d " " -f10
10.0.0.100



[root@qls ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@qls ~]# ip a s eth0 | head -3
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@qls ~]# ip a s eth0 | head -3 | tail -1
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@qls ~]# ip a s eth0 | head -3 | tail -1 | cut -c 10-19
10.0.0.100



[root@qls ~]# ip a s eth0 | head -3 | tail -1
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@qls ~]# ip a s eth0 | head -3 | tail -1 | cut -d " " -f6
10.0.0.100/24
[root@qls ~]# ip a s eth0 | head -3 | tail -1 | cut -d " " -f6 | cut -d "/" -f1
10.0.0.100

```

### 4. tr命令

```bash

#替换 删除 sed的小弟 只能单对单的替换

选项:

-d #删除指定的字符

语法:

tr old new < file


< #标准输入重定向


[root@qls ~]# cat test.txt
root:x:0:0:root:/root:/bin/bash

[root@qls ~]# tr "0" "9" < test.txt
root:x:9:9:root:/root:/bin/bash

[root@qls ~]# tr -d "o" < test.txt
rt:x:0:0:rt:/rt:/bin/bash
[root@qls ~]#


[root@qls ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@qls ~]# ip a s eth0 | head -3 | tail -1
inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@qls ~]# ip a s eth0 | head -3 | tail -1 | tr '/' ' '
inet 10.0.0.100 24 brd 10.0.0.255 scope global noprefixroute eth0
[root@qls ~]# ip a s eth0 | head -3 | tail -1 | tr '/' ' ' | cut -d " " -f6
10.0.0.100

```

### 5. wc命令

```bash
#统计 行数 字节数 列数 行的长度

选项:

-l #统计行数

-w #统计列数,默认以空白字符为分隔符

-c #统计字节数

-L #统计文件中最长的行的长度


[root@qls ~]# wc passwd
18 26 798 passwd
[root@qls ~]# wc -l passwd
18 passwd
[root@qls ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@qls ~]# wc /etc/hosts
2 10 158 /etc/hosts
[root@qls ~]# wc -w /etc/hosts
10 /etc/hosts
[root@qls ~]# ll passwd
-rw-r--r--. 1 root root 798 Jul 13 16:49 passwd
[root@qls ~]# ll /etc/hosts
-rw-r--r--. 1 root root 158 Jun 7 2013 /etc/hosts
[root@qls ~]# wc -c /etc/hosts
158 /etc/hosts
[root@qls ~]# wc -c passwd
798 passwd
[root@qls ~]#


[root@qls ~]# wc -L passwd
68 passwd
[root@qls ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@qls ~]# wc -L /etc/hosts
78 /etc/hosts


[root@qls ~]# name=ewuighrtuighwiorteugh
[root@qls ~]# echo $name
ewuighrtuighwiorteugh
[root@qls ~]# echo $name | wc -L
21

```

### 6. grep命令

```bash
#过滤 给过滤出来的内容加上颜色 按照行进行处理的


[root@qls ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

#选项:

-n #显示出过滤出来的所在文件的行号

-v #排除,取反

-c #统计过滤出来的内容的总行数

-i #过滤的时候忽略大小写

-o #只显示你要过滤的内容

-w #精确匹配 只过滤你要过滤的单词,而不是包含这个单词的字符串

-r #递归过滤 针对目录进行操作

-A #显示出你要过滤的内容及向下多少行的内容

-B #显示出你要过滤的内容及向上多少行的内容

-C #显示出你要过滤的内容向上向下各多少行

^ #以什么开头

$ #以什么为结尾

| # 或者 扩展正则

-E #支持扩展正则 ==== egrep

. #任意一个字符 排除换行符

* #前面的字符出现0次或者0次以上

.* #所有

[root@qls ~]# grep 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin


[root@qls ~]# grep -n 'root' passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin


[root@qls ~]# grep -v 'root' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@qls ~]# grep 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@qls ~]# grep -c 'root' passwd
2


[root@qls ~]# echo "ROOT" >> passwd
[root@qls ~]# grep "root" passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@qls ~]# grep -i "root" passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT


[root@qls ~]# grep -o 'root' passwd
root
root
root
root


[root@qls ~]# echo "roottttt" >>passwd
[root@qls ~]# grep 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
roottttt
[root@qls ~]# grep -w 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin


[root@qls ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:eb:ea:8d txqueuelen 1000 (Ethernet)
RX packets 3778 bytes 648285 (633.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2329 bytes 260396 (254.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@qls ~]# ifconfig eth0 | grep inet
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::3310:9d15:9ee4:43e8 prefixlen 64 scopeid 0x20<link>
[root@qls ~]# ifconfig eth0 | grep -w inet
inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
[root@qls ~]#

#针对一个目录进行操作

[root@qls ~]# grep -r 'root' ./
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./passwd:roottttt
./test.txt:root:x:0:0:root:/root:/bin/bash
./data/test.txt:root
./test/test.txt:root
./backup/test.txt:root


[root@qls ~]# grep -R 'root' ./
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./passwd:roottttt
./test.txt:root:x:0:0:root:/root:/bin/bash
./data/test.txt:root
./test/test.txt:root
./backup/test.txt:root


[root@qls ~]# grep -A 4 'sync' passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


[root@qls ~]# grep -B 4 'sync' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync


[root@qls ~]# grep -C 4 'sync' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


[root@qls ~]# grep 'root' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
roottttt
[root@qls ~]# grep '^root' passwd
root:x:0:0:root:/root:/bin/bash
roottttt
[root@qls ~]# grep 't$' passwd
halt:x:7:0:halt:/sbin:/sbin/halt
roottttt
[root@qls ~]# grep 'adm|mail' passwd
[root@qls ~]# grep -E 'adm|mail' passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@qls ~]# egrep 'adm|mail' passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin


#取出文件中的第5行到第15行

[root@qls ~]# head -15 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@qls ~]# head -15 passwd | tail -11
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin


[root@qls ~]# grep 'r*' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
roottttt



[root@qls ~]# grep -n '.*' passwd
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:ROOT
20:roottttt
[root@qls ~]#
[root@qls ~]# grep -n '.*' passwd | grep '^5'
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@qls ~]# grep -n '.*' passwd | grep -w '^5'
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@qls ~]# grep -n '.*' passwd | grep -wA 10 '^5'
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
[root@qls ~]#


[root@qls ~]# grep -n '.*' passwd | grep -Ew '^8|^10'
8:halt:x:7:0:halt:/sbin:/sbin/halt
10:operator:x:11:0:operator:/root:/sbin/nologin


```

### 7. 总结

```bash
1. sort #排序 将相同的行排序在一起 指定某一列继续排序 默认以第一列进行排序

选项:

-t #指定分隔符 默认分隔符为空白字符

-k #指定以哪一列进行排序

-n #以数值大小进行排序

-r #倒叙排序


2. uniq #去重 统计 把相邻相同的行进行去重 统计重复的次数

选项:

-c #统计重复的次数

3.cut #取列

选项:

-d #指定分隔符 ,m默认分隔符为tab键

-f #取出指定的列,取出不连续的列使用逗号分割,取出连续的列使用短横杠进行分割

-c #取出你指定的字符 取出不连续的列使用逗号分割,取出连续的列使用短横杠进行分割 取出的每一行

4. tr #替换和删除的命令 只能单对单的进行替换

选项:

-d #删除指定的字符

语法:

tr 旧的字符 新的字符 < 文件名

5. wc #统计

选项:

-l #统计行数

-w #统计列数 默认以空白字符为分隔符

-c #统计字节的大小

-L #统计文件中最长的行的长度 字符的数量

6. grep #过滤 给过滤出来的内容加上颜色

选项:

-n #给过滤出来的内容显示所在文件的行号

-v #排除,取反

-i #过滤的时候,忽略大小写

-c #统计过滤出来的内容的行数

-o #只显示过滤出来的内容

-w #精确匹配,之过滤你要过滤的字符串,而不是包含这个字符串的字符串

-r #递归过滤 针对目录进行操作

-E #支持扩展正则使用

-A #显示过滤出来的内容及向下多少行

-B #显示过滤出来的内容及向上多少行

-C #显示过滤出来的内容向上向下各多少行

^ #以什么为开头

$ #以什么为结尾

| #或者 扩展正则

. #除换行符以外的任意一个字符

* #匹配前面的字符出现0次或者0次以上

.* #所有 包括空行



```