Questions tagged «scripts»

脚本是写在“纯文本”文件中的一系列指令。脚本解释器(例如Bash或其他Shell,Python,Perl,Ruby等)读取文件并执行指令,就像在命令提示符下输入了指令一样。

3
我的bash脚本应该放在哪里
我有一些非常简单的bash脚本,我将它们整理在一起以完成我经常做的事情。其中之一是运行重复性来执行我的备份任务。只是一堆if..then语句而已。由于这需要以sudo的方式运行,因此最好的做法是将我的脚本放在/ usr / bin(或PATH中的其他位置),chown到root.root,chmod到700?
15 bash  scripts  sudo 


2
是否可以将Ubuntu设置为在脚本完成之前不关闭的方式?
我使用脚本来将btrfs分区从一个磁盘增量备份到另一个磁盘。 该脚本由cron.weekly在每天的随机时间启动。 如果我在脚本运行时关闭了系统,则将遇到麻烦,即删除旧备份而未创建新备份。 有没有一种方法可以将系统设置为等待脚本完成? 我正在将Ubuntu 16.04与systemd一起使用。

5
通过简单的终端方式添加和删除更新通道
我知道Ubuntu中有一个GUI Software & Updates来启用更新通道 更新 提议的 返港 安全 如以下屏幕截图所示: 我正在寻找一种使用以下命令从终端内部执行此操作的简便方法 sudo apt-add-update enable updates sudo apt-add-update enable proposed sudo apt-add-update enable backports sudo apt-add-update enable security sudo apt-add-update disable updates sudo apt-add-update disable proposed sudo apt-add-update disable backports sudo apt-add-update disable security 还有一件事 sudo apt-add-update enable default sudo apt-add-update disable …

4
当本地IP发生更改时,如何运行脚本?
在标记为重复项之前:这与动态DNS或类似内容无关。 我知道每次我的网络上升时如何运行脚本。在这样的目录中添加脚本很简单/etc/NetworkManager/dispatcher.d: #!/bin/bash IF=$1 STATUS=$2 case "$2" in up) logger -s "NM Script up $IF triggered" su rmano -c /home/romano/bin/myscript ;; down) logger -s "NM Script down $IF triggered" ;; *) ;; esac 就我而言,这myscript是一个非常简单的ifconfig -a > ~/Dropbox/myifconfig.txt---之所以使用它,是因为我需要从大学的任何地方了解我的本地IP,并且它会经常变化。 到目前为止,一切正常,系统正常。但不幸的是,此处配置了DHCP,以便在不关闭/关闭接口的情况下更改IP 。在这种情况下,脚本(在逻辑上)不会运行,并且文件不会更新。 我无法使用DynDNS方法,因为更改是在本地 IP中进行的,而不是外部可见的。 我可以通过将脚本放在cron中并每分钟执行一次,或者编写稍微复杂一点的脚本(...如果IP发生更改,则写入文件,否则不执行任何操作),然后再次将其作为后台任务,进行轮询不优雅。所以问题是: 当我的本地IP更改时,有什么方法可以触发脚本? 更新1 我尝试将脚本放入/etc/dhcp/dhclient-enter-hooks.d/基于的脚本中/etc/dhcp/dhclient-enter-hooks.d/resolvconf,但不会被触发。我怀疑(需要确认)NM(网络管理员)自己在进行dhcp协商,而没有调用dhcp命令...


2
如何将bc的结果传递给变量
我正在编写脚本,我想将结果从中传递bc到变量中。我已经声明了2个变量(var1和var2),并给了它们值。在我的脚本中,我希望将结果从bc另一个变量中传递出去,var3以便可以var3用于其他计算。到目前为止,我已经能够将结果写到不是我想要的文件中,而且我已经能够在终端中回显结果,但是我只想暂时将结果传递给变量,以便我可以使用该变量。 echo "scale=2;$var1/var2" | bc

5
命令行档案管理器/提取器
我一直忘记每种压缩格式的所有相应提取命令。 因此,我正在考虑编写仅将文件扩展名映射到适当的extract命令的脚本。但我想类似的东西已经存在,我只是找不到。 我对诸如file-roller之类的东西很满意,但是file-roller是一个GUI工具。

4
通过bash脚本添加用户帐户的正确方法
这是我现在正在使用的脚本代码: getent group $MYGROUP if [ $? -ne 0 ] ; then sudo su -c "groupadd $MYGROUP" fi sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP" 这种方法在openSuse上效果很好。但是它在Ubuntu上创建的用户帐户存在一些问题,因此我在这里寻求帮助。 未设置终端提示(不echo $PS1返回任何内容) 箭头键和Tab键在终端中无法正常工作 密码似乎不起作用(尽管我仍然不清楚这个问题是什么) 不尊重为此新用户设置的/ etc / sudoers权限 相反,如果我使用adduser(而不是useradd)手动创建用户,那么在Ubuntu上就不会出现这些问题。但是我不能adduser在openSuse(afaik)上使用。因此,我需要一个非Debian专有的脚本或通过我的bash脚本添加用户帐户的方法,该脚本可在Ubuntu上运行(并且不会停止在其他发行版上运行)。 最后,我想理解的差异之间adduser和useradd。例如,我想知道使用哪个骨架目录,adduser因为这可能是由于useradd未按预期工作的原因(因为我刚刚接受了默认设置)。 谢谢
15 bash  scripts  users  adduser 

