一些常用的linux命令记录
dd
- 拷贝文件
dd if=infile of=outfile
- 创建填充文件
dd if=/dev/zero of=xxx bs=1024000 count=100
(100 MB) - 备份磁盘
dd if=/dev/sda of=/dev/sdb
- 备份磁盘到文件
dd if=/dev/sda of=/path/to/filename
,恢复备份dd if=/path/to/filename of=/dev/sda
- 拷贝内存内容到硬盘
dd if=/dev/mem of=/path/to/filename.mem bs=1024
- 销毁磁盘
dd if=/dev/urandom of=/dev/sdb
更详细的信息可以参考 菜鸟
scp
给 scp 加代理,方法和 ssh 一样: scp -o "ProxyCommand=nc -X 5 -x localhost:1080 %h %p" remotehost:~/xx ./xx
nc (ncat)
- nc 可以监听 udp 端口,
nc -luv 60001
,也可以连接 udpnc -vu 46.46.46.46 60001
- 通过 nc 发送文本消息,
echo xxx | nc 46.46.46.46 1234
- nc 调试 http server
nc -lkp 50081 -c "nc 127.0.0.1 50080" -o /dev/stdout
但输出没有展示方向,看起来不太友好。nc -kl 1234 -c 'tee -a xxin.txt - | nc 127.0.0.1 50080 | tee xxout.txt -a -'
- 查看
tail -f xxin.txt
和tail -f xxout.txt
- 调试内容显示可以更加优化,加个中间件
- nc 请求复制 ( 结合 tcpcopy )
- nc 作为 http 代理 server
nc -kl --proxy-type http 0.0.0.0 8888
- socks5 server 可以参考 go-socks5
- socks5 server 可以参考 socks5-server
- 基于 nps 的 socks5 搭建工具可以参考 nps-socks5
- nc 直接 serve files:
1
2
3
4#!/bin/bash
while read|grep :;do :;done;<a href="/notpublish/index.html" name=" -e .$g &&! $g = *..* " > -e .$g &&! $g = *..* </a>||exit
printf "HTTP/1.1 200 OK\nContent-Length: $(stat -c%s .$g)\n\n"
cat .$g)|nc -l -p $1;}>/dev/fd/0;$0 $1 - nc 端口扫描
nc -w 1 -z [ip] [port]
- nc 聊天消息
nc --chat -lkp 50081
- nc 带认证聊天 (回头再看)
- nc 调试 server,延迟 1s 收发
nc -lkp 50081 -d 1
- nc 让一切命令行拥有 proxy 的能力 (回头再看)
- nc 视频流媒体 ( 在树莓派上可以玩一下 )
- nc 传输文件
1 |
|
关于加密部分的玩法,可以参考 简单好用的加解密工具
nc 只能扫描某一个 ip 下的端口,如果想扫描某个网段,可以使用 nmap,eg: nmap -v -T4 172.20.0.1/16
ls
ls 进行时间排序,可以使用 ls -t
,时间反向排序,可以使用 ls -tr
,也可以使用 sort 进行排序 ls -l | sort -k 8 -n
curl
- 用任意代理
curl --proxy xx://xxx.xx.x.xx:xxxx
find
- 根据文件名搜索
find ./* -name xxxx
- 根据文件名模糊匹配
find ./* -name '*hello*'
- 查找最近 n 天修改过的文件
find -ltime/mtime/atime
- 查找具体某天的文件
find ./* -newermt '2023-01-13' ! -newermt '2023-01-14'
- 找出 3 天”以前”被改动过的文件 72小时之前:
find /var/log/ -mtime +3 -type f -print
- 找出 3 天內被改动过的文件 (0 ~ 72 小时內):
find /var/log/ -mtime -3 -type f -print
- 找出前第 3 天被改动过的文件 (72 ~ 96 小时):
find /var/log/ -mtime 3 -type f -print
grep
- 排除一些文件
grep -v xxx
jq
- shell 对数据结构的处理真的是一言难尽,json 尤其如此
- jq 可以用来提取 json
curl http://xx.com/xx | jq .data
或者jq .data xxx.json
- eg: long.json
1
2
3
4
5
6
7
8
9{
"name": "longalong",
"age": 18,
"friends": [
"long1",
"long2",
"long3"
]
} - 获取 name :
jq .name long.json
- 过滤 数组:
jq '.friends[] | select(. == "long1")'
- 把多个 json 合成为一个数组:
jq -s '.' xx.json xx1.json
- 在使用 curl 时,json 的 data 很难处理,如果有一个长文本,这个长文本的格式有很多奇奇怪怪的东西 (比如 ‘ “
\n
这些),在拼接 data 的时候就可以使用:1
2
3JSON_STRING=$(jq -n --arg description "$(cat "new_release_desc_with_checksum.txt")" '{"description":$description}')
curl -XPUT -H "Content-Type: application/json" https://xx.xx.com -d "$JSON_STRING" - 嗯,上面的方式真的贼拉好用
其他
- 批任务处理工具
- 简单好用的加解密工具
- tcpdump
- 如何把命令行玩花?
- 直接在当前 git repo 下打开仓库页面
git config --get remote.origin.url | sed 's/git@//;s/:/\//;s/\.git$//;s|^|https://|' | xargs -I {} open {}
I know but one freedom and that is the freedom of the mind.
— Antoine de Saint-Exupéry
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!