# 数据分析师常用命令

By [sre](https://paragraph.com/@sre) · 2022-03-07

---

> 仅针对mac用户

1.ssh篇
------

### 1.1.怎么弄linux机器的ssh免密码登陆

每次都输入用户名密码好烦啊，怎么才能快速登陆linux机器，而不用一遍又一遍的敲又臭又长命令和密码？

层次一：使用`ssh-copy-id`快速搞

    # 假设用户 troy, 机器 10.2.2.2
    ssh-copy-id troy@10.2.2.2
    

相当于将 `id_rsa.pub` 塞到目标机器目标用户下的 `~/.ssh/authorized_keys` 中，这不不用到目标机器上操作，多省事。

**如果你从来没有生成功密钥对，那么可以通过以下命令生成：**

    ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    
    ls -l $HOME/.ssh/id_rsa*
    -rw------- 1 troy troy 2602 Dec 21 14:13 /root/.ssh/id_rsa
    -rw-r--r-- 1 troy troy  566 Dec 21 14:13 /root/.ssh/id_rsa.pub
    

*   其中`id_rsa`为私钥，是你的钥匙，切记保存好，不要给别人
    
*   `id_rsa.pub`为公钥，很好记，它带`.pub`后缀，就是public的意思，涉及到的场景，基本都是将公钥塞进去，比如git，登陆机器
    

鉴权做完了，就可以直接登陆了：

    ssh troy@10.2.2.2
    

层次二：使用ssh config管理会话信息

将一些信息配置到 config 中，作为默认参数，这样就可以直接少输入不少信息

    cat ~/.ssh/config
    Host myhost
        HostName 10.2.2.2
        User troy
    

层次三：使用alias，替代固定操作

分析师可能用到的就那么一台或者多台机器，那么就可以做别名

在 `/etc/profile` 添加：

    alias myhost="ssh troy@10.2.2.2"
    

然后 source 使其生效

    source /etc/profile
    

\*\*为啥不在bashrc中添加？\*\*因为你可能比较高逼格，也许使用了zsh呢？那读的就是zshrc了，不管你用什么shell，profile一定会读的！！！

层次四：使用sshw管理多台机器

有时候管理数十台机器，别名的方式就不太优雅了，那就需要引入工具，要么ui管理，要么命令行管理，这里推荐命令行管理工具。

详情请参考开源项目：[sshw](https://github.com/yinheli/sshw)

使用以下命令直接安装：

    cd /tmp && \
      wget https://github.com/yinheli/sshw/releases/download/v1.1.0/sshw-darwin-amd64-v1.1.0.tar.gz && \
      tar xf sshw-darwin-amd64-v1.1.0.tar.gz && \
      mv sshw-darwin-amd64-v1.1.0/sshw /usr/local/bin && \
      rm -rf /tmp/sshw-darwin-amd64-v1.1.0* && \
      sshw -h
    

支持两种模式，一种是自有格式配置文件，另一种是支持ssh config格式，都比较简单。

上面配置过ssh config，所以这里可以直接使用：

    sshw -s
    

自有格式：

    cat ~/.sshw
    - name: myhost
      user: troy
      host: 10.2.2.2
      port: 22
      keypath: /Users/troy/.ssh/id_rsa
    

支持分组，别名，操作方式基本是标准的vim模式，很是方便【当然，前提你得习惯vim键位】具体配置文件配置方式见[官方文档](https://github.com/yinheli/sshw)

2.vim篇
------

linux编辑文件，基本两派：vim派 和 emacs派，大部分是前者。

vim比较强大方便，这里只说基本的操作，比如模式介绍，怎么退出，怎么保存，怎么复制等...

算了，还是跟着教程走吧，这个互动教程比我讲得牛逼，贴地址：

[openvim.com](https://www.openvim.com/)

### 2.1.啰嗦两句，整理一下

1.  多种模式：编辑 、正常 和 可视化
    
2.  怎么进入编辑模式，比如 i啊 a啊
    
3.  怎么进入正常模式，esc
    
4.  常用位移操作 a. 上下左右：hjkl b. 按单词 w b e c. 行首尾 0 ^ $ d. 文档首尾 gg G 2G/2gg e. 数字带位移，比如 5w 10l 2b
    
5.  重复插入 比如插入go三遍 3igo `esc`
    
6.  查找，正着找f，反着找F，比如查找o fo，查找第三个q 3fq
    
7.  比配括号对 %
    
8.  找单词 正找 \*；反找 #
    
9.  搜索 /text；用 n 和 N 来跳
    
10.  新行插入 下一行 o；上一行 O
    
11.  删除 x d dw dG dgg d2w d2e
    
12.  替换 r
    
13.  神奇操作，重复上一个操作 .
    
14.  v进入可视化模式，通过位移加指令操作
    
15.  保存 :w 退出 :q 保存退出 :wq 简化版 :x 强制带!
    

### 2.2.教程中的

    i, I
    change to insert mode
    
    h, j, k, l
    move left, down, up, right
    
    w, b, e, ge
    move word at a time
    
    [n][action/movement]
    do n times, e.g. 3w
    
    x, X
    remove a character
    
    a, A
    append
    
    f[char]
    move to next given char in line
    
    F[char]
    move to previous char in line
    
    ; and ,
    repeat last f or F
    
    /yourtext and then: n, N
    Search text
    
    d[movement]
    delete by giving movement
    
    r[char]
    replaces character below cursor
    
    0, $
    move to start/end of line
    
    o, O
    add new line
    
    %
    Goto corresponding parentheses
    
    ci[movement]
    change inside of given movement
    
    D
    delete to end of line
    
    S
    clear current line; to insert mode
    
    gg / G
    move to start / end of buffer
    
    yy
    copy current line
    
    p
    Paste copied text after cursor.
    

**总结**

*   vim的操作命令很好记，可以按单词首字母进行记忆，多操作可合理组合，比如 `数字位移操作` 的组合
    
*   入门其实了解模式，知道怎么进入编辑模式，怎么退出编辑模式进入正常模式，知道怎么保存退出就行了，毕竟大部分的键盘还有方向键，对不？？
    
*   入门一句话：vim a.txt -> i -> 方向键挪 -> 编辑 -> esc -> wq/q!
    
*   操作类的没有捷径可走，掌握道，然后勤加操练即可
    
*   感兴趣了，可以深入vim配置；使用vim做日常工作/开发（插件一装，花里胡哨，实乃装逼利器！！！）

---

*Originally published on [sre](https://paragraph.com/@sre/rAE5z0gFMKi59hHjy4lI)*
