Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式

说明:本文的操作是在【AlmaLinux 9.3】系统环境下操作的。

一、文件远程传输------SCP

如果我们想要从一个Linux系统中将文件或目录拷贝到另一个Linux系统下,并且在传输的过程中保证数据的安全,那么SCP(Secure Copy)就是很好的选择 ;SCP(又叫做安全复制)使用SSH传输数据,会对所有传输的数据进行加密(保护数据免受传输拦截破解),保证数据传输的安全性;SCP的默认端口是TCP的22端口(也是SSH默认的端口)。

|--------|----------------------------------------------------------------------------|----------------------------------|
| 序号 | SCP命令语法及其常用参数 | 说明 |
| SCP命令语法:scp [-Ppqrl] [需传输的文件或目录] 【需传输到的路径】 |||
| 1 | -P | 大写的P(Port),表示指定数据传输用到的端口号 |
| 2 | -p | 小写的p,表示保留原文件、目录的修改时间、访问时间和访问权限信息 |
| 3 | -q | 不显示传输的进度条 |
| 4 | -r | 递归复制整个目录 |
| 5 | -l | 不是i是l,表示限制宽带 |
| bash #1-查看本机ip信息命令1 ifconfig #2-1-查看本机ip信息命令2 ip a |||
[SCP命令语法及其常用参数说明]

bash 复制代码
#《1》将本地文件传输到远端Linux系统指定目录下命令【注意:一般建议传输数据的时候将文件夹压缩为文件后再传输,不要直接传输目录】
#1-scp 本地文件 远端Linux用户@远端IP:远端文件夹(如:将本地的etc.tar.xz文件传输到远端Linux(192.168.1.10)的/opt目录下)
scp etc.tar.xz root@192.168.1.10:/opt

#2-scp 本地目录 远端Linux用户@远端IP:远端文件夹(如:将本地的etc目录及其内容都传输到远端Linux(192.168.1.10)的/opt目录下)
scp -rp etc root@192.168.1.10:/opt


#《2》scp 远端用户@远端IP:远端文件 本地目录[当前工作目录用.表示](如将远端Linux(192.168.1.10)的/root目录下的ai.mp4文件复制到本机的当前工作目录下)
scp -p root@192.168.1.10:/root/ai.mp4 .

二、文件编辑------vi

vi是Linux的标准文本编辑程序,也是Linux系统中在命令行模式下最经常使用的文本文件可视化编辑器。vi编辑器有两种工作模式【命令模式】【编辑模式】;

《1》在【命令模式】下,输入的字符被解释为vi命令,通过这些命令的组合实现了各种强大的功能(如进入编辑模式、可查找、替换内容、可移动到指定行;可不保存、保存修改的内容等)。

《2》在【编辑模式】下,输入的任何内容都被当做文件的正文内容,用于存储在该文件中;在键盘的编辑模式下按下键盘的【ESC】键可退出编辑模式切换到命令模式。

|--------|----------------------------------|--------------------------------------------------------------------------------------|
| 序号 | 命令 | 说明 |
| 1 | i | 在光标前输入内容(按下该命令可进入文本编辑模式) |
| 2 | a | 在光标后输入内容(按下该命令可进入文本编辑模式) |
| 3 | o | 在当前行之下新开一行(按下该命令可进入文本编辑模式) |
| 4 | O | 在当前行之上新开一行(按下该命令可进入文本编辑模式) |
| 5 | dd | 删除光标所在行(且删除后的内容自动保存在剪贴板) |
| 6 | :set number | 给文件中的每一行都添加上行号(方便查看内容所属行和对应的操作) |
| 7 | :行号 | 光标跳转到指定行 【:5】表示光标跳转到第5行 |
| 8 | /需要搜索的内容 | 从当前光标位置开始向后搜索内容,按下键盘的【n】是向下搜索,按下键盘的【N】向上搜索; 【/docker】表示搜索文件中含有docker的内容 |
| 9 | ?需要搜索的内容 | 从当前光标位置开始向前搜索内容,按下键盘的【n】是向上搜索,按下键盘的【N】向下搜索 |
| 10 | :行号s/需替换的旧值/需替换为的新值/g | 使用新值替换指定行号的旧值内容 【:6s/Running/测试运行/g】表示将6行数据中的Running内容替换为测试运行 |
| 11 | :开始行号,结束行号s/需替换的旧值/需替换为的新值/g | 使用新值替换开始行号到结束行号的旧值内容($s表示最后一行) 【:7,19s/excute/测试执行/g】表示从7行开始到19行中包含excute的内容都替换为测试执行 |
| 12 | :%s/需替换的旧值/需替换为的新值/g | 搜索整个文件,并将所有内容使用新值替换指定行号的旧值内容 【:%s/Loading/测试加载/g】表示将整个文件中所有的Loading替换为测试加载 |
| 13 | :%s/需替换的旧值/需替换为的新值/gc | 搜索整个文件,并将所有内容使用新值替换指定行号的旧值内容,且每次替换前都确认是否替换【y】表示替换【n】表示不替换【a】表示全部替换 |
| 14 | :q | 退出不保存 |
| 15 | :q! | 强制退出不保存 |
| 16 | :wq | 保存并退出 |
| 17 | :wq! | 强制保存并退出 |
| 18 | :x! | 强制保存并退出 |
| vi编辑器的常用方法_vi 编辑文件-CSDN博客 vi 命令,Linux vi 命令详解:功能强大的纯文本编辑器 - Linux 命令搜索引擎 Linux vi命令(vi编辑器)30分钟入门教程 |||
[vi文本编辑程序的常用命令]

