0


【Linux】保姆级认识常见指令(一)

引言

Linux 操作系统以其开源特性和卓越的稳定性而闻名,而学习 Linux 命令行是掌握这个强大操作系统的关键一步。在这个数字化时代,系统管理员、开发者和网络工程师等 IT 从业者都需要熟练掌握命令行工具,以有效地管理和配置系统。在这篇博客中,我将会介绍 Linux 常用指令,无论你是刚入门 Linux 的新手还是希望提高命令行技能的专业人士,这里都将为你提供全面而实用的指南。让我们一起踏上 Linux 命令行的旅程吧!

文件与目录管理

1. ls 指令

语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。

示例:

这里列出了我当前目录下的所有子目录与文件。

加上 -a 选项后,将以 **. **开头的隐藏文件也列出来了,在Linux中,以 **. **开头的文件是隐藏文件。

这里我创建了一个名字为**.test.txt**的普通文件(touch指令在后面会介绍),然后用ls指令时并没有看到这个隐藏文件,接着使用 -a 选项后就能看到了。

使用 -l 选项则可以查看文件的详细信息。我们可以将文件看作是文件属性和文件内容的组合。文件属性提供了关于文件的描述性信息和管理属性,而文件内容是实际的数据。这两者共同构成了一个完整的文件。未来我们对文件的任何操作,都是对文件属性或者文件内容的操作。

文件属性: 文件属性包括文件的元数据,如文件名、大小、创建时间、修改时间、所有者、权限等。这些信息用于描述文件的基本特征和管理文件的访问和操作。

文件内容: 文件内容是实际存储在文件中的数据。这可能是文本、二进制数据、图像、音频等,具体取决于文件的类型。文件内容是通过读取文件的方式访问的,而文件属性则用于描述和管理文件本身的元信息。

2. pwd 指令

语法:pwd
功能:显示用户当前所在的目录 。

示例:

这里可以看到当前所在的目录是 /root,这其实就是一个路径。

" / "是Linux的路径分隔符,而" \ "是windows的路径分隔符。两个路劲分隔符之间,一定是一个目录,在路径的最末端,一定是一个文件或者目录。

这个就是windows系统的路径 。

那么为什么要有路径呢,因为我们在访问任何文件之前,我们都必须先找到这个文件,路径就可以在系统层面标识一个特定的文件,有了路径我们就可以顺藤摸瓜,最后找到我们想要访问的文件了

3. cd 指令

语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。

在Linux系统中,磁盘上的文件和目录被组成一棵目录树(多叉树),每个节点都是目录或文件。

一个目录里面可以有普通的文件,也可以有它的子目录。这里我们可以看到任何一个文件它都只有一个父目录!因此路径具有唯一性,即同一个目录下,不允许存在同名目录或文件。

** 示例:**

这里通过 ls 指令看到我们当前 /root 路径下的子目录以及文件,然后通过 cd a 进入了名字为a的子目录中,我们再通过 pwd 指令来查看当前的路径,变成了 /root/a,说明我们已经进入a目录了。
注意:这里我们是通过相对路径的方式来进入a目录的。

相对路径和绝对路径是用于指定文件或目录位置的两种不同方式。它们的主要区别在于参照的起点不同。

绝对路径:
1.绝对路径是从文件系统的根目录开始指定文件或目录的路径。
2.在Unix/Linux系统中,绝对路径以斜杠 / 开头,如 /home/user/documents/file.txt。
3.在Windows系统中,绝对路径可能以盘符开头,如 C:\Users\User\Documents\File.txt。

相对路径:
1.相对路径是相对于当前工作目录的路径。
2.相对路径不包括根目录信息,而是从当前位置开始计算。
3.通过 . 或者 .. 进行路径访问。

任何目录下,都会默认具有两个隐藏目录:**.** 和 ..
**. 用来表示当前路径,而 .. **用来表示上级路径。通过这两个隐藏目录,我们既可以进入到一个路径中,又可以从该路径退出到上一级路径中

这里我们通过 **.. **回退到了上一级路径中。

