一 文件管理
1.1 系统目录结构
# Windows: 以多根的方式组织文件 C: D:
# Linux:以单根的方式组织文件 /
##### 1.存放命令相关的目录
/bin, 普通用户使用的命令 /bin/ls, /bin/date
/sbin,管理员使用的命令 /sbin/service,poweroff,useradd…
只要看到bin路径,就应该意识到放的是可执行文件
# which 命令名
# whereis 命令名 更全
####2 存放用户相关数据的家目录,比如:windows不同的用户登陆系统显示的桌面背景不一样
/home,普通用户的家目录, 默认为/home/lqz
环境变量的东西不要删,删掉试一下
/root,超级管理员root的家目录, 普通用户无权操作
#####3.系统文件目录
/usr,相当于C:Windows
/usr/local,软件安装的目录,相当于C:Program
/usr/bin/,普通用户使用的应用程序(重要)
/usr/sbin,管理员使用的应用程序(重要)
/usr/lib,库文件Glibc 32bit
/usr/lib64,库文件Glibc 64bit
# 补充:动态链接库文件
-win上能看到 xx.dll
-linux上能看到 xx.so
-c,c++编写过后,编译后会产生两种东西
-可执行文件
-动态链接库问题
###4 启动目录
/boot 存放的系统启动相关的文件,例如:kernel,grub(引导装载程序)
linux内核+GUN软件
#### 5.配置文件目录
/etc,极其重要,后续所有服务的配置都在这个目录中
/etc/sysconfig/network-script/ifcfg-,网络配置文件
/etc/hostname,系统主机名配置文件,主机名很重要,有些特殊服务要依赖主机名,没有主机名会报错起不来;修改了要重启:reboot
/etc/resolv.conf,dns客户端配置文件,域名解析服务器,一般我们不配置,因为网卡的配置好了,会覆盖掉它,网卡的优先级高
/etc/hosts,本地域名解析配置文件,域名解析,先找自己的hosts,再去域名解析
/etc/motd :登录后显示的信息
#### 6 可变的目录与临时目录
/var,存放一些变化文件,比如/var/log/下的日志文件,登陆日志
/var/tmp,进程产生的临时文件
/tmp,系统临时目录(类似于公共厕所),谁都可以使用
# 1 查看登陆日志
cat /var/log/secure #查看登陆时间
# 2 进程产生的临时文件(360清理垃圾,就是会清理)
##### 7.设备目录文件
/dev,存放设备文件,比如硬盘,硬盘分区,光驱,等等
/dev/sd 硬盘设备
/dev/null,黑洞设备,只进不出。类似于垃圾回收站
/dev/random,生成随机数的设备
/dev/zero,能远远不断的产生数据,类似于取款机,随时随地取钱
###8.虚拟的文件系统(如对应的进程停止则/proc下对应目录则会被删除)
/proc,反映系统当前进程的实时状态 :process
PS:类似于小汽车的仪表板,能够看到汽车是否有故障,或者是否缺油了
ls /proc # 可以看到很多id号,pid号,进程号,唯一
ls 进程id号的文件夹
如果进程被关闭,id号的文件夹就没了
id号每次启动都不唯一,只有一个进程唯一,systemd 是进程号1的进程,所有进程都是基于它派生出来的
###### 9其他
#1 media:提供设备的挂载点,媒体文件
# linux 新增了盘符,需要手动挂载
# 把光盘里的数据,挂载到media目录
mount /dev/cdrom /media/
# 2 mnt:提供设备的挂载点(同上)
# 3 opt:第三方工具,第三方软件默认安装的(mysql...)
# run :下有pid,log结尾的文件
ls /run
cat sshd.pid # 进程运行的pid号,放在文件中
ps aux |grep sshd
# .lock文件的作用,锁机制
# 假设现在执行
yum install tree
# 再开一个窗口执行相同命令
yum install tree
'''
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 71 M RSS (470 MB VSZ)
Started: Tue Aug 18 00:26:31 2020 - 00:24 ago
State : Sleeping, pid: 6191
'''
cat /run/yum.pid
二 文件路径定位
# /bin, /sbin, /lib, /lib64都以软链接的形式链接到/usr/目录下
/bin –> /usr/bin
/sbin –> /usr/sbin
lib -> usr/lib
lib64 -> usr/lib64
# 路径非常重要,名字一样,单不一定是一个文件
# 相对路径: 相对于当前文件,目录的路径
# 绝对路径:从根路径下开始找
win:c d
linxu /
# . 和 ..
. 表示当前路径
.. 表示上一层
# 以后看到 . .. 都是用相对,看到 / 都是绝对
./ 相对
../ 相对
# cd操作
# cd #切换目录,例: cd /etc
# cd - #切换回上一次所在的目录
# cd ~ #切换回当前用户的家目录,注意:root和普通用户是否有所不同吗?
# cd . #代表当前目录,一般在拷贝、移动等情况下使用 cp /etc/hostname ./
# cd .. #切换回当前目录的上级目录
三 系统文件管理:创建/复制/移动/删除
3.1 文件创建
# touch file #无则创建,有则修改时间
# rm -rf fil* 把fil开头的全删除
3.2 创建目录
# 目录创建命令mkdir
# 选项:-v 显示详细信息 -p 递归创建目录
# mkdir dir1
# mkdir /home/od/dir1 /home/od/dir2
# mkdir -v /home/od/{dir3,dir4}
# mkdir -pv /home/od/dir5/dir6
# mkdir -pv /home/{od/{diu,but},boy}
3.3 以树状显示目录结构命令tree
yum install -y tree
tree 路径目录
oo
└── aa
└── bb
3.4 cp 复制
#选项: -v:详细显示命令执行的操作 -r: 递归处理目录与子目录 -p: 保留源文件或目录的属性
# cp file /tmp/file_copy
# cp name /tmp/name #不修改名称
# cp file /tmp/ #不修改名称
# cp -p file /tmp/file_p #-p保持原文件或目录的属性
# cp -r /etc/ /tmp/ #复制目录需要使用-r参数, 递归复制
# cp -rv /etc/hosts /etc/hostname /tmp #拷贝多个文件至一个目录
# cp -rv /etc/{hosts,hosts.bak}
# cp -rv /etc/hosts{,-org}
3.5 mv移动
# mv file file1 #原地移动算改名
# mv file1 /tmp/ #移动文件至tmp目录
# mv /tmp/file1 ./ #移动tmp目录的文件至当前目录
# mv dir/ /tmp/ #移动目录至/tmp目录下
# touch file{1..3}
# mv file1 file2 file3 /opt/ #移动多个文件或至同一个目录
# mkdir dir{1..3}
# mv dir1/ dir2/ dir3/ /opt #移动多个目录至同一个目录
3.6 rm删除
#选项:-r: 递归 -f: 强制删除 -v: 详细过程
# rm file.txt #删除文件, 默认rm存在alias别名,rm -i所以会提醒是否删除文件
# rm -f file.txt #删除文件, 不提醒
# rm -r dir/ #递归删除目录,会提示
# rm -rf dir/ #强制删除目录,不提醒(慎用)
#1.rm删除示例
# mkdir /home/dir10
# touch /home/dir10/{file2,file3,.file4}
# rm -f /home/dir10/ //不包括隐藏文件
# ls /home/dir10/ -a
. .. .file4
#2.rm删除示例2
# touch file{1..10}
# touch {1..10}.pdf
# rm -rf file
# rm -rf .pdf
四 系统文件管理
4.1 查看文件内容(cat less more head tail grep )
cat,tac
#------cat
# cp /etc/passwd ./pass
# cat pass #正常查看文件方式
# cat -n pass #-n显示文件有多少行
# cat -A pass #查看文件的特殊符号,比如文件中存在tab键
# tac pass
cat >> 文件名 <<EOF
内容
EOF
less more
#------less、more ,查看一部分文件内容,less可以上下翻,more只能向下翻
# less /etc/services #使用光标上下翻动,空格进行翻页,q退出
# more /etc/services #使用回车上下翻动,空格进行翻页,q退出(有百分比)
head
#------head
# head pass #查看头部内容,默认前十行
# head -n5 pass #查看头部5行,使用-n指定
# ps aux | head -5 # 只看头部5个进程
# ls -al | head -3 # 查看ls结果的头三个
tail
#------tail
# tail pass # 查看文件尾部,默认10行
# tail -20 /var/log/secure # 查看文件尾部20行
# tail -f /var/log/messages #-f动态查看文件尾部的变化
# tailf /var/log/messages #查看文件尾部的变化
# ps aux | tail -2
# tail -f 文件夹,会夯在这,看文件变化
# 别的进程,会文件进行操作
echo "lqz nb" >> lqz.txt
程序在往日志文件里写日志
grep
# /etc/passwd 存放用户的文件
#------grep过滤文件内容
# grep "^root" pass #匹配以root开头的行
# grep "bash$" pass #匹配以bash结尾的行
# grep -i "ftp" pass #忽略大小写匹配
# grep -Ei "sync$|ftp" pass #匹配文件中包含sync结尾或ftp字符串
4.2 文件管理之:联网下载文件(wget、curl)、文件上传与下载(rz、sz)
# wget
yum install wget -y
#选项: -O: 指定下载地址
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# curl
#选项: -o: 指定下载地址
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#
rzsz上传下载文件
# yum install lrzsz -y #不安装软件则无法执行该命令
# rz #只能上传文件文件上传(不能大于4g)
# sz /path/file #只能下载文件,文件夹不行
4.3 文件管理之:文件或命令查找(locate、which、whereis、find)
# 命令查找
whereis 命令名
which 命令名
# 找文件
find / -name lqz.txt # 从根路径下开始找 名字叫lqz.txt的文件
4.4 文件管理之:字符处理命令(wc)
# wc统计行号
#选项:-l显示文件行数 -c显示文件字节 -w显示文件单词
# wc -l /etc/fstab #统计/etc/fstab文件有多少行
# wc -l /etc/services #统计/etc/services 文件行号
# ls |wc -l
#cat /etc/fstab | wc -l #统计/etc/fstab文件有多少行
五 系统文件属性
#-rw-r--r--. 1 root root 35 7月 27 10:33 lqz.txt
# -rw-r--r--. # 第一个- 表示文件类型(一会讲),后面的rwx,表示权限,后面会说
# 1 # 硬链接次数
# root #文件属于哪个用户
# root # 文件属于哪个组
# 87811 #文件大小
# 7月 27 10:33 :最新修改的时间与日期
# a.jpeg ⑨:文件或目录名称
ll -d /etc/hosts /tmp /bin/ls /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
# 文件类型:
- #普通文件(文本, 二进制, 压缩, 图片, 日志等)
d #目录文件
b #设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c #设备文件(字符设备),终端 /dev/tty1, /dev/zero
s #套接字文件, 进程间通信(socket)
p #管道文件
l #链接文件
六 系统链接文件:软连接,硬链接
# 文件分
文件名 inode信息:文件类型,大小,位置,时间 文件真正存储位置block
# 软连接--->复制一份inode信息(win的快捷方式)
软链接文件会将inode指向源文件的block,当我们访问这个软链接文件时,其实访问的是源文件本身。那么当我们对一个文件创建多个软链接,其实就是多个inode指向同一个block。当我们删除软链接文件时,其实只是删除了一个inode指向,并不会对源文件源文件造成影响,但如果删除的是源文件则会造成所有软链接文件失效
# 硬连接--->只是复制了一份文件名
若一个inode号对应多个文件名,硬链接就是同一个文件使用了多个别名,共用一个inode
###### 软连接实战
#文件软链接示例
touch /root/file
ln -s /root/file /tmp/file_bak
ll /tmp/file_bak //root下file链接到/tmp下并重命名为file_bak
#目录软链接示例
mkdir /soft/nginx1.1 -p
ln -s /soft/nginx1.1/ /soft/nginx
ll /soft/nginx //查看链接指向
# redis源码安装 redis.7.11---->做个软连接 redis--->
redis.7.11 /bin
redis.6.11 /bin
redis 指向7.11--->redis/bin/xx
#软链接使用场景
1.软件升级
2.企业代码发布
3.不方便目录移动
###### 硬连接实战
#文件硬链接示例
ln /root/file /tmp/file_hard
ll /tmp/file_hard
#PS:目录不能创建硬链接,硬链接文件可以用rm命令删除
七 vim使用(使用频率非常高)
vi和vim是Linux下的一个文本编辑工具
最小化安装只有vi
vim,需要额外安装,比vi更强大一些
# 安装
yum install vim -y
# vim 操作文件,有三种模式:普通模式,编辑模式,命令模式
-vim 文件名刚进来---->普通模式-->只能复制,粘贴,翻页,剪切
-进入到编辑模式(按esc退回到普通模式):从普通模式进入:i,a,o,I,A,O-->就可以写内容了
-命令模式:之鞥呢从普通模式进入
-搜索,设置行号。。。
# 普通模式 下操作
#1.命令光标跳转
G #光标跳转至末端
gg #光标跳转至顶端
Ngg #光标跳转至当前文件内的N行
$ #光标跳转至当前光标所在行的尾部
^或者0 #光标跳转至当前光标所在行的首部
#2.文件内容较多
ctrl+f #往下翻页(行比较多)
ctrl+b #往上翻页
#3.复制与粘贴
yy #复制当前光标所在的行
5yy #复制当前光标以及光标向下4行
p(小写) #粘贴至当前光标下一行
P(大写) #粘贴至当前光标上一行
#4.删除、剪贴、撤销
dd #删除当前光标所在的行
4dd #删除当前光标所在的行以及往下的3行
dG #删除当前光标以后的所有行
D #删除当前光标及光标以后的内容
x #删除当前光标标记往后的字符
X #删除当前光标标记往前的字符
dd & p #剪贴、先删除dd(number dd),后粘贴p
u #撤销上一次的操作
#5.替换
r #替换当前光标标记的单个字符
R #进入REPLACE模式, 连续替换,ESC结束
########### 从普通模式进入编辑模式
i #进入编辑模式,光标不做任何操作
a #进入编辑模式,将当前光标往后一位
o #进入编辑模式,并在当前光标下添加一行空白内容
I #进入编辑模式,并且光标会跳转至本行的头部
A #进入编辑模式,将光标移动至本行的尾部
O #进入编辑模式,并在当前光标上添加一行空白内容
#### 命令模式,主要用于搜索, 保存, 退出文件。
#1.文件保存与退出
:q 退出当前文档(文档必须保存才能退出)
:q! 强制退出文档不会修改当前内容
:wq 先保存,在退出
:wq! 强制保存并退出
:number 跳转至对应的行号
:set nu 显示行号
:set nonu 不显示行号
#2.文件内容查找
/string #需要搜索的内容(查找)
n #按搜索到的内容依次往下进行查找
N #按搜索到的内容依次往上进行查找
#3.文件内容替换
:1,5s#sbin#test#g #替换1-5行中包含sbin的内容为test
:1,5s#sbin#test# #只替换1-5行中第一个包含sbin的内容为test
:%s#sbin#test#g #替换整个文本文件中包含sbin的替换为test
:%s#sbin#test#gc #替换内容时时提示是否需要替换