Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。Linux可以长时间地运行我们编写的程序代码,那么掌握Linux的相关命令,以此来让操作系统反馈我们需要知道的结果,就是一个程序员不可或缺的技能。今天我们就来聊聊linux的基础结构和常用的命令。 一、linux的目录结构 Linux系统各个目录的作用: : 根目录。有且只有一个根目录。所有的东西都是从根目录开始。举个例子:当你在终端里输入home,你其实是在告诉服务器,先从(根目录)开始,再进入到home目录。 root: 这是系统管理员(rootuser)的目录。对于系统来说,系统管理员就好比是上帝,它能对系统做任何事情,甚至包括删除你的文件。因此,请小心使用root帐号。 bin,sbin,usrbin,usrsbin: 这是系统预设的执行文件的放置目录,比如ls就是在binls目录下的。值得提出的是,bin,usrbin是给系统用户使用的指令(除root外的普通用户),而sbin,usrsbin则是给root使用的指令。 etc: 这里主要存放了系统配置方面的文件。举个例子:你安装了docker这个套件,当你想要修改docker配置文件的时候,你会发现它们(配置文件)就在etcdocker目录下。 dev: dev目录用来保存设备文件的【dev并不是存放外部设备的驱动程序。而是一个访问这些外部设备的端口】,每个文件指向一个系统设备。用户的程序可以通过使用这些设备文件,对真实的硬件设备进行操作。如:hda是第1个IDE硬盘,sda是第1个SCSI硬盘【IDE和SCSI其实就是硬盘的两种接口。其中,IDE类型的硬盘主要用于个人PC电脑,而SCSI类型的硬盘主要用于服务器】 设备文件分为两种:块设备文件(b)和字符设备文件(c) 设备文件一般存放在dev目录下,对常见设备文件作如下说明: devhd〔at〕:IDE设备 devsd〔az〕:SCSI设备【小型计算机系统接口(英语:SmallComputerSystemI简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。SCSI是一种智能的通用接口标准。】 devfd〔07〕:标准软驱 devmd〔031〕:软raid设备 devloop〔07〕:本地回环设备 devram〔015〕:内存 devnull:无限数据接收设备,相当于黑洞 devzero:无限零资源 devtty〔063〕:虚拟终端 devttyS〔03〕:串口 devlp〔03〕:并口 devconsole:控制台 devfb〔031〕:framebuffer devcdromdevhdc devmodemdevttyS〔09〕 devpilotdevttyS〔09〕 devrandom:随机数设备 devurandom:随机数设备 (PS:随机数设备,后面我会再写篇博客总结一下) dev目录下的节点是怎么创建的? devf或者udev会自动帮你创建得。 kobject是sysfs文件系统的基础,udev通过监测、检测sysfs来获取新创建的设备的。 home: 这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:home用户名。当然,root用户除外。 tmp: 这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。 usr: 在这个目录下,你可以找到那些不适合放在bin或etc目录下的额外的工具。比如像游戏阿,一些打印工具拉等等。usr目录包含了许多子目录:usrbin目录用于存放程序;usrshare用于存放一些共享的数据,比如音乐文件或者图标等等;usrlib目录用于存放那些不能直接运行的,但却是许多程序运行所必需的一些函数库文件。你的软件包管理器(应该是新立得吧)会自动帮你管理好usr目录的。 opt: 这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可以直接删除它,而不影响系统其他任何设置。安装到opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。 举个例子:刚才装的测试版firefox,就可以装到optfirefoxbeta目录下,optfirefoxbeta目录下面就包含了运行firefox所需要的所有文件、库、数据等等。要删除firefox的时候,你只需删除optfirefoxbeta目录即可,非常简单。 usrlocal: 这里主要存放那些手动安装的软件,即不是通过新立得或aptget安装的软件。它和usr目录具有相类似的目录结构。让软件包管理器来管理usr目录,而把自定义的脚本(scripts)放到usrlocal目录下面,我想这应该是个不错的主意。 media: 有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CDDVD驱动器等等。 var: 统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在varlog目录下,另外mail的预设放置也是在这里。 mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在mnt上,然后进入该目录就可以查看光驱里的内容了。 proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 Linux在启动一个进程时,系统会在proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径。 boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里 srv: service缩写,该目录存放一些服务启动之后需要提取的数据。 sys: 这是Linux2。6内核的一个很大的变化。该目录下安装了2。6内核中新出现的一个文件系统sysfs。 run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有varrun目录,应该让它指向run。二、linux常用命令 2。1操作文件及目录 2。2系统常用命令 2。3压缩解压缩 2。4文件权限操作 我们先来了解rwx这几个标记的含义。 权限 权限数值 二进制 具体作用 r 4hr00000100hrread,读取。当前用户可以读取文件内容,当前用户可以浏览目录。 w 2hr00000010hrwrite,写入。当前用户可以新增或修改文件内容,当前用户可以删除、移动目录或目录内文件。 x 1hr00000001hrexecute,执行。当前用户可以执行文件,当前用户可以进入目录。 依照上面的表格,权限组合就是对应权限值求和,如下: 7421读写运行权限 541读和运行权限 44只读权限 因此,大家也就明白了chmod777filename和chmod754filename命令的含义了。 chmod777filename这句命令的意思是将filename文件的读写运行权限赋予文件所有者,把读写运行权限的权限赋予群组用户,把读写运行权限赋予其他用户。 chmod754filename这句命令的意思是将filename文件的读写运行权限赋予文件所有者,把读和运行的权限赋予群组用户,把读的权限赋予其他用户。 常用chmodR777filename其中R表示:对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)三、linux系统常用快捷键及符号命令