admin管理员组

文章数量:1586729

Linux基础篇:Linux文件系统管理及常用命令

  • 一、Linux命令的基本格式
    • 1.1 [选项]
    • 1.2 [参数]
  • 二、Linux文件与目录的特点
    • 2.1 文件格式
  • 三、Linux常用基本命令
    • 3.1 文件目录查看、切换
      • 3.1.1 ls 命令:查看文件与目录
        • 3.1.1.1 ls 命令常用选项及功能
        • 3.1.1.2 ls通配符★★★
      • 3.1.2 pwd 命令:显示当前目录
        • 3.1.2.1 pwd 命令常用选项及功能
      • 3.1.3 cd 命令:切换目录
        • 3.1.3.1 cd 命令的特殊符号
    • 3.2 文件目录管理
      • 3.2.1 touch 命令:创建文件
        • 3.2.1.1 touch 命令常用选项及功能
      • 3.2.2 mkdir 命令:创建目录(文件夹)
        • 3.2.2.1 mkdir 命令常用选项及功能
      • 3.2.3 cp 命令:复制
        • 3.2.3.1 cp 命令常用选项及功能
      • 3.2.4 mv 命令:移动
      • 3.2.5 rm 命令:删除
      • 3.2.6 rmdir 命令:删除“空”目录
        • 3.2.6.1 rmdir 命令常用选项及功能

一、Linux命令的基本格式

  [root@localhost ~]# 命令 [选项] [参数]
  注:命令格式中的“[ ]”代表可选项,也就是有些命令可以不写选项或参数,也能执行。
    ls是Linux中最常见的命令,下面以 ls 命令来解释一下命令的格式。

1.1 [选项]

  作用:选项用于调整命令功能
  Linux 的选项分为短格式选项-l长格式选项 --all 

一般情况下,短格式选项是英文的简写,用一个减号调用,例如:[root@localhost ~]# ls -l
 而长格式选项是英文完整单词,一般用两个减号调用,例如:[root@localhost ~]# ls --all
 当然也有例外,比如 ls 命令的短格式选项 -l 就没有对应的长格式选项。所以具体的命令选项可以通过后面我们要学习的帮助命令来进行査询。

1.2 [参数]

  作用:参数是命令的操作对象
  一般文件、目录、用户和进程等可以作为参数被命令操作。
  命令一般都需要加入参数,用于指定命令操作的对象是谁。当命令具有默认参数时,则可以省略参数,例如:“ls”。

如下图所示,ls 命令后面没有指定参数,但其具有默认参数(即当前所在位置),所以会显示当前目录下的文件名。


二、Linux文件与目录的特点

  Linux 文件目录 名称最长可以有 256 个字符参数。

  • 文件中,以.开头的文件为隐藏文件,需要用-a选项才能显示;
  • 目录中,.代表当前目录;代表上一级目录。

2.1 文件格式

  • 第一列:文件类型及权限,规定了不同的用户对文件所拥有的权限,具体权限的含义将在后续章节中讲解。
        文件类型如下:
          d:目录文件
          l:链接文件
          b:块设备文件
          c:字符设备文件
          p:管道文件
          -:表示普通文件
  • 第二列:引用计数(即链接个数),文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
  • 第三列:文件所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
  • 第四列:用户所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
  • 第五列:文件大小默认单位字节
  • 第六列:文件上次修改的时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
  • 第七列:文件名目录名

    注意:Linux 系统中,隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!

三、Linux常用基本命令

  在Linux文件管理中,常用的命令如下:
  文件目录查看、切换

序号命令对应英文作用
01lslist查看当前文件夹下的内容
02pwdPrint Working Directory查看当前所在路径
03cd [目录名]Change Directory切换文件夹
04clearclear清屏

  文件目录管理

序号命令对应英文作用
01touch [文件名]touch文件不存在时,创建新建文件
文件存在时,则修改文件的时间
02mkdir [目录名]Make Directory创建目录
03cpcopy复制文件或目录
04mvmove移动文件或目录
05rmremove删除文件或目录
06rmdir [文件名]Remove empty Directory删除"空"文件

3.1 文件目录查看、切换

3.1.1 ls 命令:查看文件与目录

  ls命令(是list的缩写),是最常见的目录操作命令,其主要功能是用来显示当前目录下的内容
  [root@localhost ~]# ls [选项] [文件/目录]

