[Linux文件管理、配置文件目录、vim编辑器]

[Linux文件管理、配置文件目录、vim编辑器]

**Linux ** 系统的单根⽬录结构

linux与windows的⽬录结构对⽐

123

绝对路径与相对路径

⼀切皆⽂件的设计思想

⽂件的时间

ls -l ⽂件名 仅看的是⽂件的修改时间
Linux⽂件有
三种时间,⽤stat查看
    
例如:stat anaconda-ks.cfg
    
访问时间:atime,查看内容,⽤cat检测
修改时间:mtime,修改内容
改变时间:ctime,修改内容,修改权限等属性,凡是有改动都会变

⽂件的扩展名

aaaa

Linux⽂件是没有扩展名!!!

// ⽅法⼀:
ls -l ⽂件名 //看第⼀个字符

- 普通⽂件(⽂本⽂件,⼆进制,压缩⽂件,电影,图⽚。。。),例如:/bin/ls

d ⽬录⽂件(蓝⾊),例如/home/ b 设备⽂件(块设备)存储设备硬盘,U盘,例如:/dev/sda

c 设备⽂件(字符设备)打印机,例如:终端/dev/tty1

s 套接字⽂件,例如:/run/rpcbind.sock

p 管道⽂件,例如:/run/systemd/initctl/fifo

l 链接⽂件(淡蓝⾊),例如:/bin

ps:通过颜⾊判断⽂件的类型是错误的!!!
    
// ⽅法⼆:
[root@xxx ~]# file /etc/grub.conf

配置文件目录

[root@aliyun ~]# ls -l / # /是所有linux操作系统的顶点⽬录,不像windows,每个分区都有⼀个顶点
⽬录
total 64

# 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 # 硬件设备的驱动程序信息

⽂件管理之:基本命令

#1、查看当前所在的⽬录
[root@localhost ~]# pwd
/root


#2、切换⽬录
cd 绝对路径 如:cd /home/alice cd ~alice
cd 相对路径 如:cd home/alice cd ..
cd - # 返回上次⽬录 
cd # 直接回家,等同于cd ~
cd . #保持当前⽬录不变
cd .. #切换到当前⽬录的上⼀级⽬录


#3、查看⽬录树:需要先安装tree命令,执⾏yum install tree -y
tree -a ⽬录 # 显示所有⽂件,包括隐藏⽂件
tree -d ⽬录 # 只显示⼦⽬录
tree -L 1 ⽬录 # -L 遍历⽬录的最⼤层数,-L后应该是⼤于0的正整数
tree -F ⽬录 # -F 在条⽬后加上⽂件类型的指示符号,例如会在显示出的⽬录后⾯加上左斜杠/ [root@localhost ~]# tree /a 
/a
├── b │ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
├── bb
│ ├── a.txt
│ ├── b.txt
│ └── c.txt
└── bbbb
了解⼀下tree命令其他选项
-a 显示所有⽂件和⽬录。
-A 使⽤ASNI绘图字符显示树状图⽽⾮以ASCII字符组合。
-C 在⽂件和⽬录清单加上⾊彩,便于区分各种类型。
-d 显示⽬录名称⽽⾮内容。
-D 列出⽂件或⽬录的更改时间。
-f 在每个⽂件或⽬录之前,显示完整的相对路径名称。
-F 在执⾏⽂件,⽬录,Socket,符号连接,管道名称名称,各⾃加上"*","/","=","@","|"号。
-g 列出⽂件或⽬录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出⽂件或⽬录名称。
-I 不显示符合范本样式的⽂件或⽬录名称。
-l 如遇到性质为符号连接的⽬录,直接列出该连接所指向的原始⽬录。
-n 不在⽂件和⽬录清单加上⾊彩。
-N 直接列出⽂件和⽬录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的⽂件或⽬录名称。
-q ⽤"?"号取代控制字符,列出⽂件和⽬录名称。
-s 列出⽂件或⽬录⼤⼩。
-t ⽤⽂件和⽬录的更改时间排序。
-u 列出⽂件或⽬录的拥有者名称,没有对应的名称时,则显示⽤户识别码。
-x 将范围局限在现⾏的⽂件系统中,若指定⽬录下的某些⼦⽬录,其存放于另⼀个⽂件系统上,则将该⼦⽬录予
以排除在寻找范围外。


