Linux—目录和文件(总结)

目录

第三章   目录和文件

1.1 类Unix系统目录结构

1.2 用户目录

1.2.1 相对路径和绝对路径

1.3 ls

1.4 cd

1.5 which

1.6 pwd

1.7 mkdir

1.8 rmdir

1.9 touch

1.10 rm

1.11 mv

1.12 cp

1.13 cat

1.14 more

1.15 less

1.16 head

1.17 tail

1.18 ln     (比较重要)

1.19 tree

1.20 wc

1.21 od

1.22 du

1.23 df


第三章   目录和文件

1.1 类Unix系统目录结构

ubuntu没有盘符这个概念,不和Windows中有C盘,D盘等盘一样,只有一个根目录/,所有文件都在它下面。

/ 根目录

bin //系统可执行程序,如命令

boot //内核和启动程序,所有和启动相关的文件都保存在这里

grub //引导器相关文件

dev //设备文件

etc //系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如LILO参数、用户账户和密码。

home //用户的主目录。下面是自己定义的用户名的文件夹

lib //系统程序库文件,这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system32目录,几乎所有的应用程序都需要用到这些共享库。

media //挂载媒体设备,如光驱、U盘等

mnt //目录是让用户临时挂载别的文件系统,如挂载Windows下的某个分区,ubuntu默认还是挂载在/media目录。

opt //可选的应用软件包(很少使用)

proc //这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。

sbin //管理员系统程序

selinux

srv

sys //udev用到的设备目录树,/sys反映你机器当前所接的设备

tmp //临时文件夹

usr //这是个最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录下。

bin // 应用程序

game //游戏程序

include

lib //应用程序的库文件

lib64

local //包含用户程序等

sbin //管理员应用程序

1.2 用户目录

       位于/home/user,称之为用户工作目录或家目录,表示方式:

/home/user

~

Linux—目录和文件(总结)

1.2.1 相对路径和绝对路径

绝对路径

从/目录开始描述的路径为绝对路径,如:

cd /home

ls /usr

相对路径

从当前位置开始描述的路径为相对路径,如:

cd ../../(上一级目录的上一级目录)

ls abc/def(本目录下的abc目录下的def文件或目录)

Linux—目录和文件(总结)

Linux—目录和文件(总结)

.和..

每个目录下都有.和..

. 表示当前目录

.. 表示上一级目录,即父目录

根目录下的.和..都表示当前目录

Linux—目录和文件(总结)

Linux—目录和文件(总结)

1.3 ls

ls [OPTION]… [FILE]…

ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常用的一个命令,因为用户需要不时地查看某个目录的内容。该命令类似于DOS下的dir命令。对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。

主要的OPTION有:

-a 列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc

-l 列出文件的详细信息

-R 连同子目录中的内容一起列出

Linux—目录和文件(总结)

用ls -l命令显示的信息中开头是由10个字符构成的字符串,其中第一个字符表示文件类型,它可以是下述类型之一:

- 普通文件

d 目录

l 符号链接(相当于Windows下的快捷方式)

b 块设备文件(简单理解相当于存储的U盘,磁盘等)

c 字符设备文件(我们的鼠标键盘都是字符设备)

s socket文件,网络套接字(网络通信文件)

p 管道

后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写和执行权限。各权限如下所示:

r 读

w 写

x 可执行。对于目录,表示进入权限。

s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组ID)。

t 设置标志位(sticky bit)。如果是有sticky bit的目录,在该目录下任何用户只要有适当的权限即可创建文件,但文件只能被超级用户、目录拥有者或文件属主删除。如果是有sticky bit的可执行文件,在该文件执行后,指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。

- 没有相应位置的权限。

访问权限后面的数字表示与该文件共享inode的文件总数,即硬链接数(参见下面ln命令)。

一个目录默认大小是4096个字节,或者是4096的整数倍。

第1位表示文件类型;2,3,4位表示文件所有者的权限;5,6,7位表示文件所属组的用户的权限;8,9,10位表示其他用户的权限

Linux—目录和文件(总结)

文件的权限位—硬链接计数—文件所有者—文件所属组—文件大小—文件创建时间—文件名

硬链接计数:一个磁盘文件被引用的次数。

1.4 cd

change dir 改变当前所在路径

