linux系统结构

系统目录结构

linux常用命令 - 图1

以下是对这些目录的解释

:::info /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你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/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。 :::

常用快捷键

  1. ctrl + w #—往回删除一个单词,光标放在最末尾
  2. ctrl + k #—往前删除到末尾,光标放在最前面(可以使用ctrl+a)
  3. ctrl + u #删除光标以前的字符
  4. ctrl + k #删除光标以后的字符
  5. ctrl + a #移动光标至的字符头
  6. ctrl + e #移动光标至的字符尾
  7. ctrl + l #清屏

常用命令

1、基本操作命令

shutdown 重启

  1. poweroff #计算机会立刻关机
  2. shutdown -h now #计算机会立刻关机
  3. shutdown -h 10 #计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中
  4. shutdown -h 22:22 #计算机会在这个时刻关机
  5. shutdown -r now #计算机会立刻重启
  6. shutdown -r +10 #计算机会将于10分钟后重启

history 历史执行记录

history命令就是查看当前用户下所以有历史执行命令。最常用的场景就是忘记了以前执行过的命令时,我们就会通过history来查看之前执行的命令。

-a 将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
-c 清空当前历史命令列表
-d 删除历史命令列表中指定序号的命令
-n 从命令历史文件中读取本次Shell会话开始时没有读取的历史命令
-r 读取命令历史文件到当前的Shell历史命令内存缓冲区
-s 将指定的命令作为单独的条目加入命令历史内存缓冲区。在执行添加之前先删除命令历史内存缓冲区中最后一条命令
-w 把当前的shell历史命令内存缓冲区的内容写入命令历史文件

cd 切换工作目录

cd 英文原意=> change directory 切换目录

  1. cd ~ #进入当前用户的家目录
  2. cd - #进入上次目录
  3. cd .. #进入上一级目录
  4. cd . #进入当前目录 >>(没什么用 可以无视)

ls 列出目录

  1. ls #列出目录下所有文件(不包括以' . '开头的隐藏文件)
  2. ls -a #列出文件下所有文件(包括以' . '开头的隐藏文件)
  3. ls -l #列出文件详细信息 创建者,创建时间,文件读写权限
  4. ls . #显示当前目录 = ls
  5. ls .. #显示上一级目录 = ls /
  6. ls a* #列出a开头的目录
  7. ls /tmp/ /root/ #查看两个文件的目录

df 查看空间使用情况

  1. df -h #查看空间使用情况

pwd 显示当前路径

pwd(英文全拼:print work directory) 命令用于显示工作目录。
执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。

2、文件操作命令

mkdir 创建目录

mkdir 英文原意=> make directories 创建目录
-p 递归创建
单个目录可以直接创建 如果创建多层目录 要加上-p

  1. mkdir [-p] dirName
  2. 参数:
  3. -p 确保目录名称存在,不存在的就建一个。
  4. mkdir #创建目录
  5. mkdir -p #创建目录,若父目录不在则自动创建
  6. mkdir -v #显示创建的目录的过程
  7. [root@localhost ~]# mkdir -pv a/b/{c,d}
  8. mkdir: 已创建目录 "a"
  9. mkdir: 已创建目录 "a/b"
  10. mkdir: 已创建目录 "a/b/c"
  11. mkdir: 已创建目录 "a/b/d"

rmdir 删除空目录

rmdir(英文全拼:remove directory)命令删除空的目录。

  1. rmdir [-p] dirName
  2. 参数:
  3. -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

rm 删除

rm(英文全拼:remove)命令用于删除一个文件或者目录。

  1. rm [options] name...
  2. 参数:
  3. -i 删除前逐一询问确认。
  4. -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  5. -r 将目录及以下之档案亦逐一删除。
  6. 示例:
  7. rm -rf 目录名字

cp 复制

cp(英文全拼:copy file)命令主要用于复制文件或目录。

  1. cp [options] source dest
  2. cp [options] source... directory
  3. 参数说明:
  4. -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  5. -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  6. -f:覆盖已经存在的目标文件而不给出提示。
  7. -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
  8. -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  9. -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  10. -l:不复制文件,只是生成链接文件。

mv 移动(也可用于重命名)

mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。

  1. mv [options] source dest
  2. mv [options] source... directory
  3. 参数说明:
  4. -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
  5. -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
  6. -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
  7. -n: 不要覆盖任何已存在的文件或目录。
  8. -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
  9. [root@localhost ~]# ls
  10. a anaconda-ks.cfg
  11. [root@localhost ~]# mv a aa
  12. [root@localhost ~]# ls
  13. aa anaconda-ks.cfg

find 查找

find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

  1. find path -option [ -print ] [ -exec -ok command ] {} \;
  2. 参数说明 :
  3. find 根据下列规则判断 path expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression
  4. expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
  5. -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
  6. -amin n : 在过去 n 分钟内被读取过
  7. -anewer file : 比文件 file 更晚被读取过的文件
  8. -atime n : 在过去n天内被读取过的文件
  9. -cmin n : 在过去 n 分钟内被修改过
  10. -cnewer file :比文件 file 更新的文件
  11. -ctime n : 在过去n天内被修改过的文件
  12. -empty : 空的文件-gid n or -group name : gid n 或是 group 名称是 name
  13. -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
  14. -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
  15. -size n : 文件大小 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytesw 是二个位元组。
  16. -type c : 文件类型是 c 的文件。

