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

img

tracepath

img

它只显示路径上每个跳点的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"

img

strace

strace 是一个强大的命令行工具,用于监控和记录程序执行期间进行的所有系统调用及其返回值。系统调用是程序与操作系统内核之间通信的接口,它们允许程序请求操作系统提供的服务,比如文件操作、进程控制、通信等。

#include <unistd.h>
#include <sys/types.h>

int main() {
    write(1, "Hello, World!", 13);
}

程序运行 strace 结果如下图所示,可以看到 execve、write 等系统调用的使用

img

ptrace

ptrace 系统调从名字上看是用于进程跟踪的,它提供了父进程可以观察和控制其子进程执行的能力,并允许父进程检查和替换子进程的内核镜像(包括寄存器)的值。其基本原理是: 当使用了 ptrace 跟踪后,所有发送给被跟踪的子进程的信号(除了 SIGKILL ),都会被转发给父进程,而子进程则会被阻塞,这时子进程的状态就会被系统标注为 TASK_TRACED。而父进程收到信号后,就可以对停止下来的子进程进行检查和修改,然后让子进程继续运行。

  1. 可以拦截系统调用,修改它的参数。
  2. 设置断点插入代码到一个正在运行的程序中。

posted on 2023-11-02 09:17  LambdaQ  阅读(12)  评论(0编辑  收藏  举报