Upload
dillon-prince
View
29
Download
7
Embed Size (px)
DESCRIPTION
College of Information Science and Engineering. Linux 使用. —— 基本 shell 命令. Shandong Agricultural University. Shell 简介. Linux 目录结构. Linux 命令分类详解. Linux 目录结构. 目录结构 配置文件. 1 、目录结构. Linux 的目录结构中主要的目录有: / :根目录,最特殊的目录,所有目录的起点; /home :除 root 以外的用户主目录都在这里; ~ :指代每个用户的主目录( /home/ 用户名); - PowerPoint PPT Presentation
Citation preview
College of Information Science and Engineering
Shandong Agricultural University
Linux 使用—— 基本 shell 命
令
2
Shell 简介
Linux 目录结构
Linux 命令分类详解
3
1. 目录结构2. 配置文件
Linux 目录结构
4
1 、目录结构 Linux 的目录结构中主要的目录有:
/ :根目录,最特殊的目录,所有目录的起点;/home :除 root 以外的用户主目录都在这里;~ :指代每个用户的主目录( /home/ 用户名);/bin :存放 Linux 的常用命令;/boot :内核和启动文件所在目录;/etc :系统多部分配置文件所在之处;/dev :所有设备文件保存在这;/mnt: 这个目录是空的,系统提供这个目录是让用户临时
挂载别的文件系统。 /media: 一般用于自动挂载,系统自动挂载的光盘、 u 盘
文件系统都在这下面。 /proc :在磁盘上实际不存在,里面的文件是动态生成的
,根据执行的命令,采集系统进程运行状态等信息形成文件放在该目录下。
5
Windows 下目录:按照应用程序分目录组织。C:\Windows 放系统文件; D:\Program Files放程序相关文件等。
Linux 目录结构:目录按照内容类别组织。逻辑上有一个最高级别的根目录“ /” ,其他所有的目录内容按照类别组织。乍一看很多,实际并不复杂。例如,一个 Linux 下的应用程序, 它的可执行程序在 /usr/bin , 它的数据文件和帮助在 /usr/share 下, 运行时加载的配置文件是从 /etc 下读取, 用户使用它编辑的内容则放在 /home 下面自己的目录中。
/ 根目录 │├ boot/ 启动文件。所有与系统启动有关的文件都保存在这里│ └ grub/ Grub 引导器相关的文件│├ dev/ 设备文件├ proc/ 内核与进程镜像│├ mnt/ 临时挂载├ media/ 挂载媒体设备│├ root/ root 用户的 $HOME 目录├ home/│ ├user/ 普通用户的 $HOME 目录│ └ .../│├bin/ 系统程序├ sbin/ 管理员系统程序├ lib/ 系统程序库文件
├ etc/ 系统程序和大部分应用程序的全局配置文件│ ├ init.d/ SystemV 风格的启动脚本│ ├ rcX.d/ 启动脚本的链接,定义运行级别│ ├ network/ 网络配置文件│ ├ X11/ 图形界面配置文件│├ usr/│ ├bin/ 应用程序│ ├ sbin/ 管理员应用程序│ ├ lib/ 应用程序库文件│ ├ share/ 应用程序资源文件│ ├ src/ 应用程序源代码│ ├ local/│ │ ├soft/ 用户程序│ │ └ .../ 通常使用单独文件夹│ ├ X11R6/ 图形界面系统│├ var/ 动态数据│├ temp/ 临时文件├ lost+found/ 磁盘修复文件
8
常用文件类型普通文件目录文件链接文件设备文件管道文件
文件中体现的面向对象思想即使 linux 是用 c 写的,还是有面向对象的思想在
里面。如 Linux 把设备也当文件来操作。这就是把资源抽象成文件,用统一的读、写命令即可操作不同种类的资源。
9
2 、配置文件配置文件就像 Windows 的注册表一样关系着 Linux 的
正常使用,大部分在 /etc/ 下。各种“ Linux 发行版”的图形配置工具往往不完善,可以通过直接修改配置文件实现各种设置。
注意:只有 root 权限才能修改配置文件,且修改前最好将文件复制一份,一旦出问题方便恢复。
常用的配置文件需要的时候再查,不同发行版各有不同: /etc/network/interfaces 网卡配置 /etc/apt/sources.list 软件包更新的网络源 /boot/grub/grub.cfg(ubutu) grub设置 /etc/profile:此文件为系统的每个用户设置环境信息 , 当用户
第一次登录时 , 该文件被执行 . 从 /etc/profile.d目录的配置文件中搜集 shell的设置 .
/etc/bash.bashrc:为每一个运行 bash shell的用户执行此文件 . 当 bash shell被打开时 , 该文件被读取 .
……
10
1.shell是什么2.shell的种类3.shell的实用功能
SHELL 简介
11
LinuxLinux 启动过程说明启动过程说明打开打开 PCPC 的电源的电源 BIOSBIOS开机自检开机自检按按 BIOSBIOS 中设置的启动设备中设置的启动设备 (( 通常是硬盘通常是硬盘 ))
启动,接着启动设备上安装的引导程序启动,接着启动设备上安装的引导程序 lilolilo或或 grubgrub开始引导开始引导 LinuxLinux
操作系统内核的引导(内核程序进内存)操作系统内核的引导(内核程序进内存) 执行执行 initinit 程序(操作系统开始初始化)程序(操作系统开始初始化) 启动启动 gettygetty ,等待用户登录系统,等待用户登录系统
命令行登录成功后进入命令行登录成功后进入 ShellShell图形界面登陆,启动图形界面登陆,启动 shellshell,, startxstartx
12
1 、 shell 是什么? Shell :字面意思“壳”;引申一下就是人机界面。是 linux 里用户使用 Linux 的桥梁(命令接口)。是C 语言编写的一个命令解释程序,解释执行用户命令或脚本程序。
特点:既是一种命令语言,又是一种程序设计语言。命令语言:交互式解释、执行用户输入的命令;程序设计语言:用于写 shell 脚本,非交互的执行
。有自己的语法,定义了各种变量和参数,提供许多在高级语言中才有的循环、分支等控制结构。
13
Shell 的启动与退出 系统启动自动根据配置信息启动 shell ,根据用户启
动的模式不同, shell 表现为全屏控制台终端:系统启动即启动 shell 。桌面终端:用户通过桌面上的菜单启动,找到系统
工具“终端”,打开即可启动 shell虚拟终端。
exit 命令退出到控制台终端的 login (登录)界面退出虚拟终端,回到图形桌面。
14
2 、 shell 的种类了解不同的 shell 及版本很有必要,不
同系统的 shell 从名字到 path 都有不同。当在不同平台之间移植脚本程序时,不同版本间还是存在着兼容的问题。
Bourne [buən] Shell( sh )最早的 shell ,在任何 unix 下都可以
找到的 shell ,选择它你可以在各种 unix上have a familar enviroment 。用来编程时简单、快速、但交互性上有些不足。
15
Korn shell(ksh)向下兼容 Bourne Shell语法,增加了一些新
的特性,并且运行速度较快,交互性也有提高。 C shell( csh )
与 bourne shell 不同,脚本编程语法类似 c语言 , 交互性比较好。
Bourne Again Shell(bash)GNU计划的一部分,用来替代 Bourne
shell 。编程语法与 Bourne Shell 相兼容,同时提供了 C Shell和 Korn Shell受人欢迎的特性。有灵活和强大的编程接口,同时又有很友好的用户界面。
16
大多数的 Linux 发行版 (Red Hat, Slackware, Caldera等 ) 都以 bash 作为缺省的shell :/bin/bash
看看当前登录的哪个 shell? echo $SHELL实际上就是显示系统变量 SHELL 的值。
更改默认 shellsudo usermod - s /bin/ksh
用 type 命令可以准确的告诉你一个可找到的命令的类型和位置type ksh
17
3 、 Shell 实用功能① tab 自动补齐命令输入命令的几个开始字符,按 TAB 可自动补齐命令
② 上、下光标键显示历史已经执行的命令③ 同行多命令的排列
分号ls –l ; cd \
先执行第一个命令,不管是否正确继续执行第二个 &&
ls –l && cd \ 只有当第一个命令执行完毕后,执行第二个命令
18
④设置别名( alias )alias [ 别名 ]=[需要定义别名的命令 ]alias ll=‘ls –al’注意事项: 等号两端不能空格,字符串最好加引号 浏览别名 :$ alias 取消别名 :$ unalias 命令 写入配置文件:为命令取的别名在该次登
录期间始终有效。若要别名在每次登录时都有效,需将 alias 命令写到初始化脚本文件中。
19
⑤ 输入输出流的重定向一般,默认的标准输入是键盘 stdin,标准输出是 stdout,标准错误输出 stderr默认是显示器(终端), (分别是 0 , 1 和 2 )
shell允许用户的输入输出不是标准设备。这就是输入输出重定向。
有关的字符:a) 输入重定向: <
用的地方较少,如wc -l -w < my.txt 统计文件 my.txt 中的行数和字数
20
b) 输出重定向: > 、>>ls > my.txt浏览当前目录的信息,但是结果不再输出到终端显示
,而是存到了my.txt 文件中。> 会覆盖文件原内容; >> 则是在原内容后追加
c) 管道符“ |”前一个的结果作为后一个命令的输入
ls | head -5浏览当前目录下的文件信息,但只显示前五条
21
1. Shell 命令格式2. 磁盘挂载使用 U 盘——体验设备与目录3. 常用命令分类详解
Linux 命令分类详解
22
1 、 Shell 命令格式在 shell 里执行命令都有统一的格式: 命令 –参数如: tar –zxvf a.gz该命令将压缩包 a.gz 解压
一般命令都带有很多参数,不容易全记住,不同的发行版命令参数也略有不同。多使用多练习,还可用linux 帮助命令查看:命令 --helpman 命令info 命令(支持文件的链接跳转)
-z 说明是解压 .GZ 类型文件-x 说明是解压操作-v 显示详细信息-f 必须,表示使用归档文件
-z 说明是解压 .GZ 类型文件-x 说明是解压操作-v 显示详细信息-f 必须,表示使用归档文件
23
Shell 执行的命令分为:内置命令例: whereis cd 没有结果,可见 cd 是内置命
令外部命令(对应一个程序文件,执行该命令时,由
shell 根据路径环境变量查找到命令对应的文件,触发其执行)
例: whereis ls 可看到它是在 /bin 目录下
24
2 、磁盘挂载 -- 使用 U 盘的操作实例两个概念
设备文件:所有的设备都在 /dev 下有对应的设备文件, U 盘作为磁盘设备, linux 把它识别为一个设备文件。 fdisk –l ,可查看全部设备号。挂载:Linux 中使用设备都需要将设备挂载到一个空目录,通过对目录的操作访问设备里的内容。 mount 命令可将设备挂载到目录。
虚拟机环境下的 U盘使用:U 盘设备被宿主机使用,可用虚拟机的设备菜单,找到 usb 设备选中,触发虚拟机检测 usb 设备。
25
具体步骤*1.虚拟机菜单选中 usb 设备,不同的虚拟机需要做的操作也略有
不同2.插入U 盘,观察自动提示的信息,找 /dev/sd 类或 hd 类的文字
或用 fdisk -l 命令(前两项硬盘信息出的很快, U 盘的信息需要执行一会才显示出来)
Disk /dev/sdc:1055MB,10...bytes2heads,63sectors/track,16355 cylindersunits=....Disk identifier:0x0011e973
Device Boot start end blocks id system/dev/sdc1 * 1 16356 1030384 b w95 FAT32我的 U 盘被识别为设备文件 /dev/sdc1
26
3. 执行命令mkdir /mnt/usb 自建一个空目录mount -t vfat /dev/sdc1 /mnt/usb 执行挂载命
令mount 查看所有挂载情况
4. 可以进入目录操作 U盘了 在 u 盘上建文件
cd /mnt/usblsvi my.txt按 i,进入编辑,写些内容。按冒号进入末行模式,输入wq 保存退出。
ls显示U盘文件, my 文本文件已经存在了:) 复制文件到 u 盘
cd ~ 到用户目录下新建文件后复制到 u 盘touch my2.txtcp my2 /mnt/usb
27
5.**卸载 **1. 保证所有的终端或窗口都不在 usb 目录下2. umount /dev/sdc13. 点掉虚拟机菜单中的可移动设备, u 盘就会转回被windows识别
28
3 、常用命令进程管理用户管理文件与目录操作磁盘管理网络管理帮助及其他命令
ctal+alt+fn exit reboot init 0 shutdown halt poweroff
29
常用命令分类列表文件管理 目录操作: ls浏览目录;
Mkdir 新建目录、 rmdir删除目录; pwd显示当前目录、 cd进入目录
cp 复制文件、 mv移动文件(重命名)、 rm删除文件
touch 新建文件、 ln 建文件链接
输出文件内容: cat、more可向后翻页、 less 前后翻页
部分输出文件内容: cut、 head
查找文件: find、 locate ,grep (按文件内容与指定的字符串匹配查找文件,涉及正则表达式)
chmod 设置文件权限其他:
*sort、wc、 comm、 diff、 clear清屏、 tar 压缩包处理
进程管理 查看进程状态: ps 、 top 进程控制: kill、 bg、 fg用户管理 passwd 设置密码、 who查询
当前登录用户 useradd、 usermod、 use
rdel groupadd、 groupmod、
groupdel su、 sudo 换为 root身份磁盘管理 fdisk、mount 挂载磁盘 df、 du ,查看磁盘空间网络管理 ifconfig ping、 arp、 ftp帮助及其他 man, info cal、 history
参考资料:【 1 】 Linux 常用命令全集 .chm
30
实验小问题 文件名有空格怎么办?
用引号cp “1 file” file2
用转义符 \cp 1\ file file3
怎么对付“死机”、错误命令的耗时执行、终端不响应快捷键(只对前台进程起作用)ctrl+c强行终止前台进程,相当于 windows的
alt+F4ctrl+z 将前台进程挂起到后台进程查看及终止命令ps 、 kill
31
进程管理进程与作业的启动方式:
Shell 命令直接启动:前台启动:输入 Shell 命令后,直接按回车键
启动前台作业;后台启动:输入 Shell 命令的末尾空一格
加“ &”符号,回车将启动任务并放于后台执行。
调度启动是系统按用户要求的时间或方式执行特定的进程。可通过 at调度、 batch调度和 cron调度实现。
32
Linux 是一个多用户多任务系统。当处于某个控制终端上的用户按下了 Ctrl+C 键时(产生 SIGINT 信号),系统如何知道将该信号发送到哪个进程,从而不影响由其他终端上的用户运行的进程呢?
Linux 内核通过维护会话和进程组管理多用户进程,如图所示。
一般而言,用户在某个终端上登录一个新会话就开始了。一个会话上有多个进程组。每个进程组由组中的领头进程标识 ( 领头进程的进程标识符就是进程组的组标识符 ),同样一个会话也有一个领头进程,由它与一个终端相连,会话与控制终端是一对一的关系。
同一会话中只能有一个前台进程组,属于前台进程组的进程可从控制终端获得用户发来的键盘信号 (ctrl+c; ctrl+z) 。
守护进程,由于关闭了标准输出、标准输入、错误输出等描述符,一般都是终端无关的后台进程。
33
①【进程查看 ——】 ps
最基本同时也是非常强大的进程查看命令。可以确定有哪些进程信息:运行的状态、是否结束、有没有僵死、哪些占用了过多的资源等。还可以监控不和屏幕键盘这些标准输入 /输出设备进行通信的后台进程的工作情况。
34
参数说明不同发行版命令参数的形式或有不同,以帮助为准。带不带 - ,是否大小写都要注意
35
参数说明: -A或 -e 输出所有进程的信息 -N 反向选中符合条件的进程,即不符合指定条件
的进程被输出 -a 输出除会话主进程外的当前控制台进程 -d 输出除会话主进程外的所有进程 r 将输出数据的范围限制在正在运行的进程 -C 命令名 选择命令名为“命令名”的进程
-u 用户名选择用户名为“用户名”的进程 -p 进程号选择进程号为“进程号”的进程 -F 以完全格式输出 -M 输出安全数据信息 s 显示信号格式 v 显示可是内存模式 -H 显示进程之间的继承关系 c 显示真实的命令名 e 显示环境信息 -w 以加宽模式输出 -H 以进程的模式显示线程
36
一次登录形成一个会话,一个会话占用一个控制台-A 输出所有进程信息-d 输出除会话主进程外的所有进程-a 输出各会话(已登陆控制台)上除会话主进程外的控制台进程。
a 所有控制台上的控制台进程,包括其他用户的进程。
37
ps 常用操作 ps aux,然后再利用一个管道符号导向到 grep去查找特定
的进程 ,然后再对特定的进程进行操作。 ps –C 命令名:可查看某个执行中的命令名的进程号
例
[root@localhost ~]# ps aux > ps001.txt[root@localhost ~]# more ps001.txt把所有进程显示输出到 ps001.txt 文件,然后再通过more 分页查看。
[root@localhost ~]# ps aux | grep tty
38
和 ps 命令的基本作用是相同的,显示系统当前的进程及其状态,但是 top 是一个动态显示过程。通过用户按键来不断刷新当前状态。如果在前台执
行该命令,它将独占前台,直到用户终止该程序为止。
提供了实时的对系统处理器的状态监视。它可以显示系统中 CPU 最“敏感”的任务列表。该命令可以按 CPU 使用、内存使用和执行时间对任务进行排序
它的很多特性都可以通过交互式命令、或者在个人定制文件中进行设定。
② 【 top】
39
显示结果排序的操作缺省按照 cpu 使用情况排序m 键:按照内存排序t键:运行时间进行排序u 键,键入用户名,查看某一用户的 CPU 使用情况
k键,输入 PID ,可终止某一进程q 键,退出 top
40
CTRL+C 结束前台进程问:为什么用该快捷键无法结束 find / -name xml &命令的执行
?
Kill 命令通过向进程发送信号控制进程,可用于结束后台进程。
–信号 或 -s 信号 :发送信号到指定的进程-l 信号 :将信号数值翻译成信号名称
常用: kill -9 PID 无条件撤销进程即 kill -KILL PID
执行 kill 时一定观察好 PID号,以免误删系统进程。 kill 执行是否成功,可用 ps检查被结束进程号是否还存在即可。
③【结束进程 ——】 kill
41
后台运行的进程,或不响应的进程只有用 kill 结束。
本例先运行一个错误命令,然后用kill 结束进程。
1. ps查进程 ID2. Kill -9 3465
42
关掉死机的桌面或终端1)默认启动进入命令行控制台终端 tty1
who 查看登录的用户情况ps –ax |grep tty查看各终端上运行的进程
43
2) 启动图形界面tty1 中执行 startx 启动图形桌面( tty7)
Ctrl+alt+f2 启动另一个控制台终端
44
3 )强制结束控制台终端kill -9 进程号结束终端 tty1 的 bash 的进程号
kil -9 2012由 tty1的 startx 启动的 tty7 也会结束
若 tty1 是默认的桌面窗口界面。若在tty2 下用前面的命令关闭 tty1 的终端进程,因为默认参数是启动窗口界面,所以系统可能会又自动启动桌面。
45
CTRL+Z 挂起当前的前台作业 jobs 命令可查看后台作业清单
作业号 状态 命令名 fg 作业号:将任务放回前台执行 bg 作业号:将任务放到后台执行
find / -name f*
④【前台、后台 ——】jobs、 fg、 bg
46
用户管理两个重要的账户配置文件
/etc/passwd :管理用户主要是通过修改此配置文件完成的 !
可用 cat 命令浏览一下 passwd 的内容:用户名:口令:标识号:组标识号:用户全称:主目录:登录 shell
一个账户信息占一行, 7 个段位用“:”分隔。实际上除了 root用户、普通用户外,还有许多虚拟用户,即系统运行需要的一些特定用户,这些用户一般不具有登录能力。/etc/shadow :实际存放用户口令的文件
47
Linux 下没有很方便的查看用户的命令,一般都是通过显示用户配置文件查看用户,可将这些常用用户操作建立别名,并写入配置文件中( ubuntu: /etc/bash.bashrc )。
查询系统中所有用户 alias alluser=‘cut –d‘:’ -f1 /etc/passwd’
查看普通用户 alias user=‘cut –d‘:’ -f1,6 /etc/passwd |grep /home’或‘ grep /home /etc/passwd |cut –d‘:’ -f1,6 ’
48
①【用户切换 ——】 su
如果用户名省略则切换到超级用户,切换用户可能需要提供目标用户的密码
参数说明:-l 重新加载登陆时的启动脚本-m 保留当前环境变量,不重新加载脚本
su – 用户名:可在切换身份同时保留 root环境变量,且切换到用户主目录下
49
②【临时切换身份 ——】 sudo与 su 不同,它是在单条命令中临时切换到其它
用户运行,运行后立即返回当前用户。默认情况下是超级用户。运行命令前系统可能会要求用户输入目标用户密码。
参数说明: -b 后台运行命令,运行后立即返回提示符,而不
是等待其运行结束后返回提示符。 -H 使用目标用户的主目录 -u{ 用户名 |用户 ID} 指定目标用户,缺省为超
级用户 不是所有用户都能执行 sudo,一般新建的用户默认不
在 sudo组,需要编辑 /etc/sudoers文件将用户加入,而修改该配置文件需要用 su到 root身份下操作。
50
③【修改用户密码 ——】 passwd
passwd [参数 ] [ 用户名 ]-d 删除指定用户的密码-l 锁定指定的用户-u 解除指定用户的锁定-wn 设定 n 为密码过期警告的天
数
51
④【添加删除用户—— adduser、 deluser】只有超级用户才能新建 \删除用户adduser、 deluser必 useradd、 userdel更方便些
useradd 【选项 】 用户名 - c 全名:指定用户的全称 - d 主目录:指定用户的主目录 …
userdel 【- r】用户名 - r选项,系统不仅将删除此用户帐号,并且还将用
户的主目录也一并删除
52
⑤【修改用户属性—— usermod】usermod 【选项】用户名 主要选项说明:- c 全名:指定用户的全称- d 主目录:指定用户的主目录- e 有效期限:指定用户帐号的有效期限- f 缓冲天数:指定口令过期后多久将关闭此帐号- g 组群 ID| 组群名:指定用户所属的主要组群-G 组群 ID| 组群名:指定用户所属的附加组群- s 登录 Shell :指定用户登录后启动的 Shell 类型- u 用户 ID :指定用户的 UID- l 用户名:指定用户的新名称
53
① 目录操作② 文件浏览③ 文件链接④ 文件基本操作:拷贝、移动、删除⑤ 文件属性修改⑥ 文件搜索
文件与目录操作
54
①【目录操作 —】 ls、mkdir、 rmdir、 cd、 pwd ls [–参数 ] 文件列表最常用命令。浏览目录下的内容。
ls-l 以长格式列出文件,包括文件大小,日期,属性等ls -i 输出文件的 i 节点的索引信息。可在根据 inode节点地址判
断文件的链接情况时使用ls –R 列出所有子目录下的文件ls –h 易读格式,以 k,G,M显示文件大小
ls –a 显示目录中的所有文件,包括隐藏文件。
ls -A 显示所有文件,但不显示 .和 ..
ls -d 列出目录
ls -F 加上标志, / 表示目录,@表示连结文件 …
55
ls 命令长格式说明图
文件属性 文件名修改时间所有者
所属组
长度
引用次数
r :可读; w :可写; x :可执行其他人权限同组者权限所有者权限
文件类型
- :普通文件d :目录c :字符设备b :块设备l :链接文件
56
只查看当前目录下的子目录
查看 -l浏览下以 d 开头的行
57
查看英文名的子目录 搭配 grep 的正则表达式
∧表示开始位置, $ 表示结束位置, [a-z] 表示字符的范围,.表示任意字符出现一次或更多次
查看以英文字母开头, / 结束的行
58
排序类参数 -t 以时间排序 time 。 -u 以文件上次被访问的时间排序 used -S 以文件大小排序 size -r 与排序的参数结合用,实现反序 reorder -X 以文件的扩展名 ( 最后一个 . 后的字符 ) 排序。 排序类的还有: c , f , u , U , r,横竖向: x , C
59
mkdir-p 建目录组,要建立目录的上层目录不存在会一
并建立上层目录-m 建立目录时同时设置目录的权限。-v 显示执行过程的相关信息
rmdir :删除空目录 -p 删除指定目录后,若该目录的上层目录已变
成空目录,则将其一并删除。 -v 显示执行过程的相关信息
60
cd 目录名(或指代符号)进入到指定的目录中,常用指代符号有:“ ..” 当前目录的上一级目录,“ ~ ” 用户的主目录“ -” 上一次变更当前目录前所在的目录。
pwd输出当前目录
61
file 语法: file [选项 ] … [-f] 文件 … 说明:显示指定文件的类型与编码格式。 参数说明:
-b 以简明方式显示信息 -f 指定该选项后面的字符串为文件列表 -z 查看压缩文件内部的文件信息 -d 显示调试信息 -s 按照普通文件处理特殊文件(如字符设备文
件)
62
wc-c 字节-w word-lline统计当前目录下的文件数和目录数# ls -l |grep "^-"|wc –l
# ls -l |grep "^d"|wc -l
63
② 【文件链接 ——】 ln
ln 链接有两种类型 硬链接( Hard Link )默认情况下, ln产生硬链接
。原文件和连接文件的 FCB记录了相同的 inode地址。建立硬链接时,链接文件和被链接文件必须位于同一个文件
系统中,并且不能建立指向目录的硬链接。
符号链接( Symbolic Link )。和win 下的快捷方式差不多。包含所链接文件的路径。可链接任意文件或目录,可链接不同文件系统的文件,甚至可以链接不存在的文件,网络文件。
64
硬盘
ln原理 文件放在外存,文件信息形成 FCB, FCB 的集合构成目录 访问一个文件时需要把目录调入内存,然后按名检索目录,
目录占用内存空间问题产生 按名检索时,名字不符的话其他信息并不需要读取,所以 FCB
中许多信息不需要全调入内存。减小 FCB :将文件的详细信息放入索引结点, FCB 中记录文
件名和 inode地址。目录小了,调入内存占空就少,检索也快了。
file1
内存
FCBname | inode
文件系统目录
file
file3file2
FCBname | 文件信息
文件系统目录
硬盘文件系统目录
Inode索引结点
65
touch f1 ln f1 ff ln –s f1 fff
硬盘
file1
FCBf1 | inode1ff | inode1fff | inode3 file| inode*
文件系统目录*/*/file1
•硬链接文件对儿,删除哪个都不影响对方,指定链接计数减少而已,减为 0 时文件才从硬盘消失。•符号链接原文件删被除,链接
文件将失效。如果重新给一个同路径同名文件,链接文件又会恢复。
66
观察题 紧跟权限后的数字描述了硬链接数
一个目录至少有 2 个硬链接:目录本身的相对目录“ .” ,以及作为其子目录的父目录“ ..” 都指向它。所以,如果目录下新建一个子目录,硬链接数为 3 。
观察下图中做标记的地方,你都看出了什么?
67
③流输出 — cat、 cut、 echo、 uniq、 sort、 tail、 head 1. cat
将文件和标准输入设备的输入使用标准输出流输出。常被用来显示文件的内容。如:
cat /etc/passwd 参数说明:
-b 对所有的非空行进行编号输出 -n 对所有的行进行编号输出 -T 将所有的“ Tab”显示成“ ^I
” -s 对于连续出现的多个空行,仅输
出一个空行 -E 在每行的结束位置输出“ $”
68
* more 命令显示文件内容,每次显示一屏。常与其他命
令结合使用:ls -–help |more
注意: more 命令中按“ ENTER” 是向后移动一行,按“ SPACE” 是向后移动一页,按“ q”退出。
* less 命令ls -–help |less
与more 相似,但浏览文本时允许往回看。 Less 并不在一开始就读入整个文件,因此在打开大型文件时比 vi 等文本编辑器快。
69
* Cut 命令截断显示文件中的内容,常用于对 /etc/
passwd 类的文件进行处理 :显示每行从开头算起 n1 到 n2 的文字。
cut –c n1-n2 file以空格为分隔符,显示第 2 个字段
cut –f 2 –d “ ” file
70
2. echo 将单行文本输出到标准输出设备。常用shell脚本中,查看变量的值。
export a=5echo $a 或 echo ${a}
参数说明: -n 在输出的最后不输出换行 -e 使用转义符 关于转义符的定义如下(仅列出相对常用的转义符):
\0NNN
输出ASCII码为NNN(八进制)的字符;
\\
反斜行;\a蜂鸣器;\b退格键;
\n
换行;\t TAB
71
3. sort对文件内容进行排序显示:cat /etc/passwd 默认是按进程号排序sort –t’:’–k3 -nr /etc/passwd参数说明: - t 分隔符:使用分隔符隔开不同区块,默认是 tab + start -end :由第 start区块排序到 end区块 - n :使用纯数字排序(默认是以字母方式排序) - r:反向排序 - u :相同出现的一行,只列出一次 -k: 按那个字段来进行排序
4. uniq删除相邻重复的行从而只显示一个,一般与 sort 配合使用。
72
例:利用 cat、 cut、 sort比较 ps 命令的不同
ps -a 输出各会话(已登陆控制台)上除会话主进程外的控制台进程。 ps a 输出所有控制台上的控制台进程,包括其他用户进程。
思路:将 ps 命令结果重定向到文件中,截断显示文件,比较不同 mkdir pscut && cd pscut ps –aF >>ps1 ps a -F >>ps2 比较 ps1和 ps2里的字段内容
cat ps1|head -3cat ps2|head -3
试着截取需要的字段cut –f1-3 ps1|head -1
没有截取正确,说明不是默认的 tab分隔,只能通过字符数截取,利用echo查字符数,用 cut –c截取:
echo “123456789012345678901234567890”cut –f1-3 ps1|head -1
73
试着截取 ps1, ps2 中相同的字段cut –c1-20,64- ps1|head -3cut –c1-20,67- ps2|head -3
截取 ps1, ps2 中相同的字段的内容,排序后重定向到 ps3
cut –c1-20,64- ps1 >>ps3cut –c1-20,67- ps2 >>ps3sort –r ps3查看即可挑出不同的项,若要单独挑出来,或许需要编程实现。
74
5. head 语法: head [参数 ]… [ 文件 ]… 说明:将文件或标准输入的前几行输出到标准输出。 参数说明:
-c N 指定输出的字节个数 -n N 指定输出的行数
6. tail 语法: tail [参数 ]… [ 文件 ]… 说明:将文件或标准输入的后几行输出到标准输出。 参数说明:
-c N 指定输出的字节个数 -n N 指定输出的行数
75
④ 【文件基本操作】— mv 、 rm 、 cp 、
touch创建新文件、修改文件时间
touch newfile1touch –a –t 2000123012.30 newfile1修改文件访问时间为 2000.12.30, 12: 30。
参数选项:-a:仅修改文件访问时间 access tiem-m :仅修改文件修改时间mtime-c:仅修改时间,而不建立文件-d :后面可以接日期,也可以使用 – date=“日期或时间”
-t:后面可以接时间,格式为【 YYMMDDhhmm】
76
mv
mv [选项 ] 源文件或目录 目标文件或目录 -f 若目标文件或目录名已存在则直接覆盖(缺省参数复制
文件时也是覆盖) -i 覆盖前先行询问用户。 -u 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
-v 执行时显示详细的信息。
-b 若需覆盖文件,则覆盖前先 backup-S<附加字尾 > ,与 -b参数一并使用,可指
定备份文件的所要附加的字尾。-V=< 方法> 与 -b参数一并使用,可指定
备份的方法。
小心文件覆盖!安全的方法:alisa mm=‘mv –i’
77
rmrm [–参数 ] 文件或目录
默认删文件或目录时不询问确定, -i 删除前先询问用户。 -f 强制删除。 -r 递归处理,将指定目录下的所有文件及子目录一
并处理 ( 或 -R) 。 -v 显示指令执行过程
小心误删除!安全的方法:alisa rmi=‘rm –i’
78
cp
cp [选项 ] 源文件 目标文件 - a 常在拷贝目录时使用。保留链接、文件属性,并递归地拷贝目录,作用等于 dpr选项的组合。- d 拷贝时保留链接。- p 把修改时间和访问权限等属性也复制到新文件- r 此时目标文件必须为一个目录名。将递归复制
该目录下所有的子目录和文件。( -R ) - f 目标文件已存在的直接覆盖而不提示。 - i 覆盖目标文件之前给出提示需求用户确认。 - l 不作拷贝,给源文件建硬链接文件。
79
普通的 cp 命令不拷贝目录;需借助 -R选项
要区别拷贝整个目录和目录里的内容
80
利用 mv 命令实现文件改名第二个参数是目录时移动,是文件则是改名
81
例:利用通配符进行文件批量处理 将当前目录下的所有的 C 语言程序文件拷贝至
Finished 子目录中cp *.c Finished
删除所有自建的测试文件(命名风格要统一才方便批量处理)rm test*rm –r dir*
bash环境下 cp 使用 *不能匹配类似 .开头的隐含文件。
82
⑤文件属性修改 文件拥有者 用户组 其他人
83
chmod chmod [-参数 ][选项 ] 文件和目录列表
文字设定法$chmod o+w my.txt$chmod ug+w,o-w my.txt$chmod +w my.txt$chmod –R +w myfoder( -R子目录递归处理) u: 所有者; g: 同组用户; o: 其他用户; a :所有用户(默认
)r;w; x ;(其他属性 s , t, u , g , o)
数字设定法用八进制数对应顺序 rwx如 777: 111 111 111 即 rwxrwxrwx664: 110 110 100 即 rw-rw-r—
84
例:无法进入的目录 关于目录的权限举例: [d][r w x][r - -][r - -]问题:非 root 的其他人是否可以进入该目录?注意: x 与目录的关系相当重要,如果在该目录
不能执行,也就无法进入。
ls –l会看到 /root 的权限是 rwxr--r-- ,可见,其
他用户都不能进入及浏览该目录。
85
root 是超级用户,可以在任何普通用户主目录中建目录。但 wxl 对 root 在其主目录下建立的文件及目录却只能有限使用。
试一试:chmod 700 -R mydiary mybook将私人的多个文件夹设置别人没有任何权限,超级用户 root 却不受限制。
86
⑥ 【文件搜索 ——】find、 grep
find -参数 [ 目录列表 ] [匹配标准 ] 在指定目录下查找文件或目录,缺省时查找当前目录
-print 默认选项,显示要查找的目录及子目录下的文件
-name 文件名:指定要查找的文件-user 用户名:指定用户的文件-size ±n 大于或小于指定大小的文件
缺省单位为 b ,代表 512字节的块-type x(x=d,l,f…) 类型的文件
c 字符设备文件、 b 块设备文件、 d 目录、 l符号链接文件、 f 普通文件、 p 管道文件
-atime n –amin n: 查找 n 天、分钟前访问过的文件
87
/home 目录下查找wxl 用户的名字是 CP字母开头的文件
find /home –user wxl –name “CP*”
88
对 find 的结果执行命令 -exec 末尾一定要加转义符和分号 ,分号代表了前
面的执行结果。
89
练习某个配置文件名字里包含 bashrc ,如何查找?
find / –name “*bashrc” –type f 2>err
90
查找当前目录及子目录下的名字包含my字符串的 5 天以内访问的文件;touch my1;touch my2;touch myfolder 并将他们删除,删除前需要用户确认,且显示删除过程。find -name “my*” –atime -5 –ok rm –v {} \; 并将他们复制到一个目标目录下find -name “my*” –atime -5 –exec cp {} myfolder \;
查找当前目录下的大小为 200字节内的普通文件,不包括隐藏子目录及隐藏文件。find –size -200c –type f | grep “\./[a-z].”
91
find locate whereis which
功能最强查找任意文件
在数据库中查找文件,较find 快。为保证查找的准确性,需要及时对数据库进行升级,执行udpatedb命令
在数据库中查找二进制文件、源程序文件或说明、文件
在 PATH指定的路径中查找可执行文件
其他查找命令
92
grep 对文件内容或所给输入,搜索包含与指定字符串模式匹配的项,并打印包含字符串的文本行。
搜索与定位文件或给定内容中特定主题和关键字方面非常有效-c 只显示匹配行的数量-i 比较时不区分大小写-h 行首不输出显示文件名-l 显示匹配的文件名-n 行首显示匹配行的行号-v 只显示不包含匹配串的行-x 只显示整行严格匹配的行
93
查找包含指定字符串内容的文件
filename 文件列表 非空,在指定文件范围里搜索,多个文件用空格分隔
为空,查询对象为标准输入设备。此方式常和管道符连用
94
支持正则表达式的字符串形式 正则表达式格式的字符串查找
以 he 开头,后一个字符是 l 或y
以 he 开头,后一个字符是 l 或 y ,但后面必须至少还有 1 个字符
以数字 1 或 2 或 3 开头,后面是 he ,再后面至少还有一个任意字符
95
* 正则表达式是什么 用于描述某些复杂的字符串规则的一种工具,在查找
、处理字符串的各种应用中都有广泛的使用( word的查找替换、 SQL、网页程序等里面都有正则表达式的。)
常见的元字符. 匹配除换行符以外的任意字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空白符\d 匹配数字\b 匹配单词的开始或结束^ 匹配字符串的开始$ 匹配字符串的结束
参考资料:正则表达式 30分钟入门教程 .pdf
96
不同的环境、符号是有意思差别的; 不支持正则表达式的情况,出现 *、?等是通配符
特殊字符做普通字符需使用转义字符?、 *、 [] 等字符作为 shell 的通配符有特殊意义,因此,
使用这些字符本身时,在它前面要加上“ \”转义字符。 同样对于转义符“ \” 本身以及其他对 shell 有意义的字符
,使用时也要注意转义。
例:ls a\?.c 列出当前目录下名为 a?.c 的文件
区分通配符和正则表达式
97
网络管理 ①【配置网络接口 ——】 ifconfig
ifconfig [参数 ]… [ 接口 ] [ 操作 ]ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
参数说明: -a 显示所有可用的接口信息,包括未连接的
接口 -s 显示短列表 -v 在发生错误的情况下显示更多的错误信息
操作说明: IP地址 设置 IP 网络地址信息up 激活指定接口down 关闭指定接口 [-]arp 开启 / 关闭 ARP协议使能netmask 地址 设置掩码add 地址 /掩码 添加 IPv6 网络地址信息del 地址 /掩码删除 IPv6 网络地址信息
98
举例:( 1 ) 配置 eth0的 IP地址, 同时激活该设备。#ifconfig eth0 192.168.1.10 netmask 255.255.255.0
up( 2 ) 配置 eth0 别名设备 eth0:1的 IP地址,并添加路由。#ifconfig eth0 192.168.1.3#route add –host 192.168.1.3 dev eth0:1( 3 ) 激活设备。#ifconfig eth0 up( 4 ) 禁用设备。#ifconfig eth0 down( 5 ) 查看指定的网络接口的配置。#ifconfig eth0( 6 ) 查看所有的网络接口配置。#ifconfig
99
通过配置文件的修改配置上网1. 编辑文件 /etc/network/interfaces:sudo vi /etc/network/interfaces2. 用下面的命令使配置文件的网络设置生效 :sudo /etc/init.d/networking restart
以DHCP 方式配置网卡配置文件中用下面的行来替换有关 eth0 的行 :
# The primary network interface - use DHCP to find our address
auto eth0iface eth0 inet dhcp 、 为网卡配置静态 IP地址
配置文件中用下面的行来替换有关 eth0 的行 :# The primary network interfaceauto eth0iface eth0 inet staticaddress 192.168.3.90gateway 192.168.3.1netmask 255.255.255.0#network 192.168.3.0#broadcast 192.168.3.255
100
②【网络连通测试 ——】 ping
ping [参数 ]… 目标地址
通过发送 ICMP的 ECHO_REQUEST报文,探测网络连通状态。默认情况将无限次的重复发送。 参数说明:
-b 目标地址允许是广播地址 -c N 设置发送的次数 -i 间隔 设置发送报文间的间隔,默认值为 1 秒 -n 仅适用数字输出 -q 不输出每次发送报文的结构,仅显示综合信息
-v 输出更多的信息
101
③【维护 arp缓存 ——】 arp
arp [参数 ]… [IP地址 MAC地址 ] 说明:维护 ARP缓存。 参数说明:
-a 查看 ARP缓存列表 -d IP地址 删除一条 ARP 信息 -s IP地址 MAC地址添加一条 ARP 信息
-v 输出更多的信息
102
④【 ftp】
ftp [参数 ] IP地址 [ 端口 ] 参数说明:
-i 在进行多文件传输是关闭提示符
-e 停止使用命令历史记录 -n 尝试自动登录
103
帮助及其他命令【简要帮助】
Linux 系统中有一套比较完善的帮助系统,利用帮助信息,你可以全面、详细的了解到 Linux命令的具体用法。
[ 命令 ] ——help
104
系统帮助命令【详细帮助】 man [ 命令 ] info [ 命令 ] 几个操作命令
q:退出 man 状态 enter: 逐行阅读 man 文件 空格键:逐页阅读 man 文件 b 键:向前翻页 /string: 查找 string 字符串
此处可输入 man 下的命令
105
man [ 选项 ] 命令名称常用选项 说 明-S 根据章节显示,一个命令可能会有很多类别,类别说明见下表-f 只显示出命令的功能而不显示其中详细的说明文件-w 不显示手册页,只显示将被格式化和显示的文件所在位置。-a 显示所有的手册页,而不是只显示第一个。-E 在每行的末尾显示 $ 符号
举例1 )man passwdman –S 5 passwd2 ) open,kill 这种既有命令 , 又有系统调用,也可用章节限定查找的范围man open 显示的是 open(1),即最前面 sectionman 2 open 查看 open系统调用
106
章节 man 命令的章节内容
1 一般使用者的命令
2 系统调用的命令,如 open,write 之类的 ( 通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件 )
3 C 语言函数库的命令,如 printf,fread
4 有关驱动程序和系统设备的解释
5 配置文件的解释,比如 passwd, 就会说明这个文件中各个字段的含义
6 游戏程序的命令
7 其它的软件或程序、有关系统维护命令
107
【 cal】语法: cal [参数 ]… [ [月份 ] 年份 ]说明:显示指定月份的日历,默认为当前月份。参数说明:
-3 显示指定月份的前一个月、指定月份、下一个月三个月的日历
-m 以“星期一”为星期的起始-w 在每栏下面显示星期数-y 显示指定年份所有月份的日历
【 history】语法: history [参数 ]说明:显示输入过的所有命令。
课后问题1. Shell、 Bash、 emacs 是
什么?2. 如何获得命令的帮助?3. 用户 user登陆 linux后
touch my.txt, 则该文件完整路径是?
4. 用户信息存放在哪个文件?5. 结束进程需要用到哪些命令?6. 如何浏览指定目录下的子目录
,如何删除有内容的目录?7. 如何查找一个昨天建的 c 程序
文件?如何设置该文件只有所有者可用。
8. 怎么将多个文件打包?9. 挂载是怎么回事?和它密切关
系的一个文件目录是?如何挂载一个 windows 文件系统的分区或硬盘?
作 业 1.初次实验可试试用虚拟机安装 linux2.初次使用 linux 的练习
1. 在默认图形界面下登录,体验桌面操作环境和命令行环境。
2.练习用不同的用户登陆控制台终端, Alt+ctrl+Fn 切换多个全屏字符界面
3.开启多个命令终端或控制台,练习logout, exit, su, startx, shutdown、 halt 等
4.浏览熟悉 linux 的文件系统目录结构(可借助图像界面)。
3.练习课件中的例子4. 实验报告一: shell 命令的使用(课本课后题)
110
以下作为阅读抓图为 fedora 系统下的执行效果
111
磁盘、设备管理 加块新硬盘( U 盘)
1. fdisk 分区2. mkfs创建文件系统3. mount 挂载文件系统(或修改配置文件
可设置开机自动挂载文件系统 :fedora 下为 /etc/fstab )
4. umount卸载文件系统
112
1. 分区工具 fdisk fdisk -l 列出硬盘分区信息 fdisk /dev/sda 交互模式操作 sda 设备
m 显示所有可用命令 p 显示硬盘分区信息 n 、 e 、 p 创建新、扩展、主分区 t更改分区文件系统 d 删除硬盘分区 w 、 q 保存、不保存退出
2. 格式化文件系统 mkfs mkfs 参数 – t 文件系统类型 设备名
mkfs–t ext3 /dev/sda5
113
系统识别设备 sdb fdisk /dev/sdb
p 查看分区情况d 删除已有分区n 建立新分区w 写入退出
reboot mkfs –t vfat /dev/sdb1
2G 以上 fat32,mkfs 的不支持
114
3 、挂装文件系统 mount [选项 ] [-t 文件系统类型 ] 设备名 挂载目录
名 -t 指定设备的文件系统类型 选项
r 只读w 读写
文件系统类型(光盘、磁盘两大类)光盘: iso9660U 盘: vfat dos(fat16): msdoswindows(fat32 ): vfatwindowsnt : ntfs
115
mount 命令没有建立挂载点的功能,因此你应该确保执行 mount 命令时,挂载点已经存在
挂载 windows 分区、软盘、光盘mount -t vfat /dev/hda1 /mnt/winmount -t msdos /dev/fd0 /mnt/floppymount -t iso9660 /dev/cdrom
/mnt/cdrom
-o 指定挂载时的选项,见备注mount –o ro /dev/sda5 /mnt/tem以只读方式挂载 sda5 分区到 tem 目录
116
压缩包的管理
打包:将多个文件和目录变为一个总文件压缩:将一个大文件通过压缩算法编程一个小
文件 linux许多压缩程序只能对一个文件操作,对
多个文件压缩需要先打包,然后压缩。打包 tar压缩程序 gzip
117
tar tar - 主选项 [ 辅选项 ] 包名 [ 文件或者源 / 目的目录 ]
主选项:必须要有 -c 建立新的备份文件 -x 从档案文件中释放文件 -t 列出备份文件的内容 -r 新增文件到已存在的备份文件的结尾部分 -u 用新增文件更新包里的文件,如果文件没有,则追加到包的最后
辅选项: -f 使用档案文件或设备,这个选项通常是必选的,且写在最后,与文件名紧挨着。
-v 详细报告 tar 处理的文件信息。 -j 用 bzip2压缩,压缩率大于 z -z 用 gnzip压缩处理备份文件
看扩展名决定用 j 或 z.tar 不压缩.tar.gz 用 gnuzip 压缩 .tar.bz2 用 bzip2 压缩
常用组合cvf 、 xvf 、 cvjf 、 xvjf 、 cvzf 、 xvzf
118
解包到指定目录需要参数 C
119
gzip、 gunzip压缩解压程序由GUN开发。以gz为扩展名。 tar 中使用参数“ z”调用。
120
* 压缩程序 gzip myfile gzip -d myfile.gz 把当前目录下的每个文件压缩成 .gz 文件。
$ gzip * 把当前目录下的每个压缩文件解压,并列出详细的信息。
$ gzip -dv *.gz 详细显示每个压缩文件的信息,并不解压。
$ gzip -l *.gz 将压缩文件 text.zip 在指定目录 /tmp 下解压缩,如果已有相
同的文件存在,要求 unzip 命令不覆盖原先的文件。 $ unzip -n text.zip -d /tmp
查看压缩文件目录,但不解压。 $ unzip -v text.zip
zip 、 unzip : .zip 格式的压缩文件gzip 、 gunzip : .gz 格式的压缩文件
121
df 检查文件系统的磁盘空间占用情况。获取硬盘被占用了多少空间,
目前还剩下多少空间等信息。 显示的各列:
第 3 , 4 列块数之和不等于第 2 列的块数是因为缺省每个分区都留了少量空间供系统管理员使用,列表示普通用户空间使用的百分比,即使这一数字达到 100%,分区仍然留有系统管理员使用的空间。
-a 显示所有文件系统的磁盘使用情况,包括 0 块( block )的文件系统,如 /proc 。
-h 以可读性较高的方式来显示信息。 k\m\g -i 显示 i节点信息,而不是磁盘块。 -t 显示各指定类型的文件系统的磁盘空间使用情况。 -x 列出不是某一指定类型文件系统的磁盘空间使用情况(与 t选项相反)。
-T 显示文件系统类型。 df –h 只显示所有挂载的磁盘。如果未mount 的磁盘可以通过
指出分区设备查看:如 df -h /dev/sda1
设备文件 数据块( 1KB)数目
已用的数据块数目
可用的数据块数目
Use% Mounted on
122
du 查看文件占用的 block 数量;如果目标是目录,就报告分配到目录中文件以及分配到目录自身的块的数量和-a 报告对象的块数量;若对象是目录,则报告
其所有个体的块数量。-s 报告指定的对象的块数量。-h 以 K ,M , G 为单位,提高信息的可读性
。如 du -s /home/fran
只显示 /home/fran 目录及其包含文件的磁盘使用情况的总和
123
df、 du区别 对同一个目录用 df 命令及 du –s 命令,算出的文件
系统使用块数的值不一致? du -s 命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数;
df 命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。这里面包含了一些系统使用的块。
文件系统分配一些磁盘块用来记录它自身的一些数据,这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。 du命令是用户级的程序,它不考虑 Meta Data,而 df命令则查看文件系统的磁盘分配图并考虑 Meta Data。
如果用户删除了一个正在运行的应用所打开的某个目录下的文件,则 du命令返回的值显示出减去了该文件后的目录的大小。但df命令并不显示减去该文件后的大小。直到该运行的应用关闭了这个打开的文件, df返回的值才显示出减去了该文件后的文件系统的使用情况。
124
du、 ls区别 一个文件占用的磁盘空间和一个文件的大小是两码事du 不是显示文件大小 , 而是显示文件所占用的
block 大小。 linux 一般默认块是 4k(4096) ,因此一个大小为 1 个字节的文件,最小也要占用4k 。
ls -l 是文件的实际大小