3.1.1.1 ls 命令常用选项及功能
序号选项功能
01-l使用长格式列出文件和目录信息
这是最常用的选项之一,输入命令ls -l与直接输入ll作用一样。
02-a显示全部的文件,包括隐藏文件(开头为 . 的文件)也一起罗列出来。
对应的长格式  --all,这是最常用的选项之一。
03-h可读的格式显示文件和目录的大小,如 1KB、234MB、2GB 等。
对应的长格式  --human-readable,常与-l一起使用,不单独使用。
04-r将排序结果反向输出。比如,若原本文件名由小到大,反向则为由大到小。
对应的长格式  --reverse
05-R递归地列出当前目录及其子目录中的文件和目录,等于将该目录下的所有文件都显示出来。
对应的长格式  --recursive
06-d仅列出目录本身,而不是列出目录内的文件数据。
07-t时间排序,而不是以文件名排序。
常与-t一起使用,不单独使用。
08-A显示全部的文件,连同隐藏文件,但不包括 . 与 … 这两个目录。
09-fls 默认会以文件名排序,使用 -f 选项会直接列出结果,而不进行排序。
10-F在文件或目录名后加上文件类型的指示符号,例如,* 代表可运行文件,/ 代表目录,= 代表 socket 文件。
11-i显示 inode 节点信息。
12-n以 UID 和 GID 分别代替文件用户名和群组名显示出来。
13-S文件容量大小排序,而不是以文件名排序。
14 --color=never 
 --color=always 
 --color=auto 
never 表示不依据文件特性给予颜色显示。
always 表示显示颜色,ls 默认采用这种方式
auto 表示让系统自行依据配置来判断是否给予颜色。
15–full-time完整时间模式(包含年、月、日、时、分) 输出。
16–time={atime,ctime}输出 access 时间或改变权限属性时间(ctime),而不是内容变更时间。

:当 ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色(蓝色显示目录,白色显示一般文件)。除此之外,如果想使用 ls 命令显示更多内容,就需要使用表中相应的选项。

  -l选项(常用):以长格式显示文件和目录的详细信息,包括权限、所有者、大小、修改日期等。
   输入命令ls -l与直接输入ll作用一样。

  -a选项(常用):显示所有文件和目录,包括隐藏文件(以点开头的文件名)。

  -h选项
  命令ls -l显示的文件大小是字节,但是我们更加习惯的是千字节用 KB 显示,兆字节用 MB 显示,而-h选项就是按照人们习惯的单位(如:KB、MB等)显示文件大小的,-h常与-l一起使用,不单独使用

  -r选项:以相反的顺序列出文件和目录。

  -R选项:递归地列出当前目录及其子目录中的文件和目录。

  -d选项:显示目录本身的详细信息,必须加-d选项。

  -t选项:按照修改时间排序,最新修改的文件和目录排在前面。
   -t常与-l一起使用,不单独使用

3.1.1.2 ls通配符★★★

  ls命令支持使用通配符来匹配文件名。通配符是用来匹配文件名模式的特殊字符。一些常用的通配符包括:

通配符含义举例
 * 匹配任意字符序列(含空字符序列)比如:命令ls *.txt,列出所有以.txt为后缀的文件。
?匹配任意一个字符,至少 1 个比如:命令ls file?.txt,列出所有以file开头,并.txt为后缀的文件。
其中?代表一个字符。
[ ]匹配指定范围内的字符比如:命令ls [abc].txt,列出所有以a、b或c开头,并.txt为后缀的文件。
比如:命令ls [a-f].txt,列出所有以a-f开头,并.txt为后缀的文件。
注意:
1.方括号只表示单个字符。其方括号中可以指定一个字符范围,并使用连字符(-)来表示范围内的字符;
2.范围可以是字母数字其他ASCII字符
[ ! ]匹配 不在指定范围 内的字符比如:命令ls [!abc].txt,列出所有不以a、b或c开头,并.txt为后缀的文件。
注意:方括号只表示单个字符

注意:以 . 开头的文件为隐藏文件,需要用 -a选项 才能显示。

3.1.2 pwd 命令:显示当前目录

  pwd命令(是Print Working Directory的缩写),其主要功能显示目前所在目录
  [root@localhost ~]# pwd [-P]

Linux通常仅列出最后面那个目录,所以一般用pwd来查看自己当前所在目录位置,免得搞错目录造成损失。

3.1.2.1 pwd 命令常用选项及功能
选项功能
-P显示全部的文件,取得正确的目录名称,而不是以链接文件的路径来显示的。

  例如:CentOS 7.X中,刚好/var/mail是/var/spool/mail的链接文件。

3.1.3 cd 命令:切换目录

  cd命令(是Change Directory的缩写),其主要功能是用来切换工作目录
  [root@localhost ~]# cd [相对路径or绝对路径]

  Linux命令按照来源方式,可分为两种,分别是Shell内置命令外部命令
  Shell内置命令(即Shell自带的命令),这些命令是没有执行文件的;而外部命令是由程序员单独开发的,所以会有命令的执行文件
  Linux中的绝大多数命令是外部命令,而cd命令是一个典型的Shell内置命令,所以 cd 命令没有执行文件所在路径。

