目录

一、基础指令
1.ssh root@++公网ip++
**功能:**登录云服务器,公网ip填写自己服务器的公网ip地址,随后会跳出密码输入框,输入密码时不会显示密码,此为正常现象。
2.adduser ++新用户名++
**功能:**添加新用户,新用户名需要自定义
3.passwd ++用户名++
**功能:**为用户添加密码,也可以用于修改密码
4.userdel -r ++用户名++
功能:删除某用户,注意-r必须加上,否则可能导致没完全删干净。注意该操作在root用户上操作。
5.pwd
**功能:**显示当前路径

6.whoami
**功能:**显示当前正在使用Linux的账号名称

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

8.cd ++目录名++
**功能:**改变工作目录,将当前工作目录改变到指定的目录下。
- cd ~:进入家目录
- cd -:返回上一次cd进入的目录并显示路径
- 目录名可以是绝对路径,也可以是相对路径。

9.clear
**功能:**清理指令框,历史指令依旧可以上划查看
10.touch ++[选项]++ ++文件名++
**功能:**创建新文件或更新已有文件的时间戳(访问时间和修改时间)
- -a:仅更新文件的访问时间(atime),而不改变修改时间(mtime)和状态改变时间(ctime)。
- -c:仅更新已有文件的时间戳,不创建新文件(如果指定的文件不存在,则什么也不做)。
文件名可有多个,空格隔开,可以一次性创建多个文件

11.file ++文件名++
**功能:**可以查看文件的实际类型,

12.stat ++文件名++
**功能:**显示文件或文件系统的详细状态信息,包括文件的时间戳、权限、大小、inode 编号等元数据。(它比 ls -l 提供的信息更全面)

13.mkdir [选项] 目录名或者路径
**功能:**在当前目录下创建一个目录
- -p:后面可以接一个路径名称。此时若路径中的某些目录尚不存在,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。

14.tree ++目录名++
**需要手动安装:**yum install -y tree(CentOS),apt install -y tree(Ubuntu),非root账号需要sudo提权。
**功能:**tree指令用于以树形结构递归显示目录下的文件和子目录,直观展示文件系统的层级关系,常用于快速了解目录结构。
- 一般使用 tree . 即可快速展示当前目录下的所有文件和子目录。
- tree还有众多选项,感兴趣可自行搜查。

15.rm [选项] 文件名或路径
**功能:**删除文件或目录
- -f:强制删除,即使文件属性为只读(即写保护),亦直接删除
- -i:删除前逐一询问确认
- -r:删除目录及其下所有文件(递归式删除)
rmdir指令也具有删除空目录功能,但是基本可以被rm平替

16.man ++指令或C语言库函数++
**功能:**用于查找Linux的系统指令、C语言库函数等的详细文档
常用选项:
- -k:根据关键字搜索联机帮助
- -a:将所有章节的都显示出来,比如man printf它缺省从第一章开始搜索,知道就停⽌,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
- num:只在第num章节查找
num共用9章,以下是每章大致内容:
- 1:是普通的命令
- 2:是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
- 3:是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
- 4:略
- 5;是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
- 6:是给游戏留的,由各个游戏自己定义
- 7:是附件还有一些变量,比如像environ这种全局变量在这里就有说明
- 8:是系统管理用的命令,这些命令只能由root使用,如ifconfig
- 9略
**注意:**如果查询不到那就说明man手册是残缺的,使用 yum install -y man-pages(CentOS)/ apt install -y man-pages(Ubuntu) 安装完整版man手册。
演示:
17.echo
**功能:**默认将echo后面的内容写入显示器文件(打印出来)

18.cp [选项] [源文件] [目标文件]
**功能:**复制文件或目录
说明:
目标文件\]指复制的新文件名,在其他目录则需要带上路径。\[源文件\]如果就在当前路径下则不需要。
- 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。
常用选项:
- -f:强行复制文件或目录,不论目的文件或目录是否已经存在
- -i:覆盖文件之前先询问用户
- -r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。

19.which ++指令名++
**功能:**查找指令对应的命令文件,也就是查找对应命令文件的路径。

