linux修改目录block信息,Linux系统文件目录结构功能、元数据信息、链接、文件管理命令...

一、描述Linux发行版的系统目录名称命名规则以及用途

标准Linux文件系统(如:ext4),文件名称大小写敏感,文件名最长255个字节,包括路径在内文件名称最长4095个字节,Linux的文件系统分层结构:FHS Filesystem Hlerachy Standard.

Linux 系统目录名称及功能:

/bin -> usr/bin :所有用户使用的基本命令,binary二进制文件;不能关联至独立分区,OS启动会用到的程序,centos7之后软连接到/usr/bin.

/sbin -> usr/sbin:管理类的基本命令;不能关联至独立分区,OS启动会用到的程序,centos7之后软连接到/usr/sbin.

/boot:存放系统引导文件,内核kernel文件vmlinuz,引导加载器grub,bootloader。

/dev:device,设备文件及特殊文件存储位置,比如/dev/null、/dev/tty、/dev/pts/、/dev/sd[a-z] 设备文件分为两种:快设备文件(b),字符设备文件(c)

/etc:来源于拉丁语全称etcetera,意思是等等零星杂物,主要存放各种配置文件,比如/ect/passwd

/home:普通用户加目录

/lib -> usr/lib:library,启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules),centos7之后软连接到/usr/lib.

/lib64 -> usr/lib64:存放x86_64位系统上辅助共享库文件

/media:便携式移动设备挂载点

/mnt:mount,临时文件系统挂载点

/opt:optional,第三方应用程序安装位置,类似windows的program files