3.1.3.1 cd 命令的特殊符号
特殊符号作用
~代表当前登陆用户的主目录
~用户名表示切换至指定用户的主目录
-代表前一个工作目录
.代表当前目录
代表上级目录

它们的用法分别如下:
  ①回到当前登陆用户的主目录
   [root@localhost vbird]# cd ~
   [root@localhost ~]# cd
 #没有加上任何路径,也代表回到当前登录用户的主目录
  ②切换到 super 这个用户的主目录
  亦即 /home/super
   [root@localhost ~]# cd ~super
  ③切换到目前的上一级目录
    [root@localhost ~]# cd …
 #需要注意的是,在 Linux 系统中,根目录确实存在 .(当前目录)以及 …(当前目录的父目录)两个目录,但由于根目录是最顶级目录,因此根目录的 … 和 . 的属性和权限完全一致,也就是说,根目录的父目录是自身。
  ④回到刚刚的那个目录
   [root@localhost /]# cd -
  ⑤切换为root身份
   [Student@localhost ~]$ su -
   [root@localhost ~]#

3.2 文件目录管理

3.2.1 touch 命令:创建文件

  touch命令,其主要功能是用于创建空白文件设置文件的时间
  [root@localhost ~]# touch [选项] 文件

3.2.1.1 touch 命令常用选项及功能
选项功能
-a只更改访问时间。
-m只更改修改时间。
-d设定时间与日期,可以使用各种不同的格式。
-t设定档案的时间记录,格式与 date 指令相同。
-r使用参考档的时间记录,与 --file 的效果一样。
-h影响每个符号链接,而不是任何引用的文件(仅在可以更改符号链接时间戳的系统上有用)。
-c假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-t设定档案的时间记录,格式与 date 指令相同。

  ①创建空白的文本文件
   [root@localhost ~]# touch a.txt          #可创建一个文件
   [root@localhost ~]# touch file1 file2 fileX     #可同时创建多个文件
   [root@localhost ~]# touch file{1…20}       #可同时批量创建文件

  ②设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)
   stat命令用于显示文件的状态信息,如下图所示:

  • 文件(File):显示文件绝对路径
  • 大小(Size):显示文件大小
  • 块(Blocks):文件使用的数据块总数
  • IO块(IO Block):IO块大小
  • 文件类型(regular file):(普通文件)
  • 设备(Device):设备编号
  • Inode:Inode号
  • 硬链接(Links):链接数
  • 权限(Access):文件的权限
  • Uid、Gid:文件所有权的Uid和Gid
  • 环境
  • 访问时间(access time):表示我们 最后一次访问(仅仅是访问,没有改动)文件的时间;
  • 更改时间(modify time):表示我们最后一次修改文件的时间;
  • 改动时间(change time):表示我们最后一次改变文件属性的时间(包括权限、大小、属性等);
  • 创建时间(Birth time)文件创建时间。


  接下来,我们先使用 ls 命令查看一个文件的修改时间,然后修改这个文件,最后再通过 touch命令把修改后的文件时间设置成修改之间的时间(很多黑客就是这样做的呢):
  [root@linuxprobe ~]# ls -l anaconda-ks.cfg
  -rw-------. 1 root root 1213 May 4 15:44 anaconda-ks.cfg
  [root@linuxprobe ~]# echo “Visit the LinuxProbe to learn linux skills” >>
  anaconda-ks.cfg
  [root@linuxprobe ~]# ls -l anaconda-ks.cfg
  -rw-------. 1 root root 1260 Aug 2 01:26 anaconda-ks.cfg
  [root@linuxprobe ~]# touch -d “2017-05-04 15:44” anaconda-ks.cfg
  [root@linuxprobe ~]# ls -l anaconda-ks.cfg
  -rw-------. 1 root root 1260 May 4 15:44 anaconda-ks.cfg

3.2.2 mkdir 命令:创建目录(文件夹)

  mkdir命令(是Make Directory的缩写),其主要功能创建新的目录
  [root@localhost ~]# mkdir [-mp] 目录名称

  注意:在默认情况下,所需要的目录得一层一层地建立。 例如:假如要建立一个目录为/home/bird/testing/test1,那么首先必须要有/home然后/home/bird,再来/home/bird/testing都必须要存在,才可以建立/home/bird/testing/test1这个目录。假如没有/home/bird/testing时,就没有办法建立test1的目录。

3.2.2.1 mkdir 命令常用选项及功能
选项功能
-m设置文件的权限。直接设置,不使用默认权限。
-p直接将所需要的目录(包含上层目录)递归创建。

  ① [root@localhost ~]# mkdir -p 新目录的路径
一般不建议常用 -p 这个选项,如果打错字,那么目录名称就会变得乱七八糟。

  ② [root@localhost ~]# mkdir -m 权限值 新目录的完整路径

