1、alternatives
1.1 概述
update-alternatives 和 alternatives 都是Linux系统中用于管理命令链接符的工具,它们允许用户在系统中存在多个软件版本时,方便地设置和切换默认使用的版本。
update-alternatives 是最初在Debian Linux下开发的项目,用于管理多版本。RHEL重写了这个项目,并将其命名为 alternatives ,在基于Fedora的分发版本中发行和传播。在某些RHEL或CentOS版本中,update-alternatives 可能作为一个软链接存在,指向alternatives命令。
由于update-alternatives和alternatives都涉及系统级别的命令链接符管理,因此通常需要root权限来执行相关命令。
1.2 安装与配置
基于RPM的系统(如Red Hat、Fedora、CentOS),alternatives功能是通过chkconfig包提供的,并且通常已经默认安装
sudo apt-get update
sudo apt-get install alternatives
1.3 语法
[appuser@localhost app]$ update-alternatives -help
alternatives(备用)版本 1.7.6 - 版权 (C) 2001 红帽公司
在 GNU 公共许可条款下,本软件可被自由地重发行。用法:alternatives --install <链接> <名称> <路径> <优先度> [--initscript <服务>][--family <family>][--slave <链接> <名称> <路径>]*alternatives --remove <名称> <路径>alternatives --auto <名称>alternatives --config <名称>alternatives --display <名称>alternatives --set <名称> <路径>alternatives --list
--install <链接> <名称> <路径> <优先度>
⇒ 安装一个新的替代项。- <链接> 是指向 /etc/alternatives 目录下符号链接的路径。
- <名称> 是替代项的通用名称。
- <路径> 是实际可执行文件的路径。
- <优先度> 是这个替代项的优先级,数字越大优先级越高。
[--initscript <服务>]
⇒ 指定一个初始化脚本,当替代项被更新时,这个脚本会被调用。[--family <family>]
⇒ 将替代项分组到一个家族中。[--slave <链接> <名称> <路径>]
⇒ 为一个主替代项添加一个或多个从属替代项。--remove <名称> <路径>
⇒ 从系统中移除一个替代项。--auto <名称>
⇒ 自动选择优先级最高的替代项。--config <名称>
⇒ 显示替代项的配置菜单,允许用户手动选择一个替代项。--display <名称>
⇒ 显示有关替代项的信息,包括所有可用的替代项及其优先级。--set <名称> <路径>
⇒ 手动选择一个特定的替代项。--list
⇒ 列出所有替代项的名称
示例
- 添加新的程序版本
sudo alternatives --install /usr/bin/python python /usr/bin/python3.8 100 sudo alternatives --install /usr/bin/python python /usr/bin/python3.9 200
- 列出所有注册到 python 名称下的替代程序及其优先级
sudo alternatives --display python
- 切换Python版本
# 列出所有可用版本,输入对应的编码来切换版本 sudo alternatives --config python# 自动切换,系统将根据程序的优先级自动选择默认版本 sudo alternatives --auto python# 手动切换指定版本 sudo alternatives --set python /usr/bin/python3.8
- 删除已注册的命令版本。
sudo alternatives --remove python /usr/bin/python3.8
2、update-alternatives
参见上述的 alternatives
3、scp
概述
scp
(Secure Copy)是 Linux 系统中一个基于 SSH(Secure Shell)协议的文件传输命令。它允许用户在不安全的网络环境中安全地传输文件。由于使用了 SSH 协议,scp
命令在传输过程中会加密数据,确保数据的安全性和完整性。
语法
zhangsan@MacBook-Pro ~ % scp
usage: scp [-346ABCOpqRrsTv] [-c cipher] [-D sftp_server_path] [-F ssh_config][-i identity_file] [-J destination] [-l limit] [-o ssh_option][-P port] [-S program] [-X sftp_option] source ... target
参数说明:
-3: 通过 SSH 连接到第三个主机,然后复制文件。这通常用于通过跳板机进行文件传输。
-4: 强制使用 IPv4 地址。
-6: 强制使用 IPv6 地址。
-B: 使用批处理模式(此选项已过时,不推荐使用)。
-C: 允许压缩数据,在传输过程中进行压缩以提高效率。
-p: 保留文件的修改时间、访问时间和权限。
-q: 静默模式,不显示传输过程中的信息。
-r: 递归复制整个目录及其内容。
-T: 禁用伪终端分配(这通常用于脚本或命令行)。
-v: 详细模式,显示传输过程中的详细信息。
-c cipher: 指定加密算法。
-F ssh_config: 指定 SSH 配置文件的位置。
-i identity_file: 使用指定的私钥文件进行身份验证。
-J destination: 跳板机选项,用于通过指定的主机连接到目标主机。
-l limit: 限制传输带宽。
-o ssh_option: 传递单个 SSH 选项。
-P port: 指定 SSH 服务的端口号(默认是 22)。
-S program: 用于连接的主机密钥验证的程序。
source ...: 这是你想要复制的文件或目录的列表。可以使用通配符(如 *)来匹配多个文件。
target: 这是你希望将文件或目录复制到的位置。这可以是一个本地路径(如果目标主机是本地),也可以是一个远程主机的路径(格式为 [user@]host:path)。
示例
-
从本地复制到远程主机:
# 将 文件 `/Users/zhangsan/Downloads/a.txt` 复制到 `/root` 下 zhangsan@MacBook-Pro ~ % scp Downloads/a.txt root@192.168.10.1:~ root@192.168.10.1's password: a.txt 100% 6850 17.9MB/s 00:00 # 将 文件夹 `/Users/zhangsan/Downloads/a` 复制到 `/app` 下 lisi@MacBook-Pro ~ % scp -r Downloads/a root@192.168.10.1:/app root@192.168.10.1's password: a.txt 100% 2 6.0KB/s 00:00 b.txt 100% 2 8.1KB/s 00:00
-
从远程主机复制到本地
# 将 文件夹 `/app/a` 复制到 `/Users/wangwu/Downloads` 下 wangwu@MacBook-Pro ~ % scp -r root@192.168.10.1:/app/a ./Downloads root@192.168.10.1's password: a.txt 100% 2 3.3KB/s 00:00 b.txt 100% 2 4.6KB/s 00:00 # 将 文件 `/root/a.txt` 复制到 `/Users/zhaoliu/Downloads` 下 zhaoliu@MacBook-Pro ~ % scp root@192.168.10.1:~/a.txt ./Downloads root@192.168.10.1's password: a.txt 100% 6850 6.9MB/s 00:00
-
指定 SSH 端口
# 如果远程主机的 SSH 端口不是默认的 22,可以使用 `-P` 选项指定端口: scp -P 2222 user@remote_host:/path/on/remote/file.txt /path/to/local/
99、资料
- Linux:使用 Alternatives 管理多版本程序