三、软件安装

3.1、使用RPM包管理器安装软件

RPM是【Red Hat Package Manager】简写(表示:红帽的软件包管理),最初是由红帽公司开发出来的在Linux下的软件包管理工具,由于这种软件管理方式非常方便,因此逐渐被其他Linux发行商借用;因此到现在为止RPM已经成为Linux平台相爱通用的软件包管理方式;你可以使用RPM分发、管理和更新【RHEL、Centos、Fedora、SUSE、AlmaLinux等主流Linux发行版】上运行的软件包。

【.rpm】结尾的软件包就是RPM文件【每个RPM文件中包含了已经编译好的二进制可执行文件(即:将软件源码文件进行编译后封装就成为了RPM文件)】【该软件安装方法只用了解会用即可,实际生产环境中基本不用】。

|--------|------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
| 序号 | RPM包管理方式的优点 | RPM包管理方式的缺点 |
| 1 | RPM以软件包的形式管理软件,您可以彼此独立地安装、更新或删除这些软件包,从而更轻松地维护作系统 | RPM包对操作系统环境的依赖很大: 《1》要求RPM包的安装环境必须与RPM包封装是的环境一致或相当; 《2》还需要满足安装时与系统某些软件包的依赖关系(如:安装A软件,但是A需要系统有B和C软件的支持,就必须先安装完成B和C软件后,才能够安装A软件,较为繁琐)。 |
| 2 | RPM简化了软件的分发(因为RPM软件包是独立的二进制文件,类似压缩的文件;这些软件包是为特定的操作系统和硬件架构构建的)安装时只是验证环境和解压的过程 | RPM包对操作系统环境的依赖很大: 《1》要求RPM包的安装环境必须与RPM包封装是的环境一致或相当; 《2》还需要满足安装时与系统某些软件包的依赖关系(如:安装A软件,但是A需要系统有B和C软件的支持,就必须先安装完成B和C软件后,才能够安装A软件,较为繁琐)。 |
[RPM包管理方式的优缺点]

bash 复制代码
#1-使用RPM安装软件包命令
rpm -ivh xxx.rpm

#2-使用RPM升级软件包命令
rpm -Uvh xxx.rpm

#3-使用RPM卸载软件包命令
rpm -e xxx

比如我们使用RPM安装httpd服务,就会需要多种依赖内容,安装十分繁琐(只要一个依赖内容没有安装完成就无法完成httpd服务的安装,需要手动一个个安装依赖内容),如下图所示:

3.2、使用yum/dnf在线安装软件并更换默认源

yum/dnf是Linux系统中进行软件下载、安装和升级常用的工具,通过yum/dnf工具且能够连接互联网就可以实现软件的便捷安装和自动升级。

|--------|----------------------------------------------|------------------------------------------------|
| 序号 | yum/dnf安装升级软件的优点 | yum/dnf安装升级软件的缺点 |
| 1 | yum/dnf可以解决rpm安装的依赖问题,自动联网查询后下载这些依赖文件内容并下载安装 | yum/dnf服务器必须连接上外网,否则无法自动联网下载软件所需的依赖内容会导致软件安装失败 |
| 【yum/dnf安装的本质还是rpm安装,不过rpm文件是yum自动通过互联网下载下来的】 【yum和dnf都指向dnf,其实本质都是dnf】如下图所示: bash #查看内容所在路径命令 whereis 需查询的内容 #1-查看yum或dnf命令所在的路径命令 whereis yum wheresi dnf |||
[yum/dnf安装升级软件的优缺点]

3.2.1、联网下载安装软件方法

bash 复制代码
#1-使用yum安装软件及其依赖内容命令【前提:这台Linux服务器可以连接互联网上网】
yum install telnet
yum install httpd
yum install samba

#2-使用yum自动安装单个装软件及其依赖内容且不用确认命令(如:安装cutl软件)
yum install curl -y