这里 ./a 等价于 /root/a ,因为 **. **就是表示当前路径,当前路径在上面的 pwd 指令中已经看到了是 /root 。

这里就是用绝对路径来访问了。

相对路径和绝对路径还可以通过与其他指令相配合来玩出花样,这里我们以前面介绍过的 ls 指令来举例:

这里通过绝对路径来查看该目录下的子目录以及文件。

这里则通过相对路径来查看。这里的** ..**/root 等价于 /root ,因为当前路径是 /root ,上一级路径则是 / 。

cd 指令还可以搭配一些选项:

cd - :跳转到我们最近一次所处的路径下。
当我们需要频繁用到两个路径时,可以方便的进行切换。

cd ~ :进入用户家目录。任何一个用户,首次登录时所处的路径都是自己的家目录。
对于root账号,默认的家目录是 /root ,这是超级管理员账号。
而对于普通用户,默认家目录是 /home/xxx ,这里的xxx是用户名。

这是windows系统的家目录。

4. whoami 指令

语法:whoami
功能:显示当前登录用户的用户名,可以快速了解当前会话中是哪个用户在操作系统中活动。

示例:

5. which 指令

语法:which** **[指令]
功能:用于查找给定指令在系统路径中的位置

示例:

这里我们就查找到了这三个指令在系统路径的位置。我们可以发现这些指令都是存在于/usr/bin 这样一个路径下的,我们试着用绝对路径来访问一下它们。

这里可以发现访问得到的效果和我们直接输入指令是一样的。

在 UNIX/Linux 系统中,/usr/bin通常用于存放可执行文件(二进制文件)。因此我们需要重新认识一下指令了,指令的本质都是程序。

我们注意到当我们查看 ls 指令的路径时,有一个 alias ,这个也是一个Linux命令,用来给其他命令起别名。

这里我们给 ls 指令起了个别名叫 lisi ,这样我们就可以用 list 来执行 ls 指令了。

这里之所以我们的 ll 指令相当于 ls -l ,也是 alias 的功劳。

这里我们通过访问 ls 的路径来查看当前目录下的子目录与文件,我们发现它与直接使用 ls 指令有些不同,它不带颜色,这是为什么呢,我们来which一下 ls 指令就知道了。

这里我们看到 ls 指令其实是 ls --color=auto 这一串指令的别名,也就是说带上后面这一串我们也能让子目录和文件带上颜色了。我们来试一下。

6. mkdir 指令

语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录。
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

示例:

这样就创建出了一个名为 “dir” 的目录。

通过 -p 选项我们一次性创建了一个路径下的多个目录。我们可以通过 tree 命令来查看是否创建成功。 这是一个用于在命令行中以树状结构显示目录和文件的实用程序。它对于查看文件和目录结构,以及生成目录树状结构的视图非常有用。
系统在执行某个指令的时候,都会先在指定的搜索路径中去寻找这个指令,因此如果这个指令没安装的话,是执行不了得,我们可以通过这行命令来安装:yum install -y tree

这里可以看到我们确实通过给定的路径创建了一系列的目录。

既然 tree 指令可以以树状形式显示目录结构,那我们不妨来 tree 一下根目录如何:tree /

我们发现它在疯狂打印,因为根目录的内容还是很多的,如果我们什么都不做让它打印到结束估计要一会,这时候我们可以 Ctrl + C 键来让它终止。当我们平常遇到指令失控的情况,我们都可以通过这样的方式来终止异常的命令。

还可以在同一路径下创建多个空目录。

7. touch 指令

语法:touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
-a 或 --time=atime或 --time=access或 --time=use只更改存取时间。
-c 或 --no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或 --time=mtime或 --time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。

示例:

这里使用 touch 指令成功创建了一个名为“test.c”的普通文件。注意:-r 开头的这些文件是普通文件,而以 d 开头的这些则是目录。

8. rmdir 指令

rmdir 是一个与 mkdir 相对应的命令。mkdir 是建立目录,而 rmdir 则是删除空目录。

