linux 经典的shell 脚本 --总结

运维中 shell 是最基础也是最实用的工具了,使用的好可以帮助我们解决很多问题。以下是一些总结的shell编程题目。

1.  打印1到50之间的随机数,中心周围的正态分布。中间的数字最有可能发生,你越远,它们越少越不常见。

   您可以使用以下命令对此进行测试并观察数字分布: 

     for i in `seq 100000`;

           do echo $[(${RANDOM}%40+${RANDOM}%40)/2+1];

           done | sort -n | uniq -c 

  echo $ [($ {RANDOM}%100 + $ {RANDOM}%100)/ 2 + 1]

    2.  替换文本中的字符串

       说明: -e是脚本函数,它执行搜索和替换,如vi,-i是编辑文件到位

      sed -e 's / dapper / edgy / g'-i /etc/apt/sources.list

     3. 在pastebin.com上下载所有最近上传的贴纸

       elinks -dump https://pastebin.com/archive|grep https | cut -c 7- | sed 's / com / com \ / raw / g' | awk'length ($ 0)> 32 && length($ 0)< 35' | grep -v'messages \ | settings \ | languages \ | archive \ | facebook \ | scraping' | xargs wget

     注意:elinks 是一款linux 下的文本浏览器,所有都以文字显示。具体可以查看百度解释,此处不做详细介绍。

   4. 从当前目录下的* .html和* .htm文件中删除脚本标记

   find ./ - type f \(-iname '* .html'- or -iname '* .htm' \) - exec sed -i '/ <script /,/ <\ / script> / d' '{}' \;

   5. 推送到git目录中的所有(不同)遥控器,而不必将它们组合在一起

  git remote | 而 读线; 做 git push $ line ; DONE

  6. 获取超过50%使用率的分区 ------- 在监控中非常使用,可以用来监控磁盘使用率

            df -h | awk '{a=$5; gsub(/%/,"",a); if(a> 50){print $ 0}}'    

 注意标点符号必须是英文状态下的哦。否则linux  shell 无法识别。

  7.  收听YouTube无线电流媒体

收听YouTube无线电流媒体。我在别名上使用它来轻松进入学习/编程的有点流状态。

 streamlink --player = “cvlc --no-video” “https://www.youtube.com/freecodecamp/live” 720p |&tee / dev / null

8. 监控我的进程组树

 观看"ps --forest -o pid = PID,tty = TTY,stat = STAT,time = TIME,pcpu = CPU,cmd = CMD -g $(ps -o sid = -p $(pgrep -f "<my_process_name >"))"

9. 使用curl和jq获取您的IP地理位置

 curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip)| JQ '.data.latitude,.data.longitude,.data.city_name,.data.country_name'

10. 查找/ var目录中的前10个最大文件(包含子目录和隐藏文件)

 tree -ihafF / var | tr '[]' '' | sort -k1hr | head -10

 11.  将当前环境保存为一堆默认值

  环境| sed 's /\(。*。)= \(。*。)/:$ {\ 1:=“\ 2”} /' > mydefaults.bash

  12. 将VPS磁盘备份到另一台主机

  ssh [email protected] -p22 “cat / dev / sda1 | gzip -1 - ” > vps.sda1.img.gz

   13. 将ArchLinux上安装的软件包从低到高排序

  pacman -Qi | egrep '^(名称|已安装)' | cut -f2 -d ':' | 粘贴 - - | 列-t | sort -nk 2 | grep MiB

  14. 使用sed从文件中删除^ M个字符

  sed 's / \ r // g' <input.txt> output.txt

  15. 仅使用Bash检查主机端口访问:

    s = “ $(cat 2> / dev / null </ dev / null> / dev / tcp / $ {target_ip} / $ {target_port}&WPID = $ !; sleep 3 && kill $!> / dev / null 2 >&1&KPID = $ !;等待$ WPID && echo 1) “ ; s = “ $ {s:-0} ” ; echo “ $ {s} ” | sed 's / 0/2 /; s / 1/0 /; s / 2/1 /'

  16.  网络发现一个

   nmap -sn 192.168.1.0/24 -oG - | awk '$ 4 ==“状态:”&& $ 5 ==“向上”{print $ 0}' |列-t

  17. 显示当前正在使用的网络接口

    路线| grep -m1 ^默认| awk '{print $ NF}'

  18. 创建一个文件并操纵日期

   touch -d' -1 year' / tmp / oldfile

  19. 将所有连接的PulseAudio蓝牙设备切换到A2DP配置文件