3.2.3 cp 命令:复制

  cp命令(是copy的缩写),其功能除了单纯的复制之外,还可以建立链接文件(就是快捷方式)比对两文件的新旧而予以更新、以及复制整个目录等。
  [root@localhost ~]# cp [选项] 源文件(source) 目标文件(destination)

3.2.3.1 cp 命令常用选项及功能
选项功能
-i询问,若目标文件(destination)已经存在时,在覆盖时会先询问是否覆盖(常用)。
-r递归复制,用于目录的复制操作(常用)。
-a相当于-dr --preserve=all的意思,至于dr请参考下列说明(常用)。
-p连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)。
-d若源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身。
-s复制成为符号链接文件(symbolic link),亦即“快捷方式”文件。
-l进行硬链接(hard link)的链接文件建立,而非复制文件本身。
-f为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次。
-udestination比source旧才更新destination,或destination不存在的情况下才复制。
–preserve=all除了-p的权限相关参数外,还加入SELinux的属性,links、xattr等也复制。

注意:
1. 如果源文件有两个以上,则最后一个目标文件一定要是“目录”才行;
2. 复制(cp)是个非常重要的命令,不同身份者执行这个命令会有不同的结果产生,尤其是-a、-p的选项,对于不同身份来说,差异则非常大;
3. 在默认的条件中,cp的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。

  ① 复制文件 -i
  -i选项复制文件的选项,如果目标文件已经存在,则会询问是否覆盖。

  ② 复制目录 -r
  -r选项专门复制目录的选项。

  ③ cp中,-a与不加选项的区别
  -a选项特性是将源文件的整个数据特性完整的复制下来。相当于"-d"、“-p”、"-r"选项的集合。

  在默认的条件中,cp的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。上图中,由于我是用root账号来执行复制命令,因此复制过来的文件拥有者与用户组就改变成了root所有。
  由于具有该特性,因此当我们在进行备份的时候,某些需要特别注意的特殊权限文件(例如:密码文件(/etc/shadow)以及一些配置文件),就不能直接以cp来复制,而必须要加上“-a”或是“-p”等可以完整复制文件权限的选项才行。另外,如果要复制文件给其他用户,也必须注意文件的权限(包括:读、写、执行以及文件拥有者等),否则其他用户还是无法针对你给予的文件进行自定义的操作。

  ④ 复制链接文件,-d与不加选项的区别
  -s选项:建立符号链接(软链接)文件(symbolic link),即“快捷方式”文件;
  -l选项:建立硬链接(hard link),而非复制文件本身。

  复制软链接文件时不使用 “-d” 选项,则 cp 命令复制的是源文件,而不是软链接文件;只有加入了 “-d” 选项,才会复制软链接文件。
  注意:“-d” 选项对硬链接是无效的!!!
  “-d”选项要求源文件必须为软链接文件;而“-l”、“-s”选项的源文件为普通文件,目标文件就可以直接复制为硬链接或者软链接。

3.2.4 mv 命令:移动

  mv命令(是move的缩写),其主要功能是用于剪切文件或将文件重命名
  [root@localhost ~]# mv [选项] 源文件 目标路径/目标文件名

  剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名:
  [root@linuxprobe ~]# mv x.log linux.log
  [root@linuxprobe ~]# ls
  install.log linux.log

3.2.5 rm 命令:删除

  rm命令(是Remove的缩写),其主要功能是用于删除文件或目录
  [root@localhost ~]# rm [选项] 目录名称

  在 Linux 系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm 命令后跟上-f 参数来强制删除。
  另外,想要删除一个目录,需要在 rm 命令后面一个-r 参数才可以,否则删除不掉。
  我们来尝试删除前面创建的 install.log和 linux.log 文件:
  [root@linuxprobe ~]# rm install.log
  rm: remove regular empty file ‘install.log’? y
  [root@linuxprobe ~]# rm -f linux.log
  [root@linuxprobe ~]# ls
  [root@linuxprobe ~]#

3.2.6 rmdir 命令:删除“空”目录

  rmdir命令(是Remove empty Directory的缩写),其主要功能删除"空"目录
  [root@localhost ~]# rmdir [-p] 目录名称

注意:目录需要一层一层的删除才行,而且被删除的目录里面必定不能存在其他的目录或文件,这也是所谓的空目录(empty directory)的意思。

3.2.6.1 rmdir 命令常用选项及功能
选项功能
-p递归删除“空的”目录。

如果要将所有目录下的东西都删除,这个时候就必须得用【rm -r test】。不过还是使用 rmdir 比较安全,也可以尝试以 -p 选项来删除上层空的目录。


本文参考文章:
1.Linux常用命令——ls命令
2.【Linux指令集】—ls指令(超详细)

本文标签: 文件系统基础常用命令Linux