简单脚本问题三!

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
九天星
帖子: 1441
注册时间: 2007-07-14 20:45

简单脚本问题三!

#1

帖子 九天星 » 2016-09-21 11:15

代码: 全选

#!/bin/sh
echo "安装WIN字体"
sudo mkdir /usr/share/fonts/winfonts
sudo cp $HOME/文档/fonts/* /usr/share/fonts/winfonts/
sudo chmod 644 /usr/share/fonts/winfonts/*
cd /usr/share/fonts/winfonts/
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
sudo add-apt-repository ppa:shutter/ppa
sudo add-apt-repository ppa:ole.wolf/rarcrack
sudo apt install rarcrack -y
sudo apt update
sudo apt upgrade
echo "特别软件-安装嗅探工具"
sudo apt install etherape -y
sudo apt install ettercap-graphical -y
sudo apt install wireshark -y
sudo apt install driftnet -y
echo "特别软件-安装无线破解工具"
sudo apt install aircrack-ng -y
sudo apt install reaver -y
sudo apt install htop -y
sudo apt install hydra -y
sudo apt install hydra-gtk -y
echo "特别软件-安装ARP欺骗工具"
sudo apt install dsniff -y
echo "特别软件-安装扫描工具"
sudo apt install nmap -y
sudo apt install zenmap -y
echo "安装文本编辑器"
sudo apt install gvim -y
echo "安装图片视频处理软件"
sudo apt install kolourpaint -y
sudo apt install kazam -y
sudo apt install shutter -y
echo "安装浏览器"
cd /$HOME/文档/linux/
sudo dpkg -i google-chrome-stable_current_amd64.deb
echo "安装远程协助工具"
sudo dpkg -i teamviewer_11.0.57095_i386.deb
rc=$?
if [[ $rc != 0 ]]
then sudo apt-get -f install
fi
echo "安装常用工具"
sudo dpkg -i indicator-netspeed-unity_1.03-precise0_amd64.deb
sudo dpkg -i lantern-installer-beta-64-bit.deb
sudo dpkg -i minidwep-gtk-40420-ubuntu-64bit.deb
sudo dpkg -i wps-office_10.1.0.5672-a21_amd64.deb
sudo dpkg -i xmind-7.5-update1-linux_amd64.deb
rc=$?
if [[ $rc != 0 ]]
then sudo apt-get -f install
fi
cd $HOME/文档/linux/wine-qqintl/
sudo dpkg -i fonts-wqy-microhei_0.2.0-beta-2_all.deb
sudo dpkg -i ttf-wqy-microhei_0.2.0-beta-2_all.deb
sudo dpkg -i wine-qqintl_0.1.3-2_i386.deb
rc=$?
if [[ $rc != 0 ]]
then sudo apt-get -f install
fi
echo "end"
cd ~/
clear
ls
这是一个UBUNTU安装好了之后,实现自动安装常用工具的一个简单脚本。
还有几个问题不明白,请教:
问题一:上述脚本中有三段if语句,那是因为我事先知道在安装这三个软件的时候会提示依赖关系不足,如何在事先不知道会不会出现依赖提示的情况下,让这段脚本在出现依赖关系提示时执行sudo apt-get -f install,做到完全自动化???

问题二:
我想在这段脚本中自动修改/etc/default/grub配置文件中第9行GRUB_TIMEOUT=10 改为GRUB_TIMEOUT=1,在26,27行加入GRUB_GFXMODE=1366x768
GRUB_GFXPAYLOAD_LINUX=keep
这两行,我应该如何实现呢???
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 简单脚本问题三!

#2

帖子 vickycq » 2016-09-21 15:54

九天星 写了:问题一:上述脚本中有三段if语句,那是因为我事先知道在安装这三个软件的时候会提示依赖关系不足,如何在事先不知道会不会出现依赖提示的情况下,让这段脚本在出现依赖关系提示时执行sudo apt-get -f install,做到完全自动化???
如果您不知道哪条 dpkg -i 会出现依赖关系提示,可在每条 dpkg -i 后都收集一个返回值。
最后若所有返回值的和不为零则执行 apt-get -f install

亦可用 apt 安装,当场自动处理依赖

代码: 全选

sudo apt install ./google-chrome-stable_current_amd64.deb
echo "安装远程协助工具"
sudo apt install ./teamviewer_11.0.57095_i386.deb

echo "安装常用工具"
sudo apt install ./indicator-netspeed-unity_1.03-precise0_amd64.deb
sudo apt install ./lantern-installer-beta-64-bit.deb
sudo apt install ./minidwep-gtk-40420-ubuntu-64bit.deb
sudo apt install ./wps-office_10.1.0.5672-a21_amd64.deb
sudo apt install ./xmind-7.5-update1-linux_amd64.deb

cd $HOME/文档/linux/wine-qqintl/
sudo apt install ./fonts-wqy-microhei_0.2.0-beta-2_all.deb
sudo apt install ./ttf-wqy-microhei_0.2.0-beta-2_all.deb
sudo apt install ./wine-qqintl_0.1.3-2_i386.deb
九天星 写了:问题二:我想在这段脚本中自动修改/etc/default/grub配置文件中第9行GRUB_TIMEOUT=10 改为GRUB_TIMEOUT=1,在26,27行加入GRUB_GFXMODE=1366x768
GRUB_GFXPAYLOAD_LINUX=keep

代码: 全选

sudo sed "s/GRUB_TIMEOUT=10/GRUB_TIMEOUT=1/g" /etc/default/grub
sudo sed -i '26iGRUB_GFXMODE=1366x768' /etc/default/grub
sudo sed -i '27iGRUB_GFXPAYLOAD_LINUX=keep' /etc/default/grub
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
九天星
帖子: 1441
注册时间: 2007-07-14 20:45

Re: 简单脚本问题三!

#3

帖子 九天星 » 2016-09-21 18:30

代码: 全选

sudo sed "s/GRUB_TIMEOUT=10/GRUB_TIMEOUT=1/g" /etc/default/grub

这句怎么理解?s,g分别表示什么?我看man也没有类似表示方法
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 简单脚本问题三!

#4

帖子 vickycq » 2016-09-21 18:35

九天星 写了:s,g分别表示什么?我看man也没有类似表示方法
有的
man sed 写了:s/regexp/replacement/
Attempt to match regexp against the pattern space. If successful, replace that portion matched with replacement. The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
更完整的说明参见 https://www.gnu.org/software/sed/manual/sed.html
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
九天星
帖子: 1441
注册时间: 2007-07-14 20:45

Re: 简单脚本问题三!

#5

帖子 九天星 » 2016-09-21 19:21

http://man.linuxde.net/

告诉你一个好网站
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
联系:

Re: 简单脚本问题三!

#6

帖子 zhw2101024 » 2016-09-21 21:01

建议研究一下expect,自动化好帮手 :em05
头像
九天星
帖子: 1441
注册时间: 2007-07-14 20:45

Re: 简单脚本问题三!

#7

帖子 九天星 » 2016-09-23 1:21

vickycq 写了:
九天星 写了:s,g分别表示什么?我看man也没有类似表示方法

经测试,这一行

代码: 全选

sudo sed "s/GRUB_TIMEOUT=10/GRUB_TIMEOUT=1/g" /etc/default/grub
不对!
头像
AutoXBC
帖子: 1744
注册时间: 2007-10-23 12:54

Re: 简单脚本问题三!

#8

帖子 AutoXBC » 2016-09-23 3:36

这个需求应该用 Puppet 做,shell 在这里显得蹩脚
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 简单脚本问题三!

#9

帖子 astolia » 2016-09-23 23:13

九天星 写了:
vickycq 写了:
九天星 写了:s,g分别表示什么?我看man也没有类似表示方法

经测试,这一行

代码: 全选

sudo sed "s/GRUB_TIMEOUT=10/GRUB_TIMEOUT=1/g" /etc/default/grub
不对!
少打了个-i参数而已,你跟下面几行比一下就看出来了。学了这么久,连这点举一反三的能力都没有?
回复