工具

Shell

使用 shell

  • date
  • echo
  • 环境变量 $PATH
  • which

在 shell 中导航

  • pwd
  • cd
  • ls
  • mv
  • cp
  • mkdir

在程序间创建连接

  • < file
  • > file
  • >>
  • |

根用户

  • sudo
  • tee

工具

  • 查看命令如何使用

    • -h
    • –help
    • man
  • 查找文件

    • find
    • fd
    • locate
  • 查找代码

    • grep
    • ack
    • ag
    • rg
  • 查找 shell 命令

    • history
  • 文件夹导航

    • fasd
    • autojump
    • tree
    • broot
    • nnn
    • ranger

脚本

shebang

shell 脚本

  • shell 函数和脚本的区别

    • 函数只能与 shell 使用相同的语言,脚本可以使用任意语言。
    • 函数仅在被定义时被加载,脚本会在每次被执行时加载。
    • 函数会在当前的 shell 环境中执行,脚本会在单独的进程中执行。
  • bash

    • 变量赋值:foo=bar

    • 访问变量:$foo

    • 原义字符串:’ ’

    • 转义字符串:“ ”

    • 控制流

      • if
      • case
      • while
      • for
    • 函数

    • 特殊变量

      • $0:脚本名
      • $1-$9:脚本的参数
      • $@:所有参数
      • $#:参数个数
      • $?:前一个命令的返回值
      • $$:当前脚本的进程识别码
      • !!:完整的上一条命令,包括参数
      • $_:上一条命令的最后一个参数
    • 短路运算符

      • &&
      • ||
    • 通配

      • 通配符

        • *
      • { }

python

编辑器

