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
每个目录下都有.
和 ..
-
.
表示当前目录 -
..
表示上一级目录,即父目录 根目录下的.和…都表示当前目录
2. ls
功能:列出当前目录下的所有子目录和文件
命令格式:ls [OPTION]… [FILE]…
参数选项:
- -a:列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc
- -l:列出文件的详细信息
- -R:连同子目录中的内容一起列出
案例:ls -l
开头是由10个字符构成的字符串,其中第一个字符表示文 件类型,它可以是下述类型之一:
1.-
普通文件
2. d 目录
3. l 符号链接
4. b 块设备文件
5. c 字符设备文件
6. s socket文件,网络套接字
7. p 管道
后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主的权 限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示 对文件的读、写和执行权限。各权限如下所示:
- r 读,数字 4
- w 写,数字 2
- x 可执行。对于目录,表示进入权限,数字 1
- s 当文件被执行时,把该文件的UID或GID赋予执行进程的UID(用户ID)或GID(组 ID)。
- t 设置标志位(sticky bit)。如果是有sticky bit的目录,在该目录下任何用户只要有适当的权限即可创建文件,但文件只能被超级用户、目录拥有者或文件属主删除。如果是有sticky bit的可执行文件,在该文件执行后, 指向其正文段的指针仍留在内存。这样再次执行它时,系统就能更快地装入该文件。
-
-
没有相应位置的权限。
访问权限后面的数字表示与该文件共享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
得到如下结果:
8. tree & wc & od
tree:这个命令需要下载安装,ubuntu下:sudo apt-get install tree
,作用是按结构树的形状显示目录和文件
wc:利用 wc 指令我们可以计算文件的列数、字数、 Byte 数,若不指定文件名称、或是所给予的文件名为“-”,则 wc 指令会从标准输入设备读取数据,它的参数选项:
- -c 或–bytes 或–chars 只显示 Bytes 数。
- -l 或–lines 只显示列数。
- -w 或–words 只显示字数。
od -t:指定数据的显示格式,如:od -tcx file1
,主要的参数有:
- c ASCII字符或反斜杠序列
- d[SIZE] 有符号十进制数,每个整数SIZE字节。
- f[SIZE] 浮点数,每个整数SIZE字节。
- o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。 u[SIZE] 无符号十进制数,每个整数SIZE字节。
- x[SIZE] 十六进制数,每个整数SIZE字节。
9. du & df
du:查看某个目录的大小: 以M为单位:du -hm /home/sihai/test
;以B为单位:du -hb ./*
;以K为单位,4k的整数倍:du -hk ./*
df:查看磁盘使用情况,df --block-size=GB
,df --block-size=MB