1、描述linux发行版本的系统目录名称规则及用途
文件系统结构
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置文件系统结构
/usr: universal shared, read-only data
bin:保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin,sbin, lib, lib64,etc, share
/var:variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储
/proc:用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置文件系统结构
文件命名规则:
1) 文件名最长225个字节;
2) 包含路径在内的文件名最长4095字节;
3) 蓝色—>目录绿色—>可执行文件红色—>压缩文件浅蓝色—>链接文件灰色—>其他文件
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
4) 除了“/”和“null”不能做文件名,其他字符均可做文件名;
5) 区分大小写;标准Linux文件系统(如ext4),文件名称大小写敏感例如:MAIL,Mail,mail, mAiL
6) 以“.”开头的文件为隐藏文件
2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
linux 中数据分为两种:一种是表示文件存储大小的数据,一种是表示描述文件属性,特征的数据,称为元数据。
元数据信息包含:
File:文件名
Size:文件大小(单位:B)
Blocks:文件所占块个数
IO Block:每个数据块的大小(单位:B)
regular file:普通文件(此处显示文件的类型)
Inode:文件的Inode号,文件的索引节点号
Links:硬链接次数
Access:权限
Uid:(属主id/属主名)
Gid:(属组id/属组名)
Context:文件所在的环境
Access:最近访问时间access time (atime)
Modify:数据改动时间modification time (mtime)
Change:元数据改动时间status time (ctime)
Creat/Birth:文件创建时间
查看元数据命令stat
[root@bogon ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1956 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 201326658 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2020-05-29 23:27:49.082000227 +0800
Modify: 2020-05-29 23:26:49.781162156 +0800
Change: 2020-05-29 23:26:49.781162156 +0800
Birth: -
修改文件的时间戳信息可以利用 touch 命令
touch 是一个外部命令,如果文件存在则修改此文件的时间并且文件内容不变保留原来数据,若不存在则创建文件,因此,利用 touch 可以修改文件的时间戳信息。
[root@bogon ~]# type touch
touch is hashed (/usr/bin/touch)
[root@bogon ~]# touch anaconda-ks.cfg
[root@bogon ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1956 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 201326658 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2020-06-21 16:23:52.294997236 +0800
Modify: 2020-06-21 16:23:52.294997236 +0800
Change: 2020-06-21 16:23:52.294997236 +0800
Birth: -
3、总结软链接和硬链接的区别。并用实际操作说明。
硬链接
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上一个物理文件
每个目录引用相同的inode号
创建时链接数递增
删除文件时:
rm命令递减计数的链接
文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
软链接
一个符号链接指向另一个文件
ls -l的显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行
可以跨分区
指向的是另一个文件的路径;
其大小为指向的路径字符串的长度;
不增加或减少目标文件inode的引用计数
4、linux的文件管理类命令都有哪些,其常用的使用方法及相关实例演示。
ls命令
ls是最常见的目录操作命令,主要作用是显示目录下的内容。这个命令的基本信息如下:
●命令名称:ls。
●英文原意:list。
●所在路径:/bin/ls。
●执行权限:所有用户。
●功能描述:显示目录下的内容。
对命令的基本信息进行说明:英文原意有助于理解和记忆命令;执行权限是命令只能被超级用户执行,还是可以被所有用户执行;功能描述指的是这个命令的基本作用。
命令格式
常见用法
-a
选项-a选项中的a是all的意思,也就是显示隐藏文件。
加入“-a”选项后,显示出来的文件明显变多了。而多出来的这些文件都有一个共同的特性,就是以“.”开头。
在Linux中以“.”开头的文件是隐藏文件,只有通过“-a”选项才能查看。
隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!
“-l”选项
“-l”选项用于显示文件的详细信息 那么“-l”选项显示的这7列分别是什么含义?
●第一列:权限。
●第二列:引用计数。
文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
●第三列:所有者,
也就是这个文件属于哪个用户。默认所有者是文件的建立用户
●第四列:所属组。
默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
●第五列:大小。
默认单位是字节。
●第六列:文件修改时间。
文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
●第七列:文件名。
“-d”选项
如果我们想查看某个目录的详细信息
这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息。如果想显示目录本身的信息,就必须加入“-d”选项。
“-h”选项
“ls -l”显示的文件大小是字节,但是我们更加习惯的是千字节用KB显示,兆字节用MB显示,而“-h”选项就是按照人们习惯的单位显示文件大小的.
“-i”选项
每个文件都有一个被称作inode(i节点)的隐藏属性,可以看成系统搜索这个文件的ID,而“-i”选项就是用来查看文件的inode号的,例如:
从理论上来说,每个文件的inode号都是不一样的,当然也有例外(如硬链接)
cd命令
cd是切换所在目录的命令,这个命令的基本信息如下。●
命令名称:cd。
●英文原意:change directory。●
所在路径:Shell内置命令。
●执行权限:所有用户。
●功能描述:切换所在目录。
Linux的命令按照来源方式分为两种:Shell内置命令和外部命令。
所谓Shell内置命令,就是Shell自带的命令,这些命令是没有执行文件的;
而外部命令就是由程序员单独开发的,是外来命令,所以会有命令的执行文件。
Linux中的绝大多数命令是外部命令,而cd命令是一个典型的Shell内置命令,所以cd命令没有执行文件所在路径。
命令格式
cd命令是一个非常简单的命令,仅有的两个选项-P和-L的作用非常有限,很少使用。-
P (大写)是指如果切换的目录是软链接目录,则进入其原始的物理目录,而不是进入软链接目录;
-L(大写)是指如果切换的目录是软链接目录,则直接进入软链接目录。
常见用法
cd命令切换目录只需在命令后加目录名称即可。
通过命令提示符,我们可以确定当前所在目录已经切换。
简化用法cd命令可以识别一些特殊符号,用于快速切换所在目录,
“cd ~”命令可以快速回到用户的家目录,cd命令直接按回车键也是快速切换到家目录。
绝对路径和相对路径
cd命令本身不难,但是这里有两个非常重要的概念,就是绝对路径和相对路径。
初学者由于对字符界面不熟悉,所以有大量的错误都是因为对这两个路径没有搞明白,比如进错了目录、打开不了文件、打开的文件和系统文件不一致等。
我们先要弄明白什么是绝对、什么又是相对
但在Linux的路径中是有绝对路径的,那是因为Linux有最高目录,也就是根目录。如果路径是从根目录开始,一级一级指定的,那使用的就是绝对路径。
这些切换目录的方法使用的就是绝对路径。
谓相对路径,就是只从当前所在目录开始,切换目录
虽然绝对路径输入更加烦琐,但是更准确,报错的可能性也更小。对初学者而言,建议大家使用绝对路径。
mkdir命令
mkdir是创建目录的命令
●命令名称:mkdir。
●英文原意:make directories。
●所在路径:/bin/mkdir。
●执行权限:所有用户。
●功能描述:创建空目录。
命令格式
mkdir也是一个非常简单的命令,其主要作用就是新建一个空目录。
常见用法
建立目录
我们建立一个名为cangls的目录,通过ls命令可以查看到这个目录已经建立。注意:我们在建立目录的时候使用的是相对路径,所以这个目录被建立到当前目录下。
递归建立目录
mkdir默认只能在已经存在的目录中建立新目录。而如果需要建立一系列的新目录,则需要加入“-p”选项,递归建立才可以。
所谓的递归建立,就是一级一级地建立目录。
rmdir命令
既然有建立目录的命令,就一定会有删除目录的命令rmdir。
●命令名称:rmdir。
●英文原意:remove empty directories。
●所在路径:/bin/rmdir。
●执行权限:所有用户。
●功能描述:删除空目录。
命令格式
常见用法
命令后面加目录名称即可。既然可以递归建立目录,当然也可以递归删除目录
但rmdir命令的作用十分有限,因为只能删除空目录,所以一旦目录中有内容,就会报错
这个命令比较“笨”,所以我们不太常用。后续我们不论删除的是文件还是目录,都会使用rm命令
tree命令
tree命令以树形结构显示目录下的文件
●命令名称:tree。
●英文原意:list contents of directories in a tree-like format。
●所在路径:/usr/bin/tree。
●执行权限:所有用户。
●功能描述:显示目录树。
tree命令非常简单,用法也比较单一,就是显示目录树
文件操作命令
touch命令
touch的意思是触摸,如果文件不存在,则会建立空文件;如果文件已经存在,则会修改文件的时间戳(访问时间、数据修改时间、状态修改时间都会改变)。千万不要把touch命令当成新建文件的命令,牢牢记住这是触摸的意思。
●命令名称:touch。
●英文原意:change file timestamps。
●所在路径:/bin/touch。
●执行权限:所有用户。
●功能描述:修改文件的时间戳。
命令格式
Linux中的每个文件都有三个时间,分别是访问时间(Access Time)、数据修改时间(Modify Time)和状态修改时间(Change Time)。
这三个时间可以通过stat命令来进行查看。
touch命令只能手工指定是只修改访问时间,还是只修改数据修改时间,而不能指定只修改状态修改时间。因为不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,所以状态修改时间会随之改变。
在Linux中,文件没有创建时间
常见用法
stat命令
在Linux中,文件有访问时间、数据修改时间、状态修改时间这三个时间,而没有创建时间。stat是查看文件详细信息的命令,而且可以看到文件的这三个时间
●命令名称:stat。
●英文原意:display file or file system status。
●所在路径:/usr/bin/stat。
●执行权限:所有用户。
●功能描述:显示文件或文件系统的详细信息。
命令格式
常见用法
查看文件的详细信息
查看文件系统信息
如果使用“-f”选项,就不再是查看指定文件的信息,而是查看这个文件所在文件系统的信息
三种时间的含义
查看系统当前时间
再查看bols文件的三种时间,可以看到,和当前时间是有差别的
而如果用cat命令读取一下这个文件,就会发现文件的访问时间(Access Time)变成了cat命令的执行时间
而如果用echo命令向文件中写入点数据,那么文件的数据修改时间(Modify Time)就会发生改变。但是文件数据改变了,系统会认为文件的状态也会改变,所以状态修改时间(Change Time)也会随之改变
而如果只修改文件的状态(比如改变文件的所有者),而不修改文件的数据,则只会更改状态修改时间(ChangeTime)
如果用touch命令再次触摸这个文件,则这个文件的三个时间都会改变。
注意:centos8版本中 access时间不会自动更新 更新的判断标准变更为是否比系统时间更早 (需要看老王的视频在确定一下)
cat命令
cat命令用来查看文件内容。
●命令名称:cat。
●英文原意:concatenate files and print on the standard output。
●所在路径:/bin/cat。
●执行权限:所有用户。
●功能描述:合并文件并打印输出到标准输出。
命令格式
常见用法
cat命令用于查看文件内容,不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了。不过Linux可以使用“PgUp+上箭头”向上翻页,但是这种翻页是有极限的,如果文件足够长,那么还是无法看全文件的内容。所以cat命令适合查看不太大的文件。当然,在Linux中是可以使用其他的命令或方法来查看大文件的,我们以后再来学习。cat命令本身非常简单,我们可以直接查看文件的内容。
而如果使用“-n”选项,则会显示行号。
如果使用“-A”选项,则相当于使用了“-vET”选项,可以查看文本中的所有隐藏符号,包括回车符($)、Tab键(^I)等。
more命令
如果文件过大,则cat命令会有心无力,这时more命令的作用更加明显。more是分屏显示文件的命令。
●命令名称:more。
●英文原意:file perusal filter for crt viewin。
●所在路径:/bin/more。
●执行权限:所有用户。
●功能描述:分屏显示文件内容。
命令格式
more命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。
●空格键:向下翻页。
●b:向上翻页。
●回车键:向下滚动一行。
●/字符串:搜索指定的字符串。
●q:退出。
常见用法
less命令
less命令和more命令类似,只是more是分屏显示命令,而less是分行显示命令。
●命令名称:less。
●英文原意:opposite of more。
●所在路径:/usr/bin/less。
●执行权限:所有用户。
●功能描述:分行显示文件内容。
命令格式
5、复制/etc/profile至/tmp/,用查找替换命令删除tmp/profile文件中的行首的空白字符。
[root@bogon ~]# cp /etc/profile /tmp/
[root@bogon ~]# cd /tmp
[root@bogon tmp]# ls -a
.
..
.esd-1000
.font-unix
.ICE-unix
profile
[root@bogon tmp]# cat /tmp/profile |tr -d ' '
#/etc/profile
#Systemwideenvironmentandstartupprograms,forloginsetup
#Functionsandaliasesgoin/etc/bashrc
#It'sNOTagoodideatochangethisfileunlessyouknowwhatyou
#aredoing.It'smuchbettertocreateacustom.shshellscriptin
#/etc/profile.d/tomakecustomchangestoyourenvironment,asthis
#willpreventtheneedformerginginfutureupdates.
pathmunge(){
case":${PATH}:"in
*:"$1":*)
;;
*)
if["$2"="after"];then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if[-x/usr/bin/id];then
if[-z"$EUID"];then
#kshworkaround
EUID=`/usr/bin/id-u`
UID=`/usr/bin/id-ru`
fi
USER="`/usr/bin/id-un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
#Pathmanipulation
if["$EUID"="0"];then
pathmunge/usr/sbin
pathmunge/usr/local/sbin
else
pathmunge/usr/local/sbinafter
pathmunge/usr/sbinafter
fi
HOSTNAME=`/usr/bin/hostname2>/dev/null`
HISTSIZE=1000
if["$HISTCONTROL"="ignorespace"];then
exportHISTCONTROL=ignoreboth
else
exportHISTCONTROL=ignoredups
fi
exportPATHUSERLOGNAMEMAILHOSTNAMEHISTSIZEHISTCONTROL
#Bydefault,wewantumasktogetset.Thissetsitforloginshell
#Currentthresholdforsystemreserveduid/gidsis200
#Youcouldcheckuidgidreservationvalidityin
#/usr/share/doc/setup-*/uidgidfile
if[$UID-gt199]&&["`/usr/bin/id-gn`"="`/usr/bin/id-un`"];then
umask002
else
umask022
fi
foriin/etc/profile.d/*.sh/etc/profile.d/sh.local;do
if[-r"$i"];then
if["${-#*i}"!="$-"];then
."$i"
else
."$i">/dev/null
fi
fi
done
unseti
unset-fpathmunge
6、在vim中设置tab的缩进为4个字符。
ehco set ts=4 set expandtab set autoindent .vimrc