[RH124] 3-目录结构及命令

1.Linux目录结构

我们知道在Windows中,系统是装在C盘中的。

在装好系统时,会自动生成三个重要的文件夹,分别时Windows、User、Program files。

  • Windows:用于存放系统文件。
  • User:用于存放用户数据。
  • Program Files:软件安装的默认位置。

同样,在安装Linux时,系统也会生成一些文件夹。相对Windows,Linux生成的文件夹数量更多。

 

/bin :存放常见的命令,例如ls、mount等,实际上就是一些程序。/bin是/usr/bin的快捷方式(软链接)。该目录不能作为挂载点。

/boot :存放和系统启动相关的东西,例如内核、参数模块等。可以单独挂载分区建议500M以上,免得出现空间不足的情况。/boot不能出现在LVM中,只能是一个标准分区。

/dev :存放磁盘、光驱、USB设备等设备。也不能给他挂载单独的分区。为什么这些设备可以存放在/dev文件夹中,简单原理如下:

图中,只有内核可以识别物理设备(有驱动的情况下),用户只能在用户空间通过/dev来操作设备,/dev相当于汽车里的中控台,我们对/dev的操作会被映射给内核空间,然后内核空间再根据要求去操作实际的物理设备。他们之间通过udev进行映射。

有时候我们在安装物理硬件后,无法发现设备,很可能就是内核无法识别硬件,可能是没有硬件设备驱动。

/etc :存放各种配置文件,包括操作系统、网络和还有应用程序等的配置文件。绝对不能单独划分分区。

/home :存放用户的家目录。可以单独划分分区。

/lib : 是/usr/lib的快捷方式,用于存放各种模块、动态库等。不可以单独划分分区。

/lib64 :是/usr/lib64的快捷方式,存放64位的模块、库等。不可以单独划分分区。

/media : 作为默认的介质挂载点,不过现在已经默认挂载在/run/media里(RHEL6及以前的版本是挂载到/media的),这个文件夹基本没用。

/mnt :用于用户习惯性的挂载光驱等设备的挂载点。

/opt :没什么用,只是有些应用会默认安装在这里。

/proc :用于存放内核参数,例如可以修改物理内存允许的使用率。

/root :root用户的家目录。

/run :程序或服务启动后,存放PID等内容。同时里面还有RHEL7默认介质挂载点media。

/sbin :是/usr/sbin的快捷方式,存放与系统关系紧密的命令,例如ifconfig。不能单独挂载分区。

/srv :一般用不到,只有特殊情况可能用到,例如在openstack配置的过程中可能用到。

/sys :不能单独挂载分区。存放与硬件相关的一些内容,例如可以修改CPU启用情况,如果有2颗CPU(通过lscpu查看),我们可以停用一颗。

我们在 /sys/devices/system/cpu/cpu0 下可以看到一个叫online的文件,里面是值0或1,分别代表该颗CPU是否启用。通过 echo 0 > online 就可以停用CPU。

/tmp :存放临时文件,或者垃圾文件。

/usr :相当于windows里的program files,用于存在应用程序。可以单独划分分区。

/var :存放数据库、日志什么的。可以划分分区。

2.文件路径

文件路径分为:

  • 绝对路径:从根"/"开始算。
  • 相对路径:相对另一个路径的路径。

使用tree软件可以以树形结构查看文件目录。

安装tree软件:

1)挂载光盘

mount /dev/cdrom /mnt

2)安装tree

rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
cd ~用户名

可以进入指定用户名的家目录。例如在root用户下执行cd ~hanxinda就可以进入hanxinda的家目录。

cd - 

回到上一次的目录。

3.常用命令

1)文件操作

在Linux中,文件名后缀大部分时候和类型是没有关系的,后缀只是作为名称的一部分。和Windows不一样。