#3-使用yum自动安装多个装软件及其依赖内容且不用确认命令(如:安装redis和vsftpd软件)
yum -y install redis vsftpd

#4-对系统里面的所有软件进行升级
yum update 

#4.1-对系统里面的指定软件进行升级(如:升级redis软件)
yum update redis

#5-使用yum移除指定软件(如:移除redis软件)
yum -y redis

3.2.2、解决服务器无法连接外网离线但需要安装软件方法

bash 复制代码
#1-先找一台一样系统且可联网的Linux服务器下载该软件所需的各种依赖软件包内容到指定目录下命令
yum -y install --downloadonly --downloaddir=需下载的目录 软件名称

#示例:下载httpd软件及其依赖项内容到/opt目录下的httpdpackages目录下命令
yum -y install --downloadonly --downloaddir=/opt/httpdpackages httpd

#2-将下载好的XXX软件及其依赖内容文件夹传输拷贝到没有外网的Linux服务器上

#3-使用RPM命令对xxx软件进行安装即可
rpm -ivh xxx.rpm

3.2.3、修改yum命令的源为国内源

yum/dnf联网下载的这些软件包及其依赖内容是从哪里下载的呢?具体在哪里配置?

bash 复制代码
#1-yum软件下载源的配置路径(该路径下包含yum下载软件包的地址内容)
/etc/yum.repos.d

#2-yum下载源配置路径默认使用的下载软件包文件配置文件是【almalinux-baseos.repo】可以对这个文件里面的下载软件包地址进行添加修改等操作(一般这里面配置的软件包下载地址都是国外的)
almalinux-baseos.repo

直接使用阿里云提供的源,这样在国内下载软件会更快:

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区https://developer.aliyun.com/mirror/?spm=a2c6h.13651102.0.0.3e221b11PEl0Sk&serviceType=mirror&tag=%E7%B3%BB%E7%BB%9F 比如我这里是AlmaLinux的系统就在阿里云这里找到这个系统并进入该系统的镜像内容说明文档,安装文档里面说明的操作执行就可以了:

bash 复制代码
#1-修改Almalinux系统的源内容并对原有内容备份命令:
  sed -e 's|^mirrorlist=|#mirrorlist=|g' \
      -e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com|g' \
      -i.bak \
      /etc/yum.repos.d/almalinux*.repo

#2-生成缓存
dnf makecache  

3.2.4、配置EPEL附加软件包yum源

EPEL(全称:企业版Linux附加软件包),是一个 Fedora 特别兴趣小组,用以创建、维护以及管理针对企业版 Linux 的一个高质量附加软件包集;面向的对象是红帽企业版Linux(RHEL)及其衍生发行版(如:CentOS、AlmaLinux、RockyLinux );EPEL的软件包不会与企业版Linux官方源中的软件包发生冲突,或相互替换文件。目前有EPEL7\8\9三个版本在支持,可根据不同的Linux发行版本,选择不同的EPEL附件软件源**【主要作用是:在前面配置的默认标准源提供的软件包不够的情况下可以从这个EPEL源里面下载】。**

bash 复制代码
#使用yum命令自动匹配当前系统版本下载最合适的EPEL版本
yum install epel-release

注意:这个EPEl源的文件地址也是在【/etc/yum.repos.d】目录下,名称是epel开头,如下图所示:

3.3、使用二进制包安装软件

二进制软件包是指**【事先在各种CPU架构平台(如:X86、RAM、RISC-V)编译好的相关软件,然后压缩打包,提供给我们使用】**在安装二进制软件包时,只需要解压或执行安装可执行文件即可。

|--------|---------------|------------------------------------------------------------------|
| 序号 | 二进制软件包的优点 | 二进制软件包的缺点 |
| 1 | 安装方便简单 | 缺乏灵活性,对应架构的软件包只能在对应平台下安装,离开这个架构环境软件就无法运行了 |
| 2 | 安装方便简单 | 不是所有的软件都提供二进制安装包(如:很多开源软件不一定都提供二进制软件包【总体上java类的开源软件一般都提供二进制安装包】) |
[二进制软件包的优缺点]

bash 复制代码
#以mysql为例进行二进制安装包的安装说明
#1-下载安装Mysql-8.4.5 LTS的二进制压缩包
wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.5-linux-glibc2.28-x86_64.tar.xz

#2-将下载好的mysql二进制包复制一份到/usr/local目录下
cp mysql-8.4.5-linux-glibc2.28-x86_64.tar.xz /usr/local/

#3-进入/usr/local目录下
cd /usr/local/

#4-解压mysql压缩包
tar -Jxvf mysql-8.4.5-linux-glibc2.28-x86_64.tar.xz

#5-修改解压好的mysql文件夹名称为【mysql】,方便后续操作查看
mv mysql-8.4.5-linux-glibc2.28-x86_64 mysql

