Linux Software Tips
Linux Software Tips
vim
1. "." # repeat previou eiting commond 在 vim 默认模式下,输入 . 能够重复执行上一个命令
2. f + char # 进行同行字符的转跳。查找当前行以character开头的字符。
3. f{character}, t{character}, F{character}, T{character} # 同上
4. ci[ # 修改[]中的内容
5. da\' # 删除 ' 包围的内容,包括 ' 本身
6. 在普通模式下,输入 (两个反引号)# 这个命令将会把光标移动到上次编辑时所在的位置。
shellcheck
ShellCheck 是一个用于静态分析 Bash 脚本的开源工具。它可以帮助检查脚本中潜在的问题和错误,并提供相关的建议和修复建议。
# Check a shell script:
shellcheck {{path/to/script.sh}}
xdg-open
xdg-open 以合适的工具打开
tcpdump
# 只抓取来自 hostip 的数据包
tcpdump -X -vvv -i any src [hostip] and port [portnum] -w demo.pcap
# 抓取来自所有访问的数据包
tcpdump -X -vvv -i any port 33306
tracepath
它只显示路径上每个跳点的IP地址,不显示每个跳点的往返时间(RTT)
fzf
fzf 是一种基于命令行的模糊查找工具,它可以帮助用户在大量文本数据中快速进行筛选和选择。它能够与各种命令行工具和脚本集成,提供交互式的搜索和选择功能。fzf 对于处理大量文本数据或日志文件非常有用,它可以帮助用户快速找到所需的信息,减少手动筛选的时间和努力。同时,由于它的命令行特性,fzf 也可以与其他命令行工具和脚本进行集成,提供更强大的功能和灵活性。
#Start fzf on all files in the specified directory:
find {{path/to/directory}} -type f | fzf
#Start fzf for running processes:
ps aux | fzf
#Select multiple files with Shift + Tab and write to a file:
find {{path/to/directory}} -type f | fzf --multi > {{filename}}
#Start fzf with a specified query:
fzf --query "{{query}}"
#Start fzf on entries that start with core and end with either go, rb, or py:
fzf --query "^core go$ | rb$ | py$"
#Start fzf on entries that not match pyc and match exactly travis:
fzf --query "!pyc 'travis"
strace
strace 是一个强大的命令行工具,用于监控和记录程序执行期间进行的所有系统调用及其返回值。系统调用是程序与操作系统内核之间通信的接口,它们允许程序请求操作系统提供的服务,比如文件操作、进程控制、通信等。
#include <unistd.h>
#include <sys/types.h>
int main() {
write(1, "Hello, World!", 13);
}
程序运行 strace 结果如下图所示,可以看到 execve、write 等系统调用的使用
ptrace
ptrace 系统调从名字上看是用于进程跟踪的,它提供了父进程可以观察和控制其子进程执行的能力,并允许父进程检查和替换子进程的内核镜像(包括寄存器)的值。其基本原理是: 当使用了 ptrace 跟踪后,所有发送给被跟踪的子进程的信号(除了 SIGKILL ),都会被转发给父进程,而子进程则会被阻塞,这时子进程的状态就会被系统标注为 TASK_TRACED。而父进程收到信号后,就可以对停止下来的子进程进行检查和修改,然后让子进程继续运行。
- 可以拦截系统调用,修改它的参数。
- 设置断点插入代码到一个正在运行的程序中。