#4、浏览
ls # 默认浏览当⽬录
ls -l ⽬录 # 浏览⽬录下的⼦⽬录⼦⽂件名的详细信息
ls -al ⽬录 # 浏览的结果中包含隐藏⽂件
ls -dl ⽬录 # 查看⽬录
[root@localhost ~]# ll a.txt
-rw-r--r--. 1 root root 0 12⽉ 15 14:02 a.txt
    
    
# 各部分解析如下
-rw-r--r--. 权限,后⾯的点代表是否在selinux开启的情况下(enforcing或者permissive都属于开启)
创建的⽂件
1 硬链接个数
root 属主
root 属组
0 ⽂件⼤⼩,单位字节
12⽉ 15 14:02 ⽂件修改时间
a.txt ⽂件名字


# 权限的第⼀个为代表⽂件类型
格式 说明
- 普通⽂件(⽂本, ⼆进制, 压缩包, 图⽚, ⽇志等) 
d ⽬录⽂件
b 设备⽂件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c 设备⽂件(字符设备)打印机,终端 /dev/tty1, /dev/zero
s 套接字⽂件, 进程间通信(socket) p 管道⽂件
l 链接⽂件
注意: Linux⽂件扩展名不代表任何含义, 仅仅是为了运维⼈员便于识别

⽂件管理之:创建/复制/移动/删除

创建:

#1、=============创建⽂件:touch 
touch file1.txt //⽆则创建,有则修改时间
touch /home/file10.txt
touch file{1..20}
touch Ego{n,N}.txt //等价touch Egon.txt EgoN.txt
touch -t 2011111111 2018.rmvb


修改⽂件时间 语法:
-t STAMP
 use [[CC]YY]MMDDhhmm[.ss] instead of current time
 
了解⽂件的三个时间参数:https://www.cnblogs.com/linhaifeng/articles/13324247.html


#2、=============创建⽬录:mkdir 
mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -v /home/{dir6,dir7}
 mkdir: 已创建⽬录 “/home/dir6”
 mkdir: 已创建⽬录 “/home/dir7”
mkdir -p /home/dir8/111/222 //包括其⽗⺟的创建

复制:

#1、=============复制:cp

cp 源 ⽬标
cp -v install.log /home/dir1
cp -v install.log /home/dir1/aaa.txt
cp -r /etc /home/dir1
cp install.log /home/dir2
cp anaconda-ks.cfg !$
cp anaconda-ks.cfg /home/dir2
cp -r /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf
/etc/hosts .
cp -rv /etc /tmp
\cp -rv /etc /tmp

扩展⽤法:
cp -rfv /etc/hosts{,.old}
cp -rvf /etc/sysconfig/network-scripts/ifcfg-eth0{,.old}

关于-f参数的⼀个实验
[root@aliyum ~]# echo "1111" > /opt/a.txt
[root@aliyum ~]# echo "2222" > /t2/a.txt
[root@aliyum ~]# [root@aliyum ~]# chmod o=wx /t2
[root@aliyum ~]# chmod o=- /t2/a.txt
[root@aliyum ~]# [root@aliyum ~]# ll -d /t2
drwxr-x-wx 2 root root 4096 Oct 20 00:07 /t2
[root@aliyum ~]# ll /t2/a.txt
-rw-r----- 1 root root 5 Oct 20 00:07 /t2/a.txt
[root@aliyum ~]# [root@aliyum ~]# su - xxx
Last login: Tue Oct 20 00:05:43 CST 2020 on pts/2 [xxx@aliyum ~]$ cp /opt/a.txt /t2/a.txt # 失败
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$ \cp /opt/a.txt /t2/a.txt # 失败
cp: cannot create regular file ‘/t2/a.txt’: Permission denied
[xxx@aliyum ~]$ [xxx@aliyum ~]$ [xxx@aliyum ~]$ cp -f /opt/a.txt /t2/a.txt # 成功
[xxx@aliyum ~]$ exit
logout
[root@aliyum ~]# cat /t2/a.txt
1111
[root@aliyum ~]#
========================================================
⼩知识:root⽤户使⽤cp (默认有⼀个别名 alias cp='cp -i') -i 显示提示信息(是否覆盖)
1. /bin/cp -rf /etc /tmp
2. # unalias cp 
 # cp -rf /etc /tmp 