/proc:文件系统是一种内核和内核模块用来向进程(process) 发送信息的机制(所以叫做/proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取有关进程的有用信息。比如:/proc/self/fd、/proc/cpuinfo

/root:管理员用户的家目录

/run:运行中的进程相关数据,通常用于存储进程pid文件

/srv:系统上运行的服务用到的数据

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

/tmp:存放临时文件数据

/usr:universal shared,read-only data,操作系统文件;全局共享的只读数据目录。

/var:variable data files,存放经常发生变化的文件,比如日志log文件。

/misc : misc device 杂项设备

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

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

[root@localhost ~]# stat ./anaconda-ks.cfg

File: ‘./anaconda-ks.cfg’

Size: 1584 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 201326670 Links: 1

Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:admin_home_t:s0

Access: 2020-12-29 15:02:41.373008092 +0800

Modify: 2020-12-19 10:33:41.376509872 +0800

Change: 2020-12-19 10:33:41.376509872 +0800

Birth: -

#各项参数解释:

File 文件名称;

Size 文件大小;

Blocks 占用的磁盘块数;

IO Block IO块大小;

regular file 这里是显示文件的类型,这是一个普通文件(文件类型-)

Device 所在设备;

Inode Inode节点号;

Links 被链接的次数;(硬链接次数)

Access (0600/-rw-------) 文件的访问权限;

Uid uid号和属主;

Gid gid号和属组;

Access: 2020-12-29 15:02:41.373008092 +0800 文件最近一次的访问时间;(atime)

Modify: 2020-12-19 10:33:41.376509872 +0800 文件的修改时间,修改文件内容(数据);(mtime)

Change: 2020-12-19 10:33:41.376509872 +0800 文件的改变时间,修改文件的元数据。(ctime)

使用touch命令修改文件时间戳信息

touch 命令可以用来创建空文件或者刷新文件的时间

格式:

touch [OPTION] ... FILE...

选项说明:

-a 仅改变atime 和 ctime

-m 仅改变mtime 和 ctime

-t 将时间修改为参数指定的日期,[[CC]YY]MMDDhhmm[.ss]

-c 如果文件已经存在,就不创建

[root@localhost ~]# touch -t 201912191111 ./anaconda-ks.cfg

[root@localhost ~]# stat ./anaconda-ks.cfg

File: ‘./anaconda-ks.cfg’

Size: 1584 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 201326670 Links: 2

Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:admin_home_t:s0

Access: 2019-12-19 11:11:00.000000000 +0800

Modify: 2019-12-19 11:11:00.000000000 +0800

Change: 2020-12-29 15:29:58.258023568 +0800

Birth: -

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

区别点

符号(symbolic)链接或软(soft)链接

硬(hard)链接

存储空间

不同的文件,类似快捷方式,文件很小

对应同一个物理文件

inode号

不同

相同

跨分区

支持

不支持

链接数

不会根据文件数量改变

随文件数量改变

文件夹

支持用文件夹做链接

只支持文件做链接

元数据

链接文件,和源文件无关

元数据完全相同

删除源文件

无法访问文件

可以访问文件

相对路径

原文件的相对路径是相对软链接的路径

相对于当前目录的路径

实例:

#创建a文件的硬链接b,和软链接文件a.link,查看inodes、权限、大小,如下:

[root@localhost data]# ln a b

[root@localhost data]# ln -s a a.link

[root@localhost data]# ll

total 8

-rw-r--r--. 2 root root 1819 Dec 29 15:57 a

lrwxrwxrwx. 1 root root 1 Dec 29 19:01 a.link -> a

-rw-r--r--. 2 root root 1819 Dec 29 15:57 b

[root@localhost data]# stat a

File: ‘a’

Size: 1819 Blocks: 8 IO Block: 4096 regular file

Device: 803h/2051d Inode: 67 Links: 2

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:etc_runtime_t:s0

Access: 2020-12-29 15:57:09.392038991 +0800

Modify: 2020-12-29 15:57:09.392038991 +0800

Change: 2020-12-29 19:01:13.588143413 +0800

Birth: -

[root@localhost data]# stat b

File: ‘b’

Size: 1819 Blocks: 8 IO Block: 4096 regular file

Device: 803h/2051d Inode: 67 Links: 2

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:etc_runtime_t:s0

Access: 2020-12-29 15:57:09.392038991 +0800

Modify: 2020-12-29 15:57:09.392038991 +0800

Change: 2020-12-29 19:01:13.588143413 +0800

Birth: -

[root@localhost data]# stat a.link

File: ‘a.link’ -> ‘a’

Size: 1 Blocks: 0 IO Block: 4096 symbolic link

Device: 803h/2051d Inode: 68 Links: 1

Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:etc_runtime_t:s0

Access: 2020-12-29 19:01:32.421143591 +0800

Modify: 2020-12-29 19:01:27.809143548 +0800

Change: 2020-12-29 19:01:27.809143548 +0800

Birth: -

#跨分区创建硬链接,系统报错

[root@localhost data]# ln /etc/passwd /data/pass

ln: failed to create hard link ‘/data/pass’ => ‘/etc/passwd’: Invalid cross-device link

#垮分区创建软链接

[root@localhost data]# ln -s /etc/passwd /data/passwd.link

[root@localhost data]# ll

lrwxrwxrwx. 1 root root 11 Dec 29 19:05 passwd.link -> /etc/passwd

#创建硬链接时,连接数会改变

[root@localhost data]# ln a c

[root@localhost data]# ln a d

[root@localhost data]# ln a e

[root@localhost data]# ll

total 20

-rw-r--r--. 5 root root 1819 Dec 29 15:57 a

-rw-r--r--. 5 root root 1819 Dec 29 15:57 b

-rw-r--r--. 5 root root 1819 Dec 29 15:57 c

-rw-r--r--. 5 root root 1819 Dec 29 15:57 d

-rw-r--r--. 5 root root 1819 Dec 29 15:57 e

#删除源文件时,软连接无法访问,硬链接可以访问

[root@localhost data]# rm -rf a

[root@localhost data]# cat a.link

cat: a.link: No such file or directory

[root@localhost data]# cat b

# /etc/profile

# System wide environment and startup programs, for login setup

# Functions and aliases go in /etc/bashrc

#相对路径,软链接原文件的相对路径是相对软链接的路径,硬链接是相对于当前目录的路径

[root@localhost data]# ln -s f1.txt dir/f1.txt.link //是相对于软链接的路径,而不是当前目录的

[root@localhost data]# ll dir/f1.txt.link

lrwxrwxrwx. 1 root root 6 Dec 29 19:32 dir/f1.txt.link -> f1.txt // 连接不存在

[root@localhost data]# ln -s ../f1.txt dir/f2.txt.link //正确的写法,相对于dir/f2.txt.link,f1.txt在他的上级目录

[root@localhost data]# ll !*

ll -s ../f1.txt dir/f2.txt.link

ls: cannot access ../f1.txt: No such file or directory

0 lrwxrwxrwx. 1 root root 9 Dec 29 19:40 dir/f2.txt.link -> ../f1.txt //链接正常

[root@localhost ~]# ln /data/f1.txt ../data/dir/f11.txt //硬链接是相对于当前目录的路径

[root@localhost ~]# ll !*

ll /data/f1.txt ../data/dir/f11.txt

-rw-r--r--. 2 root root 5 Dec 29 19:25 ../data/dir/f11.txt

-rw-r--r--. 2 root root 5 Dec 29 19:25 /data/f1.txt

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

文件目录管理类命令:cd 、ls 、mkdir、rmdir、tree、mv 、cp 、rm、cat、tail、head

cd:改变目录(change directory)

cd: usage: cd [-L|[-P [-e]]] [dir]

命令选项:

-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录

-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。

- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。

相关的环境变量:

PWD:当前目录路径

OLDPWD:上一次目录路径

使用绝对或相对路径:

[root@localhost ~]# cd /data/

[root@localhost data]#

[root@localhost data]# cd dir

[root@localhost dir]# pwd //print work directory

/data/dir

切换至父目录: cd ..

切换至当前用户主目录: cd

切换至以前的工作目录: cd -

ls : 列出当前目录的内容或指定目录

用法:ls [options] [files_or_dirs]

命令选项:

ls -a 包含隐藏文件

ls -l 显示额外的信息

ls -R 目录递归

ls -ld 目录和符号链接信息

ls -1 文件分行显示

ls –S 按从大到小排序

ls –t 按mtime排序

ls –u 配合-t选项,显示并按atime从新到旧排序

ls –U 按目录存放顺序显示

ls –X 按文件后缀排序

ls -i 显示inode

l --time=atime 查看读取文件时间

范例:

[root@localhost data]# ls -al

total 4

drwxr-xr-x. 3 root root 31 Dec 29 20:43 .

dr-xr-xr-x. 18 root root 236 Dec 19 10:33 ..

drwxr-xr-x. 3 root root 88 Dec 29 20:49 dir

-rw-r--r--. 1 root root 847 Dec 29 20:43 f1.txt

[root@localhost ~]# ls -d .* --color=auto //等同于l.,只列出隐藏文件

. .. .bash_history .bash_logout .bash_profile .bashrc .cshrc .lesshst .tcshrc

[root@localhost ~]# ls -l --color=auto // 等同于ll命令

total 8

-rw-r--r--. 1 root root 0 Dec 29 21:38 1

-rw-r--r--. 1 root root 0 Dec 29 21:38 2

-rw-------. 2 root root 1584 Dec 19 2019 anaconda-ks.cfg

mkdir :创建指定的名称的目录

用法:mkdir [OPTION]... DIRECTORY...

rmdir:用来删除空目录。

Usage: rmdir [OPTION]... DIRECTORY...

注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。

tee:以树状图列出目录的内容。

Usage: tee [OPTION]... [FILE]...

[root@localhost data]# tree

.

├── dir

│ ├── f2.txt.link -> ../f1.txt

│ ├── f3.txt.link -> ./f1.txt

│ └── f4.txt.link -> ../f1.txt

└── f1.txt

1 directory, 4 files

mv:(move)文件或目录的移动或改名

Usage: mv [OPTION]... [-T] SOURCE DEST

or: mv [OPTION]... SOURCE... DIRECTORY

or: mv [OPTION]... -t DIRECTORY SOURCE...

常用选项:

-i 交互式

-f 强制

-b 目标存在,覆盖前先备份

范例:

#移动文件

[root@localhost data]# ll

total 4

drwxr-xr-x. 2 root root 63 Dec 29 19:44 dir

-rw-r--r--. 1 root root 5 Dec 29 19:25 f1.txt

[root@localhost data]# mv f1.txt dir/

#修改文件名

[root@localhost data]# mv file.txt f1.txt

cp:(copy)复制文件到指定路径

Usage: cp [OPTION]... [-T] SOURCE DEST

or: cp [OPTION]... SOURCE... DIRECTORY

or: cp [OPTION]... -t DIRECTORY SOURCE...

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

常用选项:

-i:交互式

-r:递归复制目录及目录内的所有内容

-a;归档备份(保存文档的所有原属性)相当于-dR --preserv-all

-d:–no-dereference --preserv=links

–preserv=[ATTR_LIST]

mode:权限

ownership:属主属组

timestamp:时间戳

links:

xattr:

context:

all:

-p:–preserv=mode,ownership,timestamp

-v:–verbose 显示详细信息

-t:原和目标可以放反

-f:–force 强制

-u :只复制比目标文件更加新的文件,或者不存在的文件

-b : 覆盖前先复制(只保留最新的一个备份,如果用过--backup=numbered,默认-b就是--backup=numbered)

范例:

===========-i 选项实例========

[root@localhost ~]# alias cp

alias cp='cp -i'

[root@localhost ~]# \cp anaconda-ks.cfg /data/ //默认为交互式,可以使用反斜杠\+命令使用原始命令

=========-p 选项实例==========

[root@localhost ~]# su - hunter //切换到hunter用户根目录

Last login: Tue Dec 29 22:16:42 CST 2020 on pts/0

[hunter@localhost ~]$ cp /etc/profile ./

[hunter@localhost ~]$ ll

total 7

-rw-r--r--. 1 hunter hunter 1819 Dec 29 22:19 profile //属组属主为hunter

[hunter@localhost ~]$ exit //退出hunter用户

[root@localhost ~]# cp /home/hunter/profile /data/profile_bak

[root@localhost ~]# cp -p /home/hunter/profile /data/profile_bak2 //使用-p选项保留文件元数据,如果换成-a 相当于 -p -R -d

[root@localhost ~]# ll /data/profile*

-rw-r--r--. 1 root root 1819 Dec 29 22:25 /data/profile

-rw-r--r--. 1 root root 1819 Dec 29 22:25 /data/profile_bak

-rw-r--r--. 1 hunter hunter 1819 Dec 29 22:19 /data/profile_bak2

=========-d 选项实例,可以复制链接==========

[root@localhost ~]# cp /bin /data/

cp: omitting directory ‘/bin’

[root@localhost ~]# cp -d /bin /data/

[root@localhost ~]# ll /data/

total 12

lrwxrwxrwx. 1 root root 7 Dec 29 22:28 bin -> usr/bin

=========-b 选项实例,覆盖前备份==========

# 使用过一次--backup=numbered 后,再使用-b 命令,也会按照数字后缀形式保存备份文件。

[root@localhost data]# cp -b /etc/profile /data/

[root@localhost data]# ll

total 8

-rw-r--r--. 1 root root 1819 Dec 29 22:39 profile

-rw-r--r--. 1 root root 1819 Dec 29 22:38 profile~

[root@localhost data]# cp --backup=numbered /etc/profile /data/

cp: overwrite ‘/data/profile’? yes

[root@localhost data]# cp --backup=numbered /etc/profile /data/

cp: overwrite ‘/data/profile’? yes

[root@localhost data]# ll

total 16

-rw-r--r--. 1 root root 1819 Dec 29 22:41 profile

-rw-r--r--. 1 root root 1819 Dec 29 22:40 profile~

-rw-r--r--. 1 root root 1819 Dec 29 22:40 profile.~1~

-rw-r--r--. 1 root root 1819 Dec 29 22:41 profile.~2~

[root@localhost data]# cp -b /etc/profile /data/

cp: overwrite ‘/data/profile’? yes

[root@localhost data]# ll

total 20

-rw-r--r--. 1 root root 1819 Dec 29 22:42 profile

-rw-r--r--. 1 root root 1819 Dec 29 22:40 profile~

-rw-r--r--. 1 root root 1819 Dec 29 22:40 profile.~1~

-rw-r--r--. 1 root root 1819 Dec 29 22:41 profile.~2~

-rw-r--r--. 1 root root 1819 Dec 29 22:41 profile.~3~

rm:删除文件

Usage: rm [OPTION]... FILE...

常用选项:

-i 交互式

-f 强制删除

-r 递归

--no-preserve-root 删除/

[root@localhost data]# rm -rf /* //删根跑路专用,建议忘记这个命令

[root@localhost data]# rm -rf .* //只能删除.开头的隐藏文件,也包含.和..,而不删除普通文件

rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’

rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘..’

[root@localhost data]# rm -rf .[^.]* //正确的删除隐藏文件方法

[root@localhost data]# rm -rf * /删除普通文件,不包括隐藏文件,因为*号不能代替.

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

[root@localhost data]# cp -a /etc/profile /tmp/

#方案一,使用vim命令

[root@localhost data]# vim /tmp/profile

#全文搜索,将空白字符开头的行首都删除掉

:%s/^[[:blank:]]\+//g

#方案二,使用tr命令替换空格

[root@localhost tmp]# cat profile|tr -d [:blank:]

[root@localhost tmp]# cat profile|tr -d " "

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

[root@CentOS7 ~]#vim /etc/vimrc

在末尾添加文本内容

set et

set ts=4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值