✨✨ 欢迎大家来到贝蒂大讲堂✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
所属专栏:Linux学习
贝蒂的主页:Betty’s blog
与Windows环境不同,我们在linux环境下需要通过指令进行各操作,以下是常见操作的指令:
1. ls指令
1.1. 基本语法
- 语法:
ls 选项 目录或文件- 功能:对于目录,列出该目录下的所有子目录或文件;对于文件,列出文件名及其其他信息

1.2. 选项
-a:列出当前目录下所有文件,包括以.开头的隐藏文件。-d:将目录像文件一样显示,而不是显示其下的文件。-i:输出文件的 i 节点的索引信息。-k:以 k 字节的形式表示文件的大小。-l:列出文件的详细信息。-n:用数字的UID、GID代替名称。
- UID(User ID)即用户标识号,用于唯一标识系统中的用户。
- GID(Group ID)即组标识号,用于唯一标识系统中的用户组。
-F:在每个文件名后附上一个字符以说明该文件的类型,*表示可执行的普通文件;/表示目录;@表示符号链接;|表示FIFOs;=表示套接字(sockets)。-r:对目录反向排序。-t:以时间排序。-s:在文件名后输出该文件的大小,可用于大小排序,以便找到目录下最大的文件。-R:列出所有子目录下的文件。-1:一行只输出一个文件。

其中.代表当前目录,..代表上级目录。



其中每个文件占四个byte,一共12字节。

其中值得注意的是:连续的两个选项是可以简化的。比如说:ls -l -a可以简化为ls -la。并且ls -l也可以简化为ll。
2. pwd指令
- 语法:
pwd。- 功能:显示用户当前所在目录。

3. whoami指令
- 语法:
whoami。- 功能:显示用户当前身份

4. cd指令
首先在介绍cd命令之前我们得知道,Linux的目录结构是一颗多叉树,因为只有这样才能保证每个目录都有一个唯一且确定的位置。

因为路径具有唯一性,所以我们可以通过两种方式来描述文件的位置:
- 绝对路径:我们把这种从根目录开始,定位文件的路径称为绝对路径,比如:
/home/bob。- 相对路径:相对于当前所处路径去定位某个文件的路径,比如:当前路径为:
/home/bob,然后我们可以通过../eve来进入eve文件。
知道了以上概念之后,我们就可以来学习一下cd命令。
- 语法:
cd 目录名- 功能:改变工作目录,将当前工作目录改变到指定目录下。
cd ..:返回上级目录

cd 绝对路径:使用绝对路径改变当前工作目录。

cd 相对路径:使用相对路径改变当前工作目录。

cd ~:进入主工作目录,也就是家目录。其中对于root用户主工作目录就是/root,而对于普通用户就是/home/xxx。cd -:返回上一次访问目录。
其中需要注意的是:如果一直用cd ..回到上级目录,如果回到根目录就无法回退了,其中Linux下根目录为/。并且,/也可以作为路径分隔符,比如/home/beidi_113/113;而值得一提的是Window环境下的路径分割符为\。
5. clear指令
- 语法:
clear。- 功能:清空屏幕。
6. touch命名
6.1. 基本语法
- 语法:
touch 选项 文件。- 功能:
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

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

mkdir -p dirname可以是一个路径名称,此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

创建多级目录之后,我们可以通过tree指令查看相应的树形结构,如果系统内没有安装该命名,可以通过以下指令安装。
yum install -y tree
8. rmdir
- 语法:
rmdir选项dirname。- 功能: 删除空目录。

但是由于rmdir指令只能删除对应的空目录,所以局限性很大,一般我们比较常用的是下面的rm指令。
9. rm指令
9.1. 基本语法
- 语法:
rm 选项 dirname。- 功能: 删除文件或目录。

9.2. 选项
-i删除前逐一询问确认(y为确定删除,n为不删除)。-f即使文件属性为只读(即写保护),亦直接删除。-r删除目录及其下所有文件(递归式删除)。