#6-进入mysql文件夹下
cd mysql/

#7-在mysql文件夹下创建三个文件夹为初始化做准备【data文件夹存储库和表文件;etc文件夹用于存放配置文件;logs文件夹用于存放日志】
mkdir data etc logs

#8-创建mysql用户用于运行mysql程序
useradd mysql

#9-返回到mysql目录外
cd ..

#10-给mysql文件夹及其内容的所属用户和用户组都设置为mysql
chown -R mysql:mysql mysql

#11-进入mysql目录
cd mysql/

#12-进入mysql目录下的etc目录
cd etc/

#13-在etc目录下创建mysql的配置文件my.cnf并配置内容
cat >/usr/local/mysql/etc/my.cnf <<EOF
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
EOF

#14-返回上级目录(即返回到/usr/local/mysql目录下)
cd ..

#15-在mysql目录下初始化mysql命令
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

#16-查看/etc目录下是否存在my.cnf配置文件若存在则删除
ll /etc/my.cnf
rm -rf /etc/my.cnf

#17-在mysql目录下启动mysql
./support-files/mysql.server start

注意:这里启动mysql后数据库会生成一个临时的密码,我们需要修改一下,这个临时密码可以在【/usr/local/mysql/logs/mysql.log】文件中(比如我这里是【:hI?Y,hDl7pl】):

bash 复制代码
#1-启动mysql
/usr/local/mysql/support-files/mysql.server start

#2-进入mysql命令然后输入临时密码(如我这里的是:hI?Y,hDl7pl)
/usr/local/mysql/bin/mysql -uroot -p

#3-进入mysql后修改root用户密码命令【比如我这里将root用户的密码修改为root@123456】:
alter user 'root'@'localhost' identified by 'root@123456';

3.4、使用源码编译安装软件

|--------|----------------------------------------|---------------------------------------------------|
| 序号 | 源码安装软件的优点 | 源码安装软件的缺点 |
| 1 | 可以使用最新版本; | 由于源码安装非常灵活,可自由定制软件的功能模块,因此对于新手来说难度较大,可能无从下手,找不到方向 |
| 2 | 可以自己定制软件功能(如:只配置需要的模块、不需要的模块可以不用配置安装); | 源码安装会依赖很多其他软件或库文件(需要查阅官方文档才知晓,查找安装这些内容较为繁琐) |
| 3 | 可以自己选择安装的路径(方便管理、删除、卸载) | |
[源码安装软件的优缺点]

接下来以使用nginx源码为例进行说明:

bash 复制代码
#1-下载Nginx的源码(比如我这里下载nginx-1.28.0)
wget https://nginx.org/download/nginx-1.28.0.tar.gz

#2-将下载好的nginx压缩包复制一份到/usr/local/目录下
cp nginx-1.28.0.tar.gz /usr/local/

#3-进入/usr/local目录下
cd /usr/local/

#4-解压nginx压缩包
tar -zxvf nginx-1.28.0.tar.gz 

#5-进入nginx目录下
cd nginx-1.28.0/

#6-安装编译nginx所需的依赖内容
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel  wget pcre pcre-devel git

#7-编译环境检查(可指定编译后的安装路径及其需要使用哪些模块后)
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

#8-在nginx目录下(/usr/local/nginx)编译nginx
make

#9-在nginx目录下(/usr/local/nginx)执行安装

#10-进入nginx的安装路径
cd /usr/local/nginx

#11-进入nginx的执行文件路径下
cd sbin/

#12-永久打开防火墙的80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload



#12-启动nginx
./nginx 

#13-查看进程是否有nginx,有则表示启动成功
ps -ef

相关推荐
瀚高PG实验室29 分钟前
CentOS 8 安装HGDB V4.5 psql命令执行报错
linux·运维·centos·瀚高数据库
chaofan98032 分钟前
AI驱动的浏览器自动化革命:Claude Code + BrowserCat MCP深度实践指南
运维·自动化·claude code
蝶恋舞者33 分钟前
怎样让阿里云服务器(centos)有界面
服务器·阿里云·centos
Fireworkitte2 小时前
DevOps 详解
运维·devops
平生不喜凡桃李2 小时前
Linux 线程概念与控制
java·linux·运维
Lovyk2 小时前
Linux网络管理
服务器·网络·php
无敌的牛3 小时前
Linux重定向的理解
linux·运维·服务器
java叶新东老师3 小时前
docker in docker - 在docker容器中使用宿主机的docker
linux·运维·flink
许野平4 小时前
Rust:anyhow::Result 与其他 Result 类型转换
服务器·开发语言·rust·result·anyhow
IT摆渡者4 小时前
Wireshark攻防实战
linux·服务器·经验分享·笔记