全部文章

Linux 常用终端命令

终端

image

所谓终端,其实类似于windows下cmd命令行模式。

终端的形式:

终端指令

指在Linux终端(命令行)中输入的内容就称之为指令。

image

一个完整的指令的标准格式:Linux通用的格式

#指令主体(空格) [选项](空格) [操作对象]

一个指令可以包含多个选项

操作对象也可以是多个

例如:需要让张三同学帮忙去楼下小卖铺买一瓶农夫山泉水和清风餐巾纸,在这个指令中“买东西”是指令的主体,买的水和餐巾纸是操作的对象,农夫山泉、清风是操作的选项。

学习 Linux 终端命令的原因

  • Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如 磁盘操作文件存取目录操作进程管理文件权限 设定等
  • 在职场中,大量的 服务器维护工作 都是在 远程 通过 SSH 客户端 来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成
  • 在职场中,作为后端程序员,必须要或多或少的掌握一些 Linux 常用的终端命令
  • Linux 发行版本的命令大概有 200 多个,但是常用的命令只有 10 多个而已

学习终端命令的技巧:

  • 不需要死记硬背,对于常用命令,用的多了,自然就记住了
  • 不要尝试一次学会所有的命令,有些命令是非常不常用的,临时遇到,临时百度就可以

常用 Linux 命令的基本使用

序号 命令 对应英文 作用
01 ls list 查看当前文件夹下的内容
02 pwd print work directory 查看当前所在文件夹
03 cd [目录名] change directory 切换文件夹
04 touch [文件名] touch 如果文件不存在,新建文件
05 mkdir [目录名] make directory 创建目录
06 rm [文件名] remove 删除指定的文件名
07 clear clear 清屏

小技巧

  • ctrl + shift + = 放大终端窗口的字体显示
  • ctrl + - 缩小终端窗口的字体显示

03. 自动补全

  • 在敲出 文件目录命令 的前几个字母之后,按下 tab 键
    • 如果输入的没有歧义,系统会自动补全
    • 如果还存在其他 文件目录命令,再按一下 tab 键,系统会提示可能存在的命令

小技巧

  • 按  光标键可以在曾经使用过的命令之间来回切换
  • 如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl + c

查阅命令帮助信息(知道)

提示

  • 现阶段只需要 知道 通过以下两种方式可以查询命令的帮助信息
  • 先学习常用命令常用选项的使用即可,工作中如果遇到问题可以借助 网络搜索

2.1 --help

command --help

说明:

  • 显示 command 命令的帮助信息

2.2 man

man command

说明:

  • 查阅 command 命令的使用手册

man 是 manual 的缩写,是 Linux 提供的一个 手册,包含了绝大部分的命令、函数的详细使用说明

使用 man 时的操作键:

操作键 功能
空格键 显示手册页的下一屏
Enter 键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索 word 字符串

磁盘管理命令

 1.ls指令

含义:ls (list)

image

用法1:#ls

含义:列出当前工作目录下的所有文件/文件夹的名称

用法2:#ls 路径

含义:列出指定路径下的所有文件/文件夹的名称

关于路径(重要):

路径可以分为两种:相对路径、绝对路径。

相对路径:相对首先得有一个参照物(一般就是当前的工作路径);相对路径的写法:在相对路径中通常会用到2个符号“./”【表示当前目录下】、“../”【上一级目录下】。

绝对路径:绝对路径不需要参照物,直接从根“/”开始寻找对应路径;

image

用法3:#ls 选项 路径

含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。

常见的语法:

        #ls -l 路径

        #ls -la 路径

选项解释:

        -l:表示list,表示以详细列表的形式进行展示

    -l 查询详细列表    ls -l   简写为ll

        -la:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)

image

上述列表中的第一列字符表示文档的类型,其中“-”表示改行对应的文档类型为文件,“d”表示文档类型为文件夹,“l“表示为一个连接(快捷方式)

image

在Linux中隐藏文档一般都是以“.”开头。

用法4:#ls -lh 路径

含义:列出指定路径下的所有文件/文件夹的名称,以列表的形式并且在显示文档大小的时候以可读性较高的形式显示

参数含义:

image

补充:有时候我们会发现所有的文件夹的大小都是4k,不要奇怪,默认都是4k

ls -lah:是上面命令的组合

可以简写为:ll -ah

注意:ls列出的结果颜色说明,其中蓝色的名称表示文件夹,黑色的表示文件,绿色的其权限为拥有所有权限

扩展:

ll -ah | less:分屏展示

 2.pwd指令

用法:#pwd                (print working directory,打印当前工作目录)

image

显示当前的所在目录。返回绝对路径

 3.cd指令

命令:#cd                (change directory,改变目录)

作用:用于切换当前的工作目录的

语法:#cd 路径

案例:当前在“/”下,需要使用绝对路径切换到/usr/local。

image

案例:当前在/usr/local下,需要使用相对路径切换目录到home目录下的Linux123用户家目录中去。

image

补充:

在Linux中有一个特殊的符号“~”,表示当前用户的家目录

切换的方式:#cd ~

image

