linux目录树命令 linux 目录命令

linux常用的命令有哪些Linux运维人员必会linux目录树命令的120个命令
来自《跟老男孩学Linux运维linux目录树命令:核心系统命令实战》一书
前言
第1章 Linux命令行简介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令帮助 / 4
1.3Linux shutdown reboot halt / 9
关机:
shutdown -h now
halt
init 0
第2章 文件和目录操作命令 / 13
2.1pwd:显示当前所在的位置 / 13
2.2cd:切换目录 / 16
2.3tree:以树形结构显示目录下的内容 / 18
2.4mkdir:创建目录 / 22
2.5touch:创建空文件或改变文件的时间戳属性 / 27
2.6ls:显示目录下的内容及相关属性信息 / 30
2.7cp:复制文件或目录 / 39
2.8mv:移动或重命名文件 / 42
2.9rm:删除文件或目录 / 45
2.10rmdir:删除空目录 / 48
2.11ln:硬链接与软链接 / 49
2.12readlink:查看符号链接文件的内容 / 54
2.13find:查找目录下的文件 / 55
2.14xargs:将标准输入转换成命令行参数 / 68
2.15rename:重命名文件 / 71
2.16basename:显示文件名或目录名 / 72
2.17dirname:显示文件或目录路径 / 72
2.18chattr:改变文件的扩展属性 / 73
2.19lsattr:查看文件扩展属性 / 75
2.20file:显示文件的类型 / 76
2.21md5sum:计算和校验文件的MD5值 / 77
2.22chown:改变文件或目录的用户和用户组 / 80
2.23chmod:改变文件或目录权限 / 81
2.24chgrp:更改文件用户组 / 85
2.25umask:显示或设置权限掩码 / 86
2.26老男孩从新手成为技术大牛的心法 / 90
第3章 文件过滤及内容编辑处理命令 / 91
3.1cat:合并文件或查看文件内容 / 91
3.2tac:反向显示文件内容 / 103
3.3more:分页显示文件内容 / 104
3.4less:分页显示文件内容 / 107
3.5head:显示文件内容头部 / 109
3.6tail:显示文件内容尾部 / 111
3.7tailf:跟踪日志文件 / 114
3.8cut:从文本中提取一段文字并输出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按两个文件的相同字段合并 / 127
3.13uniq:去除重复行 / 129
3.14wc:统计文件的行数、单词数或字节数 / 131
3.15iconv:转换文件的编码格式 / 133
3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134
3.17diff:比较两个文件的不同 / 135
3.18vimdiff:可视化比较工具 / 138
3.19rev:反向输出文件内容 / 139
3.20tr:替换或删除字符 / 140
3.21od:按不同进制显示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:纯文本编辑器 / 147
3.24老男孩逆袭思想:做Linux运维的多个好处 / 152
第4章 文本处理三剑客 / 153
4.1grep:文本过滤工具 / 153
4.2sed:字符流编辑器 / 159
4.3awk基础入门 / 165
第5章 Linux信息显示与搜索文件命令 / 176
5.1uname:显示系统信息 / 176
5.2hostname:显示或设置系统的主机名 / 178
5.3dmesg:系统启动异常诊断 / 179
5.4stat:显示文件或文件系统状态 / 181
5.5du:统计磁盘空间使用情况 / 183
5.6date:显示与设置系统时间 / 186
5.7echo:显示一行文本 / 190
5.8watch:监视命令执行情况 / 193
5.9which:显示命令的全路径 / 195
5.10whereis:显示命令及其相关文件全路径 / 196
5.11locate:快速定位文件路径 / 197
5.12updatedb:更新mlocate数据库 / 199
5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200
第6章 文件备份与压缩命令 / 201
6.1tar:打包备份 / 201
6.2gzip:压缩或解压文件 / 208
6.3zip:打包和压缩文件 / 211
6.4unzip:解压zip文件 / 212
6.5scp:远程文件复制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆袭思想:新手如何高效地提问 / 220
第7章 Linux用户管理及用户信息查询命令 / 222
7.1 useradd:创建用户 / 222
7.2usermod:修改用户信息 / 227
7.3userdel:删除用户 / 229
7.4groupadd:创建新的用户组 / 230
7.5groupdel:删除用户组 / 231
7.6passwd:修改用户密码 / 232
7.7chage:修改用户密码有效期 / 237
7.8chpasswd:批量更新用户密码 / 238
7.9su:切换用户 / 240
7.10visudo:编辑sudoers文件 / 242
7.11sudo:以另一个用户身份执行命令 / 244
7.12id:显示用户与用户组的信息 / 248
7.13w:显示已登录用户信息 / 249
7.14who:显示已登录用户信息 / 250
7.15users:显示已登录用户 / 252
7.16whoami:显示当前登录的用户名 / 253
7.17last:显示用户登录列表 / 253
7.18lastb:显示用户登录失败的记录 / 254
7.19lastlog:显示所有用户的最近登录记录 / 255
第8章 Linux磁盘与文件系统管理命令 / 257
8.1fdisk:磁盘分区工具 / 257
8.2partprobe:更新内核的硬盘分区表信息 / 265
8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266
8.4parted:磁盘分区工具 / 268
【linux目录树命令 linux 目录命令】8.5mkfs:创建Linux文件系统 / 272
8.6dumpe2fs:导出ext2/ext3/ext4文件系统信息 / 274
8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275
8.8fsck:检查并修复Linux文件系统 / 278
8.9dd:转换或复制文件 / 281
8.10mount:挂载文件系统 / 284
8.11umount:卸载文件系统 / 288
8.12df:报告文件系统磁盘空间的使用情况 / 289
8.13mkswap:创建交换分区 / 293
8.14swapon:激活交换分区 / 294
8.15swapoff:关闭交换分区 / 295
8.16sync:刷新文件系统缓冲区 / 296
第9章 Linux进程管理命令 / 298
9.1ps:查看进程 / 298
9.2pstree:显示进程状态树 / 305
9.3pgrep:查找匹配条件的进程 / 306
9.4kill:终止进程 / 307
9.5killall:通过进程名终止进程 / 310
9.6pkill:通过进程名终止进程 / 311
9.7top:实时显示系统中各个进程的资源占用状况 / 313
9.8nice:调整程序运行时的优先级 / 320
9.9renice:调整运行中的进程的优先级 / 323
9.10nohup:用户退出系统进程继续工作 / 324
9.11strace:跟踪进程的系统调用 / 325
9.12ltrace:跟踪进程调用库函数 / 332
9.13runlevel:输出当前运行级别 / 334
9.14init:初始化Linux进程 / 335
9.15service:管理系统服务 / 335
第10章 Linux网络管理命令 / 338
10.1ifconfig:配置或显示网络接口信息 / 338
10.2ifup:激活网络接口 / 343
ifup eth0
10.3ifdown:禁用网络接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整个网络linux目录树命令 , 所有网卡 。
10.4route:显示或管理路由表 / 344
10.5arp:管理系统的arp缓存 / 350
10.6ip:网络配置工具 / 351
10.7netstat:查看网络状态 / 358
10.8ss:查看网络状态 / 362
10.9ping:测试主机之间网络的连通性 / 363
10.10traceroute:追踪数据传输路由状况 / 366
10.11arping:发送arp请求 / 367
10.12telnet:远程登录主机 / 369
10.13nc:多功能网络工具 / 370
10.14ssh:安全地远程登录主机 / 373
10.15wget:命令行下载工具 / 376
10.16mailq:显示邮件传输队列 / 379
10.17mail:发送和接收邮件 / 381
10.18nslookup:域名查询工具 / 386
10.19dig:域名查询工具 / 389
10.20host:域名查询工具 / 393
10.21nmap:网络探测工具和安全/端口扫描器 / 394
10.22tcpdump:监听网络流量 / 398
第11章 Linux系统管理命令 / 407
11.1lsof:查看进程打开的文件 / 407
11.2uptime:显示系统的运行时间及负载 / 411
11.3free:查看系统内存信息 / 411
11.4iftop:动态显示网络接口流量信息 / 413
11.5vmstat:虚拟内存统计 / 415
11.6mpstat:CPU信息统计 / 419
11.7iostat:I/O信息统计 / 420
11.8iotop:动态显示磁盘I/O统计信息 / 423
11.9sar:收集系统信息 / 425
11.10chkconfig:管理开机服务 / 430
11.11ntsysv:管理开机服务 / 433
11.12 setup:系统管理工具 / 434
11.13ethtool:查询网卡参数 / 436
11.14mii-tool:管理网络接口的状态 / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自动化RPM包管理工具 / 446
top命令
第12章 Linux系统常用内置命令 / 450
12.1Linux内置命令概述 / 450
12.2Linux内置命令简介 / 450
12.3Linux常用内置命令实例 / 452
linux常用命令有哪些?01
linux常用命令有pwd命令、cd命令、ls命令、cat命令、grep命令、touch命令、cp命令、mv命令、rm命令、rmdir命令等 。
linux常用命令:
1、 pwd命令
该命令linux目录树命令的英文解释为print working directory(打印工作目录) 。输入pwd命令linux目录树命令 , Linux会输出当前目录 。
2、 cd命令
cd命令用来改变所在目录 。
cd / 转到根目录中
cd ~ 转到/home/user用户目录下
cd /usr 转到根目录下的usr目录中-------------绝对路径
cd test 转到当前目录下的test子目录中-------相对路径
3、 ls命令
ls命令用来查看目录的内容 。选项 含义 -a 列举目录中的全部文件 , 包括隐藏文件 -l 列举目录中的细节,包括权限、所有者、组群、大小、创建日期、文件是否是链接等 -f 列举的文件显示文件类型 -r 逆向,从后向前地列举目录中内容 -R 递归,该选项递归地列举当前目录下所有子目录内的内容 -s 大小,按文件大小排序 -h 以人类可读的方式显示文件的大小 , 如用K、M、G作单位 ls -l examples.doc 列举文件examples.doc的所有信息
4、 cat命令
cat命令可以用来合并文件,也可以用来在屏幕上显示整个文件的内容 。
cat snow.txt 该命令显示文件snow.txt的内容,ctrl D退出cat 。
5、 grep命令
grep命令的最大功能是在一堆文件中查找一个特定的字符串 。
grep money test.txt
以上命令在test.txt中查找money这个字符串,grep查找是区分大小写的 。
6 、touch命令
touch命令用来创建新文件 , 他可以创建一个空白的文件,可以在其中添加文本和数据 。
touch newfile 该命令创建一个名为newfile的空白文件 。
7 、cp命令
cp命令用来拷贝文件,要复制文件,输入命令:
cp
cp t.txt Document/t 该命令将把文件t.txt复制到Document目录下,并命名为t 。选项 含义 -i 互动:如果文件将覆盖目标中的文件,他会提示确认 -r 递归:这个选项会复制整个目录树、子目录以及其他 -v 详细:显示文件的复制进度
8 、mv命令
mv命令用来移动文件 。选项 说明 -i 互动:如果选择的文件会覆盖目标中的文件 , 他会提示确认 -f 强制:它会超越互动模式 , 不提示地移动文件,属于很危险的选项 -v 详细:显示文件的移动进度
mv t.txt Document 把文件t.txt 移动到目录Document中 。
9 、rm命令
rm命令用来删除文件 。选项 说明 -i 互动:提示确认删除 -f 强制:代替互动模式,不提示确认删除 -v 详细:显示文件的删除进度 -r 递归:将删除某个目录以及其中所有的文件和子目录
rm t.txt 该命令删除文件t.txt
10、 rmdir命令
rmdir命令用来删除目录 。
Linux 命令行展开介绍及示例???在Linux bash中可以使用命令行展开特性一步完成需要分开成多步完成的操作,达到事半功倍的效果 。在Linux指令参数位置使用"{}" 将相应的参数括起来,括号中的参数以逗号分隔,然后bash在执行这一指令时会自动将括号中的内容进行展开 。
示例1:
???同时创建多个目录 , 在/tmp目录下创建a_c,a_d,b_c,b_d等目录,只需要在命令行中执行如下命令即可,无须单个创建:
执行结果如下:
示例2:
???需要在/tmp/mylinux 目录下创建如下目录树 。
创建命令如下:
执行结果如下:
在这里可以使用指令tree来查看目录的层级结构,以更直观的方式将目录树显示出来:
在Linux中怎样使用cp命令合并目录树怎样将两个布局相似的目录树合并成一个新的目录树?
在目录a,b和c中有一些文件,tree命令的输出将能更好的说明:
文件布局
1. 使用cp命令创建合并:
现在我们将这两个目录合并成一个名为"merged"新的目录中.完成上述操作最简单的方式就是递归复制目录,如下图所示:
递归复制完成新的合并
1.1 cp命令和替换带来的问题:
这种方式所带来的问题是该合并目录中所创建的文件为原文件的副本,并非原文件本身.别急, (你可能正在问自己) 如果不是原文件又有什么问题? 要回答你的问题,考虑下你有很多大文件的情况.那种情形下,复制所有的文件可能花费数小时 。
现在让我们回到刚那问题上,且尝试使用mv命令而不是cp命令 。
企图使用mv命令进行合并操作
这些目录不能被合并.因此我们不能像这样使用mv命令去合并目录. 现在你该怎样将原文件保存到"merged"目录中?
Linux 从 0 到 1(一) - 终端简介,文件与目录以及相关操作,常用命令 模式:
当打开终端linux目录树命令 , 第一行所见的就叫命令行提示符 。linux目录树命令我的是这样的:
命令行提示符,顾名思义就是提示在其后面输入命令 。在linux目录树命令你输入新的一行命令前 , 这个命令提示符都会出现 。分别解析一下上边代表什么意思:
oscar这是当前用户的名字 。Linux是一个多用户的操作系统,Windows也可以 。不过Linux的多用户管理更方便 。我们一般建议每个使用Linux系统的用户都创建一个属于自己的账户,便于隐私管理 。
@这个符号我们应该不陌生 , 我们的电子邮件一般都是name@domain.com这样的不是吗 。这个@就表示英语里的at,是“在...里面 , 落户在...的,在其中”的意思 。@前面是用户名,后面是所在的域 。
oscar-laptop这是当前电脑/操作系统的名字 。上面说了在@后面的是一个域,所以 oscar@oscar-laptop 就表示oscar-laptop这台电脑的oscar这个用户 。oscar-laptop这个名称在安装此Linux系统时可以任意指定 。
:这是分隔符,没有什么特别的涵义 。
~ 这是当前所在目录的名字 , 会随着用户进入不同目录而改变 。~表示当前用户的家目录,有点类似Windows系统的“我的文档”这个目录 。
$指示linux目录树命令你所具有的权限的字符 。在Linux系统中有两种可能:
因此,oscar@oscar-laptop:~$ 的意思就是:
linux目录树命令你目前是以oscar这个用户登录;你的电脑名称为oscar-laptop;你目前位于 ~ 目录下 , 就是你的用户家目录 。你是普通用户,拥有有限的权限 。
参数里可以包含多个参数,由空格隔开,也可以包含数字,字母,等等 。可以说,参数没有固定的格式 , 但是一般来说还是遵循一定的规范的 。
如果我们要一次加好几个短参数,可以用空格隔开 , 例如:
多个短参数也可以合并在一起,例如上面的命令等价于:
请注意:参数的字母的大小写是有区别的,大写的T和小写的t通常表示不同意思 。
如果有多个长参数 , 是不能像多个短参数那样合并写的 。而是只能以空格隔开,例如:
当然我们也可以组合使用短参数和长参数,例如:
有时候,同一个意义的参数有短参数和长参数两种形式,效果是一样的,可以任选哪一种 。
有一些参数你还需要给它赋一个值才行 。而且短参数和长参数的赋值的方式不尽相同 。
例如,短参数赋值 , 通常是这样的:
表示把10赋值给p参数 。
如果是长参数,则一般是这样赋值:
长参数的方式更加容易理解,但是不如短参数那么简洁 。
正如我们说过的,参数的形式没有绝对的准则 。我们上面给出的规则是一般的,有些命令的参数格式可能是我们没怎么见过的 。
有些参数就不一样,而且取决于命令 。例如对于 ls 这个命令,假如后面带了一个参数,这个参数是一个目录的路径名的话,那么就会列出此目录下的文件 。
两种类型的文件
简单起见,我们把Linux下的文件分为两大类:
在一个文件系统中,我们总有一个被称为根目录的东西,这个根目录里包含了所有其他目录和文件 。Linux中有且只有一个根目录,就是
是的,就是用一个斜杠表示 。没有比根目录再高一阶的目录了,因为没有目录包含根目录,根目录就是Linux最顶层的目录 。
Linux系统安装后,包含了很多的文件和目录(虽然其实都是文件),我们很容易迷失在“茫茫文海”中 。
当然我们不可能一下子列出Linux中的所有文件,那不现实 。但是我们可以向你展示如何在Linux的目录树中来回穿梭,你可以知道此刻你位于哪个目录下 。就好比能看懂Linux这个很大的“地图” 。
pwd 是英语Print Working Directory的缩写,表示“打印当前工作目录” 。
which 命令:获取命令的可执行文件的位置,which命令用于显示一个命令的对应的可执行程序的位置 。可能听起来有点拗口 。
在Linux下,每一条命令其实对应了一个可执行程序 。我们在终端中输入命令,再按回车的时候 , 其实就是执行了对应的那个程序 。比如说,pwd命令对应的pwd程序就是存在于Linux中的 。
which命令接受一个参数,也就是你想要知道其可执行程序位于哪里的那个命令 。
我们来测试一下,就拿pwd命令来测试好了:
得到:
因此,pwd命令对应的pwd这个可执行程序位于/bin目录中 。
我们也可以注意到Linux中的可执行程序和Windows中不太一样,在Windows中可执行程序一般以.exe结尾,而Linux中一般是没有后缀名的 。
Linux中的可执行程序也不是都位于相同目录的 。我们可以来测试一下which命令本身对应的可执行程序位于哪里:
我们可以看到,which命令对应的可执行程序which并不位于/bin中 , 而是在/usr/bin中 。
Ubuntu的终端默认是有颜色标注的 , 一般来说:
如果在你的终端里没有标明颜色,那么你可以加上参数 --color=auto来开启颜色标注 。如下:
如果你不需要颜色标注,那么可以用 --color=none来关闭颜色标注 。如下:
当然,为了避免每次都输入这么一串额外的参数 , 其实我们可以在一个配置文件里修改,使得永久显示颜色或不显示颜色 。
在Linux,以点( . )开头的文件是隐藏文件,不过这里不包括开头的两个. 和..,这两个的含义如下:
- . (一个点)表示当前目录 。在当前情况下,就是 /home/oscar。
- .. (两个点)表示上一级目录 。因为当前目录是/home/oscar , 所以上一级目录就是 /home。
我们有一个大写的参数 -A,它的作用和小写的-a几乎一样,唯一不同就是-A不列出 . 和 .. 这两个文件 。
-l 这个参数算是ls命令最常用的了 。加上-l参数使得ls命令列出一个显示文件和目录的详细信息的列表 。
当我们仅用ls -l时,列出的文件详细信息中,文件的大小是以字节为单位的 。有时这不是太直观 。我们可以再加一个参数-h,h是humain readable的缩写,表示“适合人类阅读的” 。所以我们的命令变成了:
t是time的缩写 。
du命令也是很有用的 , 因为它可以让我们知道文件和目录所占的空间大小 。
虽然ls -l命令也可以显示文件和目录的大小 , 但是du命令统计的才是真正的文件大小 。du命令会深入遍历每个目录的子目录,把所有文件的大小都做一个统计 。
du是英语disk usage的缩写,表示“磁盘使用/占用” 。
我们的du命令也可以使用参数 。
cat命令和less命令:显示文件内容,这两个命令只能显示文件内容 , 并不能对文件内容进行修改 。
一次性显示文件的所有内容 , 如果你想要在显示的文件内容上加上行号,那么你可以加上 -n 这个参数 。
分页显示文件内容
head命令和tail命令:显示文件的开头和结尾 。
显示文件开头,默认情况下,head会显示文件的头10行 。我们也可以指定显示的行数,用 -n 这个参数:
就会显示文件的头5行 。
显示文件结尾 。默认情况下,tail会显示文件的尾10行 。
我们也可以指定显示的行数,用 -n 这个参数:
就会显示文件的尾5行 。
tail命令还可以配合 -f 参数来实时追踪文件的更新:
这样,就会检查文件是否有追加内容,如果有,就显示新增内容 。
默认地,tail -f会每过1秒检查一下文件是否有新内容 。你也可以指定间隔检查的秒数,用 -s 参数:
可以用快捷键 Ctrlc 来终止tail -f 命令 。
touch命令和mkdir命令:创建文件和目录
创建一个空白文件 。事实上,Linux没有一个命令是专门用来创建一个空白文件的 。touch命令其实一开始的设计初衷是修改文件的时间戳,就是可以修改文件的创建时间或修改时间,让电脑以为文件是在那个时候被修改或创建的 。但是touch命令如果后面跟着的文件名是不存在的,那么它就会新建一个 。
事实上,我们可以用touch命令同时创建多个文件:
如果我所要创建的文件的名字里有空格怎么办呢?
很简单 , 加上双引号:
创建一个目录 。
mkdir也可以同时创建好几个目录:
如果我所要创建的目录的名字里有空格怎么办呢?
很简单,加上双引号:
我们还可以用 -p 参数来递归创建目录结构 。
比如:
cp命令和mv命令:拷贝文件和移动文件
拷贝文件或目录
cp是英语copy的缩写,表示“拷贝” 。所以,顾名思义,此命令用于拷贝 。cp命令不仅可以拷贝单个文件,还可以拷贝多个文件,也可以拷贝目录 。
复制文件到另一个目录只需要把cp命令的第二个参数换成目录名 。
拷贝目录
要拷贝目录,只要在cp命令之后加上-R参数(注意是大写的R) 。拷贝的时候,目录中的所有内容(子目录和文件)都会被拷贝 。
使用通配符*
*号(星号)是很常用的正则表达式的符号 , 被称为“通配符”,
所以如果我们用如下命令:
那么就会把当前目录下所有txt文件拷贝到folder这个子目录当中 。
又如:
那么就会把当前目录下凡是以ha开头的文件都拷贝到folder目录中 。
移动文件
mv是英语move的缩写,表示“移动” 。mv命令有两个功能:
用mv命令来移动目录很简单,不需要额外的参数,就跟移动文件一样:
当然 , 我们也可以使用通配符 。
除了移动文件,mv命令还可以用于重命名文件 。
事实上,Linux中没有一个专门的命令用于重命名文件 。之所以mv命令可以重命名文件,其实还是归因于它的机制:移动文件 。经过mv移动之后,原始文件变成了新的名字的文件,文件内容是不变的,这不就相当于重命名了吗?
以上命令会将new_file重命名为renamed_file 。
删除文件和目录
rm命令可以删除一个文件,多个文件 , 目录 , 甚至你的整个Linux系统(如果你愿意的话) 。
以上命令删除当前目录下的new_file_copy这个文件 。
我们也可以同时删除多个文件,只要用空格隔开每个文件即可 。例如:
保险起见,用rm命令删除文件时 , 可以加上 -i 参数,这样对于每一个要删除的文件,终端都会询问我们是否确定删除 。i是英语inform的缩写,表示“告知,通知” 。
有两种回答:
y:是英语yes的缩写 , 表示“是” 。那么回车确认后,文件就删除了 。
n:是英语no的缩写,表示“否” 。那么回车确认后,文件不会删除 。
如果在rm命令后加上-f参数 , 那么终端不会询问用户是否确定删除文件,不论如何,文件会立刻被强制删除 。
f是英语force的缩写 。
以上命令会强制删除file文件 。
r是英语recursive的缩写 , 表示“递归的” 。所以使用-r参数,可以使rm命令删除目录,并且递归删除其包含的子目录和文件 。
这个命令也挺危险的,用得不好可能你的子目录和文件都没了 。
以上命令会删除one这个目录 , 包括其子目录和文件 。
其实,也存在一个命令
看着和 rm -r 挺像的 。但是这个命令有个局限性:只能删除空的目录 。
创建链接
事实上,Linux下有两种链接类型:
为了区分这两种链接类型的不同,我们首先来谈一谈如Linux这样的操作系统中文件在硬盘上的存放 。
文件在硬盘上存储时,大致来说(请注意我用了“大致来说”),每个文件有两部分:
文件名的列表是储存在硬盘的其他地方的,和文件内容分开存放,这样方便Linux管理 。
注意:为什么我上面要用“大致说来”呢?因为此处我们简化了描述,其实每个文件有三部分:
我们这里简化地将文件分为两部分:文件名和文件内容 。因为我们不想把事情复杂化 , 我们想要理解两种链接类型的区别 , 暂时只要知道这些就够了 。
每个文件的文件内容被分配到一个标示号码,就是inode 。因此每个文件名都绑定到它的文件内容(用inode标识) 。原理如下图:
下面我们学习如何创建硬链接和软连接 。
比之软链接,硬链接的使用几率小很多 。但是我们还是要学习一下 , 毕竟可能会用到 。
硬链接的原理:使链接的两个文件共享同样的文件内容,也就是同样的inode 。
所以一旦文件1和文件2之间有了硬链接,那么你修改文件1或文件2,其实修改的是相同的一块内容 。只不过我们可以用两个文件名来取到文件内容 。
硬链接有一个缺陷:只能创建指向文件的硬链接,不能创建指向目录的硬链接 。但是软链接可以指向文件或目录 。当然了,事实上,通过一些参数的修改 , 也可以创建指向目录的硬链接 , 但是比较复杂,这里不再详述 。所以对于目录的链接,我们一般都是用软链接 。
硬链接原理图:
要创建硬链接,直接用ln命令 , 不加任何参数:
我们可以用ls -i命令查看一下(-i参数可以显示文件的inode) 。对于硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除 。
我们用ls -l命令查看文件信息的时候,第二列的那个2 , 其实是表示拥有相同inode号的文件数 。不难理解,因为它们指向相同的文件内容,所以共享一个inode 。
这个第二列的数字,一般来说对于普通文件 , 都是1,因为不同文件inode不同嘛 。对于目录来说,这第二列的数字标明目录内所含文件数目 。
其实 , 软链接才是真正像我们在Windows下的快捷方式的,其原理很相似 。
创建硬链接是ln不带任何参数,但是要创建软链接需要加上-s参数 。s是symbolic(符号的)的缩写 。
file2指向的不再是file1的文件内容(和硬链接不同),而是指向file1的文件名 。
软链接原理图:
用ls -l命令查看一下,会发现形式和之前的硬链接不一样噢,file2的信息是这样的: file2-file1,表示file2指向file1 。
而且file2前面的权限那里的第一个字母变成了l,表示link(链接) 。之前硬链接的时候是没有l的,硬链接外表看起来就和普通文件类似 。
我们用ls -l命令查看文件信息的时候,第二列的那个1,表示拥有相同inode号的文件数 。不难理解,因为file2指向file1,它们并没有指向同一块文件内容 , 所以它们的inode号不相同 。
软链接的特点:
linux相关命令——11.grep -Ei XXX
-E使用多字符匹配
-i忽略大小写
2.fdisk -l |grep Disk
通过fdisk -l 查看机器所挂硬盘个数及分区情况
3.mkfs.ext4 /dev/sdb
把第二块硬盘整个格式化成ext4文件系统linux目录树命令!同时会覆盖掉原来到分区表linux目录树命令!
4.blkid /dev/sdb
blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询 。要使用这个命令必须安装e2fsprogs软件包
5. vim /etc/fstab
某些时候当Linux系统下划分linux目录树命令了新的分区后,需要将这些分区设置为开机自动挂载,否则,Linux是无法使用新建的分区的 。/etc/fstab 文件负责配置Linux开机时自动挂载的分区 。
Windows的文件结构是多个并列的树状结构 , 最顶部的是不同的磁盘(分区),如:C,D , E,F等 。Linux的文件结构是单个的树状结构 。最顶部的为根目录,即/ 。在根目录下,分为多个子目录,包括/bin、/boot、/dev、/etc、/home、/lib、/media、/mnt、/opt、/proc、/root、/sbin、/tmp、/usr和/var等 。
磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作,而fstab正是负责这一配置 。显然,根目录是所有Linux的文件和目录所在的地方 , 需要挂载上一个磁盘分区 。上面还提到,Linux分区交换也需要独立使用一个分区 , 因此 , 安装一个Linux至少需要两个分区 。(事实上,只使用一个分区安装Linux也是可能的 , 而且,如果电脑的物理内存足够大,交换分区并不是必须的)
第一列可以是实际分区名,也可以是实际分区的卷标(Lable) 。
第二列是挂载点 。
第三列为此分区的文件系统类型 。
第四列是挂载的选项,用于设置挂载的参数 。
常见参数如下:
auto: 系统自动挂载,fstab默认就是这个选项
defaults: rw, suid, dev, exec, auto, nouser, and async.
noauto 开机不自动挂载
nouser 只有超级用户可以挂载
ro 按只读权限挂载
rw 按可读可写权限挂载
user 任何用户都可以挂载
请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto
第五列是dump备份设置 。
当其值设置为1时,将允许dump备份程序备份linux目录树命令;设置为0时,忽略备份操作;
第六列是fsck磁盘检查设置 。
其值是一个顺序 。当其值为0时,永远不检查
而 / 根目录分区永远都为1 。其它分区从2开始,数字越小越先检查,如果两个分区的数字相同,则同时检查 。
6. ip addr 查看ip地址
service network restart重启网卡
cd /etc/sysconfig/network-scripts/进入网卡配置目录
7. systemctl 用来管理linux系统和服务
查看系统状态
#systemctl status
马上激活单元
# systemctl start 单元
马上停止单元
# systemctl stop 单元
重新启动单元
# systemctl restart 单元
又一次载入配置
# systemctl reload 单元
输出单元执行状态
$ systemctl status 单元
检查单元是否配置为自己主动启动
$ systemctl is-enabled 单元
开机自己主动激活单元
# systemctl enable 单元
取消开机自己主动激活单元
# systemctl disable 单元
8.ps aux|grep xxx 显示所有进程和其状态 。
a 显示现行终端机下的所有程序,包括其他用户的程序 。
u以用户为主的格式来显示程序状况
x显示所有程序,不以终端机来区分 。
linux目录树命令的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于linux 目录命令、linux目录树命令的信息别忘了在本站进行查找喔 。

    推荐阅读