file  # 用来查看一个文件或目录的类型。例如file /boot 输出/boot: directory,说明/boot是一个文件夹。
touch   # 用来创建一个文件,例如touch hello默认在当前目录创建hello文件,如果hello已经存在,则更新文件时间 (可以使用touch -t指定时间)。touch /leo/hello在/leo文件夹下创建hello文件,前提是/leo必须已经存在。
touch -t 201210201010 hello  # 修改hello的最近访问和最近更改时间修改为2012年10月20日10点10分。

如果要同时创建多个文件:

touch aa bb cc   # 同时创建aa bb cctouch aa{1,2,3,4,5}   # 同时创建aa1,aa2,aa3,aa4,aa5。
touch aa{1..5}   # 同时创建aa1,aa2,aa3,aa4,aa5。
stat  # 查看文件信息。例如访问时间、创建时间、修改时间等。
rm  # 删除文件。在普通用户下使用rm hello会直接删除,并没有提示确认。而在root下使用rm hello就会提示确认。这是为什么,原因是root下,rm是rm -i 的alias别名,执行rm hello相当于执行rm -i hello,所以会提示删除确认,为的是防止误删。
rm -f  # 强制删除,不会提醒确认。
rm -r  # 递归的删除文件和文件夹。
rm -rf /*  #删除根目录下的所有文件,千万不要使用该命令,使用后基本无法恢复。
wc  # 统计文件中内容。wc -l统计行数,wc -w统计单词(空格分割就是单词),wc -c统计字符。

2)软硬链接

ln  # 链接(软连接、硬链接)。硬链接在后面讲解。软连接就相当于Windows下的快捷方式。
ln -s hello helloo  # 创建hello的软连接helloo。通过ls -l查看可以看到helloo -> hello。

3)文件查看

cat  # 查看文本文件的内容。但只适合查看小文件,太长的文件不合适。
cat -n  # 可以在查看时显示行号。
cat -A  # 可查看隐藏的换行符。
more  # 从文件的开始显示文件内容。问题是只能往后看,不能往前看。
less  # 比较方便的查看文件内容。支持前后滚动。按enter可以一行一行往后查看,按空格可以一页一页往后查看,按pgup可以往前翻一页,按pgdown可以往后翻一页,按home可以回到文件开头,按end可以跳到文件结尾。按"/"可以进行查询,按n往后查询,N往前查询。按q退出。
head  # 查看文件的前几行,默认10行。例如head /etc/passwd,默认显示前10行内容。
head -n 8  # 查看文件的前8行。也可以写为head -8 /etc/passwd
tail  # 查看文件的尾几行,默认10行。tail -n +35 /etc/passwd表示从35行开始一直显示到最后。
tail -f  # 动态的查询文件。例如进行日志监控等。

4)文件夹操作

mkdir  # 创建文件夹。例如mkdir /zz,在根目录下创建文件夹zz。
mkdir -p  # 递归的创建多层文件夹。例如mkdir -p /kk/123,即在根目录下创建kk文件夹,并在kk里面创建123文件夹。
rmdir  # 删除一个目录,但是如果目录有多层的话,就无法删除。这时我们可以使用rm命令来进行删除。
rm -r  # 递归的删除一个目录,即直接删除该目录和目录下所有内容。
rm -rf   #递归强制删除,千万不要使用rm -rf /,会导致系统崩溃。

5)复制剪切操作

cp  # 复制文件或文件夹。cp /hello /usr/hello2,把根目录下的hello文件复制到/usr下,并命名为hello2。可以同时拷贝多个文件:cp /hello /hello2 /usr,把根目录下的hello和hello2拷贝到/usr目录下。
cp -p  # 默认拷贝时只会拷贝文件的内容,文件的属性,例如创建时间等默认是不拷贝的。使用-p选项可以拷贝属性。
cp -rf  # 强制拷贝文件和文件夹。
cp -rfp  # 强制拷贝文件和文件夹,并拷贝属性。
cp -a  # -a表示归档,相当于-rfp都包含了。
mv  # 移动文件或文件夹到另一个路径,即剪切。

====

原文地址:https://www.cnblogs.com/leokale-zz/p/12531321.html