cd ~                     回到家目录:从当前目录回到此时用户的主目录下

Linux—目录和文件(总结)

cd dir1/dir2                 到dir1下的dir2目录

注释:此方法只能在此时所在目录到此目录中所存在的目录里的目录,也就是假如你现在在a目录下,a目录里面包含一个b目录,b目录里面包含一个c目录,你只能写成cd b/c 不能写成 cd a/b 除非你所在的a目录下包含有一个a目录。

Linux—目录和文件(总结)

cd ..                             回到上一级目录

Linux—目录和文件(总结)

1.5 which

查看指定命令所在路径

which ls         查看ls这个命令所在路径

Linux—目录和文件(总结)

       注释:ls /bin/ls -l 意思是查看bin目录下的ls的详细信息,-l,在文件名前后都可以。

1.6 pwd

查看当前所在路径,此路径为绝对路径

pwd

Linux—目录和文件(总结)

1.7 mkdir

mkdir [OPTION] DIRECTORY…

创建目录DIRECTORY,可以一次创建多个。OPTION如果是-p,表示可以连同父目录一起创建。

Linux—目录和文件(总结)

       如果想一步创建一个层级目录,比如就是创建一个x目录,在x目录下创建一个y目录,在y目录下创建一个z目录;想一步完成。命令如下所示:

mkdir -p  x/y/z           创建层级目录

Linux—目录和文件(总结)

Linux—目录和文件(总结)

注释:1、必须在mkdir后面加一个-p不然无法创建层级目录。

          2、创建的空目录里面只有.和.. ;也就是当前目录和上一目录;也就是说目录里只有.和..的目录是空目录。

         3、命令tree功能是按显示目录和文件

1.8 rmdir

rmdir [OPTION]… DIRECTORY…

删除空目录,不是空目录无法删除。可以一次删除多个。OPTION如果是-p,表示可以连同空的父目录一起删除。mkdir和rmdir的用法举例:

$ mkdir a

$ mkdir a/b  

$ ls a     

b

$ rmdir a/b

$ ls a

$ rmdir a

$ mkdir a/b

