linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。Linux可以长时间地运行我们编写的程序代码,那么掌握Linux的相关命令,以此来让操作系统反馈我们需要知道的结果,就是一个程序员不可或缺的技能。今天我们就来聊聊linux的基础结构和常用的命令。

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图

一、linux的目录结构

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图1

Linux系统各个目录的作用:

/:

  根目录。有且只有一个根目录。所有的东西都是从根目录开始。举个例子:当你在终端里输入“/home”,你其实是在告诉服务器,先从/(根目录)开始,再进入到home目录。

/root

  这是系统管理员(root user)的目录。对于系统来说,系统管理员就好比是上帝,它能对系统做任何事情,甚至包括删除你的文件。因此,请小心使用root帐号。

/bin, /sbin, /usr/bin, /usr/sbin:

这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的普通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/etc:

  这里主要存放了系统配置方面的文件。举个例子:你安装了docker这个套件,当你想要修改docker配置文件的时候,你会发现它们(配置文件)就在/etc/docker目录下。

/dev:

/dev目录用来保存设备文件的【dev并不是存放外部设备的驱动程序。而是一个访问这些外部设备的端口】,每个文件指向一个系统设备。用户的程序可以通过使用这些设备文件,对真实的硬件设备进行操作。如: hda是第1个IDE硬盘,sda是第1个SCSI硬盘【IDE和SCSI其实就是硬盘的两种接口。其中,IDE类型的硬盘主要用于个人PC电脑,而SCSI类型的硬盘主要用于服务器】

  设备文件分为两种:块设备文件(b)和字符设备文件(c)

  设备文件一般存放在/dev目录下,对常见设备文件作如下说明:

  /dev/hd[a-t]:IDE设备

  /dev/sd[a-z]:SCSI设备【小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。】

  /dev/fd[0-7]:标准软驱

  /dev/md[0-31]:软raid设备

  /dev/loop[0-7]:本地回环设备

  /dev/ram[0-15]:内存

  /dev/null:无限数据接收设备,相当于黑洞

  /dev/zero:无限零资源

  /dev/tty[0-63]:虚拟终端

  /dev/ttyS[0-3]:串口

  /dev/lp[0-3]:并口

  /dev/console:控制台

  /dev/fb[0-31]:framebuffer

  /dev/cdrom => /dev/hdc

  /dev/modem => /dev/ttyS[0-9]

  /dev/pilot => /dev/ttyS[0-9]

  /dev/random:随机数设备

  /dev/urandom:随机数设备

  (PS:随机数设备,后面我会再写篇博客总结一下)

  /dev目录下的节点是怎么创建的?

  devf或者udev会自动帮你创建得。

  kobject是sysfs文件系统的基础,udev通过监测、检测sysfs来获取新创建的设备的。

/home:

  这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。

/tmp:

  这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。

/usr:

  在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如像游戏阿,一些打印工具拉等等。/usr目录包含了许多子目录:/usr/bin目录用于存放程序;/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;/usr/lib目录用于存放那些不能直接运行的,但却是许多程序运行所必需的一些函数库文件。你的软件包管理器(应该是“新立得”吧)会自动帮你管理好/usr目录的。

/opt:

  这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。

  举个例子:刚才装的测试版firefox,就可以装到/opt/firefox_beta目录下,/opt/firefox_beta目录下面就包含了运行firefox所需要的所有文件、库、数据等等。要删除firefox的时候,你只需删除/opt/firefox_beta目录即可,非常简单。

/usr/local:

  这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面,我想这应该是个不错的主意。

/media:

  有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。

/var:

  统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

/mnt:

  系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/proc:

  这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

  Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径。

/boot:

  这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里

/srv:

  service缩写,该目录存放一些服务启动之后需要提取的数据。

/sys:

  这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

/run:

  是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

二、linux常用命令

2.1 操作文件及目录

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图2

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图3

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图4

2.2 系统常用命令

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图5

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图6

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图7

2.3 压缩解压缩

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图8

2.4 文件权限操作

我们先来了解rwx这几个标记的含义。

权限

权限数值

二进制

具体作用

r

4

00000100

read,读取。当前用户可以读取文件内容,当前用户可以浏览目录。

w

2

00000010

write,写入。当前用户可以新增或修改文件内容,当前用户可以删除、移动目录或目录内文件。

x

1

00000001

execute,执行。当前用户可以执行文件,当前用户可以进入目录。

依照上面的表格,权限组合就是对应权限值求和,如下:

7 = 4 + 2 + 1 读写运行权限

5 = 4 + 1 读和运行权限

4 = 4 只读权限

因此,大家也就明白了 chmod 777 filename 和chmod 754 filename 命令的含义了。

chmod 777 filename 这句命令的意思是将filename文件的读写运行权限赋予文件所有者,把读写运行权限的权限赋予群组用户,把读写运行权限赋予其他用户。

chmod 754 filename 这句命令的意思是将filename文件的读写运行权限赋予文件所有者,把读和运行的权限赋予群组用户,把读的权限赋予其他用户。

常用 chmod -R 777 filename 其中 -R 表示:对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

三、linux系统常用快捷键及符号命令

Linux最常用命令简单易学,掌握20%的核心命令解决80%的问题插图9

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注