尝试将所有音频设备切换到A2DP配置文件以获得最佳音质。适用于始终以HSP / HFP模式供电的蓝牙扬声器和耳机。但请注意,此命令只是GUI的简写,因此它无法修复顽固的BT控制器,使您的设备停留在HSP模式,直到手动重新耦合。

   $(pacmd list-cards | grep'name :' | sed 's /.* <\(。* \)>。* / \ 1 /'); 做 pacmd set -card -profile $ card a2dp_sink; DONE
   20. 检查Web服务器端口80响应头

   curl -I <IPaddress>

  21.  更改用户密码

  echo -e “linuxpassword \ nlinuxpassword” | passwd linuxuser

   22. 检查Web服务器端口80响应头

  echo -e'GET / HTTP / 1.0 \ r \ n \ r \ n' ;)| ncat <IPaddress> 80

  23. 命令shell生成随机强密码

  LEN = 20; tr -dc A-Za-z0-9_ </ dev / urandom | head -c $ {len} | xargs的

   24.  查找和设置时区

   sudo timedatectl set -timezone $(curl -s worldtimeapi.org/api/ip.txt | sed -n 's / ^ timezone:// p'

   25.  对pdf 文件做处理,减小文件大小

   gs -sDEVICE = pdfwrite -dCompatibilityLevel = 1.4 -dPDFSETTINGS = / screen -dNOPAUSE -dBATCH -dQUIET -dColorImageResolution = 600 -dMonoImageResolution = 600 -sOutputFile = output.pdf input.pdf

     26. 使用一些精美的sed正则表达式提取rpm包名称,版本和发行版

     rpm -qa | sed 's / ^ \(。* \) - \([^ - ] \ {1,\} \) - \([^ - ] \ {1,\} \)$ / \ 1 \ 2 \ 3 / ' | 排序| 列-t

  27. 网站递归离线镜像与wget

  wget --mirror --convert-links --adjust-extension --page-requisites --recursive --no-parent www.example.com

   28.  使用curl检查每个URL重定向(HTTP状态代码301/302)

   curl -sLkIv --stderr - https://exemple.com | AWK 'BEGIN {IGNORECASE = 1}; / <位置:/ {打印$ 3}'

  29.  比特币Brainwallet私钥计算器

  bitgen hex 12312381273918273128937128912c3b1293cb712938cb12983cb192cb1289b3 info

  30. 删除包含字符串的所有匹配项,直到下一个空格

    sed 's / linux - [^] * \ {0,1 \} // g' / path / to / file

   31.   du命令没有显示其他已安装的文件系统

   du -h --max-depth = 1 --one-file-system /

  32. 查看bash历史记录中n个最常用的命令

  sort ~/.bash_history|uniq -c|sort -n|tail -n 10|tr -s " "|cut -d' ' -f3- >> ~/.bash_history
  33. 删除.bash_history中同一命令的多个条目,同时保留按时间顺序排列

   要查看已删除重复命令的统计信息: diff --suppress-common-lines -y ~/.bash_history.bak ~/.bash_history|uniq -c|sort -n|tr -s " "|sed '/^ 1/d'|grep '<'

  34. 找到包含最多文件数的前10个目录

find  / - input f!-regex '^ / \(dev \ | proc \ | run \ | sys \)。*' | sed 的@ ^ \(。* \)/ [^ /] * $ @ \ 1 @' | sort| uniq -c | sort -n | tail-n 10

  35. 在一个grep命令中删除注释(甚至是以空格开头的注释),空行(甚至包含空格的行)

  grep -vE '^ \ s *(#| $)' textfile

36. 显示根文件系统的每个目录使用的空间(不包括挂载点/外部文件系统)(并对输出进行排序)

  find / -maxdepth 1 -mindepth 1 - type d - exec du -skx {} \; | sort  -n

37. 显示根文件系统的每个目录使用的空间(不包括挂载点/外部文件系统)(并对输出进行排序)

   find / -maxdepth 1 - type d | xargs -I {} sh -c “mountpoint -q {} || du -sk {}” | 排序-n

38. 在新安装的计算机上找到您可能希望在防火墙中打开的端口

 lsof -i -nlP | awk '{print $ 9,$ 8,$ 1}' | sed 's /.*://' | sort  -u

39. 使用curl检查每个URL重定向(HTTP状态代码301/302

curl -sLkIv --stderr - https://t.co/2rQjHfptZ8 -s:当管道输出到另一个命令时静音输出-L:跟随每个重定向-k:忽略证书错误-I:只请求头-v:是详细的--stderr - :将stderr重定向到stdout https://t.co/2rQjHfptZ8:用于检查管道重定向到grep -i位置的URL:-i:grep目标文本忽略大小写位置:: greps包含“location”的每个字符串:“管道输入awk {'print $ 3'}打印每个用于sed的字符串中的第三列'/ ^ $ / d'

curl -sLkIv --stderr - http://example.org | grep -i location:| awk { 'print $ 3' } | sed '/ ^ $ / d'

40. 使用dd iso到USB并显示进度状态

dd if = / dev / archlinux.iso = / dev / sdb status = progress

41. 显示前十个正在运行的进程 - 按内存使用情况排序

ps aux | sort -nk +4 | tail

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/xingyue0422/article/details/90294485