一、Linux与Windows目录结构对比
1.1 linux和windows跟目录的区别
Linux 以单根的方式组织文件 所有目录和文件都是从/开始
Windows 是多根目录结构 C: D:盘都是目录起点
1.2 Linux各目录用途
/bin -> usr/bin # 普通用户使用的命令如ls、date
/sbin -> usr/sbin # 管理员使用的命令
/boot # 存放的启动相关的文件,例如kernel,grub(引导装载程序)
/usr # 系统文件,相当于C:\Windows
/lib -> usr/lib # 库文件Glibc
/lib64 -> usr/lib64 # 库文件Glibc
/home # 普通用户家目录
/root # root用户的HOME
/proc # 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
cat /proc/meminfo:内存信息
cat /proc/cpuinfo:cpu信息
/var #存放的是一些变化文件,比如数据库,日志,邮件....
/tmp #系统临时目录,系统会定时删除该目录下长时间没有访问的文件。
/media # 移动设备默认的挂载点
/mnt # 手工挂载设备的挂载点
/opt # 早期第三方厂商的软件存放的目录.
/tmp # 临时存放文件,类似于回收站,超过十天自动删除
1.3 常用配置文件存放路径
/etc/sysconfig/network-script/ifcfg-* # 网络配置文件
/etc/hostname # 系统主机名配置文件
/etc/resolv.conf # dns客户端配置文件
/etc/hosts # 本地域名解析配置文件
/etc/fstab # 系统挂载目录 开机自启动挂载列表
/etc/passwd # 系统用户文件
1.4 绝对路径与相对路径
绝对路径: 从/开头的路径 /home ~alice
相对路径:相对于当前目录开始
. 链接到当前目录
.. 链接到上一级目录
~ 当前用户家目录
# 1、绝对路径示例
touch /home/alice/file1
touch ~alice/file2
# 2、相对路径示例
touch ../file3
touch file4
touch abc/file5
1.5 文件详细属性各部分解析,通过ls -l / 命令查看
-rw-r–r--. 1 root root 0 12月 15 14:02 a.txt
-rw-r--r--. 权限,后面的点代表是否在selinux开启的情况下(enforcing或者permissive都属于开启)创建的文件
1 文件和硬链接个数
root 属主
root 属组
0 文件大小,单位字节
11月 20 14:02 文件修改时间
a.txt 文件名字
权限的第一个为代表文件类型
格式 说明
- 普通文件(文本,二进制,压缩包,图片,日志等)
d 目录文件
b 设备文件(块设备)存储设备硬盘、U盘,如:/dev/sda1, /dev/sda2
c 设备文件(字符设备)打印机,终端,如/dev/tty1, /dev/zero
s 套接字文件,进程间通信(socket)
p 管道文件
l 链接文件
查看文件类型:
file 目录
示例:
file /etc/grub.d
二、系统目录结构与作用
FHS(Filesystem Hierarchy Standard)指的是文件系统层次化标准,多数Linux版本采用这种文件组 织形式,是以树形的结构来组织文件的。
1、命令相关命令
lrwxrwxrwx. 1 root root 7 Jul 11 2019 bin -> usr/bin # 普通用户使用的命令如 ls、date
lrwxrwxrwx. 1 root root 8 Jul 11 2019 sbin -> usr/sbin # 管理员使用的命令
2、启动目录
dr-xr-xr-x. 5 root root 4096 Feb 11 19:06 boot # 存放的启动相关的文件,例如 kernel,grub(引导装载程序)
3、系统文件目录
drwxr-xr-x. 13 root root 4096 Jul 11 2019 usr # 系统文件,相当于C:\Windows
lrwxrwxrwx. 1 root root 7 Jul 11 2019 lib -> usr/lib # 库文件Glibc
lrwxrwxrwx. 1 root root 9 Jul 11 2019 lib64 -> usr/lib64 # 库文件Glibc
4、用户家目录
drwxr-xr-x. 5 root root 4096 Feb 24 16:42 home # 普通用户家目录
dr-xr-x---. 11 root root 4096 Jul 8 17:03 root # root用户的HOME
5、配置文件目录
drwxr-xr-x. 79 root root 4096 Jul 8 17:04 etc # 配置文件,很重要,系统级服务配置文件
全部目录:
/etc/sysconfig/network-script/ifcfg-* # 网络配置文件
/etc/hostname # 系统主机名配置文件
/etc/resolv.conf # dns客户端配置文件
/etc/hosts # 本地域名解析配置文件
/etc/fstab # 系统挂载目录 开机自启动挂载列表
/etc/passwd # 系统用户文件
6、设备目录文件
drwxr-xr-x 19 root root 2960 Feb 15 17:22 dev # 设备文件,/dev/sda /dev/sr0
示例:
/dev/cdrom 和/dev/sr0 系统光盘镜像设备
/dev/null 黑洞设备,只进不出。类似于垃圾回收站
/dev/random 生成随机数的设备
/dev/zero 能源源不断地产生数据,类似于取款机,随时随地取钱
/dev/pts/0 虚拟的Bash Shell终端,提供给远程用户使用 0代表第一个终端 1代表第2个终端
以此类推
/dev/stderr 错误输出
/dev/stdin 标准输入
/dev/stdout 标准输出
7、虚拟文件系统:类似于仪表监控系统
dr-xr-xr-x 89 root root 0 Feb 15 17:22 proc # 虚拟的文件系统,反映出来的是内核,
进程信息或实时状态
反映系统当前进程的实时状态
/proc/meminfo # 内存信息
/proc/cpuinfo # cpu信息
8、可变的目录与临时目录
drwxr-xr-x. 19 root root 4096 Jul 11 2019 var #存放的是一些变化文件,比如数据库,日
志,邮件....
/tmp,系统临时目录(类似于公共厕所),系统会定时删除该目录下长时间没有访问的文件。
/var,存放一些变化文件,如下
mysql: /var/lib/mysql
vsftpd: /var/ftp
mail: /var/spool/mail
cron: /var/spool/cron
log: /var/log 系统日志文件存放目录
/var/log/messages系统日志
/var/log/secure系统登录日志
/var/tmp 临时文件(主要是程序产生的临时文件)
9、设备(主要指的是储存设备)挂载目录
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media # 移动设备默认的挂载点
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt # 手工挂载设备的挂载点
drwxr-xr-x. 2 root root 4096 Apr 11 2018 opt # 早期第三方厂商的软件存放的目录.
drwxrwxrwt. 10 root root 4096 Jul 9 15:16 tmp # 临时存放文件,类似于回收站,超过十天自动删除
10、其他的一些重要目录
drwx------. 2 root root 16384 Jul 11 2019 lost+found # 孤儿文件
这个目录是使用标准的ext2/ext3档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时, 将 一些遗失的片段放置到这个目录下。这个目录通常会在分割槽的最顶层存在, 例如你加装一颗硬盘于/disk 中,那在这个系统下就会自动产生一个这样的目录『/disk/lost+found
lost+found这个目录一般情况下是空的,当系统非法关机后,如果你丢失了一些文件,在这里能找回来用来 存放fsck过程中部分修复的文件的
lost+found:几乎每个被格式化过的Linux分区都会有,意外后找回的文件一般在这里面。 这个目录是储存发生意外后丢失的文件的。只有root用户才能打开
drwxrwxr-x 6 root root 4096 Feb 23 19:24 application
drwxr-xr-x 25 root root 660 Jul 8 17:00 run # 存放程序运行后所产生的pid文件
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv # 物理设备产生的一些文件
dr-xr-xr-x 13 root root 0 Feb 16 01:22 sys # 硬件设备的驱动程序信息
三、常用的文件管理命令
- base shell对文件进行管理
1、创建
2、复制
3、删除
4、移动
5、查看
6、编辑
7、压缩
8、权限操作
9、查找
1、基本命令
#1、查看当前所在的目录
[root@localhost ~]# pwd
/root
#2、切换目录
cd 绝对路径 如:cd /home/alice cd ~alice
cd 相对路径 如:cd home/alice cd ..
cd - # 返回上次目录
cd # 直接回家,等同于cd ~
cd . #保持当前目录不变
cd .. #切换到当前目录的上一级目录
# 3、浏览
ls # 默认浏览当目录
ls -l 目录 # 浏览目录下的子目录子文件名的详细信息
ls -al 目录 # 浏览的结果中包含隐藏文件
ls -dl 目录 # 查看目录
示例:
[root@handsome ~]# ll /aaa/bb.txt
-rw-r--r--. 1 root root 692 Nov 20 15:57 /aaa/bb.txt
2、tree命令(目录树的格式查看文件)
要先安装tree命令,执行yum install tree -y
tree -a 目录 # 显示所有文件,包括隐藏文件
tree -d 目录 # 只显示子目录
tree -L 1 目录 # -L 遍历目录的最大层数,-L后应该是大于0的正整数
tree -F 目录 # -F 在条目后加上文件类型的指示符号,例如会在显示出的目录后面加上左斜杠/
了解一下tree命令的其他选项
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目
录予以排除在寻找范围外。
3、touch命令用法(创建文件)
touch file1.txt // 无则创建,有则修改时间
touch /home/file10.txt // 在home目录下创建file10.txt文件
touch file{1..20} // 在当前目录创建file1,file2直到名称为file20的文件 # ..表示从1到20
touch {T,t}est.txt // 等价touch Test.txt test.txt
# 修改文件时间
创建文件我们可以通过touch命令来创建,同样的,我们也可以使用touch命令来修改文件时间。touch 的相关参数如下:
-a : 仅修改access time
-c :仅修改时间,而不建立文件
-d :后面可以接日期,也可以使用 --date="日期或时间"
-m :仅修改mtime
-t :后面可以接时间,格式为 [YYMMDDhhmm]
# 同时变更文件的修改时间和访问时间
[root@handsome aaa]# touch -d "2020-11-11 11:11:11" bb.txt
[root@handsome aaa]# stat bb.txt
File: ‘bb.txt’
Size: 692 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 34557506 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-11-11 11:11:11.000000000 +0800
Modify: 2020-11-11 11:11:11.000000000 +0800
Change: 2020-11-20 23:00:31.016267361 +0800
Birth: -
# 只变更文件的修改时间
[root@handsome aaa]# touch -m -d "2020-11-11 11:11:11" bb.txt
# 只变更文件的访问时间
[root@handsome aaa]# touch -a -d "2020-11-11 11:11:11" bb.txt
4、mkdir命令(创建目录)
mkdir dir1 在当前路径创建名称为dir1的目录
mkdir /home/dir2 /home/dir3 同时在/home目录下创建名称为dir2,dir3的目录
mkdir /home/{dir4,dir5} 同时在/home目录下创建名称为dir4,dir5的目录
mkdir -p /home/dir8/111/222 该路径下不存在的目录统一进行创建
5、stat命令(可以查看文件时间)
Linux文件有三种时间,用stat查看
例如:stat anaconda-ks.cfg
访问时间:atime,(Access)查看内容,如:用cat查看文件的最近时间
修改时间:mtime,(Modify)修改内容
改变时间:ctime,(Change)修改内容,修改权限等属性,凡是有改动都会变
6、文件内容查看命令(cat、less、more、tail、head)
cat /etc/hosts 查看hosts文件内容并显示在当前终端
more /etc/passwd 使用more命令之后,每次在屏幕上显示一屏(一页)的文件内容,并且在屏幕的尾部将会出现“—More--(n%)”的信息, 其中,n%是已经显示文件内容的百分比。按空格下一页,按b上一页,more +40 a.txt从第40行开始查看
tail -100f /var/log/messages 100f参数有表示动态查看/var/log/messages文件最后一百行内容,常用于查看服务日志
head /etc/passwd 查看/etc/passwd文件前10行内容,head默认查看文件前10行,没有f参数
head -2 /etc/passwd 查看/etc/passwd文件前2行内容
四、文本编辑
1、vi与vim区别与扩展用法
vi不显示高亮颜色语法
vim显示高亮颜色语法。
其他功能没有什么区别。
默认vi是已经安装的 , vim需要通过yum install vim -y 安装
2、vi编辑器的操作模式
命令行模式:在编辑模式下按下ESC键返回命令行模式。
vi的默认模式。在这一模式中,所有的输入被解释成vi命令,可以执行修改、复制、移动、粘贴和删除正文等命令,也可以进行移动光标、搜索字符串和退出vi的操作等。
##编辑/插入模式:输入a、i、o之一
在编辑模式中,可以往一个文件中输入正文。在这一模式下,输入的每一个字符都被vi编辑器解释为输入的正文。使用ESC键返回命令行模式。
a:进入插入模式并在光标之后进行添加。
i:进入插入模式并在光标之前进行插入。
o:进入插入模式并在当前(光标所在)行之下开启新的一行。
##扩展/末行模式:输入冒号:
在一些UNIX系统上也叫最后一行模式。在这一模式下,可以使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等。要进入最后一行模式,需要在命令行模式中输入冒号(:),冒号这一操作将把光标移到屏幕的最后一行。
3、在vi编辑器中光标的移动
$ 光标移动到当前行的几位
0 光标移动到当前行的行首
G 光标移动到文末
gg 光标移动到文首
nG n为数字,输入数字+G表示移动到第n行
H 光标移动到当前屏幕第一行行首
M 光标移动到当前屏幕中间行行首
L 光标移动到当前屏幕末行行首
4、vi编辑器中复制删除操作
dd 删除光标所在的行
ndd 其中n为数字,键入数字+dd表示删除当前行开始的n行
yy 复制光标所在的行
nyy 其中n为数字,复制光标所在位置开始的共n行
p 将已复制的内容粘贴到光标下一行
P 将已复制的内容粘贴到光标上一行
u 在未退出当前vi编辑器的前提下,恢复上一次的操作
5、末行模式下的操作(编辑模式下按esc键)
:w 保存当前内容
:q 退出当前编辑
:w! 强制保存
:q! 强制退出
6、设置环境(临时设置)
:set nu 显示行号
:set ic 不区分大小写
:set nonu 取消行号
:set noic 取消不区分大小写设置
7、echo命令(将输出内容添加到文本中)
echo "123" > 1.txt # 将文本内容123覆盖到1.txt文档中,该方式会删除文本中原内容
echo "456" >> 1.txt # 将文本内容456追加方式添加到1.txt文档中,该方式不会删除原文档内容
五、文件管理之打包压缩
1、tar命令(打包压缩格式为tar.gz)
命令用法:
打包压缩:(tar -czvf 生成文件名tar.gz格式 需要打包的目录或文件)
tar -czvf 1.tar.gz 1/ #将当前目录下名称为1的目录打包为1.tar.gz文件
解压:(tar -xvf 要解压的文件)
tar -xvf 1.tar.gz 将1.tar.gz压缩包解压到当前目录
tar -xvf 1.tar.gz -C /usr/ 将1.tar.gz解压到/usr/目录下
2、zip、unzip命令(压缩格式为.zip文件)
zip、unzip软件包需要安装,安装命令为 yum install zip unzip -y
命令用法:
打包压缩:zip -r 生成文件名.zip格式 需要打包的文件或目录
zip -r 1.zip 1/ 将当前目录下名称为1的目录递归压缩为1.zip压缩包
解压:unzip zip文件
unzip 1.zip 将1.zip压缩包解压到当前目录下
unzip 1.zip -d /usr/ 将1.zip压缩包解压到/usr/目录下
六、扩展命令,查看系统状态以及服务状态
1、netstat命令
(如果版本没有netstat,先安装:yum install net-tools -y)
netstat 查看当前系统所有启动服务占用的端口信息
netstat -tulnp |grep sshd 查看sshd服务占用端口信息
2、ps命令
ps axu 查看当前系统所有启动服务的进程信息
ps axu|grep sshd 查看sshd服务的进程信息
3、df命令
df 查看服务器磁盘信息(默认以字节单位显示)
df -Th 查看服务器磁盘信息(以MB单位显示)
4、free命令
free 查看服务器内存使用信息(默认以字节单位显示)
free -m 查看服务器内存信息(以MB单位显示)
5、lsof命令(需要安装)
lsof 查看当前系统所有文件占用信息
lsof -i:22 查看当前22端口sshd服务的占用信息 (lsof -i 需要root用户的权限来执行)
6、top命令
top 查看当前系统CPU、内存信息以及占用率等信息