Linux系统目录结构介绍
/ --------------------------------------- 根目录,所有目录文件的起始位置
/bin -> usr/bin ---------------------- 存放命令文件 二进制文件
/sbin -> usr/sbin ------------------- 存放命令文件 超级管理员可以的执行命令
/lib --> usr/lib ----------------------- 存放程序服务会加载的一些库文件 32位
/lib64 --> usr/lib64 ---------------- 存放程序服务会加载的一些库文件 64位
/usr ----------------------------------- 磁盘发展历史过程中,产生的新的挂载点目录
/boot --------------------------------- 存放系统运行启动文件信息
/dev ---------------------------------- 存储设备文件信息
/etc ----------------------------------- 保存系统服务或者第三方服务程序配置文件
/home ------------------------------- 普通用户家目录
/root --------------------------------- 管理员用户家目录
/mnt --------------------------------- 临时挂载点目录
/opt ---------------------------------- 存放第三方程序安装数据信息
/proc -------------------------------- 内核文件信息 进程文件 系统状态信息
此目录中存储数据信息都是默认存储在内存中
/tmp --------------------------------- 临时目录 可充当回收站
/var ---------------------------------- 存储经常变化的数据信息 日志文件
基础操作
Linux 命令行基本介绍
[root@centos7 ~]# 叫做命令提示符,root为用户名,@为分隔符,centos7为主机名,~ 表示家目录,当前所在目录,# 表示该用户为root用户,还有另外一个提示符若 # 的位置为 $ ,表示当前登录用户为普通用户。
命令行的常用快捷方式
- ctrl + a 快速移动光标到命令行行首
- ctrl + e 快速移动光标到命令行行尾
- ctrl + u 将光标之前所有内容剪切
- ctrl + k 将光标之后所有内容剪切
- ctrl + y 将剪切信息进行粘贴
- ctrl + w 将光标前的一个字符串信息进行剪切
- ctrl + c 中断某些命令操作过程
- ctrl + L 清屏操作
- ctrl + s 表示锁定xshell远程连接窗口
- ctrl + q 退出窗口锁定模式
- esc + . 将上一个命令最后操作的对象信息进行快速调取
- tab 命令补全功能
获取命令帮助方式
man ls
使用 man 来获取命令的帮助手册help cd
通过 help 获取Linux内置命令的帮助信息ls --help
使用命令的帮助信息可以获取命令的简要帮助
关机重启命令
- 关机命令
- shutdown -h now 立即关机
- shutdown -h +5 5分钟后关机
- poweroff 关闭电源,立即关机
- 重启命令
- shutdown -r now 立即重启
- shutdown -r +5 5分钟后重启
- reboot 立即重启
关于目录
pwd
查看当前所在目录
当前登录用户为 root ,他的家目录为 /root
[root@test-201 ~]# pwd
/root
ls
查看指定目录中的内容
常用参数
- -l 查看目录中内容的属性信息,如权限等
- -a 查看目录中全部文件,包括隐藏文件(Linux中的隐藏文件名是以点开头的)
- -d 列出目录本身,而不是目录中的内容
- -h 以人可读的方式显示文件大小,和-l一起使用
- -s 以文件大小排序
- -t 以时间排序
- -r 反向排序
- - -time-style=long-iso 以长时间格式显示目录内容信息
- Linux中一个命令有多个参数时,短命令时,多数可以合并到一起,而且没有前后次序关系
- 如:ls --lath --time-style=time-iso == ls -l -a -t -h --time-style=time-iso
[test@centos7 ~]$ ls -lath --time-style=long-iso
总用量 12K
drwx------. 7 test root 169 2020-09-25 19:06 .
-rw-r--r--. 1 test root 0 2020-09-25 19:06 file1
-rw-r--r--. 1 test root 0 2020-09-25 19:06 file2
-rw-r--r--. 1 test root 0 2020-09-25 19:06 file3
drwxr-xr-x. 2 test root 6 2020-09-25 19:06 test2
drwxr-xr-x. 2 test root 6 2020-09-25 19:06 test3
drwxr-xr-x. 2 test root 6 2020-09-25 19:06 test1
drwxr-xr-x. 3 test root 18 2020-09-25 17:28 .config
drwxr-xr-x. 3 test root 18 2020-09-25 17:28 .cache
drwxr-xr-x. 4 root root 45 2020-09-25 17:27 ..
-rw-r--r--. 1 test root 18 2020-04-01 10:17 .bash_logout
-rw-r--r--. 1 test root 193 2020-04-01 10:17 .bash_profile
-rw-r--r--. 1 test root 231 2020-04-01 10:17 .bashrc
ls -l 命令输出结果
第一列 -rw-r–r--. 中,第一个字符,- 表示文件,d表示目录,l表示链接文件(类似于windows中的快捷方式),后面的字符表示权限,以3个字符一组,分别表示,所属主权限,所属组权限,其他权限,r表示读权限,w表示写权限,x表示执行权限
第三列test表示所属主
第四列root表示所属组
第五列表示文件大小
第六列表示文件内容修改时间
最后一列表示文件名
cd
切换目录
切换目录的几种方式:
- 通过绝对路径切换
绝对路径,即从根目录开始编写的路径- 通过相对路径切换
相对路径,即相对于当前目录位置编写的路径
使用
cd
命令的小技巧:
cd ..
表示切换到上级目录,Linux中../
表示上级目录,该上级目录可以一直编写,直到达到更目录才不会继续返回上级目录
cd -
表示切换到上一次执行cd
命令时所在目录
cd ~
表示切换到家目录,~
表示当前登录用户的家目录
[test@centos7 ~]$ cd test1 相对路径切换方式
[test@centos7 ~/test1]$ cd /etc/sysconfig/network-scripts/ 绝对路径切换方式
[test@centos7 /etc/sysconfig/network-scripts]$ cd - 返回到上次所在的路径
/home/test/test1
[test@centos7 ~/test1]$ cd ../ 返回上级目录
[test@centos7 ~]$ cd ../../../../../etc
[test@centos7 /etc]$ pwd 查看当前目录
/etc
- 创建目录
mkdir
创建目录
- 常用参数:
- -p 递归创建目录,可一次性创建多个不同层级的目录
[test@centos7 ~]$ ls
test
[test@centos7 ~]$ mkdir a b c
[test@centos7 ~]$ ls
a b c test
[test@centos7 ~]$ mkdir -p d/a/c/d
[test@centos7 ~]$ tree
.
├── a
├── b
├── c
├── d
│ └── a
│ └── c
│ └── d
└── test
7 directories, 1 file
- 删除目录
rmdir
删除空目录
rm
删除文件和目录
- -r 递归删除目录
- -i 删除前询问
- -f 强制删除,不询问
[test@centos7 ~]$ ll ll == ls -l
总用量 0
-rw-r--r--. 1 test root 0 9月 25 19:06 file1
-rw-r--r--. 1 test root 0 9月 25 19:06 file2
-rw-r--r--. 1 test root 0 9月 25 19:06 file3
drwxr-xr-x. 2 test root 6 9月 25 19:06 test1
drwxr-xr-x. 2 test root 6 9月 25 19:06 test2
drwxr-xr-x. 2 test root 6 9月 25 19:06 test3
[test@centos7 ~]$ ls -l test1
总用量 0
[test@centos7 ~]$ ls -l test2
总用量 0
-rw-r--r--. 1 test root 0 9月 25 19:42 file
[test@centos7 ~]$ ls -l test3
总用量 0
[test@centos7 ~]$ rmdir test1
[test@centos7 ~]$ ls
file1 file2 file3 test2 test3
[test@centos7 ~]$ rmdir test2
rmdir: 删除 "test2" 失败: 目录非空
[test@centos7 ~]$ rm -r test2
[test@centos7 ~]$ ls
file1 file2 file3 test3
- 查看目录文件层级划分
tree
可以以树形结构显示指定目录文件层级划分
tree
默认在centos7 上没有安装,需要先安装才可以使用
执行yum install -y tree
进行安装
- 常用参数:
- -L 指定查看目录层级,最多查看到第几层目录中的内容
- -d 只显示目录
- -F 在目录的名称后边添加 / 显示
- -f 显示完整的目录或文件路径
- -i 不显示树形分支,常和 -f 一起使用
[test@centos7 ~]$ tree -L 2
.
├── a
├── b
├── c
├── d
│ └── a
└── test
5 directories, 1 file
关于文件
- 创建文件
创建文件的几种姿势
touch file
echo > file
将内容输出到file中,> 表示重定向,将数据重定向到指定文件中,并且会将文件内容覆盖,>> 追加重定向,将数据重定向到指定文件,以追加方式追加到文件尾
cat >file3<<EOF
文件内容
EOF
EOF可以替换为其他ABC等,但是必须前后对应,将文件内容输出到file中,若没有写文件名,则将内容输出到屏幕
[test@centos7 ~]$ touch file1
[test@centos7 ~]$ ls
file1
[test@centos7 ~]$ echo > file2
[test@centos7 ~]$ ls
file1 file2
[test@centos7 ~]$ cat >file3<<EOF
> abc
> EOF
[test@centos7 ~]$ ls
file1 file2 file3
- 查看文件
cat
命令会将文件内容一次性全部输出,所以适合查看文件内容少的小文件
- 常用参数:
- -n 显示行号
- -E 显示文件中的换行符,Linux中文件为$,Windows的文件为^M$
- -T 显示文件中的制表符^I
- -v 除LFD和TAB之外,使用“^”和“M-”引用
- -A 相当于-vET
[test@centos7 ~]$ cat test
hello world
BayBay My Baby
test file
[test@centos7 ~]$ cat -nET test
1 hello world$
2 BayBay My Baby$
3 test^Ifile$
more
可以分页显示文件内容
- 常用查看命令(more文件后查看时使用):
- b 显示上一分屏
- f 显示下一分屏
- q 退出
[test@centos7 ~]$ more /etc/services
less
加载文件速度比more块,不一次性加载文件全部内容
- 常用参数:
- -N 显示行号
- -m 显示进度百分比
- 常用查看命令(more文件后查看时使用):
- / 从上到下查找指定字符串
- ? 从下到上查找指定字符串
- n 查下一个指定字符串
- N 查找上一个指定字符串
[test@centos7 ~]$ less -Nm /etc/services
1 # /etc/services:
2 # $Id: services,v 1.55 2013/04/14 ovasik Exp $
3 #
...(中间内容省略)
22
23 tcpmux 1/tcp # TCP port service
/etc/services 0%
head
查看指定文件前几行信息,默认显示头10行信息
- 常用参数:
- -n 指定查看文件前几行的信息,或者可以直接 -3,来查看前三行信息
- -c 指定查看文件前几个字节
[test@centos7 ~]$ cat test
hello world
BayBay My Baby
test file
[test@centos7 ~]$ head -1 test
hello world
[test@centos7 ~]$ head -c 3 test
hel
tail
查看文件末尾几行信息,默认查看文件末尾10行内容
- 常用参数:
- -n 指定查看末尾几行信息
- -c 指定查看末尾几个字节信息
- -f 不断刷新文件内容
- - -retry 配合- f 使用,若文件不存在,不断重试打开查看文件
- - -pid 配合 -f 使用,指定某进程pid,成为该进程守护进程,当指定pid进程结束时,停止查看文件
[test@centos7 ~]$ tail -c 4 test
ile
[test@centos7 ~]$ cat -A test
hello world$
BayBay My Baby$
test^Ifile$
- 文件编辑修改
Linux 中修改文件可以使用强大的 vi / vim 编辑器进行编辑文件,当然还有一个简单的编辑器 nano 也可以实现编辑功能。
它们的关系就如同Widows系统中 notepad(记事本) 和 notepad++ 一样,vim / vi 编辑器功能强大更好用,但是需要学习一些操作方式才可以熟练的上手编写文件,而 nano 操作就简单了特别多了,但是功能一般,就如同一个简单的记事本。
如图为 nano 编辑器界面:
如图为vim编辑器界面:
- nano 上手即可使用,操作简单,下面重点介绍vim的操作方式
vi命令编辑文件命令 --> 升级vim yum install -y vim
vi/vim三种模式:
命令模式: 进入一个文件中之后所处的模式,可以输入一些快捷键,完成某些操作需求
编辑模式: 可以编辑文件信息
底行模式: 输入:之后将光标移动到屏幕最下面,进行保存退出等操作
- vim 编辑器的使用
三种模式切换方式如图所示:
- 命令模式的快捷方式
- 移动光标位置
- 输入 G ----------------------------------------快速移动光标到最后一行
- 输入 gg -------------------------------------- 快速移动光标到首行
- 输入100G/100gg -------------------------- 移动光标到指定100行
- ^ / 0 ------------------------------------------- 将光标快速移动到行首
- $ ----------------------------------------------- 将光标快速移动到行尾
- ctrl + 方向左右键 ---------------------------按词移动光标,词以空格分割
- 快速复制粘贴和剪切(删除)
- yy ----------------------------------------------复制光标所在行
- nyy --------------------------------------------复制光标后n行数据
- p -----------------------------------------------向光标下一行粘贴
- P -----------------------------------------------向光标上一行粘贴
- np ----------------------------------------------向光标下粘贴n行信息
- dd ----------------------------------------------删除/剪切光标所在行
- ndd ---------------------------------------------删除/剪切光标下n行
- dgg ---------------------------------------------删除/剪切到文件首行
- dG ----------------------------------------------删除/剪切到文件尾行
- 其他实用功能
- u ----------------------------------------------- 撤销操作
- ctrl + r -----------------------------------------取消撤销操作
- 底行模式操作命令
:set nu ---------------------------------显示行号信息
:set nonu ------------------------------取消行号显示
:wq --------------------------------------保存退出
:q ----------------------------------------退出
:wq! -------------------------------------强制保存退出
:q! ---------------------------------------强制退出
: s#oldboy#HQ#g -------------------只替换光标所在行内容
: s#oldboy#HQ# ---------------------只是将一行中找到的第一个内容进行替换, 不会全局都替换
:n,ms#oldboy#HQ#g ----------------将指定行匹配的信息做替换
- 文件及目录的复制移动与重命名
- 文件及目录的复制
cp
复制文件
- 常用参数:
- -r 递归复制目录及其文件。用来复制目录
- -p 复制文件或目录的属性信息,备份常用
- -d 只复制符号链接本身
- -a 相当于 -rpd
[test@centos7 ~]$ tree
.
├── a
├── b
├── c
└── test
3 directories, 1 file
[test@centos7 ~]$ cp test a/
[test@centos7 ~]$ tree
.
├── a
│ └── test
├── b
├── c
└── test
3 directories, 2 files
[test@centos7 ~]$ cp a b/ 没有加-r参数,无法复制目录
cp: 略过目录"a"
[test@centos7 ~]$ cp -r a b/
[test@centos7 ~]$ tree
.
├── a
│ └── test
├── b
│ └── a
│ └── test
├── c
└── test
4 directories, 3 files
- 文件及目录的移动与重命名
mv
移动或重命名文件目录
当移动位置和当前文件是同一位置时,重命名该文件,否则移动该文件到指定目录
[test@centos7 ~]$ tree
.
├── c
└── test
1 directory, 1 file
[test@centos7 ~]$ mv test ./test_1
[test@centos7 ~]$ ls
c test_1
[test@centos7 ~]$ mv test_1 ./c/
[test@centos7 ~]$ tree
.
└── c
└── test_1
1 directory, 1 file
- 压缩文件处理
- tar 压缩与解压缩
tar
压缩及解压缩 tar 格式的压缩包
- 常用命令:
- -cvf 创建一个 tar 压缩包,若有指定压缩格式,可man tar进行查看具体参数
- -tf 预览压缩包中的文件
- -xvf 解压压缩包
- -C 指定解压缩位置
[test@centos7 ~]$ ls
c PHP.7z PHP.png PHP.zip test
[test@centos7 ~]$ tree
.
├── c
│ └── test_1
├── PHP.7z
├── PHP.png
├── PHP.zip
└── test
2 directories, 4 files
[test@centos7 ~]$ tar -cvf test.tar c PHP.png 指定压缩包文件名后的参数都作为加入压缩包的文件
c/
c/test_1
PHP.png
[test@centos7 ~]$ ls
c PHP.7z PHP.png PHP.zip test test.tar
[test@centos7 ~]$ tar -tf test.tar
c/
c/test_1
PHP.png
[test@centos7 ~]$ tar -xvf test.tar -C test
c/
c/test_1
PHP.png
[test@centos7 ~]$ tree
.
├── c
│ └── test_1
├── PHP.7z
├── PHP.png
├── PHP.zip
├── test
│ ├── c
│ │ └── test_1
│ └── PHP.png
└── test.tar
3 directories, 7 files
- zip 压缩与解压缩
zip
常见 zip 压缩包
- 常用参数:
- -v 显示命令执行过程信息
- -r 递归操作目录
- -d 删除压缩包中指定文件
- -g 将文件压缩后添加到既有压缩文件中而无需创建新文件
0
[test@centos7 ~]$ zip -vr test.zip c test
adding: c/ (in=0) (out=0) (stored 0%)
adding: c/test_1 (in=4) (out=4) (stored 0%)
adding: test/ (in=0) (out=0) (stored 0%)
total bytes=4, compressed=4 -> 0% savings
[test@centos7 ~]$ ls
c PHP.png test test.zip
[test@centos7 ~]$ unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 09-26-2020 17:55 c/
4 09-25-2020 20:55 c/test_1
0 09-26-2020 18:27 test/
--------- -------
4 3 files
[test@centos7 ~]$ zip -g test.zip test2
adding: test2 (stored 0%)
[test@centos7 ~]$ unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 09-26-2020 17:55 c/
4 09-25-2020 20:55 c/test_1
0 09-26-2020 18:27 test/
0 09-26-2020 18:40 test2
--------- -------
4 4 files
unzip
解压缩 zip 压缩包
- 常用参数:
- -t 测试压缩包是否有错误
- -l 查看压缩包中的内容
- -x 解压文件
- -d 指定解压后存放的目录
[test@centos7 ~]$ tree
.
├── c
│ └── test_1
├── PHP.png
├── test
├── test2
└── test.zip
2 directories, 4 files
[test@centos7 ~]$ unzip -x test.zip -d test
Archive: test.zip
creating: test/c/
extracting: test/c/test_1
creating: test/test/
extracting: test/test2
[test@centos7 ~]$ tree
.
├── c
│ └── test_1
├── PHP.png
├── test
│ ├── c
│ │ └── test_1
│ ├── test
│ └── test2
├── test2
└── test.zip
4 directories, 6 files
其他命令
查找文件目录
find
查找文件命令
命令格式:find 查找范围 查找条件
- 常用参数:
- -name 按名称查找
- -size 按大小查找
- -atime 按访问时间查找
- -ctime 按文件内容修改时间查找
- -mtime 按文件属性权限修改时间查找
- -type 按文件类型查找(文件类型有 f 文件,d 目录,l 链接文件)
- -user 按文件所属主查找
- -group 按文件所属组查找
- -prem 按权限查找
- -exec ls -l {} ; 对匹配到的内容执行的命令 ,{}指匹配到的内容
- -maxdepth 指定查找的最大目录层级 类似于tree -L 2
- 命令说明:以上命令,-size ,-atime,-ctime,-mtime 指定大小的方式,+ n表示大于n值,-n表示小于n值,n表示等于n值
find / -size +12K 遍历根下所有文件,查找文件大小大于12K的文件
find / -prem 777 遍历根下所有文件,查找文件权限为777的文件
find / -name passwd -exec ls -l {} \; 遍历根下所有文件,查找文件名为passwd的文件,并对他执行ls -l命令
文本过滤查找
grep
过滤文本命令
- 常用参数:
- -o 只输出匹配到的内容
- -v 输出和规则不匹配的行
- -n 输出匹配内容的行号
- -m 匹配 n 次后停止
- -i 忽略大小写
- -r 对目录下所有文件执行匹配操作查找指定内容
- -E 使用 egrep 扩展,如 | 需要 -E 参数才可以正确使用
- -B 同时显示筛选内容的前 n 行内容
- -A 同时显示筛选内容的后 n 行内容
- -C 同时显示筛选内容的前后 n 行内容
- 常用正则表达式符号
- ^xxx 以xxx开始的字符串;
- xxx$ 以xxx结尾;
- a|b 匹配a或者b;
- . 匹配任意字符;
- * 匹配前一个字符0或无数次;
- + 匹配前一字符1次或无数次;
- {n,m} 匹配前一字符n~m次;
- ? 匹配前一个字符0或1次,非贪婪匹配,当只需要匹配到第一个匹配的字符串就停止时可用使用;
- [a-z] 匹配a-z任意字符;
- ^$ 表示空行
[test@test-201 ~]$ ls
test
[test@test-201 ~]$ cat test
hello world!
hello Mary!
Bay Bay Baby!
[test@test-201 ~]$ grep "hello" test
hello world!
hello Mary!
[test@test-201 ~]$ grep -v "^$" test
hello world!
hello Mary!
Bay Bay Baby!
[test@test-201 ~]$ grep "^b" test
[test@test-201 ~]$ grep -i "^b" test
Bay Bay Baby!
[test@test-201 ~]$ cat test
hello world
hello Mary
Bay Bay Baby
[test@test-201 ~]$ grep "^h.*d$" test
hello world