22-06-24 西安 linux(01) linux环境搭建、常用命令、vim编辑

本文围绕Linux系统展开,介绍了学习Linux的原因,因其稳定性高适用于服务器。阐述了系统分类,包括桌面版、服务器版等。还讲解了虚拟机软件、FinalShell等工具使用,以及文件目录、查看、搜索、软件包管理等命令,同时介绍了Vim编辑模式和常见问题解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux系统引入

1、为什么学linux?

服务器本质是一台电脑,组成:硬件+操作系统(linux)+软件

应用场景:服务器的操作系统

服务器要求可用性高,即能够给客户端提供服务,大公司,要求6个9,即一年的可用时间占比99.9999%,而linux稳定性特别高


2、linux系统的分类

1.按照市场需求分

·桌面版:类似于Windows的,有图形化界面的操作系统。不成熟
·服务器版:没有图形化界面,使用命令行进行操作的。企业里通常会使用服务器版的linux

2.按照原生程度分

·内核版: Lius领导的开发小组,维护的内核版本。(官方版)
·发行版:一些企业、社区在内核的基础上,增加一些功能、软件,然后重新发行的版本(比如安卓)redhat、centos、ubuntu


3、虚拟机软件

虚拟机软件:用来创建虚拟机,如VMWare Workstation

安装VMWare软件(12以上的),安装好以后创建虚拟机,前提是要电脑开启虚拟化支持

 · VM16:硬件要求高,Windows 10 或更高版64位
 · VM15:硬件要求中,Windows 7 或更高版64位
 · VM12:硬件要求低,Windows 7 或更高版64位
 · VM10:Windows XP 或更高版32位和64位旧版
 · 注意:VM14版本开始不支持某些旧的电脑硬件,会提示不支持或安装失败, 如遇到请退回12版本。

虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

物理机是真实存在的电脑,虚拟机的硬件从物理机分过来


4、finalShell


5、退出终端

退出终端:exit


6、linux 命令通用格式

Linux 命令的通用格式通常遵循以下结构:语法中的[] 表示可选的意思

command [-options] [parameter]

command:命令本身

-options:[可选,非必填] 命令的一些选项,可以通过选项控制命令的行为细节

parameter:[可选,非必填] 命令的参数,多数用于命令的指向目标等


文件目录命令

1、linux目录结构

linux没有盘符概念,只有一个根目录/,所有文件都在它下面

在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

linux没有盘符,只有目录结构

/root超级管理员的用户主目录
/home普通用户的主目录
/etclinux的系统配置文件
/user很多应用程序和文件都在这个目录
/opt装软件(针对解压就装好了的软件)
/user/local装软件(需要点下一步的软件)

实际项目中 etc/profile加过jdk的环境变量配置


2、pwd 

pwd 打印当前目录的绝对路径 

绝对路径:以/开头的路径,开头的/表示Liux的根目录

相对路径:开头不是/就是相对路径

相对路径是以“你当前所在路径的相对位置”来表示的。

./标示当前目录
..表示上一级路径

3、切换目录命令  

cd 目录路径(分为绝对路径和相对路径)

cd ~ 回家
cd - 从哪来的再回到哪去
cd .. 返回上级目录
cd / 返回根目录


4、列出目录中的文件

ls  列出当前目录内容,即文件名列表

ls /user 列出指定目录
ls -a 列出当前目录内容包括所有隐藏内容
ls-A  列出除. 及.. 以外的任何项目

ls -l 简写为ll 见额外列出文件的详细信息 (需求:区分哪些是文件哪些是目录)

  • - 表示这是一个普通文件
  • d 表示这是一个目录

ls -al  额外列出文件的详细信息(包括隐藏内容) ,简为ll -a
---------
ll -h  文件大小以kb方式显示(得到了1kb),mb显示文件大小
--------
ls -R /user  R是递归,把目录和子目录列出
ll -ltr 逆序列出最近修改的文件


5、创建和删除目录

mkdir ./app  ./可以省略
mkdir -p ./app2/test1/test2 创建多级目录
rmdir app,只能删除一个空目录


6、创建和删除文件

touch ./app2/test1/test2/a.txt
touch b.txt 当前目录下创建b.txt
rm b.txt 删除当前目录下的b.txt,会询问
rm -f b.txt  删除b.txt且不询问
rm -rfv  app2 递归删除app2, 不询问(f),递归(r),且列出删除的东西(v)


7、移动文件或目录

mv 要移动的文件或目录路径 目标路径      ./a.txt ./app/ 

需求:把一个文件移动到一个已有的目录

mv helloworld-0.0.1-SNAPSHOT.jar /home/syl/myapp/hello-world/

8、复制文件或目录

复制文件:cp 要复制的文件 目标路径
复制目录:cp -r 要复制的目录 目标路径
\cp -rf 强制覆盖复制 ,不再询问是否覆盖


9、重命名文件或目录

mv 文件重命名或者文件夹重命名 mv b.txt a.txt

mv -i old_folder new_folder

