Linux目录结构及文件操作
Linux与Windows的目录结构区别
Windows
是以存储介质为主,系统文件放在c盘,其它盘用户可以随便用,所以时间久了就变得乱糟糟的,Linux
是以目录为主,目录表现为一颗目录树,树根为根目录“/”,根目录下层层扩展,目录结构变为一颗树,无论是系统文件还是用户文件都放在这个树形目录中,然后Linux的磁盘分区再挂载在目录上,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)
服务器载入某特定目录等。
由于Linux
是开放源代码,各大公司和团体根据Linux
的核心代码做各自的操作,编程。这样就造成在根下的目录的不同。这样就造成个人不能使用他人的Linux
系统的PC。因为你根本不知道一些基本的配置,文件在哪里。。。这就造成了混乱。这就是FHS(Filesystem Hierarchy Standard )
机构诞生的原因。该机构是linux爱好者自发的组成的一个团体,主要是对Linux
做一些基本的要求,不至于是操作者换一台主机就成了Linux
的‘文盲’。FHS是一种标准,是规定Linux
中哪些目录做什么事存储什么数据,这样大家自觉遵循这个标准,这样不同人使用不同Linux
系统就不会觉得困难。
FHS定义了两层规范,第一层是,/
下面的各个目录应该要放什么文件数据,第二层则是针对/usr
及/var
这两个目录的子目录来定义。其它目录使用者可以随意更改使用。
FHS 依据文件系统使用的频繁与否以及是否允许用户随意改动,将目录定义为四种交互作用的形态,如下表所示:
目录路径
当前目录:.或者./都行, cd .
上一级目录:…或者…/都行, cd ..
~
:通常表示当前用户的home目录, cd ~
pwd
命令:可以获取当前所在路径(绝对路径), pwd
绝对路径:以根目录/为起点的路径,如/home/shiyanlou
相对路径:以当前路径为起点到目标路径的表示
下面以home目录为起点,分别以绝对路径和相对路径的方式进入/usr/local/bin
目录:
到底使用哪种路径表示方法看哪种路径打字最少,目录可以使用tab进行补全。
文件基本操作
-
新建:
touch test //新建空白文件
mkdir mydir //(remove)在当前目录下新建空目录mydir
mkdir -p father/son //在当前目录下新建一个多级目录(以绝对路径写目录也行)
-
复制(remove):
cp test father/son //将当前目录下的test文件复制到当前目录下的多级目录中
cp -r mydir father/son //将mydir目录复制到father/son目录下(要加上-r,表示递归的复制)
-
删除(remove):
rm test //删除test文件
rm -f test //忽略提示直接删除文件(无情)
rm -r father //删除目录和目录复制一样要加 -r,表示递归(Recursive)
-
移动与重命名文件(move):
mv file1 document //将file1文件移动到document目录下
mv file1 newname //重命名文件名
-
查看文件:
cat filename //查看文件
cat -n filename //显示行号与内容
nl filename //与上一个命令一样,显示行号与内容
其主要参数如下:
如nl -b a passwd
more/less filename //分页查看文件,Enter 键向下滚动一行,使用 Space 键向下滚动一屏,q 退出
tail filename //默认查看该文件后十行
加上 -n 参数,后面紧跟行数:
tail -n 1 filename //查看文件最后一行
head filename //与tail使用一样,显示前十行
查看文件类型
file filename //查看文件类型
file /bin/ls //ls文件为可执行文件,运行在64位平台
Linux
一切皆文件,命令也是写在文件中。
编辑文件
在 Linux
下面编辑文件通常我们会直接使用专门的命令行编辑器比如(emacs,vim,nano)
,Linux
内部有 vim
的学习教程,输入以下命令即可开始学习:
vimtutor //学习vim编辑器
小游戏
xeyes //在桌面召唤一双眼睛
Linux目录主要结构
系统启动必须:
-/boot
:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
-
/etc
:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。 -
/lib
:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 -
/sys
: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
指令集合:
-
/bin
:存放着最常用的程序和指令 -
/sbin
:只有系统管理员能使用的程序和指令。
外部文件管理: -
/dev
:Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。 -
/media
:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。 -
/mnt
:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:
-
/run
:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。 -
/lost+found
:一般情况下为空的,系统非法关机后,这里就存放一些文件。 -
/tmp
:这个目录是用来存放一些临时文件的。
账户:
-
/root
:系统管理员的用户主目录。 -
/home
:用户的主目录,以用户的账号命名的。 -
/usr
:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。 -
/usr/bin
:系统用户使用的应用程序与指令。 -
/usr/sbin
:超级用户使用的比较高级的管理程序和系统守护程序。 -
/usr/src
:内核源代码默认的放置目录。
运行过程中要用:
-
/var
:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。 -
/proc
:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展用的:
-
/opt
:默认是空的,我们安装额外软件可以放在这个里面。 -
/srv
:存放服务启动后需要提取的数据(不用服务器就是空)
Reference
https://www.shiyanlou.com/courses/1
https://www.cnblogs.com/silence-hust/p/4319415.html
http://www.runoob.com/linux/linux-system-contents.html