阅读 25

Linux目录结构以及常用命令

目录结构

登录系统后,在当前命令窗口下输入命令:

 ls / 
复制代码

你会看到如下图所示:

树状目录结构:

以下是对这些目录的解释:

  • /bin
    bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot:
    这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib
    这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

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

  • /opt
    这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    复制代码
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

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

    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

     

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    这个目录是用来存放一些临时文件的。

  • /usr
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

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

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

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

 

Linux常用命令

  • pwd
  • cd
  • ls
  • touch
  • mkdir
  • rmdir
  • cp
  • mv
  • rm
  • wc
  • du

pwd:显示工作目录路径

命令语法:pwd [选项]

选项含义
-L目录链接时,输出链接路径
-P输出物理路径

cd:更改工作目录路径

命令语法:cd[选项][目录]

选项含义
cd或cd ~回到用户主目录
cd ..变当前工作目录路径位置至当前目录的父目录。
cd -P如果是链接路径,则进入链接路径的源物理路径
cd ~li改用户工作目录路径位置至用户li的主目录。

ls:列出目录和文件信息

选项选项含义
-a显示指定目录下所有子目录的文件,包括隐藏文件
-A显示指定目录下所有子目录与文件,包括隐藏文件,但不列出“.”和“..”
-c配合-lt:根据车体么排序并显示ctime
-d如果参数是目录,只显示其名称而不显示其下的歌文件和子目录
-F显示文件类型
-i在输出的第一列显示文件的inode号
-l以长格式显示文件的详细信息
-r逆序排列
-t根据修改时间排序
-s一块数形式先生每个文件分配的尺寸
-S根据文件大小排序

例子:显示目录/var下文件的子目录的简单信息

~]# ls /var
复制代码

显示/root目录下所以文件和子目录的详细信息,包括隐藏文件

~]# ls -al /root
复制代码

显示/etc目录下的文件和子目录信息,用标记标出文件类型

~]# ls -F /etc
复制代码

touch:创建空文件、更改文件时间

命令语法:touch [选项] [文件]

选项选项含义
-a只更改访问时间(atime)
-m更改文件的修改时间记录(mtime)
-c假如目标文件存在,则不会建立新的文件
-r<文件>使用指定文件的时间属性而非当前时间
-d<字符串>使用指定字符串表示时间而非当前时间
-t<日期时间>使用[CC]YY]MMDDhhmm[.ss]格式的时间而非当前时间

例如:在当前目录下创建文件file1、file2、file3

[root@localhost ~]# touch file1
[root@localhost ~]# touch file2 file3
[root@localhost ~]# ls -l file1 file2 file3
-rw-r--r--. 1 root root 5 Aug  3 22:12 file1
-rw-r--r--. 1 root root 6 Aug  3 22:12 file2
-rw-r--r--. 1 root root 0 Aug  3 22:12 file3
复制代码

将文件file1的时间记录改为9月17日19点30分

[root@localhost ~]# ls -l /root/file1
-rw-r--r--. 1 root root 5 Aug  4  2019 /root/file1
[root@localhost ~]# touch -c -t 09171930 /root/file1
[root@localhost ~]# ls -l /root/file1
-rw-r--r--. 1 root root 5 Sep 17  2019 /root/file1
复制代码

时间格式是MMDDHHmm,如果要加上2019年年份

[root@localhost ~]# touch -c -t 09171930 /root/file1
复制代码

mkdir:创建目录

命令语法:mkdir [选项] [目录]

选项选项含有
-m<权限模式>对新创建的目录设置权限,在没有-m选项时,默认权限是755
-v每次创建新目录都显示信息
-p可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动创建那些尚不存在的目录,即以此可以建立多个目录

例子:创建目录newdir1 ,其默认权限为755

[root@localhost ~]# touch -c -t 09171930 /root/file1
   [root@localhost ~]# ls -ld newdir1
drwxr-xr-x. 2 root root 6 Jun 22 22:27 newdir1
复制代码

创建目录newdir2,其权限为777

[root@localhost ~]# mkdir -m 777 newdir2
[root@localhost ~]# ls -ld newdir2
drwxrwxrwx. 2 root root 6 Aug  3 22:39 newdir2
复制代码

rmdir:删除空目录 命令语法:rmdir [选项] [目录]

选项选项含义
-p递归删除目录,当子目录删除后其父目录为空时,也一同被删除
-v输出处理的目录详情

例子:同时删除/root/newdir2和/root/newdir2/newdir3这两个空目录

[root@localhost ~]# mkdir /root/newdir2
[root@localhost ~]# mkdir /root newdir2/newdir3
[root@localhost ~]# rmdir -pv /root/newdir2/newdir3
rmdir: removing directory, ‘/root/newdir2/newdir3’
rmdir: removing directory, ‘/root/newdir2’
rmdir: removing directory, ‘/root’
rmdir: failed to remove directory ‘/root’: Device or resource busy
复制代码

cp:复制文件的和目录

命令语法:cp [选项] [源文件|目录] [目标文件|目录]

选项选项含义
-a在复制目录时保留链接、文件属性、并递归地复制目录,等同于-dpr选项
-d复制时保留链接
-f在覆盖目标文件之前不给出提示信息要求用户确认
-i和-f选项相反看,在覆盖目标文件之前给出提示信息,要求用户确认
-p出复制源文件的内容外,还把其修改时间和访问权限也复制到新文件中
-l不做复制,只是链接文件
-r如果给出的源文件是一个目录文件,将递归复制该目录下所有的子目录和文件。此时目标必须为一个目录名

