2、linux中的文件类型和文件系统层次结构
2.1查看目录下的文件和文件类型
命令格式:主命令 选项 参数(操作对象)
命令分为两类:
由shell程序自带的命令:内置命令(builtin)
有独立的可执行程序文件,文件名即命令名:外部命令
选项:指定命令的运行特性,指明要运行命令中的哪一个功能代码
选项有两种表现形式 :
短选项:例如:-l,-d,如果同一命令同时使用多个短选项,多数可合并

注意:有些命令的选项没有"-"
长选项:例如--help,--human-readable
注意:有些选项可以带参数,有些选项可以不带参数
参数:命令的作用对象,即命令对什么生效
注意:不同的命令的参数不同;有些命令可同时带多个参数,多个参数之间以空白字符分隔
查看目录下的文件:ls(list)
[root@hh ~]# od /usr/bin/passwd //以八进制查看信息
[root@hh ~]# cat /etc/x2-release //只能查看字符文件
-rw-------. 1 root root 1904 Mar 16 02:11 initial-setup-ks.cfg
- |
文件类型 |
rw------- |
文件权限(三类人) |
. |
访问控制列表 |
1 |
硬链接次数 |
root |
文件的所属者 |
root |
文件的所属组 |
1811 |
文件的大小(字节) |
Mar 16 11:10 |
文件的时间 --最后一次改变时间 (访问时间,修改时间,改变时间 ) |
anaconda-ks.cfg |
文件名 |
命令 |
作用 |
例子 |
ls -l ll(缩写) |
以长列表方式列出 |
[root@hh ~]# ls -l total 8 -rw-------. 1 root root 1811 Mar 16 11:10 anaconda-ks.cfg -rw-------. 1 root root 1904 Mar 16 02:11 initial-setup-ks.cfg |
Ls -r |
逆序列出 |
[root@hh ~]# ls -r initial-setup-ks.cfg anaconda-ks.cfg [root@hh ~]# ls anaconda-ks.cfg initial-setup-ks.cfg |
ls -d |
查看当前目录 |
[root@hh ~]# ls -d . |
ls -ld |
长列表列出当前目录的详细信息 |
[root@hh ~]# ls -ld dr-xr-x---. 5 root root 4096 Mar 16 22:36 . |
ls -lh |
显示目录或文件大小 |
[root@hh ~]# ls -lh total 8.0K -rw-------. 1 root root 1.8K Mar 16 11:10 anaconda-ks.cfg -rw-------. 1 root root 1.9K Mar 16 02:11 initial-setup-ks.cfg |
ls -a |
列出隐藏文件,包括.和.. |
[root@hh ~]# ls -a . .bash_history .bashrc .cshrc .tcshrc .xauthmal3Hx .xauthvn5fAU .. .bash_logout .cache .dbus .viminfo .Xauthority anaconda-ks.cfg .bash_profile .config initial-setup-ks.cfg .xauthEtl3mO .xauthvgvsCw |
ls -A |
列出隐藏文件,不包括.和.. |
[root@hh ~]# ls -A anaconda-ks.cfg .bash_profile .config initial-setup-ks.cfg .xauthEtl3mO .xauthvgvsCw .bash_history .bashrc .cshrc .tcshrc .xauthmal3Hx .xauthvn5fAU .bash_logout .cache .dbus .viminfo .Xauthority |
Ls -i |
显示文件索引节点号(inode) |
[root@hh ~]# ls -i 39242608 anaconda-ks.cfg 39242617 initial-setup-ks.cfg |
linux的文件类型
- |
普通文件,类似于Windows的记事本 |
d |
目录文件,类似于文件夹 |
c |
字符设备文件,串行端口设备,顺序读写,键盘 |
b |
块设备文件,可供存储的接口设备,随机读写,硬盘 |
p |
管道文件,用于进程间的通信 |
s |
套接字文件,通常用于网络上的通信。可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行数据通信 |
l |
link,链接文件 在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode。 |
链接类型
软链接 (快捷方式) |
创建链接文件: ln -s 原文件 链接文件 |
又叫符号链接,和原文件不是一个文件 例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号链接也就都被破坏了。符号链接记录的是目标的path。符号链接可以跨越文件系统,也可以为目录建立。软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。 |
硬链接 |
创建硬链接: ln 原文件 新文件 |
只能引用同一文件系统中的文件 它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接记录的是目标的inode。 |
2.2linux的文件系统层级结构
FHS:filesystem hierarchy standard文件系统层级标准,定义了在类Unix系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置于哪个目录下。
可执行文件:指的是可以由操作系统进行加载执行的文件
FHS采用树形结构组织文件。FHS文件系统层级图
linux里面有哪些目录
/ |
顶级目录 |
根目录,通常不在这里存储文件 |
/bin |
软连接 二进制数据文件,普通用户和root都可执行的文件 |
可执行文件,ls,cd |
/sbin |
软连接 二进制数据文件,大部分只有root用户可以执行的文件 |
可执行文件 |
/boot |
目录文件 |
开机启动的文件,包括linux内核以及开机菜单与开机所需配置文件等 |
/dev |
目录文件 |
设备文件,任何设备与接口设备都是以文件形式存在于这个目录的 |
/root |
目录文件 |
root用户的主目录 |
/home |
目录文件 |
普通用户的主目录 |
/mnt |
目录文件 ’
|
挂载点目录 光盘必须和/下的某个目录节点建立联系才能使用,把光盘和指定的挂载点目录建立联系的过程叫做挂载。mount /dev/sr0 /mnt |
/media |
目录文件 |
媒体目录,也是挂载点目录 |
/opt |
目录文件 |
可选目录。存放第三方软件包和数据文件 |
/var |
目录文件(可变) |
可变目录,用以存放经常变化的文件,如日志文件 |
/etc |
配置文件 |
配置文件 |
/lib |
软连接 |
系统的函数库 |
/proc |
目录文件 |
该目录是一个虚拟文件系统,它放置的数据都在内存当中(是linux内核在内存中所建立的系统内核映象),proc文件系统被用于从内存读取进程的信息。 |
/run |
目录文件 |
系统运行时所需文件 |
/usr |
目录文件 |
unix software resource放置的数据为可分享的与不可变动的,unix操作系统软件资源所放置的目录,而不是用户数据 |
/srv |
目录文件 |
service的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录 |
/tmp |
目录文件(临时) |
让一般用户或者是正在执行的程序暂时放置文件的地方 |
/sys |
目录文件 |
这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要是记录与内核相关的信息 |
工作的地方只能是个目录 ,不能在文件上工作
相对路径:不是以根开始的路径
绝对路径:以根开始的路径
主目录=家目录
3、从命令行管理文件
文件命名规则
(1)不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的
(2)文件名不能超过255个字符
(3)区分大小写file File FILE fIle
(4)目录也是文件,在同一路径下,两个文件不能同名
3.1创建、删除、编辑普通文件
创建普通文件:touch
格式:touch [OPTION]... FILE…
touch的两种用法:
1、如果文件已存在 更新文件的三个时间,stat可以查看文件的详细信息
|
|
||||||
2、如果文件不存在 ,则表示创建文件 |
创建多个普通文件:
|
[root@hh ~]# touch hh //创建文件“hh”
[root@hh ~]# stat hh //查看文件“hh”,比 ll 更详细的信息
[root@hh ~]# stat hh
File: ‘hh’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 39337049 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-03-17 01:55:18.315808051 -0400
Modify: 2020-03-17 01:55:18.315808051 -0400
Change: 2020-03-17 01:55:18.315808051 -0400
Birth: -
删除普通文件:rm [-f] 文件名
[root@hh ~]# rm hh{2,3}
rm: remove regular empty file ‘hh2’? y
rm: remove regular empty file ‘hh3’? Y
[root@hh ~]# rm -f hh
[root@hh ~]# rm -f hh{1..10}
[root@hh ~]# rm -f hh{1....10} //若是创建多个,中间只能有两个点
[root@hh ~]# rm hh*
rm: remove regular empty file ‘hh1’? y
rm: remove regular empty file ‘hh2’? y
向已创建的普通文件添加数据内容
1、将输出重定向到文件
将输入接到标准输出(从键盘输入,从显示器输出):echo
重定向:>
追加重定向:>>
|
[root@hh ~]# echo xuexi xuexi |
> |
[root@hh ~]# echo xuexi > hh [root@hh ~]# cat hh Xuexi |
>> |
[root@hh ~]# echo xx >> hh [root@hh ~]# cat hh xuexi xx |
2、读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕(即想把输出保存到文件中,又想在屏幕上看到内容):tee 文件
管道符|:管道符左边命令的输出作为管道符右边命令的输入。
[root@hh ~]# echo hh | tee xx
hh
[root@hh ~]# cat xx
hh
[root@hh ~]# cat /etc/redhat-release | tee hh
Red Hat Enterprise Linux Server release 7.2 (Maipo)
[root@hh ~]# cat hh
Red Hat Enterprise Linux Server release 7.2 (Maipo)
3、从shell提示符编辑文本文件
vim文本编辑器特点:
(1)所有的UNIX like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在;很多软件的编辑接口都会主动调用vi(例如crontab);
(2)vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计;
(3)vim会根据文件的扩展名或者是文件内的开头信息判断该文件的内容而自动调用该程序的语法判断式,再以颜色来显示程序代码与一般信息。程序简单,编辑速度相当快速。
一般模式:按esc键可回到命令模式
dw |
按单词删除 ,向后删除 把:分割开的当做一个单词 |
db |
按单词删除,向前删除 |
u |
撤销当前操作 |
dd |
删除当前行,=剪切 |
ctrl+r |
重做上一个操作 |
yy |
复制光标所在行 |
2 yy |
复制光标所在行和光标下一行 |
p(小写) |
粘贴到光标下一行 |
P(大写) |
粘贴到光标上一行 |
cc |
剪切 |
行数cc |
剪切当前行开始的几行 |
X |
删除光标所在位置的内容,即向后删除一个字符 |
X |
向前删除一个单词 |
w |
按单词进行向后移动光标 |
b |
按单词进行向前移动光标 |
gg |
跳转到文档首部行首 |
dgg |
删除光标至文档首部 |
G |
跳转到文档尾部行首 |
$ |
行尾 |
^ |
行首 |
n[enter] |
n为数字,光标向下移动n行 |
h |
往左按字符移动光标 |
j |
往下(后)按行移动光标 |
k |
往上(前)按行移动光标 |
l |
往右按字符移动光标 |
H |
跳转到当前屏幕输出的最上面一行 |
L |
跳转到当前屏幕输出的最下面一行 |
M |
跳转到当前屏幕输出的中间那一行 |
插入模式
i |
在光标前插入 |
I |
在光标所在行第一个非空格符前插入 |
a |
在光标后插入 |
A |
在光标所在行末尾插入 |
s |
删除光标所在位置字符并插入 |
S |
删除光标所在行并插入 |
o |
在光标所在行下一行插入 |
O |
在光标所在行上一行插入 |
命令行模式(末行模式)
:wq |
保存退出 |
:q |
退出(未修改文件内容才可以退出) |
:wq! |
强制保存退出 |
:q! |
强制退出,不保存 |
:set nu |
显示行号 |
:set nonu |
不显示行号 |
:行号 |
跳转到指定行号 |
:3,5 d |
删除3-5行 |
:r 文件名1 |
读出文件1的内容到当前文件里 |
:%s/字符串2/字符串3 |
字符串3替换字符串2 只替换一行的第一个 |
:%s/1/2/g |
将1替换为2,全局修改 |
:w 文件名1 |
另存为文件名1 |
/word |
向下寻找一个字符串为word的字符串 |
n |
重复前一个查找的操作 |
N |
反向进行前一个查找的操作 |
?word |
向上寻找一个字符串名称为word的字符串 |
ZZ |
若文件没有改动,则离开,,若文件已经被改动过,则保存后离开 |
去掉远程连接时的DNS域名解析
[root@hh x2]# vim /etc/ssh/sshd_config
修改: UseDNS no
重启服务:[root@hh x2]# systemctl restart sshd
搭建一个web服务器
[root@hh x2]# vim /etc/yum.repos.d/base.repo
[root@hh x2]# mount /dev/sr0 /mnt //查看虚拟机光盘镜像是否存在
mount: /dev/sr0 is write-protected, mounting read-only
[root@hh x2]# yum install httpd -y //下载包
[root@hh x2]# vim /etc/httpd/conf.d/host.conf
[root@hh x2]# systemctl stop firewalld //关闭防火墙
[root@hh x2]# setenforce 0
[root@hh x2]# systemctl restart httpd
[root@hh x2]# echo 等待逆境的风暴结束,就是在等待生命终结。---《逆商》> /var/www/html/index.html //编辑网页文本
使用vim将/etc/passwd文件内容写入/tmp/passwd文件中
(1)直接进入/tem/passwd文件,在命令模式下输入":r /etc/passwd”,回车,文件直接被写入。
将/etc/shadow文件内容的第一行和最后一行内容写入/tmp/shadow文件中
(1)首先进入/etc/shadow文件,进入插入模式,将光标放在第一行,按“yy”进行复制,退出文件,进入/tmp/shadow文件,进入插入模式,按“p”进行粘贴,复制粘贴最后一行同理。
将/tmp/passwd和/tmp/shadow文件的内容写入普通用户家目录下的user文件中
(1)进入/hoom/user 文件,进入命令模式,输入“:r /tmp/passwd”,回车再次输入“:r /tmp/shadow”,回车
vim三模式之间的关系,切换