语法:rmdir [-p] [dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

示例:

这里我们的 dir 是一个空目录,因此可以直接删除。

而这个 123 目录不是空目录,因此删除不了,它也提示说目录非空。

注意:rmdir 是不能删除普通文件的哦。

9. rm 指令

语法:rm [-f-i-r-v] [dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),也直接删除
-i 删除前逐一询问确认
-r 删除目录及其下属所有文件和子目录(递归删除)

示例:

用来删除普通文件的时候,直接 rm 即可。而如果要删除目录(不管是不是空目录)就要带上 -r 选项了。要删除的文件或目录参数可以是多个。事实上大部分指令后面跟的操作对象都可以是多个,系统会一个一个执行。如 ls 多个目录时,会先后显示出这两个目录下的子目录和文件。这里就不一一举例了,感兴趣的可以上手敲一下。

从删除 123 这个目录的过程可见它是递归式删除的,它问我们是否要删除该目录下的 test.txt文件,我们输入 y 后,它又问我们是否删除 123 这个目录,我们再次输入 y,然后就删掉了。如果我们不想让它询问是否删除的话,可以使用 -f 选项,这样会直接删除而不询问(删库跑路警告)。

注意:使用

rm -r

命令要非常小心,因为它会删除指定目录及其下属所有内容,且操作不可逆。确保你确实想要删除这些文件和目录,以免造成数据丢失。一旦有不确定的目录或文件时,宁可备份,不可删除。

这里的 ' * ' 表示一个通配符,它可以匹配任意文件名,当我们想删除所有后缀为 **.**c 的文件时,就可以用这个指令:rm -rf *.c 。

10. cp 指令

语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

示例:

这样就成功把 test.txt 这个普通文件拷贝到 111 目录中啦。

还可以和绝对路径搭配着来玩。相对路径绝对路径随意搭配都是可以的,可以自己上手敲一下。

我们还可以顺便进行重命名,这里我就把它命名为了 data.txt 。这里只是对 111 目录下这个拷贝文件重命名哦,源文件的名字是没变的。

当我们要拷贝的是一个目录(不管是不是空的),都必须带上 -r 选项,这时候进行递归式拷贝。

这里我们当前路径下并没有 112 这个目录,它则直接拷贝了源文件并重命名为了 112,这里可以理解为把 text.txt 拷贝到当前目录下并且重命名为 112。这里 112 是普通文件哦。其实就是相当于下面这个操作。

这里的 .就表示当前路径,./112 就是拷贝到当前路径并且重命名为 112

11. mv 指令

mv命令是move的缩写,可以用来移动文件或者将文件改名,是Linux系统下常用的命令,经常用来备份文件或者目录。

语法:mv [选项] 源文件或目录 目标文件或目录
功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

示例:

这里就将 test.txt 重命名为了 test.c

对一个目录也是可以重命名的。这里要确保当前路径下没有 111.dir 这个目录哦,不然会变成把 111 目录移动到 111.dir 这个目录下的。

移动(剪切)多个文件到 111.dir 目录中。
注意:移动过后改变了源文件或目录的路径,即原本的路径下已经不存在这个源文件或目录了。

这里我们不但把目录 c 移动到了目录 111.dir 中,还对它进行了重命名。

这里玩了一下绝对路径和相对路径,先通过绝对路径找到目录 b ,再将它移动到相对路径下,**.. **就是上一级路径嘛,我们目前所处的路径是:/root ,那上一级路径就是根目录:/

总结

在Linux系统中,文件与目录管理是命令行操作的基础,而一系列简单而强大的指令使得这一过程更加高效。通过本博客,我们学习了如何使用各种指令,包括列出目录内容 "ls" ,显示当前所在路径"pwd",改变工作目录"cd",创建空目录"mkdir",创建文件"touch",删除空目录"rmdir",删除文件"rm ",复制文件"cp",移动文件"mv",以及识别命令路径"which"等等。

想很好地掌握这些指令的话还是需要多敲一下,熟能生巧。

标签: linux

本文转载自: https://blog.csdn.net/STUs1mpl/article/details/134610299
版权归原作者 bug还在等待救援 所有, 如有侵权,请联系我们删除。

“【Linux】保姆级认识常见指令(一)”的评论:

还没有评论