引子
作为一个程序员,Linux永远是一个难以绕过的开发环境,在日常的工作与或者学习中,总会或多或少的用到Linux,学习Linux的计划依旧酝酿很久了,平时总是随便看看各种文档,没有经过一个系统的学习过程,开这个新坑,总结Linux的基础知识,大概就是这样。现在就进去Linux目录结构及文件的基本操作学习部分吧。
Linux 目录结构
在学习Linux目录结构前,需要了解的是,Linux目录与Windows的目录的区别,在一般的操作体验中,感受不到多大的不同,但是它们的实现机制是完全不同的。
一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系上,以往的 Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘…)及分区来实现文件管理,然后之下才是目录,目录就显得不是那么重要,除系统文件之外的用户文件放在任何地方任何目录也是没有多大关系。所以通常 Windows 在使用一段时间后,磁盘上面的文件目录会显得杂乱无章(少数善于整理的用户除外吧)。然而 UNIX/Linux 恰好相反,UNIX 是以目录为主的,Linux 也继承了这一优良特性。 Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)服务器载入某特定目录等。
FHS标准
Linux 的目录结构说复杂很复杂,说简单也很简单。复杂在于,因为系统的正常运行是以目录结构为基础的,对于初学者来说里面大部分目录都不知道其作用,重要与否,特别对于那些曾经的重度 Windows 用户,他们会纠结很长时间,关于我安装的软件在哪里这类问题。说它简单是因为,其中大部分目录结构是规定好了的(FHS 标准),是死的,当你掌握后,你在里面的一切操作都会变得井然有序。
FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
FHS定义了两层规范
一、
/
下面的各个目录应该要放什么文件数据,例如/etc
应该放设置文件,/bin
与/sbin
则应该放可执行文件等。二、针对
/usr
及/var
这两个目录的子目录来定义。例如/var/log
防止系统日志,/usr/share
放置共享数据等。
可以自己在环境下键入如下命令查看
tree [directory]
没有安装该命令的话自行安装。
实际效果如下
目录路径
路径就是想要到达目的地的路线,如果想要进入某个特定的目录或者获取某个特定目录的文件,就需要使用文件路径。
使用cd
切换目录,Linux中.
表示当前目录,..
表示上一级目录,-
表示上一次所在目录,~
通常表示当前用户的home
目录。使用pwd
可以获取当前目录的绝对路径。
示例:
绝对路径
顾名思义,就是从/
目录到当前目录的绝对路径
相对路径
相对目前的目录的路径,以当前目录.
为起点,到目标位置的路径。
# 绝对路径
cd /usr/local/bin
# 相对路径
cd ../../usr/local/bin
具体使用时依据情况选择方便的方式就行了。
Linux文件的基本操作
新建
新建空白文件
使用touch
命令新建空白文件
新建目录
使用mkdir
命令创建新目录:
mkdir dir
# 也可以使用-p参数指定多级目录
mkdir -p first/second/third
复制
复制文件
使用cp
命令复制一个文件到指定目录
# cp [file] [directory]
cp test first/second/third
复制目录
直接使用cp
进行复制会报错(可以自己试试),想要成功的复制目录,必须使用-r
或者-R
参数,表示递归复制
mkdir one
cp -r first one
删除
删除文件
使用rm
命令删除文件,
rm test
# 有时候会出现权限不足的错误,这时候使用-f参数强制删除就可以了
rm -f test
删除目录
删除目录与复制目录类似,也需要加上-r
或-R
参数
rm -r one
移动文件和重命名文件
移动文件
使用 mv
(move or rename files)命令移动文件(剪切)。将文件“ file1 ”移动到 Documents 目录:
# mv [file] [directory]
mv test one
重命名文件
重用mv
命令就可以实现重命名文件名了
# mv [old] [new]
mv test test2
查看文件
cat tac nl
cat
与 tac
都是把文件内容打印到终端,前者为正序显示,后者为倒序显示。
nl
命令表示添加行号的并打印。
more与less
两者类似,具体使用可以通过
man more
man less
查看手册获取更多帮助
more
默认显示一屏的内容,底部显示当前阅读精度,按h显示帮助,q退出,Enter显示下一行。
head与tail
head
显示文件前十行内容,tail
显示文件后十行内容,关于 tail
命令,不得不提的还有它一个很牛的参数 -f
,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的。
查看文件类型
使用file命令查看文件
cc@cc-OptiPlex-3020:~$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d0bc0fb9b3f60f72bbad3c5a1d24c9e2a1fde775, stripped
cc@cc-OptiPlex-3020:~$
小结
目录与文件的基本操作就这些了,更多信息可以查阅相关温昂和手册。