Java-017-linux使用二

VI 命令

在ssh远程终端环境下, vi是最常用的终端内编辑器

操作模式

  • 命令模式
  • 插入模式

操作模式

命令模式下可以使用输入字母按键进行常见操作

例如:

  • h j k l: 向左 向上 向下 向右
  • i: 切换到输入模式
  • x: 删除
  • X: 撤销删除

输入模式

在命令模式下, 按 i 可以切入到输入模式, 然后可以进行文本的输入.

按ESC可以退出输入模式退到操作模式

命令模式

在操作模式下, 按 : 冒号则切换到命令模式, 可以输入一些命令进行操作:

  • ‘:w’: 保存当前文件
  • ‘:w [文件名]’: 保存到文件 [文件名]
  • ‘:wq’: 保存并退出
  • : q!: 不保存, 直接退出

扩展学习

scp命令

scp命令是用来远程复制文件, 双向

实例:

  1. 把本地文件复制到远程

    1
    scp [本地文件] [用户名]@[远程服务器IP地址]:[远程目录]
  2. 把文件目录和文件复制到远程

    1
    scp -r [本地目录] [用户名]@[远程服务器IP地址]:[远程目录]
  3. 复制远程文件到本地

    1
    scp [用户名]@[远程服务器IP地址]:[远程文件] [本地目录]
  4. 复制远程文件和目录到本地

    1
    scp -r [用户名]@[远程服务器IP地址]:[远程目录] [本地目录]

使用ssh配置缩写

1
2
3
4
5
6
7
scp -r [远程机器配置缩写]:[远程目录] [本地目录] 

scp -r [本地目录] [远程机器配置缩写]:[远程目录]

scp [本地文件] [远程机器配置缩写]:[远程目录]

scp -r [本地目录] [远程机器配置缩写]:[远程目录]

服务器

  • 稳定的开发环境
  • 统一的运行和测试环境 – Docker 容器,Serverless

服务器的来源

自己搭建

  • 虚拟机
  • 旧的机器 – 机箱

云服务器

  • 省钱, 方便, 稳定性
  • 全球访问 (?)
  • 其他的配套服务: 监控, 负载均衡, 备份

云服务的选择

  • AWS
  • 阿里云
  • 腾讯云

科学上网

  • Shadowsocks
  • VPN

SSH登录

  1. 地址, 用户名
  2. 公钥, 私钥

VI

  • 常见模式
  • 常见命令和操作

VIM已死, VIM永生

  • IntelliJ IDEA里的VIM支持插件: IdeaVim
  • VS Code的Vim插件: Vim
  • chrome浏览器的vim插件: Vimium

远程拷贝文件

  • 拷贝本地代码到远程, 然后在服务器上运行

开发场景流程

  1. 在本地写代码, 运行单元测试
  2. 使用同步工具把代码从本地同步到远程服务器
  3. 在远程服务器运行代码
  4. 把运行结果文件拷贝回本地分析, 或者日志文件

命令

1
scp --> ssh copy

Tmux

1
2
3
ssh -i "id_rsa.pem" ubuntu@ec2-54-193-62-229.us-west-1.compute.amazonaws.com -t "tmux"

ssh -i "id_rsa.pem" ubuntu@ec2-54-193-62-229.us-west-1.compute.amazonaws.com -t "tmux attach"

SSH Config

1
2
3
4
Host aws
HostName ec2-54-193-62-229.us-west-1.compute.amazonaws.com
User ubuntu
IdentityFile "~/.ssh/id_rsa"

练习

  1. 假设我们有一台服务器, 地址为: 192.168.0.18, SSH服务的端口为默认端口, 如果你需要用当前登录的默认账号登录, 最简洁的登录命令是?

    1
    ssh 192.168.0.18
  2. 假设我们有一台服务器, 地址为: 192.168.0.18, SSH服务的端口设置为44, 如果你需要用当前登录的默认账号登录, 最简洁的登录命令是?

    1
    ssh -p 44 192.168.0.18
  3. 假设我们有一台服务器, 地址为: 192.168.0.18, SSH服务的端口为44, 如果你需要用账号admin登录, 最简洁的登录命令是?

    1
    ssh -p 44 admin@192.168.0.18
  4. 假设我们有一台服务器, 地址为: 192.168.0.18, SSH服务的端口为44, 如果你需要用账号 admin 和个人私钥 ~/key.pem 登录, 最简洁的登录命令是?

    1
    ssh -i ~/key.pem -p 44 admin@192.168.0.18
  5. 假设我们有一台服务器, 地址为: 192.168.0.18, SSH服务的端口为默认端口, 如果用当前登录用户登录, 复制远程服务器上的文件 ~/sample.txt 到本地当前目录, 最简洁的登录命令是?

    1
    scp 192.168.0.18:~/sample.txt .
  6. 假设我们有一台服务器, 地址为: 192.168.0.18, SSH服务的端口为默认端口, 如果用用户 admin 登录, 复制本地当前目录下的文件 ~/sample.txt 到远程服务器的目录 ~/test, 最简洁的登录命令是?

    1
    scp ~/sample.txt admin@192.168.0.18:~/test/