ln 软链接

  1. ln [参数][源文件或目录][目标文件或目录]
  2. 必要参数:
  3. -b 删除,覆盖以前建立的链接
  4. -d 允许超级用户制作目录的硬链接
  5. -f 强制执行
  6. -i 交互模式,文件存在则提示用户是否覆盖
  7. -n 把符号链接视为一般目录
  8. -s 软链接(符号链接)
  9. -v 显示详细的处理过程
  10. 选择参数:
  11. -S "-S<字尾备份字符串> " "--suffix=<字尾备份字符串>"
  12. -V "-V<备份方式>""--version-control=<备份方式>"
  13. --help 显示帮助信息
  14. --version 显示版本信息

3、文档操作命令

touch 创建文件

touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
ls -l 可以显示档案的时间记录。

  1. touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
  2. 参数说明:
  3. a 改变档案的读取时间记录。
  4. m 改变档案的修改时间记录。
  5. c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
  6. f 不使用,是为了与其他 unix 系统的相容性而保留。
  7. r 使用参考档的时间记录,与 --file 的效果一样。
  8. d 设定时间与日期,可以使用各种不同的格式。
  9. t 设定档案的时间记录,格式与 date 指令相同。
  10. --no-create 不会建立新档案。
  11. --help 列出指令格式。
  12. --version 列出版本讯息。

cat 打印

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

  1. cat [-AbeEnstTuv] [--help] [--version] fileName
  2. 参数说明:
  3. -n --number:由 1 开始对所有输出的行数编号。
  4. -b --number-nonblank:和 -n 相似,只不过对于空白行不编号。
  5. -s --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
  6. -v --show-nonprinting:使用 ^ M- 符号,除了 LFD TAB 之外。
  7. -E --show-ends : 在每行结束处显示 $
  8. -T --show-tabs: TAB 字符显示为 ^I
  9. -A, --show-all:等价于 -vET
  10. -e:等价于"-vE"选项;
  11. -t:等价于"-vT"选项;

tail 查看

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

  1. tail [参数] [文件]
  2. 参数:
  3. -f 循环读取
  4. -q 不显示处理信息
  5. -v 显示详细的处理信息
  6. -c<数目> 显示的字节数
  7. -n<行数> 显示文件的尾部 n 行内容
  8. --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
  9. -q, --quiet, --silent 从不输出给出文件名的首部
  10. -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S

head 查看文件的开头部分内容

head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

  1. head [参数] [文件]
  2. 参数:
  3. -q 隐藏文件名
  4. -v 显示文件名
  5. -c<数目> 显示的字节数。
  6. -n<行数> 显示的行数。

vi 编辑命令

共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

命令模式

用户刚刚启动 vi,便进入了命令模式。
此状态下敲击键盘动作会被vi 识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动vi,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

    底线命令模式

    在命令模式下按下:(英文冒号)就进入了底线命令模式。
    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
    在底线命令模式中,基本的命令有
    1. :w #保存文件但不退出vi
    2. :w file #将修改另外保存到file中,不退出vi
    3. :w! #强制保存,不推出vi
    4. :wq #保存文件并退出vi
    5. :wq! #强制保存文件,并退出vi
    6. :q #不保存文件,退出vi
    7. :q! #不保存文件,强制退出vi
    8. :e! #放弃所有修改,从上次保存文件开始再编辑

    4、tar 打包命令

    ```shell tar [选项] 源文件或目录 -x #对 tar 包做解打包操作 -f #指定要解压的 tar 包的包名。 -C 目录 #指定解打包位置 -v #显示解打包的具体过程 -z #压缩和解压缩 “.tar.gz” 格式; -j #压缩和解压缩 “.tar.bz2”格式。

压缩

tar -cvf jpg.tar .jpg #将目录里所有jpg文件打包成jpg.tar tar -czf jpg.tar.gz .jpg #将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz tar -cjf jpg.tar.bz2 .jpg #将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2 tar -cZf jpg.tar.Z .jpg #将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z rar a jpg.rar .jpg #rar格式的压缩,需要先下载rar for linux zip jpg.zip .jpg #zip格式的压缩,需要先下载zip for linux

解压

tar -xvf file.tar #解压 tar包 tar -xzvf file.tar.gz #解压tar.gz tar -xjvf file.tar.bz2 #解压 tar.bz2 tar -xZvf file.tar.Z #解压tar.Z unrar e file.rar #解压rar unzip file.zip #解压zip ``` .tar 用 tar -xvf 解压
.gz 用 gzip -d或者gunzip 解压
.tar.gz和.tgz 用 tar -xzf 解压
.bz2 用 bzip2 -d或者用bunzip2 解压
.tar.bz2用tar -xjf 解压
.Z 用 uncompress 解压
.tar.Z 用tar -xZf 解压
.rar 用 unrar e解压
.zip 用 unzip 解压