当我们想删除当前目录下的所有文件时,可以使用通配符*,rm ./*就能删除当前目录下的所有文件。如果我们想指定删除某种类型的文件,比如说我们想删除后缀为.c的文件,可以这样使用rm ./*.c。
10. man指令
在Linux环境下存在很多指令,为了方便我们使用,我们可以通过man命令进行对应的查询。
10.1. 基本语法
- 语法:
man 选项 指令。- 功能: 查看指令的使用规则等。
比如我们来查询ls指令:

里面会包含该指令的名称,用法,以及对该指令功能的描述。在使用完之后按下q就可以退出。
然后我们还可以通过man man来查看手册的对应功能介绍。

一般而言,man手册有八个章节,每一章分别对应:
- 是普通的用户命令。
- 是系统调用,如
open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)。- .是C库函数,如
printf,fread。- 是特殊文件,也就是
/dev下的各种设备文件。- 是指文件的格式,比如
passwd, 就会说明这个文件中各个字段的含义。- 是给游戏预留的,由各个游戏自己定义。
- 是附件还有一些变量,比如向
environ这种全局变量。- 是系统管理用的命令,这些命令只能由
root使用,如ifconfig。
如果大家在查的时候有的东西查不到,可以在root用户下执行以下指令:
yum install -y man-pages
10.2. 选项
-k:根据关键字搜索联机帮助。num:只在第num章节查找。-a:将所有章节的查找结果都显示出来。
11. cp指令
11.1. 基本语法
- 语法:
cp 选项 源文件或目录 目标文件或目录。- 功能: 复制文件或目录。

11.2. 选项
-f或--force:强行复制文件或目录,不论目标文件或目录是否已经存在。-i或--interactive覆盖文件之前先询问用户。-r或-R递归处理,将指定目录下的文件与子目录一并处理,若源文件或目录的形态不属于目录或符号链接,则一律视为普通文件处理。



当然cp指令也可以结合通配符*一起使用,一次性复制多种文件。
12. mv指令
12.1. 基本语法
- 语法:
mv 选项 源文件或目录 目标文件或目录。- 功能: 视
mv指令当中两个参数的不同而不同。当第二个参数是不存在的名称时,mv指令完成文件重命名或目录重命名。当第二个参数是已存在目录名称时,mv指令将文件移动置该目录中。


并且如果有需求的话,可以将目标文件剪切到目标目录并重命名,比如说我们将test.c文件剪切到上级目录并重命名为new.c可以使用mv test.c ../new.c。
12.2. 选项
-f:强行剪切文件或目录,不论目标文件或目录是否已经存在。-i:覆盖文件之前先询问用户。
13. nano指令
- 语法:
nano 文件名。- 功能: 打开目标文件。
如果系统中没有该指令的话,可以使用下面指令安装:
yum install -y nano
然后我们就可以打开我们的目标文件,写一下代码或者其他信息。

书写完成之后,我们就可以先ctrl+x,在按下y进行保存并退出了。
14. cat指令
14.1. 基本语法
- 语法:
cat 选项 文件。- 功能: 查看目标文件的内容。
我们可以先通过nano书写代码,然后通过cat指令查看。

14.2. 选项
-b:对非空输出行编号。-n:对输出的所有行编号。-s:禁止重复的空输出行。


值得注意的是:cat指令会将目标文件内容全部打印到屏幕上。若是目标文件内容过大,则会导致刷屏。因此cat指令一般仅适用于查看内容较少的文件。
15. 重定向
15.1. echo指令
- 语法:
echo 输出信息。- 功能:将信息打印到指定文件,默认为显示器。

15.2. 输出重定向
我们可以使用输出重定向将echo输出的语句重定向到指定文件中,比如echo "hello betty" > tmp.txt就能将字符串hello betty!重定向进tmp.txt文件中,如果该文件不存在则会自动创建。

我们除了使用输出重定向文件输入外,我们还可以利用>清空文件,因为文件一般打开都会默认清空其中的数据。

15.3. 追加重定向
我们知道文件打开一般默认会清空其中的数据,为了不让打开的文件数据被清空,我们可以使用追加重定向。追加重定向与输出重定向的使用方式类似,只不过将>改为了>>
比如说我们对tmp.txt文件进行追加重定向。

15.4. 输入重定向
上面我们学了cat指令,一般我们后面会跟一个文件,就可以显示文件的内容,那如果cat之后不跟文件名呢:

这时我们输入什么,按回车后,显示器就回显什么,一直输入,就一直回显,按crtl+c就可以结束。这就证明cat一直在默认从键盘读取数据,如果我们不想让其从键盘读取数据,就可以使用输入重定向>。

这个输出重定向虽然与我们的cat直接输出类似,但是这两者是有区别的,这个我们后面会单独来谈。