4
使用〜/ .bash_login在登录时运行脚本
我在Ubuntu中登录和注销时需要运行脚本。 我试图将脚本放入我的脚本,~/.bash_login但没有用。 有没有更好的位置可以运行脚本? 我的脚本位于/home/gsd/script/login.sh并且可以执行。 编辑: 我的脚本在我键入时运行:/home/gsd/script/login.sh它用+ x设置 现在,我只有:touch /home/gsd/test.txt在~/.bash_login测试。 永远不会创建文件test.txt 编辑2: gsd@laptop:~$ ll ~/.bash* -rw------- 1 gsd gsd 38639 2012-01-25 17:25 .bash_history -rw-r--r-- 1 gsd gsd 29 2012-01-25 15:22 .bash_login -rw-r--r-- 1 gsd gsd 220 2011-11-03 19:22 .bash_logout -rw-r--r-- 1 gsd gsd 3136 2011-11-04 08:00 .bashrc
15 login  scripts  logout 

2
如何编写由gnome-tweak-tool进行的设置的脚本?
我希望能够从命令行进行配置,因此当我重新安装操作系统时,我可以运行脚本并重新获得我的首选配置。 自从“升级”到Ubuntu 17.10以来,我发现我不得不使用gnome-tweak-tool来获得我想要的设置。 在gnome-tweak-tool GUI中找到设置后,如何找出其可脚本化的翻译? 例如,以下gsettings行与下面的gnome-tweak-tool屏幕截图中的相关条目匹配... gsettings set org.gnome.desktop.wm.preferences titlebar-font "Tahoma Bold 8" gsettings set org.gnome.desktop.interface font-name "Tahoma 8" gsettings set org.gnome.desktop.interface document-font-name "Tahoma 8" gsettings set org.gnome.desktop.interface monospace-font-name "FixedSC 10" ...但是有人会怎么猜呢?例如,如何确定提示和抗锯齿的相应设置?

4
在bash中查找目录路径时如何传递正则表达式?
我已经写了一个小bash脚本找到,如果一个名为anaconda或miniconda在我的用户$HOME。但是它找不到miniconda2我家中的目录。 我该如何解决? if [ -d "$HOME"/"(ana|mini)conda[0-9]?" ]; then echo "miniconda directory is found in your $HOME" else echo "anaconda/miniconda is not found in your $HOME" fi PS:如果我有[ -d "$HOME"/miniconda2 ]; then,那么它将找到miniconda2目录,所以我认为错误在于部分"(ana|mini)conda[0-9]?" 我希望脚本是通用的。对我而言,它是miniconda2,但对于其他一些用户,可能是anaconda2,miniconda3等。

7
如何计算具有特定扩展名的文件及其所在目录?
我想知道.c在一个复杂的大型目录结构中有多少个常规文件具有扩展名,以及这些文件分布在多少个目录中。我想要的输出就是这两个数字。 我已经看到了有关如何获取文件数量的问题,但是我也需要知道文件所在目录的数量。 我的文件名(包括目录)可能包含任何字符;它们可以以.或开头,-并带有空格或换行符。 我可能有一些名称以结尾的.c符号链接,以及指向目录的符号链接。我不希望遵循或计数符号链接,或者我至少想知道是否以及何时对其进行计数。 目录结构具有许多级别,顶层目录(工作目录)中至少包含一个.c文件。 我匆匆在(Bash)shell中编写了一些命令来自己计算,但我认为结果不准确... shopt -s dotglob shopt -s globstar mkdir out for d in **/; do find "$d" -maxdepth 1 -type f -name "*.c" >> out/$(basename "$d") done ls -1Aq out | wc -l cat out/* | wc -l 这会输出有关重定向不明确的投诉,会丢失当前目录中的文件,并使用特殊字符触发(例如,重定向的find输出会在文件名中显示换行符),并写入一大堆空文件(哎呀)。 如何可靠地枚举我的.c文件及其包含的目录? 如果有帮助,可以使用以下命令创建带有错误名称和符号链接的测试结构: mkdir -p cfiles/{1..3}/{a..b} && cd …


6
删除文件中的第一行…sed或tail哪个更快?
在此答案中(如何使用sed删除文件的第一行?),有两种删除文件中第一条记录的方法: sed '1d' $file >> headerless.txt ** - - - - - - - - 要么 - - - - - - - - ** tail -n +2 $file >> headerless.txt 就我个人而言,我认为该tail选项在外观上更令人愉悦且更具可读性,但可能是因为我受到了挑战。 哪种方法最快?
14 scripts  sed  tail 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.