-i在覆盖前提示用户确认(推荐用于防止误操作)

查看文件

1、cat查看文件

语法:cat 文件路径

cat a.txt

查看小文件,一次性查出来。文件太大内容会丢失

cat 文件1 > 文件2

将文件1的内容覆盖文件2的内容

cat 文件1 >> 文件2

将在文件2的内容后面追加文件1的内容


2、more 查看大文件

more 查看大文件(一页一页看)

  • 可以使用空格键向下翻页
  • 使用回车键向下翻行
  • 使用q退出查看
  • 使用Ctrl + F向下滚动一屏
  • 使用Ctrl + B返回上一屏

3、less 查看大文件

less 查看大文件,查看时可以搜索

/application,当前位置向下搜索   n/N移动
?web,当前位置向上搜索

可以使用/字符串向下搜索字符串,使用?字符串向上搜索字符串,使用n正向重复前一个搜索(与/和?搜索有关),使用N反向重复前一个搜索


4、tail 查看变化日志文件

经常用来查看服务启动后的日志文件

 -f    实时跟踪文件的新增内容,常用于日志监控

 -n    显示文件末尾的指定行数

实时打印日志文件log.log

tail -n 5 -f log.log

结合使用

查看最后1000行并实时监听文件的更新

tail -1000f doupo.txt

用了-f 实时追踪文件,按Ctrl+C组合键就能退出追踪,回到命令行界面


5、echo 输出

echo $PATH 输出变量,$是全局


搜索查询找类

1、find查找文件或者目录

find指令将从指定目录向下递归遍历其各个子目录,将满足条件的文件显示在终端。

语法:find [搜索范围] [选项]

选项功能
-name按照指定的文件名查找文件
-type按文件类型过滤:f(文件)、d(目录)
-size按照指定的文件大小查找文件

*常用来匹配固定后缀的文件 ,搜索范围可以是绝对路径也可以是相对路径

要递归查看某个文件夹下所有的 .sh 文件 

find /path/to/folder -type f -name "*.sh"

查找某个目录名的全路径
 

find /home -type d -name "projects" 2>/dev/null


2、locate快速定位文件路径

locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件,基于索引搜索。建立索引可以极大提升查询的速度

语法  locate 搜索的文件

系统启动时把每一个目录、每一个文件的完整路径保存到索引库中。使用locate命令搜索关键词时,就使用关键词查询索引库,把匹配的路径字符串返回。

而新建的文件或目录不会被系统把路径存入索引库,那么使用locate命令就搜索不到。此时使用updatedb命令更新一下索引库就行了

locate pwd 查找和pwd相关的所有文件,全文搜索与关键字相关的文件或者目录

注意:新建文件之后使用updatedb更新索引库,然后再搜索


3、grep文本搜索

