Linux的基础知识
根目录和家目录
根目录:是Linux中最底层的目录,用"/"表示
家目录:当前用户所在的路径,用“~”表示,root用户的家目录和普通用户的家目录不一样,普通用户的家目录在/home路径下,每一个用户都有一个以自己用户名为名的文件夹,root用户的家目录是在/root路径下
相对路径和绝对路径
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
举个例子:绝对路径就是目标位置完整的路径,绝对路径都是从/开始的,Linux的根目录就是/,拿一个北京海淀区的例子,它的绝对路径就是/地球/中国/北京市/海淀区/复兴路/100号
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。一般来说相对路径是以.或者./开头
举个例子:我现在在北京,这就相当于一个当前位于的文件路径
相对路径表示:./海淀区/复兴路/100号
文件基本属性
其中,Linux中第一个字符表示文件的类型
d:目录文件
-:普通文件
l:链接文件
b:块文件
c:字符文件、
接下来的rwx,依次表示文件的读,写,执行权限,其中前3位代表该文件的拥有者的权限,中间3位表示和拥有者同组的其他用户的权限,最后3位表示除了前两种的其他用户的权限
然后第一个liaohaijin表示的是文件的拥有者,后一个liaohaijin是拥有者所在的组,然后是文件大小,修改时间
Linux下的连接档
Linux下有两种连接档,其中一种是类似于win电脑的快捷方式,一种是通过文件系统的inode连接来产生的,类似于电脑的复制,但是不产生新文件,我们称之为硬连接
什么是inode
inode是用来存放文件信息的,每个文件都会有一个inode,并且这个inode号是唯一的,文件的内容都是inode来指定的,而不是文件名,就类似于之前讲的UID号和用户名之间的关系,当系统要访问文件时,inode就会被复制到内存,从而实现文件的快速访问,使用ls -i命令则可以看到inode号,-i参数为打印文件的inode号
什么是硬连接
硬连接只是一个新的链接到某个inode号码的记录而已,这个链接指向inode,系统并不给他重新分配inode
可以用ln命令来建立硬连接
格式:ln 源文件 目标文件
常用参数 -f无论目标文件是否存在都要创建连接
使用硬连接的优缺点
优点:方便,类似于win的复制,但是通常并不占用实际空间,而且不管我们是修改其中任何一个文件,产生硬连接的文件都会被修改,因为它们的inode是一样的
第二个优点是安全,防止误删除,我们不小心删除了一个文件,还可以通过剩下的连接来访问文件,除非全都被删除了
缺点:只能在同一个文件系统才可以创建硬连接(因为不同的文件系统管理方式 不同),而且目录之间不能创建硬连接(太复杂,现在还不支持)
什么是软连接
软连接类似于win上的快捷方式
可以用ln命令来建立软连接,格式:ln -s 源文件 目标文件(必须加上参数-s,使用ln如果不加任何参数的话,那就是硬连接,而且源文件要用绝对路径)-s为创建一个软连接(源文件用绝对路径)
软连接的两个文件的inode是不一样的,删掉源文件,连接的文件就不能打开了,软连接虽然没有硬连接的方式安全,但是限制较少,用的范围还是很广泛的
文件颜色
蓝色:文件夹,ls -l可以看到对应蓝色是目录
红色:压缩文件
绿色:可执行文件
白色:文本文件
红色闪烁:错误的符号链接
浅蓝色:符号链接
黄色:设备文件
灰色:其他文件
Linux目录结构
Linux整个目录是从/目录开始的
以下是对这些目录的解释:
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
/boot,存放的是Bootloader程序,不要随便动里面的文件,缺少了可能导致Ubuntu崩溃无法运行