20.alias
**功能:**对指令取别名
说明:
- 你可能好奇为啥 ll 指令可以达到和 ls -l 一样的效果,其实本质就是使用alias取别名。
- (其中的 --color=auto 就是颜色相关的选项)
- 所以我们也可以使用alias取别名:
- 如何取消我们取的别名:关掉终端,重新链接即可。
21.mv ++[选项]++ ++[源文件或目录]++ ++[目标文件或目录]++
**功能:**剪切 和 重命名
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
- -f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i:若目标文件(destination)已经存在时,就会询问是否覆盖!

22.cat ++[选项]++ ++[文件名]++
**功能:**查看目标文件的内容
常用选项:
- -b:对非空输出行编号,空行不做编号
- -n:对输出的所有行编号
- -s:不输出多行空行(压缩连续空行为一行)
cat指令一般用来查看小文件

23.tac ++[文件名]++
**功能:**把目标文件的内容反向打印

24.more ++[选项]++ ++[文件名]++
**功能:**适合查看大型文件内容,支持向下翻阅(s),但不支持向上翻阅,实用性不如less
常用选项:
- -数字:指定输出行数
运行时:
- 按 q 退出more

25.less ++[选项]++ ++[文件名]++
**功能:**最常用的查阅大型文件的工具,支持方向键控制上下翻阅,支持搜索(高亮显示)
常用选项:
- -i:忽略搜索时的大小写
- -N:显示每行的行号
查阅时输入:
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
- n:重复前一个搜索(与/或?有关)
- N:反向重复前一个搜索(与/或?有关)
- q:退出

(查找结果高亮显示)
26.head ++[参数]++ ++[文件名]++
**功能:**可以显示从开头到指定行数的文件内容,默认head命令只打印文件开头10行内容。
参数:
- -数字:指定显示多少行

27.tail ++[参数]++ ++[文件名]++
**功能:**与head相反,tail显示从文件末尾到指定文件行数的内容,默认也是显示10行
参数:
- -数字:指定显示多少行

28.date ++[选项和格式]++
**功能:**按格式显示时间和时期
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:
- %Y:完整年份(0000..9999)
- %m:月份(01..12)
- %d:日(01..31)
- %H:小时(00..23)
- %M:分钟(00..59)
- %S:秒(00..61)
- %X:相当于%H:%M:%S
- %F:相当于%Y-%m-%d
2.在设定时间方面:
- date-s //设置当前时间,只有root权限才能设置,其他只能查看。
- date-s "01:01:012008-05-23″ //这样可以设置全部时间
- date-s "2008-05-2301:01:01″ //这样可以设置全部时间
- date-s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
- date-s 01:01:01 //设置具体时间,不会对日期做更改
3.时间戳:
- %s:显示时间戳(1970-1-1 0:00到目前的秒数)
- date +格式 -d@时间戳:可以把时间戳按指定格式转化
显示完整时间日期:

可以使用转义字符\定义格式:

时间戳:

时间戳转为指定格式的时间和日期:

解释:8:00是因为系统默认加上了时差
29.cal ++[选项]++ ++[年份]++
**功能:**显示公历,默认显示当前月份的日历
常用选项:
- -3:显示系统前一个月,当前月,下一个月的月历。
- -j:显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数,后接年份可以查看一整年的天数分布)
- -y:显示当前年份的日历

30.find [路径] [选项]
**功能:**用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
- -name:按照文件名查找文件,后接空格和文件名
- 其他选项很多,需要时再查

通配符*可以查指定后缀名的所有文件:

31.whereis [程序]
**功能:**用于找到程序的源、二进制文件或手册

32.grep ++[选项]++ ++["字符串"]++ ++[文件名]++
**功能:**在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i:忽略大小写的不同,所以大小写视为相同
- -n:顺便输出行号
- -v:反向选择,亦即显示出所有没有'搜寻字符串'内容的那一行
(文件名也可以是绝对路径或者相对路径)