mkdir: cannot create directory `a/b': No such file or directory

$ mkdir -p a/b

$ rmdir -p a/b

rmdir y/z 删除此目录下的y目录里的空目录z。

rmdir -p x/y/z 删除层级空目录,如果三个目录里只要有一个目录不是空目录就删除失败。

1.9 touch

touch [OPTION]… FILE…

* 如果文件不存在,则创建一个字节数为0的文件。

* 如果文件存在,将每个文件的访问及修改时间都更新为目前的时间。相当于此时你创建了一个同名文件,由原来的文件里的东西copy到你此时创建的新同名文件中,然后自动将旧文件删除了。也就是更新了文件的创建时间。

1.10 rm

删除文件:

rm file           删除文件file

删除目录:

rm -r XX        删除目录XX,-r在目录名前后都可以。

rm dir -rf              r是递归的意思,f是force,强制、强行,不管目录dir存不存在,都执行删除操作,如果目录dir不存在,也会执行删除操作,不会报错提示目录dir不存在。-rf 在目录名前后都可以。

1.11 mv

重命名:

mv file1 file2         将文件file1重命名为文件file2

移动文件:

mv file1 ~/           将文件file1移动到目录~下

mv file1 ../            将文件file1移动到上一级目录

mv ../file1 ./          将上一级文件file1移动到当前目录下

1.12 cp

拷贝文件:

cp file1 file2          将文件file1拷贝一份命名为file2

cp file1 dir/           将文件file1拷贝到dir这个目录下,拷贝的文件名字还是叫file1

cp file1 ../             将文件file1拷贝到上一级目录,名字不变。

拷贝目录:

cp dir1 dir2 -r       将目录dir1 里的内容拷贝到目录dir2中,递归拷贝。

cp dir1 ~/ -r         将目录dir1 里的内容拷贝到目录~中。

1.13 cat

查看文件里内容,输出到终端,如果cat时没跟文件名,则读标准输入,遇到\n后,输出到标准输出,终端下输入Ctrl-d表示结束。

Linux—目录和文件(总结)

 

1.14 more

more [OPTION] FILE…

查看文本文件的内容,屏幕显示完一屏就等待用户按下任意键再滚动到下一屏,按回车键按一次继续显示下一行,按一次显示一行;按空格会每次新显示一屏幕;按住shift键配合PgUp,PgDn上翻页,下翻页;如果中途不想继续看下去了,可以按q或Ctrl+C终止显示。

1.15 less

less [OPTION] FILE…

查看文本文件的内容,屏幕显示完一屏就等待用户按键,用户可以向上或向下查看,如果中途不想继续看下去了,可以按Ctrl+C或q终止显示。

1.16 head

head [OPTION]… FILE…

显示指定文件的前面几行。如果没有指定文件,将从标准输入(键盘)上读取。如果没有指定要显示的行数,则默认显示前10行。如果要显示文件的前5行:

$ head -5 file1             显示文件file1的前5行

1.17 tail

tail [OPTION]… FILE…

显示文件的最后几行。若没有指定显示的行或字符数,则默认显示末尾10行。如果要显示文件末5行:

$ tail -5 file1         显示文件file1的末5行

1.18 ln     (比较重要)

创建链接,链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)(软链接)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。如果给ln命令加上-s选项,则建立符号链接。举例如***意ls -l列出文件的硬链接数和字节数:

硬链接:

touch hello

ln hello word_h

软链接:

ln -s hello word_s

Linux—目录和文件(总结)

Linux中的符号链接相当于Windows中的快捷方式,如果把a删除了,Windows中就相当于把软件删除了,软件没了,那软件的快捷方式也就没有用了。所以Linux中删除了文件的节点信息,那关于该节点的符号链接就没用了。硬链接是为对应文件创建一个新的文件节点,删除原来的文件节点a,对于新创建的文件节点b和c不会有影响,文件也不会被删除。

注释:符号链接(软链接)的名字在Linux的Ubuntu中颜色是亮蓝色(水绿色),当符号链接对应的文件(如上图的a)被删除后,符号链接X就失效了,颜色就会变成红色,并且陪黑框包裹住;但b和c还是有用的,能够继续查看文件,磁盘文件没有被真正删除。

 注释:只有当一个文件的硬链接计数变为零的时候,这个磁盘文件才会被认为被删除掉,空间才会被释放掉。

Linux—目录和文件(总结)

Linux—目录和文件(总结)

注释:权限位后面的数字意思为硬链接计数:一个磁盘文件被引用的次数。

一个磁盘文件的硬链接增加,硬链接计数就会增加,反之减少。

1.19 tree

Ubuntu默认没有安装这个命令,这个命令需要下载安装,ubuntu下命令为:

sudo apt-get install tree            安装命令tree

按结构树的形状显示目录和文件

1.20 wc

利用wc 指令我们可以计算文件的Byte 数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则wc 指令会从标准输入设备读取数据。

wc -l ./*

-c 或–bytes 或–chars 只显示Bytes 数。

-l 或–lines 只显示列数。  

-w 或–words 只显示字数。

Linux—目录和文件(总结)

       从左到右分别表示43行,41个单词数,126个字符,所属文件为h.txt文件。看行数是看\n  ,看单词数是看空格,看字符数是一个一个字符相加。

1.21 od

od -tcx file1

-t 指定数据的显示格式,主要的参数有:

c ASCII字符或反斜杠序列

d[SIZE] 有符号十进制数,每个整数SIZE字节。

f[SIZE] 浮点数,每个整数SIZE字节。

o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。

u[SIZE] 无符号十进制数,每个整数SIZE字节。

x[SIZE] 十六进制数,每个整数SIZE字节。

部分示例如下所示:

Linux—目录和文件(总结)

Linux—目录和文件(总结)

其他不常用参数

od –help        会显示关于od的其他参数及od的详细信息,示例如下所示:

Linux—目录和文件(总结)

1.22 du

查看某个目录的大小:

以M为单位(兆MB),当文件大小不够1MB时,向上取整,显示为1MB。

du -hm /home/xingwenpeng/test

以B为单位(字节)

du -hb ./*

以K为单位,4k的整数倍

du -hk ./*

1.23 df

df查看磁盘使用情况

df --block-size=GB              以GB的形式显示

df --block-size=MB              以MB的形式显示

df --block-size=KB               以KB的形式显示

Linux—目录和文件(总结)