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

2023-05-16

文章目录

  • 前言
  • 一、软链接与硬链接
  • 二、磁盘与目录容量
    • 2.1 df
      • 2.1.1 功能
      • 2.1.2 范例
    • 2.2 du
      • 2.2.1 功能
      • 2.2.2 范例
  • 三、磁盘分区、格式化与挂载
    • 3.1 分区
    • 3.2 格式化
    • 3.3 挂载
  • 四、文件及目录的相关操作
    • 4.1 basename 与 dirname
    • 4.2 tail 与 head
      • 4.2.1 head
      • 4.2.2 tail
    • 4.3 more 与 less
      • 4.3.1 more
      • 4.3.2 less


前言

总结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程序
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • C/C++ with GCC:静态地将资源文件添加到可执行文件/库

    有人知道如何使用 GCC 将任何资源文件静态编译为可执行文件或共享库文件吗 例如 我想添加永远不会改变的图像文件 如果它们改变了 我无论如何都必须替换该文件 并且不希望它们位于文件系统中 如果这是可能的 我认为这是因为 Visual C f
  • 在linux中使用setcap [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 要将 cap net raw 功能添加到 例如 bin ping 我们使用以下命令 setcap cap net raw ep bin ping ep
  • 如何获取文件夹的大小,包括稀疏文件的表观大小? (du太慢了)

    我有一个包含很多KVM qcow2文件的文件夹 它们都是稀疏文件 现在我需要获取文件夹的总大小 qcow2 文件大小应计为表观大小 而不是实际大小 例如 图片 c9f38caf104b4d338cc1bbdd640dca89 qcow2 文
  • C 标准库函数与系统调用。哪个是“open()”?

    I know fopen 在C标准库中 所以我绝对可以调用fopen C 程序中的函数 我感到困惑的是为什么我可以打电话给open 功能也一样 open 应该是系统调用 所以它不是标准库中的C函数 因为我能够成功地调用open 函数 我调用
  • 使用 xargs 时如何获取退出代码(并行)

    我制作了一个用于启动并行 rsync 进程的脚本 bin bash LIST 1 DEST DIR 2 RSYNC OPTS 3 echo rsyncing From SRC DIR To DEST DIR RSYNC OPTS RSYNC
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • Mongo:无法连接到服务器 127.0.0.1:27017 位于 src/mongo/shell/mongo.js:145

    当我尝试在 ubuntu 中的 shell 中运行 mongo 或打开 rockmongo 时 我看到以下错误 couldn t connect to server 127 0 0 1 27017 at src mongo shell mo
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • pip 找不到满足要求的版本 django==2.2.1

    我刚刚将操作系统更改为 linux 并且想安装 django 但我无法安装最新版本的 django 我努力了 pip install django 但是它安装了 django 1 11 11 这不是我需要的 我还将我的 pip 升级到了 1
  • 串口读取未完成

    下面的函数用于在Linux下从串口读取数据 我在调试时可以读取完整的数据 但是当我启动程序时 读缓冲区似乎并不完整 我正确接收了一小部分数据 但缓冲区的其余部分完全正确zero 可能是什么问题呢 int8 t serial port ope
  • Docker容器内的动态监听端口

    我有一个应用程序 在使用其默认端口建立一些连接后 开始打开 侦听 新的随机端口来处理现有连接 然后删除它们 视频通话 它还在通信协议内交换其IP地址和端口 我能够解决IP地址问题 但仍然无法找到一种方法来动态告诉主机的IPTABLES在Do
  • 如何在 Linux 中制作一个将文件转换为大写的 x86 汇编程序?

    我找到了一个名为 ProgrammingGroundUp 1 0 booksize pdf 的 pdf 文件 其中一个项目是制作一个汇编程序 该程序接收文件并将其转换为大写 section data CONSTANTS system cal
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • 64位版本的adb和fastboot?

    我在 Debian 7 3 x64 已完全修补 上发现了以下错误 我很确定这是因为adb即使在其 SDK 工具的 64 位发行版中也是 32 位 which adb opt android sdk platform tools adb op
  • C:运行系统命令并获取输出? [复制]

    这个问题在这里已经有答案了 我想在 Linux 中运行一个命令并获取其输出内容的返回文本 但我do not想要将此文本打印到屏幕上 有没有比制作临时文件更优雅的方法 你想要 popen http linux die net man 3 po
  • 为什么 ls -l 中的“总计”加起来不等于列出的总文件大小? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么是total在输出中ls l打印为64并不是26078列出的所有文件的总数是多少 ls l test ls total 64 rw
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 检测后台操作

    在C中 检测程序在 后台模式 下调用的方法是什么 我有一个程序想要以交互方式或在后台启动 我怎样才能检测到我不应该从标准输入读取并以 已停止 tty 输入 状态结束 我应该测试 stdin 是否已关闭 我怎样才能做到这一点 编辑 isatt
  • 如何在 arago 项目构建中编写自己的食谱包

    我如何在 arago 项目构建中编写自己的食谱包 我知道它可以是 bitbake 文件 但我怎么写 不知道 我在互联网上搜索 但未能找到任何好的来源 有人可以给我提供链接或示例来开始吗 RegardsLinux 学习者 使用 Bitbake

随机推荐

  • linux 挂载错误 mount: unknown filesystem type LVM2_member 解决方法

    系统启动到request module runaway loop modprobe binfmt 464c挂起 利用U盘系统 xff0c 挂载硬盘出现 xff1a mount unknown filesystem type 39 LVM2
  • linux swap 内存交换分区 详细介绍

    目录 1 什么是SWAP xff0c 到底是干嘛的 xff1f 为什么要进行内存回收 xff1f 会回收的两种内存 2 swappiness到底是用来调节什么的 xff1f 那么这个swappiness到底起到了什么作用呢 xff1f 3
  • [ 云计算 华为云 ] 华为云开天 aPaaS:构建高效的企业数字化平台(上)

    文章目录 前言一 什么是 aPaaS1 1 初识 aPaaS 二 华为云开天 aPaaS2 1 华为云服务类型与种类2 1 1 基础 aPaaS2 1 2 行业 aPaaS xff08 一 xff09 工业 aPaaS xff08 二 xf
  • linux shell mkpasswd 生成随机密码

    centos 安装命令 xff1a yum install y expect 参数 xff1a l 密码的长度定义 默认是 9 d 数字个数 默认是 2 c 小写字符个数 默认是 2 C 大写字符个数 默认是 2 s 特殊字符个数 默认是
  • ERROR: glib-2.22 gthread-2.0 is required to compile QEMU

    问题描述 xff1a centos 6 5 源码编译qemu configure时出现错误 ERROR glib 2 22 gthread 2 0 is required to compile QEMU 解决方法 xff1a yum ins
  • metasploit msfconsole 命令参数

    在MSF里面msfconsole可以说是最流行的一个接口程序 很多人一开始碰到msfconsole的时候就害怕了 那么多复杂的命令语句需要学习 xff0c 但是msfconsole真的是一个强大的接口程序 Msfconsole提供了一个一体
  • 记事本输入“联通”俩字,关闭再打开乱码

    这是个很有意思的事情 这里需要提一下ANSI xff0c 不同的国家和地区制定了不同的标准 xff0c 由此产生了 GB2312 BIG5 JIS 等各自的编码标准 然后 xff0c 这些编码方式没有固定的格式 xff0c 但是比如说UTF
  • RoboRTS建图

    建图仿真 span class token function cd span RoboRTS ws src span class token function source span devel setup bash roslaunch r
  • RISC和CISC的区别

    文章目录 复杂指令集计算机 CISC 精简指令集计算机 RISC CISC与RISC的区别参考文章 RISC 精简指令集计算机 和CISC 复杂指令集计算机 是当前CPU的两种架构 它们的区别在于不同的CPU设计理念和方法 复杂指令集计算机
  • 单链表逆序(C语言)

    最近在复习数据结构 xff0c 刷题正好遇上 xff0c 所以整理一下 span class token macro property span class token directive keyword include span span
  • 各种颜色RGB值

    各种颜色RGB值 RGB 255 192 203 pink xff08 粉红 xff09 RGB 220 20 60 crimson xff08 腥红 xff09 RGB 255 240 245 lavenderblush xff08 苍白
  • 第一范式、第二范式、第三范式、BCNF范式详解

    文章目录 0 范式 NF 1 第一范式 xff08 1NF xff09 2 第二范式 xff08 2NF xff09 2 1 函数依赖2 1 1完全函数依赖2 1 2 部分函数依赖2 1 3 传递函数依赖 2 2 码2 3 非主属性 3 第
  • 数据库实体关系图(ERD)及其画法

    文章目录 1 什么是ER图 2 什么时候画ER图 2 1 数据库设计2 2 数据库调试2 3 数据库创建和补丁2 4 帮助收集需求 3 ERD符号指南4 概念 逻辑和物理数据模型5 如何绘制ER图 数据库绝对是软件系统不可分割的一部分 在数
  • Threads(异步和多线程)

    Task是 NET Framework3 0出现的 xff0c 线程是基于线程池的 xff0c 然后提供丰富的api xff0c Thread方法很多很强大 xff0c 但是太过强大 xff0c 没有限制 DoSomethingLong方法
  • Linux系统中添加库文件路径的方法

    文章目录 方法一方法二 库文件在链接 xff08 静态库和共享库 xff09 和运行 xff08 仅限于使用共享库的程序 xff09 时被使用 xff0c 其搜索路径是在系统中进行设置的 一般 Linux 系统把 lib和 usr lib
  • Linux 环境下 Qt 可执行程序依赖库打包脚本

    文章目录 一 利用 96 ldd 96 命令查看程序需要的依赖库二 编写依赖库打包脚本三 编写执行文件脚本四 总结 Linux 环境下 Qt 可执行程序依赖库打包脚本 使用 Qt Creator 完成程序编码之后 xff0c 虽然会在 De
  • RSA/ECDSA host key has changed 错误

    RSA host key for mysharebook cn has changed and you have requested strict checking Host key verification failed 这是Linux重
  • VS2013+Python在图像处理中的应用

    对Python的学习要从视频编码说起 其实 xff0c 我一直在用ffmpeg对视频做设计 处理 xff0c 后来发现Opencv也能干同样的事情 xff0c 就想研究一下Opencv是怎么实现的 xff0c 再后来就和Python扯上关系
  • 结构化数据、半结构化数据和非结构化数据

    本文转自http blog csdn net u010069220 article details 46895169 在实际应用中 xff0c 我们会遇到各式各样的数据库如nosql非关系数据库 xff08 memcached xff0c
  • linux中与文件系统相关的命令

    文章目录 前言一 软链接与硬链接二 磁盘与目录容量2 1 df2 1 1 功能2 1 2 范例 2 2 du2 2 1 功能2 2 2 范例 三 磁盘分区 格式化与挂载3 1 分区3 2 格式化3 3 挂载 四 文件及目录的相关操作4 1