从本节开始,我们正式进入Linux的学习,通过前面的了解,我们知道我们要以命令的形式使用操作系统(使用操作系统提供的各类命令,以获得字符反馈的形式去使用操作系统。),因此,我们是很有必要的去了解基本的操作命令,这一节,我们便系统学习Linux操作系统下的基本命令。
目录
[1.1 Linux目录结构概念](#1.1 Linux目录结构概念)
[1.2 Linux路径描述方式](#1.2 Linux路径描述方式)
[1.2.1 绝对路径和相对路径的概念](#1.2.1 绝对路径和相对路径的概念)
[1.2.2 特殊路径符](#1.2.2 特殊路径符)
[2.1 什么是Linux命令](#2.1 什么是Linux命令)
[2.2 Linux命令基础格式](#2.2 Linux命令基础格式)
[2.3 实用命令小技巧](#2.3 实用命令小技巧)
[2.3.1 查询命令用法man](#2.3.1 查询命令用法man)
[2.3.2 Tab键自动补全](#2.3.2 Tab键自动补全)
[2.3.3 复制粘贴内容](#2.3.3 复制粘贴内容)
[2.3.4 通配符*](#2.3.4 通配符*)
[3.1 pwd查看当前位置的绝对路径](#3.1 pwd查看当前位置的绝对路径)
[3.2 cd切换工作目录](#3.2 cd切换工作目录)
[3.3 ls显示目录中的文件](#3.3 ls显示目录中的文件)
[3.3.1 不使用参数和选项](#3.3.1 不使用参数和选项)
[3.3.2 ls使用选项](#3.3.2 ls使用选项)
[3.3.3 ls使用参数](#3.3.3 ls使用参数)
[3.4 touch创建普通文件](#3.4 touch创建普通文件)
[3.5 mkdir创建目录文件/文件夹](#3.5 mkdir创建目录文件/文件夹)
[3.6 rm删除文件](#3.6 rm删除文件)
[3.7 cp拷贝文件](#3.7 cp拷贝文件)
[3.8 mv剪切文件](#3.8 mv剪切文件)
[3.9 find查找文件](#3.9 find查找文件)
[3.10 which命令](#3.10 which命令)
[3.11 清空窗口命令clear](#3.11 清空窗口命令clear)
[3.12 grep命令过滤文件内容](#3.12 grep命令过滤文件内容)
[3.13 管道符 |](#3.13 管道符 |)
[3.14 wc 数量统计](#3.14 wc 数量统计)
[3.15 su](#3.15 su)
[3.16 重定向符](#3.16 重定向符)
[3.17 关机与重启](#3.17 关机与重启)
[4.1 cat命令](#4.1 cat命令)
[4.2 more分屏显示文件内容](#4.2 more分屏显示文件内容)
[4.3 less](#4.3 less)
[4.4 head](#4.4 head)
[4.5 tail](#4.5 tail)
[5.1 vi/vim编辑器介绍](#5.1 vi/vim编辑器介绍)
[5.2 vi\vim编辑器的三种工作模式](#5.2 vi\vim编辑器的三种工作模式)
[5.3 vi/vim 常用命令](#5.3 vi/vim 常用命令)
[5.3.1 控制插入模式下文本编辑中光标的位置](#5.3.1 控制插入模式下文本编辑中光标的位置)
[5.3.2 常用操作命令](#5.3.2 常用操作命令)
[5.3.3 末行模式下的操作](#5.3.3 末行模式下的操作)
[6.1 tar打包工具](#6.1 tar打包工具)
[6.1.1 tar 打包过程](#6.1.1 tar 打包过程)
[6.1.2 tar 解包过程](#6.1.2 tar 解包过程)
[6.2 gzip解压缩工具](#6.2 gzip解压缩工具)
[6.2.1 gzip 压缩的过程](#6.2.1 gzip 压缩的过程)
[6.2.2 gzip 解压的过程](#6.2.2 gzip 解压的过程)
[6.3 从压缩包一步解包拿到文件](#6.3 从压缩包一步解包拿到文件)
[7.1 ps 进程显示命令](#7.1 ps 进程显示命令)
[7.2 kill 结束进程](#7.2 kill 结束进程)
[7.2.1 前台进程结束方法](#7.2.1 前台进程结束方法)
[7.2.2 后台进程结束方法](#7.2.2 后台进程结束方法)
[7.3 强制结束进程](#7.3 强制结束进程)
[7.4 显示运行进程的任务号](#7.4 显示运行进程的任务号)
[7.5 进程的移动](#7.5 进程的移动)
[7.6 系统默认开启的进程](#7.6 系统默认开启的进程)
[8.1 系统存储用户信息的文件](#8.1 系统存储用户信息的文件)
[8.2 添加新用户](#8.2 添加新用户)
[8.3 修改用户密码](#8.3 修改用户密码)
[8.4 删除用户](#8.4 删除用户)
一、Linux的目录结构
1.1 Linux目录结构概念
Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘,而Linux的目录结构是一个树型结构,Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面。如下图所示:
注意:
Linux为多用户操作系统,为保证文件的安全性,每创建一个用户,都会在根目录下的home路径下创建一个以用户名命名的目录,这也称之为家目录,每个用户对于文件的修改,删除,移动只能在当前目录下或者其子文件下,如果想要操作家目录之外的文件,必须要切换至管理员身份,然后才可以进行操作。我们的家目录为:/home/stu 。Linux中对于文件夹的描述为目录,也就是说目录就是我们所说的文件夹。
1.2 Linux路径描述方式
1.2.1 绝对路径和相对路径的概念
我们知道:在Windows系统中,路径之间的层级关系,使用: \ 来表示,然而在Linux系统中,路径之间的层级关系,使用: /来表示。如下图所示,
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以/开头
举个栗子:如图,通过pwd得知当前所在是家目录下的mycode文件夹下:/home/stu/mycode, 这个文件夹下有三个文件夹,现在想要通过cd命令,切换工作目录到day02文件夹中去。那么,cd命令的参数(Linux路径)如何写呢?下面两种写法,都可以正确的切换目录到指定的day02文件夹下。
- cd /home/stu/mycode/day02 绝对路径写法
- cd day02 相对路径写法(没指定路径,默认就是当前目录下)
1.2.2 特殊路径符
为更加灵活方便的支持路径的切换,在Linux中存在一些特殊的路径符,我们需要知道,这样方便我们后续切换路径。主要有四个:
特殊路径符:
- . 表示当前目录 ,比如 cd ./Desktop 表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致。
- .. 表示上一级目录 ,比如:cd .. 即可切换到上一级目录。
- ~ 表示HOME目录 ,比如:cd ~ 在任何位置输入这个命令都能直接回到家目录。
- - 表示返回最近访问目录 **,**比如:cd -
二、Linux命令入门
在正式进入命令学习之前,我们先理解一下什么是命令,明白命令的基础格式,对于后续十分重要。
2.1 什么是Linux命令
我们知道,windows系统是以图形界面操作的,非常形象易用,而Linux则是以命令字符的该来进行操作的,相对window来讲并不直观,具有一定的门槛。什么是命令?命令是对系统进行管理的指令,就像在windows上你要创建一个文件,你需要用鼠标或键盘点击创建,而在linux上你需要输入命令来创建,达到的效果是一样的。你想要删除文件、编辑文本、重启系统...等等操作都要通过命令来执行,所以说,命令是Linux系统管理的重要方式,要使用Linux系统必须要掌握Linux命令。命令也可以理解为:二进制的可执行文件/程序,Linux的命令都在:/bin路径下存放。
2.2 Linux命令基础格式
无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式:
命令 【可选项】【可选参数】
- 命令: 命令本身
- 可选项:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
- 参数:[可选,非必填]命令的参数,多数用于命令的指向目标等
- 温馨提示**:**选项和参数的具体定义可通过man命令查询,后续介绍,掌握基本的命令,遇到不会的可以通过man命令查询。(后续介绍)
2.3 实用命令小技巧
在本节中,我将向您演示一些专业的Linux命令技巧,这些技巧将使您节省大量时间,在某些情况下还可以避免很多麻烦,而且它也将帮助您提高工作效率。
2.3.1 查询命令用法man
Linux系统中有大量的命令,而且每个命令又有很多的参数和用法,因此不可能记住每一条命令的每一个参数和用法。因此,需要一个查询工具,类似字典或说明书的作用。帮助手册,用来查看命令、系统调用,库函数等帮助信息,示例如下:
当一个命令有多种形式时,可以加入参数修饰,1 代表查看命令 2 代表系统调用 (内核中的函数)
3 代表库函数。
注:在此窗口中,按回车键Enter逐行往下滚,按空格键翻页,按q键退出。
由上可见,查询到的说明是非常详细的,每个参数都会详细说明。以后在使用中忘记了哪个命令的用法,可通过man命令来查询。
2.3.2 Tab键自动补全
Tab键俗称制表符,位于键盘最左侧大小写锁定键CapLock之上,波浪线键之下。制表位表示四个空格,用来分隔字符。在命令行操作中可以用来自动补齐命令,选项参数(最新Redhat7支持部分参数补齐),以及路径。当一个命令或路径较长时,可输入前面几个字符然后按[Tab]键,有以下情况:
1.由前面的几个字符能唯一确定一个命令或路径时,它便会自动帮你补全;
2.由前面几个字符不能唯一确定一个命令或路径时,再按一次[Tab] 键,它会列出所有可能的命令或路径;
可见,Tab键不仅能自动补全,还能帮你列出可能的情况,是十分好用的一个小技巧。
2.3.3 复制粘贴内容
一般正常的使用:用鼠标选中想要复制的内容,然后点击右键选择"复制(Copy)"来复制内容,在要粘贴的地方也是点击右键,然后右键选择"粘贴(Paste)"。
在Linux中,用鼠标选中某段内容时,默认就已复制了,然后到要粘贴的地方,向下按一下(点击)鼠标的滚轮,即可粘贴。
2.3.4 通配符*
在Linux中,通配符*表示任意、不等长度的字符,与命令结合使用十分方便,如下:
- rm -r * :代表一次性删除当前目录下所有文件(包含普通文件、目录文件...)
- rm -rf *:代表一次性删除当前目录下所有文件(包含普通文件、目录文件...),并且即使有问题,也不会有提示信息,直接删除
三、基础命令
3.1 pwd查看当前位置的绝对路径
我们可以通过pwd命令,来查看当前所在位置的绝对路径。如下图所示:
pwd命令来自:Print Work Directory,pwd命令,无选项,无参数,直接输入pwd即可。
3.2 cd切换工作目录
当Linux终端(命令行)打开的时候,会默认以用户的home目录作为当前的工作目录.
cd命令来自英文:Change Directory, 可以通过cd命令,更改当前所在的工作目录,cd 后的参数表示要切换到的位置,可以使用绝对路径或相对路径。
特殊目录切换:
- cd .. 表示切换到上一级目录。
- cd ~ 表示 在任何位置输入这个命令都能直接回到家目录。
- cd - 表示返回最近访问目录
3.3 ls显示目录中的文件
ls命令的作用是列出当前目录下的内容,语法细节如下:
- -a -l -h 是可选的选项
- •Linux路径是此命令可选的参数
3.3.1 不使用参数和选项
当不使用选项和参数,直接使用ls命令本体,表示:以平铺形式,列出当前工作目录下的内容
Linux系统的命令行终端,在启动的时候,默认会加载:
• 当前登录用户的home 目录作为当前工作目录,所以 ls 命令列出的是home 目录的内容
•home 目录:每个 Linux 操作用户在 Linux 系统的个人账户目录,路径在: /home/ 用户名
3.3.2 ls使用选项
ls -a 会列出当前目录下的全部文件(包含隐藏的文件/文件夹)a即all
可以看到,ls -a 对比 ls 列出的内容更多了。
• 图中以 . 开头的,表示是 Linux 系统的隐藏文件 / 文件夹(只要以 . 开头,就能自动隐藏)
• 只有通过 -a 选项,才能看到这些隐藏的文件 / 文件夹
ls -l 表示以列表(竖向排列)的形式展示内容,并展示更多信息.
语法中的选项是可以组合使用的,比如学习的-a和-l可以组合应用。
写法:
• ls -l -a
• ls -la
• ls -al上述三种写法,都是一样的,表示同时应用-l和-a的功能
3.3.3 ls使用参数
当使用参数,ls命令的参数表示:指定一个Linux路径,列出指定路径的内容。当然选项和参数可以同时使用。如下所示:
3.4 touch创建普通文件
可以通过touch命令创建普通文件。
3.5 mkdir创建目录文件/文件夹
通过mkdir命令可以创建新的目录(文件夹)mkdir来自英文:Make Directory
注意:绿色显示为可执行程序,在Linux中可执行程序没有后缀,比如window中的test.exe可执行程序,在Linux中就是test, 但是对于gcc编译器必须要指定后缀区分不同的文件。蓝色显示为文件夹。
3.6 rm删除文件
rm命令可用于删除普通文件、目录/文件夹,rm命令来自英文单词:remove
• -r 选项用于 删除目录/文件夹
• -f 表示 force , 强制删除(不会弹出提示确认信息)
普通用户删除内容不会弹出提示,只有root 管理员用户删除内容会有提示,所以一般普通用户用不到-f选项
• 参数 1 、参数 2 、 ...... 、参数 N 表示要删除的文件或文件夹路径,按照空格隔开
需要注意:
rm是一个危险的命令,特别是在处于root(超级管理员)用户的时候。请谨慎使用。
如下命令,请千万千万不要在root管理员用户下执行:rm -rf / 效果等同于在Windows上执行C盘格式化。
PS:你心里痒痒就在虚拟机试试吧,大不了恢复快照或者重新装个虚拟机哦
3.7 cp拷贝文件
拷贝文件copy,拷贝目录文件/文件夹时,需要加上"-r",示例如下:
3.8 mv剪切文件
mv命令是move的缩写,可以用来移动文件或者将文件改名,是Linux系统下常用的命 令,经常用来备份文件或者目录。实例如下:
3.9 find查找文件
在目录树中搜索指定的文件,也可以指定开始的搜索位置。
3.10 which命令
我们在前面学习的Linux命令,其实它们的本体就是一个个的二进制可执行程序。
和Windows系统中的.exe文件,是一个意思。我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里。
3.11 清空窗口命令clear
该命令可将窗口进行清空
3.12 grep命令过滤文件内容
在文件中过滤出包含指定字符串的行 ,过滤出的结果可以作为管道符的输入
3.13 管道符 |
学习了grep命令后,我们在来学习一个新的特殊符号,管道符:|
管道符的含义是:将管道符左边命令的结果,作为右边命令的输入
3.14 wc 数量统计
统计文件中单词个数(-w)、字符个数(-c)、行数(-l) ,示例如下:
3.15 su
su username 切换用户,没有指定用户名,则默认切换到管理员用户,示例如下:
3.16 重定向符
重定向符:>和>>
- > 将左侧命令的结果,覆盖写入到符号右侧指定的文件中
- >> 将左侧命令的结果,追加写入到符号右侧指定的文件中
3.17 关机与重启
首先,应切换为管理员身份:sudo su ,输入密码(不回显)
执行关机指令:shutdown -h now (立即关机)
shutdown -h 10 (10分钟后关机)
关机任务取消:shutdown -c
重启指令:shutdown -r now (立即重启)
shutdown -h 10 (10分钟后重启)
四、文件查看命令
4.1 cat命令
用法1:查看文件内容,会在中端平铺展开
用法2:合并两个文件为一个文件, 本来是默认打印在屏幕上 >重定向打印在在文件里
用法3:往文件中写入数据, Ctrl+d 是结束输入
4.2 more分屏显示文件内容
more命令同样可以查看文件内容,同cat不同的是:
• cat 是直接将内容全部显示出来
•more支持翻页,如果文件内容过多,可以一页页的展示, 在查看的过程中,通过空格翻页。
4.3 less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。 less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用 来查看一个文件的内容! 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
4.4 head
显示文件前 n 行的内容,默认head命令打印其相应文件的开头10行。如下:
4.5 tail
显示文件后 n 行的内容,默认tail命令打印其相应文件的末尾10行示例如下:
五、文本编辑命令
5.1 vi/vim编辑器介绍
vi是visual interface的简称, 是Linux中最经典的文本编辑器,同图形化界面中的 文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。Linux系统都会自带vi编辑器,但是vi编辑器太难用了!所以建议大家安装vim编辑器,安装命令: apt install vim。 vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
5.2 vi**\vim****编辑器的三种工作模式**
1、命令模式(Command mode)
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。
此模式下,不能自由进行文本编辑。
2、插入模式(Insert mode)
也就是所谓的编辑模式、输入模式。此模式下,可以对文件内容进行自由编辑。
3、末行模式(Last line mode)
也就是底线命令模式,以:开始,通常用于文件的保存、退出。
vi xxx 使用vi编辑器打开文件,此文件可以不存在,它会自己创建。 用vi打开一个vi后,自动进入到命令模式。命令模式中无法编辑文件,也就是无法敲代码,要编辑文件就要进入输入模式,按下"i、I、a、A、o、O、"等就会进入到编辑模式。一般按下"i"进入输入模式。按下ESC键可退出输入模式。在我们编辑完代码需要保存退出时,便要进入末行模式,此时按 shift+:即可, 然后输入相应的指令退出编辑器。
5.3 vi/vim 常用命令
5.3.1 控制插入模式下文本编辑中光标的位置
|-------|---------------------------|
| a | 进入到当前光标后开始编辑 |
| A | 进入到当前光标所在行的行末开始编辑 |
| i | 进入当前光标位置前一个位置开始编辑(常用) |
| I | 进入当前光标所在行的行头开始编辑 |
| o | 进入当前光标下一行开始编辑 |
| O | 进入当前光标上一行开始编辑 |
上述命令须在命令模式下执行,当然,我们不对上面的命令记忆也可以操作光标的位置,按下键盘上的上下左右键来控制光标位置即可!
5.3.2 常用操作命令
|-------------|-----------------------------------|
| nyy | 复制光标所在向下n行,比如10yy就是复制光标下面的10行 |
| yy | 复制光标所在行 |
| p | 与nyy结合使用,从光标下面一行开始复制n行 |
| ndd | 删除光标所在行及其下n行 |
| dd | 删除光标所在行 |
| u | 撤销,恢复上一步 |
| ctrl +r | 反撤销 |
| gg | 光标移动到整个文本的第一行 |
| G | 光标移动到整个文本的最后一行 |
上述命令须在命令模式下执行。
5.3.3 末行模式下的操作
在输入/编辑模式下,输入: ,即可进入底线命令模式/末行模式,支持如下命令:
|---------------|----------------|
| :w | 只保存文本 |
| :q | 只退出编辑 |
| :wq | 保存并退出(常用) |
| :q! | 强制退出,不保存退出 |
| :set nu | 显示行号 |
| :set nonu | 取消行号显示 |
保存退出后,按回车键Enter即可退出文本编辑器
六、文件压缩与解压命令
Linux下常用的压缩扩展名有:.tar、.tar.bz2、.tar.gz。
tar命令工具只提供了打包和解包的功能,tar在提供打包和解包的同时使用gzip进行压缩和解压,实现类似windwos下winRAR软件的命令。
6.1 tar打包工具
将文件打包或者解包
- c 创建包文件
- f 指定目标为文件而不是设备
- v 显示详细过程
- t 显示包中的内容而不释放
- x 释放包中的内容
- z GNU 版本新加的,使得 tar 有压缩和解压的功能
6.1.1 tar 打包过程
tar cvf 包名 需要打包文件名
6.1.2 tar 解包过程
tar xvf 打包的包名
6.2 gzip解压缩工具
对刚刚打包的包进行压缩或者解压缩的工具
.gzip工具负责压缩和解压缩**.gz格式**的压缩包。
gzip xxx //压缩
gzip -d xxx.gz //解压缩
gzip对文件夹进行压缩
gzip -r xxx //对文件夹进行压缩
gzip -rd xxx.gz //对文件夹进行解压缩
gzip虽然可以对文件夹进行压缩,但是并不能提供打包的服务,只是对文件夹中的所有文件进行了单独的压缩。
6.2.1 gzip 压缩的过程
gzip 包名 如:gzip my.tar
6.2.2 gzip 解压的过程
gzip -d 压缩格式后的文件名 如:gzip -d my.tar.gz
6.3 从压缩包一步解包拿到文件
tar zxf 压缩包名 z:解压缩 x:解包 f:普通文件如:tar zxf my.tar.gz
七、进程管理命令
进程是一段正在运行的程序,我们应该如何管理进程呢?
7.1 ps 进程显示命令
- ps 显示当前终端运行的进程
- ps -f 看到的进程更详细一些 可以看到进程编号
- ps -ef 可以看到系统全部正在运行的进程
7.2 kill 结束进程
7.2.1 前台进程结束方法
当运行前台进程时,只有当当前运行的前台进程运行完,才可以执行其他的命令,它的结束很简单,用快捷键即可:Ctrl+C 这也是后面学习信号中的一个信号。
7.2.2 后台进程结束方法
与前台进程相比,后台进程不需要等当前的进程执行完毕才能执行其他命令,它无法用快捷键Ctrl+C结束后台进程,需要使用:kill +PID号就可以。
方法一:kill+ PID号
方法二:再打开另外一个终端窗口,输入:ps -ef grep "后台进程名" 展示出详细信息,查看PID号,然后再利用kill+PID号结束后台进程。
7.3 强制结束进程
当我们使用:kill+PID号无法结束进程时,可以使用:kill -9 PID 强制结束进程 ,这也是后面需要学习的一个信号。
7.4 显示运行进程的任务号
jobs显示当前终端的任务
jobs -l 显示更详细详细 pid也可以显示
7.5 进程的移动
fg %任务号 将后台运行的或挂起的进程挪到前台执行
bg %任务号 将挂起的进程唤醒到后台执行
7.6 系统默认开启的进程
我们知道进程就是一个正在运行程序,我们输入的命令其实也是可执行程序,因此,我们每输入一个命令就会产生一个进程,操作系统为了让我们输入的命令能够正常执行,会默认打开命令解释器:bash, 他也是一个进程,通过后续的学习,我们可以知道:产生一个新的进程,其实就是首先复制命令解释器进程bash, 然后再将此进程替换为我们需要打开的进程。
八、用户管理命令
8.1 系统存储用户信息的文件
8.2 添加新用户
8.3 修改用户密码
8.4 删除用户
userdel 删除用户时,首先确保该用户没有登录。userdel 默认仅删除用户,不会删除家目录及家目录中的文件,若想删除用户的同时移除家目录, 那么使用 userdel -r username。
以上就是Linux基本命令的全部内容!请务必掌握,这是后续学习的基础,欢迎大家点赞加关注评论,您的支持是我前进最大的动力!下期再见!