grep根据关键字匹配行(非常常用

grep:find和locate找的是文件名筛选文件,grep是根据文件内容筛选文件

语法: grep -n boot a.conf ,表示在a.conf文件中搜索关键字boot,n 参数,表示搜索结果中显示行号

v 参数 ,返回不匹配关键字的那些行(反转)


4、管道符grep

管道:Liux中的管道的作用是将 管道左边的结果交给管道右边的命令进行下一步处理!

grep管道筛选

对于管道筛选而言|前面的表示数据源(需要从数据源中筛选),| grep后面表示筛选条件

使用 grep管道筛选使用起来真香。。。 


软件包管理

1、RPM包

RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”

RPM查询命令

rpm -qa 查询所安装的所有的rpm软件包

rpm -qi <package-name> 查询软件包详细信息

演示:rpm -qa | grep firefox

 rpm包的命名格式

RPM卸载命令

rpm -e 软件包

rpm -e --nodeps 软件包

-e 卸载软件包
--nodeps 卸载软件时,不检查依赖

演示卸载firefox软件:

rpm -e firefox //卸载时不需要包全名

rpm -qi firefox //卸载完成后再次查询是否有firefox软件安装,确认卸载成功

RPM安装命令

rpm -ivh 包全名    //安装时必须包全名


2、YUM仓库

yum也是一个软件,因此在使用之前,可以先确认是否已经安装。

rpm -qa | grep yum

YUM 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。

yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装(或升级)。

yum [选项] [参数] [包名]

选项说明

-y  对所有的提问都回答"yes"

-q 不显示安装的过程

------------------------------------------------------------

参数说明(参数:要进行的操作)

install 安装rpm软件包

update 更新rpm软件包

check-update 检查是否有可用的更新rpm软件包

remove 删除指定的rpm软件包

list 显示软件包信息

clean 清理yum过期的缓存

deplist 显示yum软件包的所有依赖关系

使用yum 安装firefox

安装命令:yum -y install firefox

  1. yum list:列出所有可安裝的软件清单(列出所有的包,已安装的和可用的)

  2. yum list installed:列出所有已安装的软件包

  3. yum list available:查看所有可用的软件包

  4. yum list updates:列出所有可更新的软件包


3、打包和压缩

在Linux系统环境中,很多程序安装包都是以tar包的形式提供下载的

打包:将多个文件打包成一个文件,在此过程中不会对文件的体积进行压缩
压缩:将多个文件打包压缩成一个文件,在此过程中会对文件的体积进行压缩

demo.tar(打包)
demo.tar.gz (压缩)

注意:把多个文件放在文件夹不叫打包

压缩语法:tar -zcvf 压缩包 文件1 文件2 ...

tar -zcvf demo.tar.gz a3.txt b3.java c3.iml

- z:指定压缩算法为gzip(可选)
- c:压缩后要创建压缩文件(必须)
- v:在压缩过程中列出文件列表(可选)
- f:指定压缩包文件名称(必须)。后边跟参数值:压缩包名称


4、解包和解压

解压语法:tar -zxvf 压缩包 -C 解压位置

tar -zxvf demo.tar.gz  -C /root/app4
不写参数C:则要解压到当前文件夹里

- z: 表示使用`gzip`算法解压(可选)
- x:extract, 调用解压命令,执行解压操作(必须)
- v:在解压缩过程中列出文件列表(可选)
- f:指定要解压的文件名称(必须)。后边跟参数值:压缩包名称
- C:指定解压的位置(可以不写)
  - 如果写参数C:就需要指定解压的位置,必须是已经存在的文件夹
  - 如果不写参数C:要解压到当前文件夹里

注意:linux里基本不会出现zip文件

zip demo.zip *.txt表示将当前目录中的所有txt文件压缩到demo.zip

unzip demo.zip表示将demo.zip解压到当前目录


vim编辑-使用命令

1、三种模式转换图

vim 是之前vi编辑器的升级版本


2、一般模式下的按键操作

进入到一般模式,此时我们无法自由编辑文件,但是可以进行整行的复制、粘贴、删除

yy 复制光标所在行
p 粘贴
dd 删除光标所在行(常用)

nyy/yny 复制n行(是向下复制n行,不是把一行复制n次)     np 粘贴n次

实操

 从光标所在行开始:复制2行,粘贴2次,结果如下

-----------------------------------------

ndd/dnd 从光标所在行开始向下删除n行

结果是

u 撤销
ctrl+r 反撤销
r 替换当前光标所在的字符

怎么进行光标的快速移动

gg 光标移动到整片文档第一行
G  光标移动到整片文档最后一行
数字+G  光标移动到指定行

b/e 跳到上一个词头/跳到下一个词的词尾。也可以左右一个字符一个字符跳

shift+6(^)光标移动到行头

shift+4($)光标移动到行尾


3、一般模式下的搜索

:set nu显示行号

/w  

搜索“w”          按n/N  正向重复/反向重复
?w反向搜索“w”
:%s/hello/你好/g全文替换  不加/g,则只替换每行第一个


4、进入编辑模式

因为一般模式下我们无法自由编辑内容,所以需要进入编辑模式来进行文件的编辑

关于怎么从一般模式进入到编辑模式?
i:进入到编辑模式后,光标位置不动 (常用)
I:移动到行的开头,开始输入
a: 光标向后移动一格,然后开始输入
A: 光标移动到行的末尾,然后开始输入
o: 进入编辑模式后光标到下一行(o是other的意思)

进入编辑模式后按Esc就可退出到一般模式

编辑模式下我们无法进行查找、保存等等操作,需要进入指令模式才能完成。
而进入指令模式需要从一般模式进入,所以需要先`Esc`退回一般模式


5、进入指令模式

英文的:一般模式下输入英文的:,其实就是同时按Shift:就可以看到文档最下方出现了一个:,并且光标也出现在了:后面,就表示进入了指令模式,此时我们就可以输入指令进行一些操作

:w保存
:q退出

:wq

 保存并退出vim编辑器

q!强制退出,不保存修改

对正则表达式来说,它是以行为单位查找匹配的内容。每一行只要找到第一个匹配那么就可以判断这一行就是匹配的,没有必要继续向后查找了。如果我们需要将一行中的每一个匹配都替换,可以在指令后加/g


常见问题

1、提示存在交换文件

目的是防止多个用户同时编辑一个文件

什么是交换文件:当一个文件正在被编辑的时侯,
会生成一个临时文件,命名方式是 .原文件名.swp,是隐藏文件 

如果没有正常退出编辑,如非正常关机 ,必须删除交换文件,才能编辑。


2、屏幕被锁

在Windows环境下大家已经习惯了使用Ctrl+s保存文档,但是在Linux环境下Ctrl+s是锁屏。如果是因为Ctrl+s锁屏那么可以使用Ctrl+q解锁,然后继续操作。

3、sudo

sudo(SuperUser DO)命令在Linux系统中用于允许用户以其他用户(默认为root用户)的身份运行程序。使用sudo命令可以让用户在不知道root密码或不需要以root用户登录的情况下,执行需要root权限的命令。

sudo命令的基本语法如下:

sudo [command]

在这里,[command]是您想要使用sudo运行的命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值