cd ../    ,向上一层目录

        cd /      ,切换到Linux的根目录

        cd /目录名 , 任意目录 切换到指定目录中     /目录名  Linux的绝对路径

        cd        ~        ,切换到当前用户家目录。Root用户家目录 /root    回家

        cd         -        ,切换到上一次访问的目录。   只能两个目录相互切换

 4.mkdir指令

指令:mkdir    (make directory,创建目录)

语法1:#mkdir 路径 【路径,可以是文件夹名称也可以是包含名称的一个完整路径】

案例:在当前路径下创建出目录“yunweihenniux”

image

注意该命令创建成功后不会有任何提示

注意:ls列出的结果颜色说明,其中蓝色的名称表示文件夹,黑色的表示文件,绿色的其权限为拥有所有权限

案例:在指定路径下创建出一个文件夹“yunweihenniux”

image

语法2:#mkdir -p 路径

含义:当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错

image

语法3:#mkdir 路径1 路径2 路径3 ….  【表示一次性创建多个目录】

image

 5.touch指令

指令:touch   

作用:创建文件

语法:#touch 文件路径        【路径可以是直接的文件名也可以是路径】

案例:使用touch来在当前路径下创建一个文件,命名为Linux.txt

image

案例:使用touch来同时创建多个文件

image

案例:使用touch来在“Linux123”用户的家目录中创建文件,Linux.txt

image

 6.du -sh指令

作用:查看目录的真实大小(实际大小)

语法:#du -sh 目录路径

选项含义:

        -s:summaries,只显示汇总的大小

        -h:表示以高可读性的形式进行显示

案例:统计“/root/yunweihenniux”目录的实际大小

image

案例:统计“/etc”目录实际大小

image

文件浏览命令

 1.cat指令

作用1:cat有直接打开一个文件的功能。

语法1:#cat 文件的路径

注意,cat和vim打开文件的方式不同,cat打开文件之后直接再终端内部输出出来,并且直接又回到原来的终端位置

cat适合查看少量信息的文件(大文件只能查看到后面一部分内容)。

image

作用2:cat还可以对文件进行合并

语法2:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径

例如,合并3个文件,并存到一个文件中【配合输出重定向使用】

image

补充:上面一个>表示今后的内容会覆盖之前的,>>表示追加,和上面输出重定向一样

 2.more

more 文件名   分页显示文件内容

操作

        Enter    向下n行,需要定义。默认为1行

        空格键  向下滚动一屏 或 Ctrl+F

        B  返回上一屏 或 Ctrl+B

        q       退出more

 3.less指令

作用:查看文件,以较少的内容进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多

语法:#less 需要查看的文件路径

less -mN 文件名     分页显示文件内容,标注每行的行号

-m显示类似more命令的百分比

-N显示每行的行号操作

操作:

  • 空格键  向下滚动一屏 或 Ctrl+F
  • B  返回上一屏 或 Ctrl+B
  • 数字n+回车:从第n行开始显示
  • 上下方向键:上下移动显示内容
  • d:前进半页
  • u:后退半页
  • y:后退一行或方向键向上
  • /字符串:向下搜索
  • ?字符串:向上搜索
  • v:进入vim编辑器
  • 左右方向键:相当于水平滚动条
  • q:退出

        适用于大量数据的查看

 4.tail指令

作用1:查看一个文件的未n行,如果n不指定默认显示后10行

语法:#tail -n 文件的路径    n同样表示数字  n=-1时表示查看最后一行

image

作用2:可以通过tail指令来查看一个文件的动态变化内容【变化的内容不能是用户手动增加的:就是不是手输保存的(我们这里可以使用之前的输出重定向指令改变文件内容来测试)

语法:#tail -f 文件路径

该命令一般用于查看系统的日志比较多。

 5.head指令

作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。

语法:#head -n 文件路径   【n表示数字】

image

 6.wc指令

作用:统计文件内容信息(包含行数、单词数、字节数)

语法:#wc -lwc 需要统计的文件路径

        -l:表示lines,行数

        -w:表示words,单词数   依照空格来判断单词数量

        -c:表示bytes,字节数

image

③扩展处理:请使用学过的命令,来统计某个目录下的文档的总个数?

答:#ls / | wc -l

文件操作命令

 1.cp指令

指令:cp                (copy,复制)

作用:复制文件/文件夹到指定的位置

语法:#cp 被复制的文档路径 文档被复制到的路径

注意:Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。

需求:把/root/Demo1.java文件 复制到  /root/t1 目录中,改名为ddd.java

位置:/root

命令:cp Demo1.java  t1/ddd.java

案例:使用cp命令来复制一个文件夹

注意:当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略

需求:把/root/t5目录 复制到  /root/t1目录中

位置:/root

命令:cp -r t5 t1

          cp -r /root/t5  /root/t1

 2.mv指令

指令:mv   (move,移动,剪切)

作用:移动文档到新的位置

语法:#mv 需要移动的文档路径 需要保存的位置路径

mv(move) 功能:移动或更名现有的文件或目录。

文件/目录移动:

mv需要移动的文件 移动的位置

需求:把/root/t5 目录 移动到 /root/t3目录中

位置:/root

命令:mv t5 t3

需求:把/root/t5 目录 移动到 /root/t3目录中

                不询问,直接覆盖

位置:/root