支持 ./* 在当前目录下的所有文件中查找指定的字符串:

或者指定路径下的目录:

33.zip 和 unzip
**功能:**zip指令用于打包压缩文件或目录,unzip用于解压。
该指令一般需要安装:
yum install -y zip unzip(CentOS)/ apt install -y zip unzip(Ubuntu)
zip用法:zip ++[选项]++ ++[压缩后文件名]++ .zip ++[被压缩文件或目录]++
常用选项:
- -r:递归处理,将指定目录下的所有文件和子目录一并处理
将myfile目录打包压缩:
- 展示myfile目录:
- 打包压缩:(切记压缩含多文件的目录需要带 -r 选项)
unzip用法1:
- unzip [压缩文件].zip
- 默认解压到当前目录
解压缩myfile.zip:
- 先解压:
- 查看解压结果:
unzip用法2:
- unzip [压缩文件].zip -d [指定目录]
- -d 选项让unzip支持把压缩包解压到其他目录
将myfile.zip解压到其他目录中:

34.sz 和 rz
安装:yum install -y lrzsz(CentOS)/ apt install -y lrzsz(Ubuntu)
**功能:**本地电脑与云服务器端互传压缩包
用法:
- sz [压缩文件].zip:把压缩文件传到本地电脑,会弹出窗口选择具体传到哪个路径下
- rz:选择本地压缩包传到服务器,会弹出窗口选择具体传送哪个压缩包(默认是传到云服务器的当前路径下)
还有更简单的rz方式,直接把电脑上的压缩包拖到服务器终端上即可上传
sz:

rz:

(建议使用类似xshell这样的软件登录云服务器,再使用这两个命令传文件)
35.tar
**功能:**tar也是一个压缩和解压缩的指令(只是与zip的压缩算法不同)
压缩用法:
- tar [选项] [压缩后的文件名].tgz [待压缩文件]
常用压缩选项:
- -c:建立一个压缩文件的参数指令(create的意思)
- -z:是否同时具有gzip的属性?就是使用gzip压缩算法
- -j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?
- -f:使用档名,请留意,在f之后要立即接档名,也就是压缩包的名字
- -v:压缩的过程中显示文件,也就是展示压缩过程。
- 常用组合:tar -czf [压缩包名].tgz [待压缩文件]
解压用法:
- tar [选项] [待解压文件].tgz //默认解压到当前目录
- tar [选项] [待解压文件].tgz -C [指定目录] //解压到指定目录
常用选项:
- -x:解开一个压缩文件的参数指令
- -t:查看tarfile里面的文件
- -z:是否同时具有gzip的属性?使用gzip的解压算法
- -j:是否同时具有bzip2的属性?亦即是否需要用bzip2解压?
- -f:使用档名,请留意,在f之后要立即接档名,后接待解压文件
- -v:解压的过程中显示文件,也就是展示解压过程。
- -C:解压到指定目录
- 常用组合:tar -xzf [待解压文件].tgz
压缩:

解压:

36.scp ++[压缩文件.tgz/zip]++ ++[用户名]++ @++公网ip++ :++[指定目录]++
**功能:**将压缩包从当前服务器发送到另一台服务器的Linux系统上的指定目录中
用户名\]填写当前操作的用户名
- 回车后需要输入当前用户的密码来确认操作
(没有第二台服务器,就不演示了嘿嘿)
37.bc
**功能:**可以很⽅便的进行浮点运算,用法上可以搭配管道 | 使用

38.uname ++[选项]++
**功能:**uname用来获取电脑和操作系统的相关信息。
常用选项:
- -r:查看内核版本号
- -a:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理 器类型,硬件平台类型,操作系统名称

39.history
**功能:**查看所有的历史命令

40.几个重要的热键
- Tab按键:具有『命令补全』和『档案补齐』的功能(一般最开始需要双击tab键)
- Ctrl+c按键:让当前的程序『停掉』,适用于程序霸屏打印停不下来的情况。
- 上下方向键:可以查看最近的历史命令。
二、基础知识点
1.文件 != 文件的内容
**说明:**文件 = 文件内容+文件属性,这两者都是数据,都需要保存;即使新建的文件没有写入任何内容,它也有基本的文件属性需要保存,它依然占据存储空间。
2.隐藏文件
**说明:**Linux中以.开头的文件属于隐藏文件(包括以.开头的目录),使用ls -a指令可以查看隐藏文件。隐藏文件一般用于存放比较重要的数据,避免误删。
3.当前路径. 和 上级路径..
说明:
- 文件属性第一栏的 d 表示当前文件类型属于一个目录,所以 . 和 .. 的类型为目录。
- . 表示当前目录,.. 表示上级目录。作用就是 cd .. 指令可以返回到上级路径;./加上当前目录可执行文件就可以运行程序了。
- . 和 .. 在任何目录下都存在。
4.根目录
说明:
- 如果一直使用 cd .. 指令就会退到根目录:/
- 其实这就能反映出Linux的文件系统结构是一个树状结构,准确的说应该是------多叉树
5.绝对路径和相对路径
说明:
- 绝对路径:从根目录 / 出发到具体文件的路径称为绝对路径,如 cd /具体路径 指令,就能在任意路径下直接跳转到指定路径。同理很多需要指示路径的指令都可以使用绝对路径。
- 相对路径:是以相对自己当前路径,找到目标路径的方式。比如指令 cd ../test 就能进入同级目录下的test目录,这里主要是利用 .. 返回上一级再进入下一级的特性。
- 使用场景:相对路径和绝对路径都具有唯一性,相对路径平时使用较多,在文件深度较深时比较方便;绝对路径多用于系统级的配置文件等。
6.Linux中文件类型与文件后缀无关
说明:
- Linux中主要以文件属性栏第一列区别文件类型:
- d代表目录文件;-代表普通文件(包括文本文件、二进制可执行文件、动静态库、视频、图片等)
- 即使改变文件后缀名,也不影响其使用:
- **注意:**只是Linux系统不以文件后缀名区分类型,但不代表指令软件不区分文件后缀名,比如gcc指令只能识别并执行.c的文件。
7.输出重定向> 和 追加重定向 >>
说明:
- 在此之前我们需要知道:Linux上,一切皆文件。
- 包括显示器也是一个文件,当我们使用 echo hello linux 时本质是往显示器中写入内容。
输出重定向 > :
- 任何具有输出的指令都可以使用输出重定向指定写入的文件。
- 比如:echo hello word > log.txt
- 比如:ls -al > log.txt
输出重定向的特点:
- 当 > 右侧的文件不存在时,则创建一个新文件(包括单独使用),如:
- 当 > 右侧文件存在并且写入文件内容时,则先清空文件原有内容再写入新内容,相当于覆盖式写入,如:
追加重定向 >> :
- 与 > 的覆盖式写入不同,>> 支持追加式写入。
- 除此之外,>> 和 > 的上述特点基本相同
补充一个现阶段有趣的东西:
- 因为Linux上一切皆文件,所以我们的显示器,也就是输入指令的终端也就一个文件
- 这个文件可以使用 ll /dev/pts 查看显示器文件(0就是当前显示器文件):
- 当我们使用另一个终端连接同一台服务器时,显示器文件就会多一个:
- 此时 1 这个文件就是新终端的显示器文件了,我们可以往这个文件中写入信息,那么另一个终端就能看到:
8.指令的本质
说明:指令的本质就是特定路径下的程序,这个路径就是 /usr/bin。
- 我们可以使用 ls 指令查看这个路径下的内容:
- 我们可以把指令看成快捷方式,当然我们也可以直接使用/usr/bin中的指令:
- 我们甚至可以把自己写的程序 cp 复制到 /usr/bin 目录下,然后我们就可以让我们的程序像指令一样使用:
- (不过不建议把自己写的二进制可执行程序放到该目录下,验证完就可以删啦)
9.管道 |
说明: 管道 | 的核心功能是将一个命令的输出直接作为另一个命令的输入,实现多个命令的协同工作。
- 例如上面我们学习了 head 和 tail 指令,但是它们一个查开头,一个查末尾,那怎样查询一个文件指定的中间区域呢?
- 这时候就可以用到管道 | 了,比如查询一个文件的 [1000-1010] 行内容:
- 解释:先执行head指令返回1010行内容,再由tail指令返回这1010行内容的末尾10行内容。
- **注意:**上面tail指令后面不用跟文件名,因为tail是在head的返回值上进一步加工的。
10.shell命令以及运行原理
- Linux严格意义上说的是一个操作系统,我们称之为"核心(kernel) ",但我们一般用户,不能直接使用kernel。而是通过kernel的"外壳"程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
- 从技术角度度,Shell的最简单定义:**命令行解释器(commandInterpreter)**主要包含:
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
- **对比windowsGUI:**我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符或运行某个应用程序)。
- shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。因为shell对于非法指令会直接拒绝,因此shell还具有保护内核的作用。
我们当前Linux中该外壳程序就是:bash(负责打印指令栏和命令解释器等功能)

- shell是对所有外壳程序的统称,bash是一款具体shell外壳程序
- 同一个Linux系统,每多登录一个用户就会多一个bash用于处理对应用户的指令
总结
以上就是本文的全部内容了,感谢支持!