linux中与文件系统相关的命令


前言

总结linux中与文件系统相关的命令,包括软硬链接、磁盘信息查询、分区、格式化、挂载等


一、软链接与硬链接

NAME
       ln - make links between files

SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
       ln [OPTION]... TARGET                  (2nd form)
       ln [OPTION]... TARGET... DIRECTORY     (3rd form)
       ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

DESCRIPTION
       In the 1st form, create a link to TARGET with the name LINK_NAME.  In the 2nd form, create a link to TARGET in the current directory.  In the 3rd and 4th forms, create
       links to each TARGET in DIRECTORY.  Create hard links by default, symbolic links with --symbolic.  By default, each destination (name of new link) should  not  already
       exist.  When creating hard links, each TARGET must exist.  Symbolic links can hold arbitrary text; if later resolved, a relative link is interpreted in relation to its
       parent directory.

掌握第一栏即可,其他三栏较第一栏,是默认了LINK_NAME与原文件同名而已。
默认是硬链接,软链接需加 -s 选项。LINK_NAME在生成目录下不能已经存在。创建硬链接时,TARGET文件必须存在。

更多软硬链接相关介绍可参考软链接与硬链接的区别与联系


二、磁盘与目录容量

2.1 df

2.1.1 功能

列出文件系统的整体使用情况。主要读取的数据几乎都是针对一整个文件系统,读取范围主要是在superblock内的信息,所以这个指令显示结果的速度比较迅速。

2.1.2 范例

范例一:

root@study:~$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
tmpfs             399476     3264    396212   1% /run
/dev/sda1       61742128 53378424   5621368  91% /
tmpfs            1997364        8   1997356   1% /dev/shm

1K-blocks说明由多少个1KB的blocks组成,也就是说该文件系统的单位是KB。例如第一行,该文件系统由399476个1KB的block组成,则其大小为399476KB。为便于阅读,可以采用范例二的方式显示。

范例二:

root@study:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           391M  3.2M  387M   1% /run
/dev/sda1        59G   51G  5.4G  91% /
tmpfs           2.0G  8.0K  2.0G   1% /dev/shm

观察上面打印信息,同样以第一行为例,399476KB=391MB。以M为单位阅读起来就轻松多了!

范例三:

root@study:~$ df -h /etc
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        59G   51G  5.4G  91% /

上面命令将/etc所在的文件系统的可用容量打印出来了,这样,我们就可以知道该目录最多还有多少容量了!

范例四:

root@study:~$ df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
tmpfs            488K  1.1K  487K    1% /run
/dev/sda1        3.8M  1.2M  2.6M   32% /
tmpfs            488K     3  488K    1% /dev/shm

上面命令用于打印文件系统的inode数量列出。与范例一对比,可以清晰的发现,两个占比,91% > 32%,通常inode的数量剩余都比block还要多!

2.2 du

2.2.1 功能

评估文件系统的磁盘使用量(常用在推估目录所占容量)。与df不一样的是,这个指令其实会直接到文件系统内去搜寻所有的文件数据,所以执行会花一小段时间。

2.2.2 范例

范例一:

root@study:~$ du
4       ./nihao
40      .

不加任何选项时,仅会显示目录容量(不含文件),输出的数值数据为1K大小的容量单位。若要打印出文件容量,则可以使用范例二。

范例二:

root@study:~$ du -a
12      ./a.out
12      ./test
4       ./main.cpp
4       ./nihao
4       ./test.c
40      .

范例三:

root@study:~$ du -sm /*

该命令用于检查根目录下每个目录所占用的容量。-m表示以MBytes列出容量显示;-s表示列出一级目录容量,不列出一级下的各级目录容量。


三、磁盘分区、格式化与挂载

更多相关概念介绍可参考磁盘分区、格式化与挂载

在虚拟机linux系统上找到有空闲扇区的磁盘或创建新的磁盘,以下是基于新创建的一块新的磁盘sdb进行操作。

3.1 分区

root@study:~# fdisk /dev/sdb
Command (m for help): p			   								# 输出磁盘目前的状态
Disk /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 sectors			# 磁盘名,总容量与扇区数
Units: sectors of 1 * 512 = 512 bytes	# 单一扇区大小512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaf7a7832

Command (m for help): n											# 添加新分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-2097151, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-2097151, default 2097151): +216M

Created a new partition 1 of type 'Linux' and of size 216 MiB.

Command (m for help): p											# 输出磁盘目前的状态
Disk /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaf7a7832

Device     Boot Start    End Sectors  Size Id Type
/dev/sdb1        2048 444415  442368  216M 83 Linux				# 刚刚设置的新分区信息

Command (m for help): w											# 将信息写入磁盘分区表,并退出fdisk
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

# 至此分区建立分区sdb1完成,大小为216M

3.2 格式化

在上一节创建的sdb1分区上建立文件系统,也就是格式化了!

root@study:~# mkfs.ext4 /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 221184 1k blocks and 55296 inodes
Filesystem UUID: f9b04af9-0e7b-4ddf-b66f-d14216e9d6c6
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

3.3 挂载

下面将将上节格式化的分区挂载到 /root/ext4 目录

root@study:~# blkid /dev/sdb1			# 查询/dev/sdb1的UUID

root@study:~# mkdir -p /root/ext4/		# 创建挂载点,最好是空白的,否则挂载之后原来的数据被隐藏了(不是覆盖)!

root@study:~# mount UUID="xxx-xxx-xxx-xxx-xxx" /root/ext4/		# 挂载

root@study:~# df -h /dev/sdb1			# 查看分区容量
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       206M  1.8M  189M   1% /root/ext4

root@study:~# umount /dev/sdb1			# 卸载
# 或
root@study:~# umount /root/ext4			# 卸载

四、文件及目录的相关操作

4.1 basename 与 dirname

root@study:~$ basename /etc/systemd/network
network
root@study:~$ dirname /etc/systemd/network
/etc/systemd

4.2 tail 与 head

4.2.1 head

Usage: head [OPTION]... [FILE]...
Print the first 10 lines of each FILE to standard output.
# 默认打印前10行到标准输出
# 控制输出行数,常见用法如下
root@study:~$ head [-n number] 文件

root@study:~$ head -n 20 /etc/man_db.conf
# 显示/etc/man_db.conf文件的前20行

root@study:~$ head -n -100 /etc/man_db.conf
# 不打印/etc/man_db.conf后面100行,只打印前面几行

4.2.2 tail

Usage: tail [OPTION]... [FILE]...
Print the last 10 lines of each FILE to standard output.
# 默认打印后面10行

# ------------------------------------------

# 若控制输出行数,常见用法如下
root@study:~$ tail [-n number] 文件

root@study:~$ tail -n 20 /etc/man_db.conf
# 显示/etc/man_db.conf文件的后20行

root@study:~$ tail -n -100 /etc/man_db.conf
# 不打印/etc/man_db.conf前面100行,只打印100行后数据

# ------------------------------------------

# 另外,tail常用于持续检测日志文件的内容,用法如下
root@study:~$ tail -f 文件
# 新加入的文件数据都会显示到屏幕上

4.3 more 与 less

执行命令过程中等待用户输入操作,如翻页、查找字符等…

4.3.1 more

一页一页的显示文件内容。
常见输入操作方法如下:

输入含义
空格键向下翻页
/字符串查找字符串
:f显示文件名及当前显示最后一行的行号
q退出more程序

4.3.2 less

与more类似,但是比more更好的是,它可以往前翻页。man指令就是调用less来显示文件内容的!
常见输入操作方法如下:

输入含义
空格键向下翻页
pagedown向下翻页
pageup向上翻页
g前进到文件的第一行
G前进到文件的最后一行
/字符串向下查找字符串
?字符串向上查找字符串
n沿用开始的方向(与/跟?有关)继续搜索
N按开始的相反方向继续搜索
q退出less程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值