Linux 基础 (2) -- 目录和文件

1. 类 Unix 系统目录结构

/:根目录

bin:系统可执行程序,bin是Binary的缩写, 这个目录存放着最经常使用的命令。

boot:内核和启动程序,所有和启动linux相关的核心文件都保存在这里,包括一些连接文件以及镜像文件。

grub:引导器相关文件

dev:外部设备文件,在Linux中访问设备的方式和访问文件的方式是相同的。

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

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

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

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

mnt:目录是让用户临时挂载别的文件系统,如挂载Windows下的某个分区,ubuntu默认还是挂载在/media 目录,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

opt:存放可选的应用软件包(很少使用) ,比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

proc:这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里,,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

sbin:s就是Super User的意思,这里存放的是系统管理员使用的管理员系统程序

root:该目录为系统管理员,也称作超级权限者的用户主目录。

selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

srv:该目录存放一些服务启动之后需要提取的数据。

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

tmp:这个目录是用来存放一些临时文件的

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

usr/bin:系统用户使用的应用程序。

usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

game:游戏程序

local:包含用户程序等

lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

注意:
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

2. 用户目录

1. 相对路径和绝对路径

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

相对路径:从当前位置开始描述的路径为相对路径,如:../../abc/def
每个目录下都有...

  1. . 表示当前目录
  2. .. 表示上一级目录,即父目录 根目录下的.和…都表示当前目录

2. ls

功能:列出当前目录下的所有子目录和文件
命令格式:ls [OPTION]… [FILE]…
参数选项:

  1. -a:列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc
  2. -l:列出文件的详细信息
  3. -R:连同子目录中的内容一起列出

案例:ls -l
Linux 基础 (2) -- 目录和文件
开头是由10个字符构成的字符串,其中第一个字符表示文 件类型,它可以是下述类型之一:
1.-普通文件
2. d 目录
3. l 符号链接
4. b 块设备文件
5. c 字符设备文件
6. s socket文件,网络套接字
7. p 管道

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

  1. r 读,数字 4
  2. w 写,数字 2
  3. x 可执行。对于目录,表示进入权限,数字 1
  4. s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。
  5. t 设置标志位(sticky bit)。如果是有sticky bit的目录,在该目录下任何用户只要有适当的权限即可创建文件,但文件只能被超级用户、目录拥有者或文件属主删除。如果是有sticky bit的可执行文件,在该文件执行后, 指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。
  6. - 没有相应位置的权限。

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

3. cd & which & pwd

cd:change dir 改变当前所在路径,如:cd dir1/dir2

which:查看指定命令所在路径,如:which ls

pwd:查看当前所在路径

4. mkdir & rmdir & touch & rm

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

rmdir:rmdir [OPTION]… DIRECTORY…,删除空目录,可以一次删除多个。OPTION如果是 -p,表示可以连同空的父目录一起删除。

touch:touch [OPTION]… FILE…,第一个作用是将每个文件的访问及修改时间都更新为目前的时间;第二个作用是如果文件不存在,则创建一个字节数为0的文件。

rm:rm file,删除文件;rm -r dir 删除目录

5. mv & cp

mv:mv file1 file2,重命名;mv file1 dir,移动文件

cp:cp file1 file2 cp file1 dir/,拷贝文件;cp dir1 dir2 -r,拷贝目录

6. cat & more & less & head & tail

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

more:more [OPTION] FILE…,查看文本文件的内容,屏幕显示完一屏就等待用户按下任意键再滚动到下一屏,如果中途不想继续看下去了,可以按Ctrl+C或q终止显示。

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

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

tail:tail [OPTION]… FILE…,显示文件的最后几行。若没有指定显示的行或字符数,则默认显示末尾10行。如果要显
示文件末5行:tail -5 file1

7. ln

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

先创建一个文件:touch hello
硬链接:ln hello word_h;软链接:ln -s hello word_s
ls -l 得到如下结果:
Linux 基础 (2) -- 目录和文件

8. tree & wc & od

tree:这个命令需要下载安装,ubuntu下:sudo apt-get install tree,作用是按结构树的形状显示目录和文件

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

  1. -c 或–bytes 或–chars 只显示 Bytes 数。
  2. -l 或–lines 只显示列数。
  3. -w 或–words 只显示字数。

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

  1. c ASCII字符或反斜杠序列
  2. d[SIZE] 有符号十进制数,每个整数SIZE字节。
  3. f[SIZE] 浮点数,每个整数SIZE字节。
  4. o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。 u[SIZE] 无符号十进制数,每个整数SIZE字节。
  5. x[SIZE] 十六进制数,每个整数SIZE字节。

9. du & df

du:查看某个目录的大小: 以M为单位:du -hm /home/sihai/test;以B为单位:du -hb ./*;以K为单位,4k的整数倍:du -hk ./*
Linux 基础 (2) -- 目录和文件
df:查看磁盘使用情况,df --block-size=GBdf --block-size=MB
Linux 基础 (2) -- 目录和文件