例子:将/etc/grub2.cfg文件复制到/root目录下,并改名为grub

[root@localhost ~]# cp /etc/grub2.cfg /root/grub
cp: overwrite ‘/root/grub’? y
[root@localhost ~]# ls
anaconda-ks.cfg  grub  newdir1
复制代码

将/etc/grub2.cfg文件复制到/root目录下

[root@localhost ~]# cp /etc/grub2.cfg /root
[root@localhost ~]# ls
anaconda-ks.cfg  grub  grub2.cfg  newdir1
[root@localhost ~]# 
复制代码

将/boot目录以及该目录中的所有文件和子目录都复制到/root目录中

[root@localhost ~]# cp -r /boot /root
[root@localhost ~]# ls -l /root
total 24
-rw-------. 1 root root 1260 Jun  9 14:21 anaconda-ks.cfg
dr-xr-xr-x. 5 root root 4096 Jun 22 23:21 boot
-rw-r--r--. 1 root root 4287 Jun 22 23:15 grub
-rw-r--r--. 1 root root 4287 Jun 22 23:18 grub2.cfg
drwxr-xr-x. 2 root root    6 Jun 22 22:27 newdir1
复制代码

mv:文件和目录改名、移动文件和目录路径

命令语法:mv [选项] [源文件|目录] [目标文件|目录]

选项选项含义
-i覆盖前询问
-f覆盖前不询问
-n不覆盖已存在的文件
-u只有在源文件文件比目标文件新,或目标文件不存在时才进行移动
-T将目标文件视作普通文件处理

例子:将/root/pic目录下所以的后缀名为“.png”的文件移动到/usr/local/share/pic目录下

[root@localhost ~]# mv -f /root/pic/*.png /usr/local/share/pic
复制代码

把/root/pic/kpic.png文件改名为/root/pic/life.png

[root@localhost ~]# mv /root/pic/kpic.png /root/pic/life.png
[root@localhost ~]# ls /root/pic
{kpic.png  life.png
复制代码

把/root/pic目录名称更改为/root/mypic

root@localhost ~]# mv /root/pic /root/mypic
[root@localhost ~]# ls /root
123.png}  anaconda-ks.cfg  boot  grub  grub2.cfg  mypic  newdir1
复制代码

rm:删除文件或目录

命令语法:rm [选项] [文件|目录]

选项选项含义
-f强制删除。忽略不存在的文件,不给出提示信息
-r递归删除目录及其内容
-i在删除前需要确认

例子:删除当前目录下的file4文件

root@localhost ~]# rm file4
rm: remove regular empty file ‘file4’? y
[root@localhost ~]# ls
123.png}  anaconda-ks.cfg  boot  grub  grub2.cfg  mypic  newdir1
复制代码

连同/root/ab/a文件和/root/ab目录一起删除

[root@localhost ~]# mkdir /root/ab
[root@localhost ~]# touch /root/ab/a
[root@localhost ~]# ls -l /root/ab/a
-rw-r--r--. 1 root root 0 Jun 22 23:51 /root/ab/a
[root@localhost ~]# rm -rf /root/ab
[root@localhost ~]# ls /root
123.png}  anaconda-ks.cfg  boot  grub  grub2.cfg  mypic  newdir1
复制代码

wc:统计文件行数、单词数、字节数和字符数

命令语法:wc [选项] [文件]

选项选项含义
-l统计行数
-w统计单词数
-c统计字节数
-m统计字符数
-L统计文件中最长行的长度

例子:统计/root/aa文件的行数、单词数和字节数

[root@localhost ~]# wc -l /root/aa/ce.log
3 /root/aa/ce.log
复制代码

统计/root目录下有多少子目录和文件

[root@localhost ~]# ls /root|wc -l
8
复制代码

du:计算机文件或目录的容量

命令语法:du [选项]...[文件或目录]...

选项选项含义
-h人性化显示容量信息
-a查看所有目录以及文件的容量信息
-s仅显示总容量
-c显示总计信息
-l如果是硬连接,就多次计算其尺寸
-x跳过处于不同文件系统之上的目录
-S不包括子目录的占用量
-L找出任何符号链接指示的真正目的地

查看/root目录及子目录的容量信息

[root@localhost ~]# du /root
[root@localhost ~]# du -a /root
复制代码

查看/root所占磁盘空间总和

[root@localhost ~]# du -sh /root
100M	/root
复制代码

以MB为单位显示/root目录磁盘占用量

[root@localhost ~]# du -sh /root
100M	/root
复制代码
选项选项含义
-h人性化显示容量信息
-a查看所有目录以及文件的容量信息
-s仅显示总容量
-c显示总计信息
-l如果是硬连接,就多次计算其尺寸
-x跳过处于不同文件系统之上的目录
-S不包括子目录的占用量
-L找出任何符号链接指示的真正目的地

查看/root目录及子目录的容量信息

[root@localhost ~]# du /root
[root@localhost ~]# du -a /root
复制代码

查看/root所占磁盘空间总和

[root@localhost ~]# du -sh /root
100M	/root
复制代码

以MB为单位显示/root目录磁盘占用量

[root@localhost ~]# du -sh /root
100M	/root
复制代码
文章分类
后端
文章标签