vim

  • 编辑模式

    • 正常模式
    • 插入模式
    • 替换模式
    • 可视化模式
    • 命令模式
  • 基本操作

    • 插入文本

      • i(正常模式)
    • 缓存,标签页,窗口

    • 命令行

      • :q 退出
      • :w 保存
      • :wq 保存并退出
      • :e {文件名} 打开要编辑的文件
      • :ls 显示打开的缓存
      • :help {标题} 打开帮助文档
  • 接口

    • 移动

      • 基本移动

        • hjkl(左,下,上,右)
        • w(下一个词),b(词初),e(词尾)
        • 0(行初),^(第一个非空格字符),$(行尾)
      • 屏幕

        • H(屏幕首行),M(屏幕中间),L(屏幕底部)
      • 翻页

        • Ctrl-u(上翻),Ctrl-d(下翻)
      • 文件

        • gg(文件头),G(文件尾)
      • 行数

        • :{行数} 或者 {行数}G
      • 杂项

        • % 符号配对
      • 查找

        • f{字符},t{字符},F{字符},T{字符}
        • 查找/到 向前/向后 在本行的{字符}
        • 导航匹配:,/ ;
      • 搜索

        • /{正则表达式}
        • 导航匹配:n / N
    • 选择

      • 可视化模式

        • 可视化:v
        • 可视化行:v
        • 可视化块:Ctrl + v
    • 编辑

      • i:进入插入模式
      • O / o:在之上/之下插入行
      • d{移动命令}:删除{移动命令}
      • c{移动命令}:改变{移动命令}
      • x:删除字符
      • s:替换字符
      • 可视化模式 + 操作
      • u:撤销
      • y:复制
      • p:粘贴
    • 计数

      • 3w:向前移动三个词
      • 5j:向下移动5行
      • 7dw:删除7个词
    • 修饰语

      • ci(:改变当前括号内的内容
      • ci[:改变当前方括号的内容
      • da’:删除一个单引号字符串,包括周围的单引号
  • 自定义 Vim

    • 文本配置文件:~/.vimrc
  • 扩展 Vim

    • 插件位置:~/.vim/pack/vendor/start/
  • 其他程序的 Vim 模式

    • Shell
    • Readline
  • Vim 进阶

    • 搜索和替换
    • 多窗口

数据整理

sed

正则表达式

awk

分析数据

利用数据整理来确定参数

整理二进制数据

命令行环境

任务控制

  • 结束进程

    • SIGINT 信号:Ctrl-c
    • SIGQUIT 信号:Ctrl-\
    • SIGTERM 信号:kill -TERM
  • 暂停和后台执行进程

    • SIGSTOP 暂停信号

    • SIGTSTP 信号:Ctrl-z(Terminal Stop)

    • SIGKILL 信号:不能被程序捕获

    • 恢复

      • 在前台继续:fg
      • 在后台继续:bg
    • 当前会话尚未完成的任务:jobs

    • 让命令在后台运行:命令添加后缀 &

终端多路复用

  • tmux

    • 会话
    • 窗口
    • 面板

别名

  • alias

配置文件

  • bash

    • ~/.bashrc
    • ~/.bash_profile
  • git

    • ~/.gitconfig
  • vim

    • ~/.vimrc
    • ~/.vim
  • ssh

    • ~/.ssh/config
  • tmux

    • ~/.tmux.conf

可移植性

远端设备

  • ssh foo@bar.mit.edu

  • 执行命令:ssh foobar@server ls

  • ssh 密钥

    • 密钥生成
    • 基于密钥的认证机制
  • 通过 ssh 复制文件

    • ssh + tee
    • scp
    • rsync
  • 端口转发

    • 本地端口转发
    • 远程端口转发
  • ssh 配置

  • 杂项

    • Mosh
    • sshfs

Shell & 框架

  • prezto
  • oh-my-zsh

终端模拟器

版本控制(Git)

数据模型

  • Blob 对象:文件(数据对象)

  • 树:目录

  • 快照:被追踪的最顶层的树

  • 关联快照:历史记录

  • 仓库:对象和引用

  • 伪码表示

    • type blob = array
    • type tree = map<string, tree | blob>
    • type commit = struct {
    • parent: array
    • author: string
    • message: string
    • snapshot: tree
    • }
    • type object = blob | tree | commit
    • objects = map<string, object>
    • references = map<string, string>

暂存区

命令行接口

  • 基础
  • 分支和合并
  • 远端操作
  • 撤销
  • 高级操作

杂项

  • 图形用户界面
  • Shell 集成
  • 编辑器集成
  • 工作流
  • GitHub
  • 其他 Git 提供商

学习资源

调试及性能分析

调试代码

  • 打印调试法

  • 日志

  • 第三方日志系统

  • 调试器

    • pdb

      • list
      • step
      • next
      • break
      • print
      • return
      • quit
  • 专门工具

    • 追踪系统调用

      • strace
      • dtrace
      • dtruss
    • 网络数据包

      • tcpdump
      • Wireshark
    • web 开发

      • Chrome / Firefox 开发者工具

        • 查看源码
        • 实时修改
        • javaScript shell
        • 网络分析
        • 存储,查看 Cookies 和本地应用存储
  • 静态分析

性能分析

  • 计时

  • 工具

    • cpu

      • 追踪分析器
      • 采样分析器
    • 内存

    • 事件分析

    • 可视化

资源监控

  • 通用监控
  • I / O 操作
  • 磁盘使用
  • 内存使用
  • 打开文件
  • 网络连接和配置
  • 网络使用
  • 专门工具

元编程

构建系统

  • 依赖
  • 目标
  • 规则

依赖管理

  • 软件仓库

  • 版本控制

    • 版本号

      • 语义版本号
  • 锁文件

持续集成系统

  • CI:一种雨伞术语(涵盖了一组术语的术语)

  • 工作原理:需要在代码库中添加一个文件,描述当前仓库发生任何修改时,应该如何应对。

  • 测试

    • 测试套件
    • 单元测试
    • 集成测试
    • 回归测试
    • 模拟

安全和密码学

熵:度量不确定性

散列函数:任意大小输入,固定大小输出

  • 应用

    • Git 中的内容寻址存储
    • 文件的信息摘要
    • 承诺机制

密钥生成函数

对称加密

非对称加密

  • 密钥分发

案例分析

  • 密码管理器
  • 两步验证(双因子验证)
  • 全盘加密
  • 聊天加密
  • SSH

大杂烩

修改键位映射

守护进程

FUSE(用户空间文件系统)

备份

API(应用程序接口)

  • 结构化 URL:api.service.com

  • 私密令牌

    • OAuth

常见命令行标志参数及模型

窗口管理器

VPN

Markdown

子主题 10

Hammerspoon(macOS 桌面自动化)

开机引导以及 Live USB

Docker,vagrant,VMs,Cloud,OpenStack

交互式记事本编辑

GitHub

  • 议题(issue)
  • 拉取请求(pull request)
  • 复刻(fork)

参考链接:计算机教育中缺失的一课

编程中经常用到的工具相关推荐

  1. java.util.concurrent(在并发编程中很常用的实用工具类)

    control意思即控制: current意思即同步(并发): 连起来就是控制同步(控制并发)concurrent.

  2. c mysql 工具类_Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类

    该工具类是在JavaWeb中连接mysql所用到的通用工具类 该类用于Java+Servlet的编程中,方便数据库的操作,连接,获取其列表值.下面是这个数据库操作类的通用方法,基本上能够用于类里面只含 ...

  3. java并发编程中常用的工具类 Executor

    /***************************************************  * TODO: description .  * @author: gao_chun  * ...

  4. MPB:华大孙海汐等-从细菌基因组中预测活性前噬菌体工具Prophage Hunter的使用流程和常见问题...

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  5. python图片-Python中的十大图像处理工具

    原标题:Python中的十大图像处理工具 导读:本文主要介绍了一些简单易懂最常用的Python图像处理库. 作者:Parul Pandey 来源:大数据文摘(ID:BigDataDigest) 当今世 ...

  6. Java之基础(1) - 编程中“为了性能”尽量要做到的一些地方

    最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...

  7. Java并发编程中的若干核心技术,向高手进阶

    来源:http://www.jianshu.com/p/5f499f8212e7 引言 本文试图从一个更高的视角来总结Java语言中的并发编程内容,希望阅读完本文之后,可以收获一些内容,至少应该知道在 ...

  8. Go并发编程中的那些事[译]

    原文地址:Concurrent programming 原文作者:StefanNilsson 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:kobehah ...

  9. Java编程中“为了性能”需做的26件事

    下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方. 1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说, ...

最新文章

  1. Debian、Ubuntu安装源配置文件说明
  2. vmware, failed to lock the file 的解决
  3. ant-design-vue 快速入手及常用标签
  4. php两个编辑框一个提交按钮,一个表单中的两个提交按钮
  5. raid及mdadm命令之一(含shell显示字体颜色等)
  6. 基于Java的局域网聊天工具
  7. 数字电路基础知识(一) 复位设计-同步复位与异步复位
  8. CentOS7 KVM虚拟化技术 详解
  9. C++ Primer 第5版--练习10.35
  10. 【IIS】VS+IIS发布网站
  11. 小树也能读懂的零点定理弱形式
  12. Encoded password does not look like BCrypt 使用SpringSecurity中BCryptPasswordEncoder做盐值加密时出现错误
  13. 考研英语 词根词缀单词71-80
  14. 海淘、跨境电商国际物流对接那些坑
  15. android wifi 5g,android 判断 wifi 是否是 5G
  16. FPGA数字时钟系统-设计教程
  17. http 404强制跳转到指定的网页地址
  18. [nRF52832开发板:Nordic Thingy:52]Nordic Thingy:52到手
  19. 【C语言】将文本中汉字读入字符数组输出乱码
  20. vulhub复现之shiro反序列化漏洞复现

热门文章

  1. EXCEL类十字拖拽操作上千条数据的技巧
  2. winPE下安装系统ghost恢复系统图文详细教程
  3. 2019年计算机无纸化试题,2019年中级会计无纸化考试操作全攻略!机考常见问题大合集!...
  4. MS coco数据集下载链接
  5. 如何查看自己的电脑硬盘是不是固态硬盘
  6. Android之Canvas画笔和画布
  7. 【MATLAB】— xlsread和xlswrite函数
  8. Echarts南丁格尔图.
  9. 计算机视觉、模式识别、机器学习常用牛人主页链接
  10. 骑行运动,对青春期年青人有什么好处?