一、命令的基本格式

[root@localhost ~]# 命令 [选项] [参数]
命令格式中的[ ]代表可选项,也就是有些命令可以不写选项或参数,也能执行。

ls是Linux中最常见的命令,下面以 ls 命令来解释一下命令的格式。
1.选项的作用——调整命令功能

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

2.参数的作用——命令的操作对象

参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。例如:
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------.1 root root 1207 1 月 14 18:18 anaconda-ks.cfg

ls 命令之所以可以省略参数,那是因为有默认参数。命令一般都需要加入参数,用于指定命令操作的对象是谁。如果可以省略参数,则一般都有默认参数。例如:
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog

这个 ls 命令后面没有指定参数,默认参数是当前所在位置,所以会显示当前目录下的文件名。

二、cd命令:切换目录

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

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

cd命令的特殊符号

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

它们的用法分别是:

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

三、pwd命令:显示当前目录

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

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

pwd命令常用选项及功能

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

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

pwd -P

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

[root@localhost ~]# mkdir [ -mp ] 目录名称
mkdir 命令,是 Make Directory 的缩写,其主要功能是建立新的目录
注意:在默认情况下,所需要的目录得一层一层地建立。 例如:假如要建立一个目录为/home/bird/testing/test1,那么首先必须要有/home然后/home/bird,再来/home/bird/testing都必须要存在,才可以建立/home/bird/testing/test1这个目录。假如没有/home/bird/testing时,就没有办法建立test1的目录。

mkdir命令常用选项及功能

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

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

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

五、rmdir命令:删除“空”目录

[root@localhost ~]# rmdir [-p] 目录名称
rmdir 命令,是 Remove empty Directory 的缩写,其主要功能是删除空目录
注意:目录需要一层一层的删除才行,而且被删除的目录里面必定不能存在其他的目录或文件,这也是所谓的空目录(empty directory)的意思。

rmdir命令常用选项及功能

选项功能
-p递归删除“空的”目录。

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

六、ls命令:文件与目录的查看

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

ls命令常用选项及功能

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

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

ls -al

  • 第一列:规定了不同的用户对文件所拥有的权限,具体权限的含义将在后续章节中讲解。
  • 第二列:引用计数,文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
  • 第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
  • 第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
  • 第五列:大小,默认单位是字节。
  • 第六列:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
  • 第七列:文件名或目录名。
    注意:Linux 系统中,隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!
  1. 显示目录下的内容的详细信息,如下:
    [root@localhost ~]# ls -l /root/
    总用量44
    -rw-------.1 root root 1207 1 月 14 18:18 anaconda-ks.cfg
    -rw-r-r–.1 root root 24772 1 月 14 18:17 install.log
    -rw-r-r–.1 root root 7690 1 月 14 18:17 install.log.syslog
  2. 显示目录本身的详细信息,必须加"-d"选项。如下:
    [root@localhost ~]# ls -ld /root/
    dr-xr-x—.2 root root 4096 1 月 20 12:30 /root/
  3. “ls-l” 显示的文件大小是字节,但是我们更加习惯的是千字节用 KB 显示,兆字节用 MB 显示,而 “-h” 选项就是按照人们习惯的单位显示文件大小的,例如:
    [root@localhost ~]# ls -lh
    总用量44K
    -rw-------.1 root root 1.2K 1 月 14 18:18 anaconda-ks.cfg
    -rw-r-r–.1 root root 25K 1 月 14 18:17 install.log
    -rw-r-r–.1 root root 7.6K 1 月 14 18:17 install.log.syslog

七、cp命令:复制文件或目录

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

cp命令常用选项及功能

选项功能
-a相当于-dr --preserve=all的意思,至于dr请参考下列说明(常用)。
-i询问,若目标文件(destination)已经存在时,在覆盖时会先询问是否覆盖(常用)。
-p连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用)。
-r递归复制,用于目录的复制操作(常用)。
-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的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作者本身。

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

2.复制目录 -r
-r:专门复制目录的选项。
cp复制目录

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

4.复制链接文件,"-d"与不加选项的区别
-s:建立符号链接(软链接)文件(symbolic link),即“快捷方式”文件;
-l:建立硬链接(hard link),而非复制文件本身。
在这里插入图片描述复制软链接文件时不使用 “-d” 选项,则 cp 命令复制的是源文件,而不是软链接文件;只有加入了 “-d” 选项,才会复制软链接文件。注意:"-d" 选项对硬链接是无效的!!!
“-d”选项要求源文件必须为软链接文件;而“-l”、“-s”选项的源文件为普通文件,目标文件就可以直接复制为硬链接或者软链接。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