已知:/root/t3目录中 已经有一个t5目录了

命令:mv -f t5 t3

补充:在Linux中重命名的命令也是mv,语法和移动语法一样。

文件/目录更名操作:

需求:把/root/Demo1.java  改名为 hehe.java

位置:/root

命令:mv Demo1.java hehe.java

 3.rm指令

指令:rm (remove,移除、删除)

作用:移除/删除文档

语法:#rm 选项 需要移除的文档路径

选项:

        -f:force,强制删除,不提示是否删除

        -r:表示递归

案例:删除一个文件

image

在删除的时候如果不带选项,会提示是否删除,如果需要确认则输入“y/yes”,否则输入“n/no”按下回车。

注意:如果在删除的时候不想频繁的确认,则可以在指令中添加选项“-f”,表示force(强制)

image

案例:删除一个文件夹

image

注意:删除一个目录的时候需要做递归删除,并且一般也不需要进行删除确认询问,所以移除目录的时候一般需要使用-rf选项。

案例:删除多个文档

image

案例:要删除一个目录下有公共特性的文档,例如都以Linux开头

image

其中*称之为通配符,意思表示任意的字符,Linux*,则表示只要文件以Linux开头,后续字符则不管

注意:

        rm -rf *     删除当前目录下所有内容

        rm –rf /*    删除Linux系统根目录下所有内容

 4.find指令

作用:用于查找文件(其参数有55个之多)

语法:#find 路径范围 选项 选项的值

选项:

        -name:按照文档名称进行搜索(支持模糊搜索)

        -type:按照文档的类型进行搜索

                文档类型:“-”表示文件(在使用find的时候需要用f来替换),“d”表示文件夹

案例:使用find来搜索httpd.conf

#find / -name httpd.conf

image

案例:搜索etc目录下所有的conf后缀文件

#find /etc -name *.conf

image

*表示0~多个任意字符

需求:查找/root目录下 所有以ins开头的文件或者目录

位置:/root

命令:find /root -name ‘ins*’

案例:使用find来搜索/etc/sane.d/目录下所有的文件

#find /etc/sane.d/ -type f

image

案例:使用find来搜索/etc/目录下所有的文件夹

#find /etc -type d

image

 5.locate指令

Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。

一般情况我们只需要输入 locate your_file_name 即可查找指定文件。

locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/mlocate 资料库中找。

locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:

updatedb

使用实例:

实例1:搜索etc目录下所有以sh开头的文件

[root@CentOS7 ~#]locate /etc/sh       
/etc/shadow
/etc/shadow-
/etc/shells
[root@centos7 ~#]locate -r "/etc/\sh "  # 正则,锚定词首
/etc/shadow
/etc/shadow-
/etc/shells
[root@centos7 ~#]

实例2:忽略大小写

[root@centos7 ~#]locate -i ~/d
/root/Desktop/root/Documents/root/Downloads
/root/d1
/root/dd
/var/lib/pcp/pmdas/root/domain.h
[root@centos7 ~#]

实例3:更新数据库

[root@centos7 ~#]locate ~/a
/root/anaconda-ks.cfg
[root@centos7 ~#]updatedb
[root@centos7 ~#]locate ~/a
/root/a.sh
/root/anaconda-ks.cfg
[root@centos7 ~#]

来自 <https://www.linuxprobe.com/locate-and-find.html>

-bash: locate: command not found

部分版本的linux系统使用locate快速查找某文件路径会报以下错误:

-bash: locate: command not found

image

其原因是没有安装mlocate这个包

安装:yum  -y install mlocate

安装完再尝试用locate定位内容,发现依然不好使,报了新的错误:

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

image

原因是安装完后没有更新库

更新库:updatedb

image

来自 <https://blog.csdn.net/huangyuhuangyu/article/details/80347250>

文档编辑命令

 1.vi介绍

Vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器,由于在Unix及Linux系统的任何版本,Vi编辑器是完全相同的,因此可以在其他任何介绍vi的地方都能进一步了解它,Vi也是Linux中最基本的文本编辑器,学会它后,我们将在Linux的世界里畅行无阻,尤其是在终端中

关于vim:

vi和vim都是Linux中的编辑器,不同的是,vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding(写代码的)。

Vim重点是光标的移动,模式切换,删除,查找,替换,复制,粘贴,撤销命令的使用

 2.Vim的打开文件的方式

(共4种,要求掌握的就前三种):

#vim 文件路径                                        作用:打开指定的文件

#vim  +数字  文件的路径                        作用:打开指定的文件,并且将光标移动到指定行

#vim  +/关键词  文件的路径                作用:打开指定的文件,并且高亮显示关键词  [root@localhost ~]# vim +/name anaconda-ks.bak.cfg

#vim 文件路径1 文件路径2 文件路径3   作用:同时打开多个文件

 3.vim三种模式(介绍)

Vim中存在三种模式(大众的认知):命令模式(一般模式)、编辑模式(插入模式)、末行模式(底行模式)

命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;

编辑模式:在该模式下可以对文件的内容进行编辑;

末行模式:可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);

vim命令

输入“vim 文件名”进入“一般模式”

按下“i”从一般模式,进入“插入模式”

按下“esc”从“插入模式”退出到“一般模式”

在“一般模式”下,输入“:wq”,退出编辑。

imageimage

 4.命令模式(一般模式)

注意:该模式是打开文件的第一个看到的模式(打开文件即可进入)

1、光标移动

①光标移动到行首

按键:shift + 6 或 ^(T字母上面的6,不要按小键盘的6)

②光标移动到行尾

按键:shift + 4 或 $(R字母的左上角的4,不是小键盘的4)

③光标移动到首行

按键:gg

④光标移动到末行

按键:G

⑤翻屏

向上翻屏:按键ctrl + b   (before)        或                 PgUp

向下翻屏:按键ctrl + f           (after)                或                PgDn

2、复制操作

①复制光标所在行

按键:yy

粘贴:在想要粘贴的地方按下p键

②以光标所在行为准(包含当前行),向下复制指定的行数

按键:数字yy

可视化复制

按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓←→方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴

3、剪切/删除

①剪切/删除光标所在行

按键:dd                        (删除之后下一行上移)

注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。

②剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行

按键:数字dd                (删除之后下一行上移)

③剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移

按键:D                                (删除之后当前行会变成空白行)

④可视化删除

按键:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块

4、撤销/恢复

撤销:输入:u (不属于命令模式)  或者   u                        (undo)

恢复:ctrl + r                        恢复(取消)之前的撤销操作

5、扩展1:光标的快速移动

①快速将光标移动到指定的行

按键:数字G    

②以当前光标为准向上/向下移动n

按键:数字↑,数字↓

③以当前光标为准向左/向右移动n字符

按键:数字←,数字→

④末行模式下的快速移动方式:移动到指定的行

按键:输入英文“:”,其后输入行数数字,按下回车

 5.末行模式

进入方式:由命令模式(一般模式)进入,按下“:”或者“/(表示查找)”即可进入

退出方式:

  1. a. 按下esc
  2. b. 连按2次esc键
  3. c. 删除末行全部输入字符

①保存操作(write)

输入:“:w”                                保存文件

输入:“:w  路径”                另存为

②退出(quit)

输入:“:q”                                退出文件

③保存并退出

输入:“:wq”                                保存并且退出

④强制 (!)

输入:“:q!”                                表示强制退出,刚才做的修改操作不做保存

⑤调用外部命令(了解)

输入:“:!外部命令”

例如:

image

当外部命令执行结束之后按下任意键回到vim编辑器打开的内容

image

⑥搜索/查找

输入:“/关键词”

例如:我想在passwd文件中搜索“sbin”关键词

image

在搜索结果中切换上/下一个结果:N/n                (next)

如果需要取消高亮,则需要输入:“:nohl”【no highlight】

⑦替换

:s/搜索的关键词/新的内容                                替换光标所在行的第一处符合条件的内容

:s/搜索的关键词/新的内容/g                        替换光标所在行的全部符合条件的内容

:%s/搜索的关键词/新的内容                        替换整个文档中每行第一个符合条件的内容

:%s/搜索的关键词/新的内容/g                        替换整个文档的符合条件的内容

%表示整个文件

g表示全局(global)

⑧显示行号(临时)

输入:“:set nu

如果想取消显示,则输入:“:set nonu”

⑨扩展2:使用vim同时打开多个文件,在末行模式下进行切换文件

查看当前已经打开的文件名称:“:files

image

在%a的位置有2种显示可能

%a:a=active,表示当前正在打开的文件;

#:表示上一个打开的文件

切换文件的方式:

  1. a. 如果需要指定切换文件的名称,则可以输入:“:open 已经打开的文件名”

image

  1. b. 可以通过其他命令来切换上一个文件/下一个文件

输入:“:bn”切换到下一个文件(back next)

输入:“:bp”切换到上一个文件(back prev)

 6.编辑模式

image

重点看前2个进入方式:i(insert)、a(after)。

退出方式:按下esc键

 7.补充功能

 1.代码着色

image

案例:首先创建简单的c语言程序

image

如何控制着色显示与否?

显示:“:syntax on”                        

syntax:语法

关闭显示:“:syntax off”

 2.vim中计算器的使用

当在编辑文件的时候突然需要使用计算器去计算一些公式,则此时需要用计算器,但是需要退出,vim自身集成了一个简易的计算器。

  1. a. 进入编辑模式
  2. b. 按下按键“ctrl + R”,然后输入“=”,此时光标会变到最后一行
  3. c. 输入需要计算的内容,按下回车

image

 3.vim的配置(重点)

Vim是一款编辑器,编辑器也是有配置文件的。

Vim配置有三种情况:

  1. a. 在文件打开的时候在末行模式下输入的配置(临时的)
  2. b. 个人配置文件(~/.vimrc,如果没有可以自行新建)
  3. c. 全局配置文件(vim自带,/etc/vimrc)

①新建好个人配置文件之后进入编辑

②在配置文件中进行配置

比如显示行号:set nu

image

配置好之后vim打开文件就会永远显示行号

问题:如果某个配置项,在个人配置文件与全局配置文件产生冲突的时候应该以谁为准?

测试步骤:在两个配置文件中针对同一个配置项设置不同的值

①先在全局的配置中设置不显示行号,在个人的配置文件中设置显示行号,观察结果

最后显示行号:说明以个人为准

②先在全局中配置显示行号,在个人中设置不显示行号,观察结果

最后的显示是不显示行号,说明以个人为准

结论:如果针对同一个配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在这一项,则以全局配置文件为准

 4.异常退出

什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:

image

解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可

#rm  -f .passwd.swp

image

 5.退出方式

回顾:之前vim中退出编辑的文件可以使用“:q”或者“:wq”。

除了上面的这个语法之外,vim还支持另外一个保存退出方法“:x”。

说明:

        ①“:x”在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;

        ②如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。

因此建议以后使用“:x”来进行对文件的保存退出。

但是:不要使用:X,不要使用:X,不要使用:X,:X表示对文件进行加密操作。

 6.加密文件:

加密方法:

命令模式输入“:X

image

回车之后输入两次加密密码:

image

最后一定使用“:wq”保存一下,加密才能生效

image

下次使用vim打开该文档需要输入密码:

image

取消加密方法:只需要再次使用“:X”,然后设置密码为空即可

压缩解压指令

 1.tar

Linux压缩,解压命令。

-c建立一个压缩文件的参数指令(create)--压缩

-x解开一个压缩文件的参数指令(extract)--解压

-z是否需要用gzip压缩

-v压缩的过程中显示文件(verbose)

-f使用档名,在f之后要立即接档名(file)

Linux压缩包: *.tar     打包,大小不会进行压缩

                       *.tar.gz   打包并压缩文件大小

压缩:(参数顺序不能变)

        tar -zcvf 压缩包名字.tar.gz 需要压缩的内容

例如:tar -zcvf hehe.tar.gz *   将当前目录下所有内容进行打包压缩,文件名hehe.tar.gz

解压:(参数顺序不变)

        tar -zxvf 需要解压的压缩包名称   解压到当前目录

        tar -zxvf 需要解压的压缩包名称 -C 指定压缩路径    解压到指定目录中

需求:需要把/root/t5/hehe.tar.gz  压缩包 解压到 指定目录中。指定目录/root/t5/t5

位置:/root/t5

命令:tar -zxvf hehe.tar.gz -C /root/t5/t5

tar -zxvf hehe.tar.gz -C t5

2.uzip

1、把文件解压到当前目录下

unzip test.zip 

2、如果要把文件解压到指定的目录下,需要用到-d参数。

unzip -d /temp test.zip 

3、解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数

unzip -n test.zip
unzip -n -d /temp test.zip 

4、只看一下zip压缩包中包含哪些文件,不进行解压缩

unzip -l test.zip 

5、查看显示的文件列表还包含压缩比率

unzip -v test.zip 

6、检查zip文件是否损坏

unzip -t test.zip 

7、将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件

unzip -o test.zip -d /tmp/ 

tarunzip的核心区别

特性 tar unzip
功能定位 主要用于打包(可结合压缩算法实现压缩) 专门用于解压.zip 格式的文件
支持格式 自身生成tar包,结合压缩算法后支持tar.gztar.bz2tar.xz 仅支持.zip格式
典型命令 打包:tar -cvf 包名.tar 目录/文件
 
压缩 + 打包:tar -zcvf 包名.tar.gz 目录/文件(结合 gzip)
解压:unzip 压缩包.zip
使用场景 Linux 系统内多文件 / 目录的打包压缩(如系统备份、软件源码打包) 解压从 Windows 等平台传来的.zip 文件,或处理通用 zip 格式压缩包

其他常见压缩 / 解压命令

  1. gzip/gunzip
    • 功能:专注于单文件压缩 / 解压(压缩后文件后缀为.gz)。
    • 特点:压缩速度快,常与tar配合(即tar.gz格式)。
    • 命令:gzip 文件名(压缩)、gunzip 文件名.gz(解压)。
  2. bzip2/bunzip2
    • 功能:单文件压缩 / 解压,压缩率比gzip更高(后缀.bz2)。
    • 特点:压缩速度稍慢,与tar配合生成tar.bz2格式。
    • 命令:bzip2 文件名(压缩)、bunzip2 文件名.bz2(解压)。
  3. xz/unxz
    • 功能:单文件压缩 / 解压,压缩率极高(后缀.xz)。
    • 特点:压缩速度慢,适合对压缩率要求苛刻的场景,与tar配合生成tar.xz格式。
    • 命令:xz 文件名(压缩)、unxz 文件名.xz(解压)。
  4. zip
    • 功能:创建.zip格式的压缩包(与unzip配套)。
    • 特点:跨平台兼容性好(Windows、Linux 通用)。
    • 命令:zip 压缩包.zip 目录/文件(创建压缩包)。
  5. 7z(需安装p7zip工具)
    • 功能:支持7zziptar等多种格式的压缩 / 解压,压缩率极高
    • 特点:功能强大,支持加密、分卷压缩等高级特性。
    • 命令:7z a 压缩包.7z 目录/文件(创建压缩包)、7z x 压缩包.7z(解压)。

“最常用且功能最强大” 的工具选择

  • 最常用tar系列(结合gzip/bzip2/xz)是 Linux 系统中最通用的打包压缩工具,几乎所有 Linux 发行版默认支持,常用于系统管理、软件分发等场景。
  • 功能最强大7zp7zip)功能最全面,支持格式多、压缩率高,还具备加密、分卷等高级功能,适合对压缩效果和灵活性要求高的场景。

如何选择压缩 / 解压工具?

  1. 跨平台兼容需求:若需在 Windows 和 Linux 之间传输文件,优先选zip/unzip
  2. Linux 内部分发 / 备份:优先用tar+gziptar.gz),兼顾通用性和压缩速度;若追求高压缩率,可选tar.bz2tar.xz
  3. 高压缩率 / 高级功能:选择7z,适合压缩大文件、敏感数据(需加密)等场景。
  4. 单文件快速压缩gzip足够,简单高效。
通过以上分析,可根据 “使用场景、兼容性、压缩率需求” 来选择最适合的 Linux 压缩 / 解压工具。

系统命令

 1.service指令(重点)

作用:用于控制一些软件的服务启动/停止/重启

语法:#service 服务名 start/stop/restart

例如:需要启动本机安装的Apache(网站服务器软件),其服务名httpd

#service httpd start

image

通过ps命令来检查httpd服务是否启动:

image

2.ps (查看服务器的进程重点)

指令:ps

作用:主要是查看服务器的进程信息

选项含义:

-e:等价于“-A”,表示列出全部的进程

-f:显示全部的列(显示全字段)

执行结果:

列的含义:

  • UID:该进程执行的用户id;
  • PID:进程id(杀死进程的时候需要);
  • PPID:该进程的父级进程id,就是该进程是她父亲进程调用启动的,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID);
  • C:Cpu的占用率,其形式是百分数;
  • STIME:进程的启动时间;
  • TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起;
  • TIME:进程的执行时间;
  • CMD:该进程的名称或者对应的路径;

案例:(100%使用的命令)在ps的结果中过滤出想要查看的进程状态

#ps -ef|grep “进程名称

例如查看火狐浏览器的进程:

 3.kill指令(重点)

作用:表示杀死进程                (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)

语法:#kill  进程PID                (语法需要配合ps一起使用)

案例:需要kill掉Apache的进程

image

kill -9

强制杀死某个进程:kill -9 pid号

默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。

执行完该指令后,操作系统会发送一个 SIGTERM 信号给对应的程序。当程序接收到该信号后,可能会发生以下几种情况的一种:
当前程序立刻停止;
程序释放相应资源,然后再停止;
程序可能仍然继续运行。
大部分程序会先释放自己的资源,然后再停止。但是也有程序可以在接受到信号量后,继续做其他一些事情,并且这些事情是可以配置的。如果程序正在等待IO,可能就不会立马做出响应。也就是说,15) SIGTERM 是可能被阻塞、被忽略的。


kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。
TERM(或数字9)表示“无条件终止”;
因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理。

如果 15) SIGTERM 可以不进行响应?那 9) SIGKILL就是必杀信号,多半 ROOT 会直接使用这个命令,但并不推荐这么做。
小结:在使用 kill -9 前,应该先使用 kill -15,给目标进程一个清理善后工作的机会。如果没有,可能会留下一些不完整的文件或状态,从而影响服务的再次启动

killall

与kill命令不同的是,killall 命令可以根据进程名称来杀死进程。kill 命令 则先需要找到进程的id。

语法:#killall 进程名称

image

killall 也和ps或pgrep 结合使用,比较方便。如下:

1 [root@-linux-byx ~]# pgrep -l magic_Linux
2 13020 magic_Linux01
3 22761 magic_Linux02
4 25279 magic_Linux03
5 27694 magic_Linux04

killall 命令实例:  用killall 杀死 进程 magic_Linux02

[root@-linux-byx ~]# killall magic_Linux02

 4.hostname指令

作用:操作服务器的主机名读取、设置)

语法1:#hostname                        含义:表示输出完整的主机名

语法2:#hostname  -f                        含义:表示输出当前主机名中的FQDN(全限定域名

image

 hostname -i         #查询ip

 5.id指令

作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id),该指令如果不指定用户则默认当前用户。

语法1:#id                默认显示当前执行该命令的用户的基本信息

语法2:#id  用户名                显示指定用户的基本信息

image

验证上述信息是否正确?

验证用户信息:通过文件/etc/passwd

验证用户组信息:通过文件/etc/group

image

 6.whoami指令

作用:“我是谁?”显示当前登录的用户名,一般用于shell脚本,用于获取当前操作的用户名方便记录日志

语法:#whoami

image

 7.ifconfig指令(重点)

作用:用于操作网卡相关的指令。

简单语法:#ifconfig                (获取网卡信息)

image

eth0:表示Linux中的一个网卡,eth0是其名称。

lo:(loop,本地回还网卡,其ip地址一般都是127.0.0.1)也是一个网卡名称。

image

注意:inet addr就是网卡的ip地址

 8.reboot指令

作用:重新启动计算机                

语法1:#reboot                重启

语法2:#reboot  -w   模拟重启,但是不重启(只写关机与开机的日志信息)

 9.shutdown指令

作用:关机                        (慎用)

语法1:#shutdown -h now        “关机提示”  或者  #shutdown  -h 15:25  “关机提示

案例:设置Linux系统关机时间在12:00

image

如果想要取消关机计划的话,则可以按照以下方式去尝试:

①针对于centos7.x之前的版本:ctrl+c

②针对于centos7.x(包含)之后的版本:#shutdown  -c

除了shutdown关机以外,还有以下几个关机命令:

#init 0

#halt

#poweroff

 10.uptime指令

作用:输出计算机的持续在线时间(计算机从开机到现在运行的时间

语法:#uptime

image

 11.uname指令

作用:获取计算机操作系统相关信息

语法1:#uname                        获取操作系统的类型

语法2:#uname  -a                all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)

image

 12.netstat -tnlp指令

作用:查看网络连接状态

语法:#netstat -tnlp

image

选项说明:

        -t:表示只列出tcp协议的连接;

        -n:表示将地址从字母组合转化成ip地址,将协议转化成端口号来显示;

        -l:表示过滤出“state(状态)”列中其值为LISTEN(监听)的连接;

        -p:表示显示发起连接的进程pid和进程名称;

 13.man指令

作用:manual,手册(包含了Linux中全部命令手册,英文)

语法:#man 命令                        (退出按下q键)

案例:通过man命令查询cp指令的用法

#man cp

14.ping ip地址(测试和目标的连通性)

测试和目标的连通性:

会持续不断一直测试,直到ctrl+c

grep和管道

管道符:|

作用:可以链接多个Linux命令。管道一般可以用于“过滤”,“特殊”,“扩展处理”。

语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用

image

命令1 | 命令2 | 命令3……

需求:查询当前目录中,所有带ins关键字的行数据

位置:/root

思考:查询当前目录内容  ll

          查询字符串,返回字符串所在行  grep

命令:ll | grep ins

①过滤案例(100%使用):需要通过管道查询出根目录下包含“y”字母的文档名称。

#ls / | grep y

针对上面这个命令说明:

①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入;注意,“/”仅仅表示根目录的路径而已

②grep指令:主要用于过滤

grep 正则表达式。    字符串搜索工作

格式:grep -i 需要搜索的字符串 搜索的文件

-i 忽略大小写查找数据

符合规则,就会返回符合规则的行。

③扩展处理:请使用学过的命令,来统计某个目录下的文档的总个数?

答:#ls / | wc -l

 

特殊用法案例:通过管道的操作方法来实现less的等价效果(了解)

之前通过less查看一个文件,可以#less 路径

现在通过管道还可以这么:#cat 路径|less

内存磁盘CPU

 1、df指令

作用:查看磁盘的空间

语法:#df -h                -h表示以可读性较高的形式展示大小

image

 2、free指令

作用:查看内存使用情况

语法:#free -m   -m表示以mb为单位查看

image

 image

剩余的真实可以用的内存为1665mb。

Swap:用于临时内存,当系统真实内存不够用的时候可以临时使用磁盘空间来充当内存。

 3、top指令(重点)

作用:查看服务器的进程占的资源(100%使用)

语法:

        进入命令:#top                        (动态显示)

        退出命令:按下q键

输出的结果:

image

表头含义:

PID:进程id;

USER:该进程对应的用户;

PR:优先级;

VIRT:虚拟内存;

RES:常驻内存;

SHR:共享内存;

        计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)

S:表示进程的状态status(sleeping,其中S表示睡眠,R表示运行);

%CPU:表示CPU的占用百分比;

%MEM:表示内存的占用百分比;

TIME+:执行的时间;

COMMAND:进程的名称或者路径;

image

在运行top的时候,可以按下方便的快捷键:

M:表示将结果按照内存(MEM)从高到低进行降序排列;

P:表示将结果按照CPU使用率从高到低进行降序排列;

1:当服务器拥有多个cpu的时候可以使用“1”快捷键来切换是否展示显示各个cpu的详细信息;例如我的虚拟机是双核的:

image

 image

这一点类似window系统:

image

image

补充:

image

  image

 其他命令

 1.输出重定向

一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。

>:覆盖输出,会覆盖掉原先的文件内容

>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加

语法:#正常执行的指令 > / >> 文件的路径

注意:文件可以不存在,不存在则新建

案例:使用覆盖重定向,保存ls -la 的执行结果,保存到当前目录下的ls.txt

image

案例:使用追加重定向,保存ls -la的执行结果到ls.txt中

image

> 重定向输出到某个位置,替换原有文件的所有内容。

>> 重定向追加到某个位置,在原有文件的末尾添加内容。

2> 重定向错误输出。

2>> 重定向错误追加输出到文件末尾。

&> 混合输出错误的和正确的都输出。

< 重定向输入某个位置文件。

  • 输入重定向(如 <):是将命令的输入来源(标准输入 stdin) 从键盘改为文件。

  简单来说,cmd < file 的作用是:让 cmd 命令从 file 中读取 “要处理的内容”,而不是从键盘手动输入。这在批量处理、脚本自动化中很常用,比如让统计命令、分析命令直接从文件读取数据进行处理。

 2.date指令(重点)

作用:表示操作时间日期(读取、设置)

语法1:#date                        输出的形式:2018年 3月 24日 星期六 15:54:28 CST(CST意思是本地时间)

语法2:#date  +%F        (等价于#date  “+%Y-%m-%d”         输出形式:2018-03-24

语法3:#date  “+%F %T”    (等价操作#date  “+%Y-%m-%d %H:%M:%S”)引号表示让“年月日与时分秒”成为一个不可分割的整体

输出的形式:2018-03-24 16:01:00

语法4:获取之前或者之后的某个时间(备份)

#date  -d  “-1 day”  “+%Y-%m-%d %H:%M:%S”

语法5:修改服务器时间:

[root@hadoop5 ~]# date -s "2020-03-19 16:58:15" 2020年 03月 19日 星期四 16:58:15 CST

设置系统时间的命令2: #date –set(月/日/年 时:分:秒)

例:#date –set “10/11/10 10:15”

上一行指令如果无效就是用:#date –s“10/11/10 10:15”

符号的可选值:+(之后) 或者 - (之前)

单位的可选值:day(天)、month(月份)、year(年)

%F:表示完整的年月日

%T:表示完整的时分秒

%Y:表示四位年份

%m:表示两位月份(带前导0)

%d:表示日期(带前导0)

%H:表示小时(带前导0)

%M:表示分钟(带前导0)

%S:表示秒数(带前导0)

 3.cal指令

作用:用来操作日历的

语法1:#cal          等价于 #cal  -1                直接输出当前月份的日历

语法2:#cal  -3                        表示输出上一个月+本月+下个月的日历

语法3:#cal  -y 年份                  表示输出某一个年份的日历

 4.clear/ctrl + L指令

作用:清除终端中已经存在的命令和结果(信息)。

语法:clear                或者快捷键:ctrl + L

需要注意的是,clear是真的清除之前的信息,ctrl + L命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息。

 5.快捷方式(链接文件)

配置文件的目录层次很深,此时可以在浅的目录中创建一个快捷方式(软连接),方便以后去查找

#ln -s 原始文件的路径(绝对路径全路径) 快捷方式的路径

image

 例1:

sudo ln -s /luzhanshi/redis-6.0.6/src/redis-server /usr/bin/

上述命令的效果:我们将redis-server命令的“快捷方式”创建为/usr/bin/redis-server

另外,由于usr/bin下面的指令都是可以在任何目录下执行的,所以我们就可以全局执行Redis的启动命令了

例2:

[root@localhost network-scripts]# ln -s $(pwd)/ifcfg-ens33   /luzhanshi/

[root@localhost luzhanshi]# ll

lrwxrwxrwx. 1 root root     42 5月  21 16:40 ifcfg-ens33 -> /etc/sysconfig/network-scripts/ifcfg-ens33

效果:

通过ls -l可以列出如下的效果:

image

其中,文件类型位置的“l”表示其类型为link(连接类型),后面的“->”指向的是原始文件路径。

#ln -s source.txt softsource.txt

如果这个时候,我们删除了 source.txt 文件,则软链接 softsource.txt 就会变成红色字体。这表示警告,说明这是一个有问题的文件,无法找到它所标识的目标文件 source.txt 啦。

 6.Linux awk 命令

详细学习参考:https://www.runoob.com/linux/linux-comm-awk.html

来自 <https://www.runoob.com/linux/linux-comm-awk.html>

给你举个例子,echo "aa bb cc" | awk -F '{print $1}' 结果就是aa,意思是把字符串按空格分割,取第一个,自己做个测试就明白了!

awk是用来提取列的主要工具;

{print $1}就是将某一行(一条记录)中以空格为分割符的第一个字段打印出来

来自 <https://www.cnblogs.com/senior-engineer/p/6203621.html>

练习一下

1、如何通过命令行重启linux操作系统?        #reboot

2、如何在命令行中快速删除光标前/后的内容?   前:ctrl + u   后:ctrl + k

3、如何删除/tmp下所有A开头的文件?                #rm -f /tmp/A*

4、系统重要文件需要备份,如何把/etc/passwd备份到/tmp目录下?

        #cp /etc/passwd /tmp/

5、如何查看系统最后创建的3个用户?

        #tail -3 /etc/passwd

6、什么命令可以统计当前系统中一共有多少账户?

        #wc -l /etc/passwd        #cat /etc/passwd|wc -l

7、如何创建/tmp/test.conf文件?

        #touch /tmp/test.conf

8、如何通过vim编辑打开/tmp/test.conf?

        #vim /tmp/test.conf

9、如何查看/etc/passwd的头3行和尾3行?

        #head -3 /etc/passwd

        #tail -3 /etc/passwd

10、如何一次性创建目录/text/1/2/3/4?

        #mkdir -p /text/1/2/3/4

11、如何最快的返回到当前账户的家目录?

        #cd ~                                #cd

12、如何查看/etc所占的磁盘空间?

        #du -sh /etc

13、如何删除/tmp下所有的文件?

        #rm -rf /tmp/*

14、尝试启动Apache的服务,并且检查是否启动成功。

        #service httpd start

        #ps -ef|grep httpd

15、使用已学命令杀死Apache的进程。

        #killall httpd

posted @ 2025-10-26 17:20  指尖下的世界  阅读(3)  评论(0)    收藏  举报