编程中经常用到的工具
工具
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
- 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)
参考链接:计算机教育中缺失的一课
编程中经常用到的工具相关推荐
- java.util.concurrent(在并发编程中很常用的实用工具类)
control意思即控制: current意思即同步(并发): 连起来就是控制同步(控制并发)concurrent.
- c mysql 工具类_Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类
该工具类是在JavaWeb中连接mysql所用到的通用工具类 该类用于Java+Servlet的编程中,方便数据库的操作,连接,获取其列表值.下面是这个数据库操作类的通用方法,基本上能够用于类里面只含 ...
- java并发编程中常用的工具类 Executor
/*************************************************** * TODO: description . * @author: gao_chun * ...
- MPB:华大孙海汐等-从细菌基因组中预测活性前噬菌体工具Prophage Hunter的使用流程和常见问题...
为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...
- python图片-Python中的十大图像处理工具
原标题:Python中的十大图像处理工具 导读:本文主要介绍了一些简单易懂最常用的Python图像处理库. 作者:Parul Pandey 来源:大数据文摘(ID:BigDataDigest) 当今世 ...
- Java之基础(1) - 编程中“为了性能”尽量要做到的一些地方
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...
- Java并发编程中的若干核心技术,向高手进阶
来源:http://www.jianshu.com/p/5f499f8212e7 引言 本文试图从一个更高的视角来总结Java语言中的并发编程内容,希望阅读完本文之后,可以收获一些内容,至少应该知道在 ...
- Go并发编程中的那些事[译]
原文地址:Concurrent programming 原文作者:StefanNilsson 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:kobehah ...
- Java编程中“为了性能”需做的26件事
下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方. 1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说, ...
最新文章
- Debian、Ubuntu安装源配置文件说明
- vmware, failed to lock the file 的解决
- ant-design-vue 快速入手及常用标签
- php两个编辑框一个提交按钮,一个表单中的两个提交按钮
- raid及mdadm命令之一(含shell显示字体颜色等)
- 基于Java的局域网聊天工具
- 数字电路基础知识(一) 复位设计-同步复位与异步复位
- CentOS7 KVM虚拟化技术 详解
- C++ Primer 第5版--练习10.35
- 【IIS】VS+IIS发布网站
- 小树也能读懂的零点定理弱形式
- Encoded password does not look like BCrypt 使用SpringSecurity中BCryptPasswordEncoder做盐值加密时出现错误
- 考研英语 词根词缀单词71-80
- 海淘、跨境电商国际物流对接那些坑
- android wifi 5g,android 判断 wifi 是否是 5G
- FPGA数字时钟系统-设计教程
- http 404强制跳转到指定的网页地址
- [nRF52832开发板:Nordic Thingy:52]Nordic Thingy:52到手
- 【C语言】将文本中汉字读入字符数组输出乱码
- vulhub复现之shiro反序列化漏洞复现