3. # \cp -rf /etc /tmp
4.-f 参数是强制复制,⽐如你在A⽂件夹⾥⾯有个⽂件名叫B,然后你把C⽂件夹⾥⾯的另⼀个⽂件名叫B的复制到
A⾥⾯,这个时候会照成冲突,然后会提示你要不要继续复制.加上-f 就不会提示你了.
你输⼊-f 还是会提示你的原因是
-------------------------------------------------------------
有的系统在安装的时候,cp - i 的 alias 就是 cp
也就是说你在执⾏cp的时候,其实是执⾏的cp -i
取消掉cp的alias就好了
==========================================
解决办法
unalias cp
========================================================

移动与删除:

#1、=============复制:mv
mv 源 ⽬标
# mv file2 /home/dir3 将file2移动到/home/dir3⾥
# mv file4 file5 将file4重命名为file5,当前位置⾥的移动就是重命名
#2、=============复制:rm
示例:删除/home/dir1 
# cd /home
# rm -rf dir1 
-r 递归
-f force强制
-v 详细过程

vim编辑器

什么是vim

可以理解为windows下⾯的⽂本编辑器,⽐如记事本,⽐如word⽂档。
vi编辑器通常被简称为vi,⽽vi⼜是visual editor的简称。它在Linux上的地位就像Edit程序在DOS上⼀样。
它可以执⾏输出、删除、查找、替换、块操作等众多⽂本操作,⽽且⽤户可以根据⾃⼰的需要对其进⾏定制,这是
其他编辑程序所没有的。
 
vi 编辑器并不是⼀个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进⾏编排,它只是⼀
个⽂本编辑程序。没有菜单,只有命令,且命令繁多。

vi编辑器的操作模式

图片

#1、命令⾏模式:在编辑模式下按下ESC键返回命令⾏模式。
vi的默认模式。在这⼀模式中,所有的输⼊被解释成vi命令,可以执⾏修改、复制、移动、粘贴和删除正⽂等命令,也可以进⾏移动光标、搜索字符串和退出vi的操作等。


#2、编辑/插⼊模式:输⼊a、i、o之⼀
在编辑模式中,可以往⼀个⽂件中输⼊正⽂。在这⼀模式下,输⼊的每⼀个字符都被vi编辑器解释为输⼊的正⽂。
使⽤ESC键返回命令⾏模式。
a:进⼊插⼊模式并在光标之后进⾏添加。
i:进⼊插⼊模式并在光标之前进⾏插⼊。
o:进⼊插⼊模式并在当前(光标所在)⾏之下开启新的⼀⾏。


#3、扩展/末⾏模式:输⼊冒号:
在⼀些UNIX系统上也叫最后⼀⾏模式。在这⼀模式下,可以使⽤⼀些⾼级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等。要进⼊最后⼀⾏模式,需要在命令⾏模式中输⼊冒号(:),冒号这⼀操作将把光标移到屏幕的最后⼀⾏。

vi与vim之间的区别

vim是vi的升级版
学习一种即可  都一样~

vi\vim编辑器常用功能

写入
	a : 进入插入模式,并在光标之后进行插入
	i : 进入插入模式,并在光标之前进行插入
	o : 进入插入模式,并在光标所在行开启下一行
查找
	在命令行模式下按下键盘上的/,然后输入要查询的内容,搜索到内容之后,光标自动定位并设置颜色。

删除
	1、进入插入模式,像修改文本一样去删除文件。
	2、连续按d键两次,删除一行内容
	3、先按一个数字n,然后按d键两次,向下删除n行

复制
	1、连续按y键两次,复制当前光标所在行,p键粘贴
	2、先按一个数字n,然后按y键两次从光标所在行向下复制n行,p键粘贴

保存
	首先进入末行模式
	w : 保存
	q : 退出(!强制退出,退出之后未保存内容丢失)

补充:
	x : 删除光标包含的内容
	u : 返回上一步,只在同一次编辑中有效
	U :还原上一步
	$ : 光标运行到当前行的行尾
	0 : 光标运行到当前行的行首
	G :光标移动到末行的行首
	gg: 光标移动到首行的行首
	H :运行第一行的行首
	M :中间行的行首
	L :最后一行的行首

可视块:
	ctrl + v: 选择你要修改的内容,
		删除:x
		编辑:shift + i(退出可视块编辑模式按ESC键,等一会才会同步修改内容)
上一篇:linux cp使用注意事项


下一篇:static_cast转换(const char *cp)的思考