每周学习Linux遇到的问题及知识总结(02)

96 阅读6分钟

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

/var:variable data files

/proc:用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux:security enhanced linux,selinux相关的安全策略等信息的存储位置

文件名规则

  1. 长度限制

    文件名最长255个字节

    包括路径在内文件名称最长4095个字节

  2. 特殊字符限制

    除了斜杠和NULL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们

  3. 大小写敏感

    标准Linux文件系统(如ext4),文件名称区分大小写

  4. 隐藏文件

    以.开头

2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?

文件元数据

access time:查看文件的时间

modity time:修改文件的时间

change time:修改元数据的时间

links:链接数

access:文件的访问权限

size:文件的大小

inode:文件的索引节点编号

blocks:文件所占用的块数

IO blocks:硬盘上每个块的大小

修改文件的时间戳信息

见第4点的touch命令

3、总结软链接和硬链接的区别,并用实例操作说明

软链接和硬链接的区别

  1. 硬链接同一文件多个名字体现在链接数增加,inode号不增加;软链接不同文件,体现在链接数不增加,inode号增加

  2. 硬链接不能跨分区创建;软链接可以跨分区创建

  3. 硬链接不能对目录创建;软链接可以对目录创建

  4. 删除一个硬链接,其他硬链接不受影响;删除目标文件,软链接失效

  5. 文件类型不同

示例

在CentOS 7中,/root/目录下有lesson文件

1. 查看/root/lesson文件信息

ll
ls -i lesson

可以看到文件lesson本身的相关信息:普通文件,链接数为1,inode为50337224

2. 创建/root/lesson的硬链接存放在/etc/下

ln lesson /etc/lesson_hard
ll /etc/lesson_hard
ls -i /etc/lesson_hard

可以看到硬链接lesson_hard的相关信息:普通文件,链接数为2,inode为50337224

3. 创建/root/anaconda-ks.cfg的软链接存放在/etc/下

ln -s ../../root/lesson /etc/lesson_soft
ll /etc/lesson_soft
ls -i /etc/lesson_soft

可以看到软链接lesson_soft的相关信息:软链接文件,链接数为1,inode为34255327

4. 将源文件删除,观察硬链接和软链接的变化

rm lesson

可以看到硬链接的链接数减1,其他信息未变,软链接失效

4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示

touch

用途:创建空文件和刷新时间戳,默认刷新三个时间

语法:

touch [OPTION]... FILE...
	-a  改变atime和ctime
    -m  改变mtime和ctime
    -t  [[CC]yy]MMDDhhmm[.ss]  指定atime和mtime的时间戳
    -c  如果文件不存在,则不予创建

示例:

刷新文件的atime,mtime,ctime

touch /etc/issue

将文件的atime和mtime指定为2010-08-20 12:30:20

touch -t 201008201230.20 f1

cp

用途:复制文件和目录

语法:

cp [OPTION]... [-T] SOURCE DEST   一个源
cp [OPTION]... SOURCE...DIRECTORY   多个源
cp [OPTION]... -t DIRECTORY SOURCE...

	-i  覆盖前提示
    -n  不覆盖
    -in  无提示
    -ni  有提示
    -r,-R  递归复制目录及内部的所有内容
    -d  不复制原文件,只复制链接名,相当于--no-dereference --preserv=links
    -a  归档,相当于-dR --preserv=all
    --preserv[=ATTR_LIST]
    	[=ATTR_LIST]
        	mode  权限
            ownership  属主属组
            timestamp  时间戳
            links
            xattr
            ontext
            all
	-p  等同--preserv=mode,ownership,timestamp
    -v,--verbose  显示信息
    -f,--force  强制
    -u,--update  只复制源比目标更新的文件或目标不存在的文件
    --backup=numbered  目标存在,覆盖前先备份加数字后缀

cp SRC DEST

  • SRC是单个文件

    • DEST不存在

    新建DEST,并将SRC中内容填充至DEST中

    • DEST存在且为文件

    将SRC中的内容覆盖至DEST中,基于安全,建议为cp命令使用-i选项(y:确认覆盖,Enter:不覆盖)

    • DEST存在且为目录

    在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中

  • SRC是多个文件

    • DEST必须存在,且为目录

    在DEST下新建与原文件同名的文件,并将原内容复制至新文件中

  • SRC是目录(此时使用选项:-r)

    • DEST不存在

    创建指定DEST,复制SRC目录中所有文件至DEST下

    • DEST存在且为文件

    报错

    • DEST存在且为目录

    在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中

示例:

复制文件时保留时间属性

cp --preserv=timestamp /etc/fstab /data/fstab

目标存在,覆盖前先备份加数字后缀

cp --backup=numbered /etc/motd f1

备份grub2.cfg文件

cp -av grub2.cfg{,.bak}

mv

用途:移动和重命名文件

语法:

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTOR
mv [OPTION]... -t DIRECTORY SOURCE...

	-i  交互式
    -f  强制

rm

用途:删除文件或目录

语法:

rm [OPTION]... FILE...
	-i  交互式
    -f  强制删除
    -r  递归
    --no-preserve-root

示例:

删除软连接

rm -rf d1.link

删除软链接对应的目录

rm -rf d1.link/

mkdir

用途:创建目录

语法:

mkdir [OPTION]... DIRECTORY...
	-p  存在于不报错,且可自动创建所需的各目录
    -v  显示详细信息
    -m MODE  创建目录时直接指定权限

示例:

自动创建所需的各目录

mkdir -pv d1/d2/d3/d4

5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符

cp /etc/profile /tmp/
sed -i.bak '1s/^[[:space:]]//' /tmp/profile

6、在vim中设置tab缩进为4个字符

set ts=4