Questions tagged «scripts»

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


3
强制终端命令返回代码“坏”(不是0)?
我有一个用python编写的框架,出于测试目的,我基本上想做一个子进程(又称shell调用)……应该简单地返回RC!= 0。或运行“退出1”;但是由于某种原因,这些文件已翻译为FileNotFoundError。 因此,我还能做些什么来触发返回代码!= 0(以“可靠”的方式;这意味着该命令不应在将来的某个时间点突然返回0)。 我以为“搜索”一个称为退出的二进制文件,但是: > /usr/bin/env exit /usr/bin/env: exit: No such file or directory

1
电源插入或拔出时如何运行脚本?
由于某些原因,当我插入或拔出电源时,笔记本电脑的屏幕亮度不会更新。我已经看过很多解决该问题的方法,但是似乎都没有一个很好的方法。因此,我没有失望而放弃,而是决定尝试将其转变为一种学习体验,看看我是否无法编写一个为我做的脚本。 我当然尝试在互联网的帮助下自己弄清楚这个问题,但是对于bash脚本和Ubuntu来说,我还很陌生,所以我走得很远。 我能弄清楚的是,我能找到电池的状态与 $ upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E "state" state: charging/discharging 取决于是否插入了AC适配器。我不知道它是否有用,但这还是很酷的,而且我以前也不知道如何使用grep,因此学习到底是一件很有趣的事情。 无论如何,有没有一种比较干净的方法来做到这一点?所谓“干净的方式”,我只是指的是一种可以理解bash脚本经验有限的人的方式。 我发现一个很好的答案是这个类似的问题,它说如下: 插入/拔出交流适配器时,脚本中的脚本/etc/pm/power.d会使用>参数调用:“ true”(如果使用电池供电)或“ false”(如果使用电源>适配器运行)。 问题是我不知道如何从脚本中访问该参数。因此,我想这全都归结为一个非常简单的问题,但是我认为无论如何如果人们有更好的解决方案,我还是会发布该问题。

3
如何将文件名重命名为不同的编码?
我file name在reiserfs安装的硬盘驱动器上有3种编码类型:CP1251,KOI-8,UTF-8和ASCII。我确实需要递归将所有编码转换为UTF-8。是否有任何实用程序可以检测源编码并将其转换为UTF-8,还是我必须编写Python脚本?

2
如何通过Dash将命令行参数传递给脚本?(14.04)
我最近问了有关向Dash添加shell脚本的问题: 在14.04中,如何在不打开终端的情况下运行编写的bash脚本? 效果很好。 后续问题:如何通过Dash传递命令行参数?示例:在这种情况下,我的破折号命令名为“ Panel”。该脚本在我的屏幕上显示了8个终端。这是用法示例: panel # Tile the screen with 8 terminal windows. panel --left # Tile the left side with 4 terminals panel --right # Tile the right side with 4 terminals 等等。如何传递类似--left或--right通过Dash的参数?理想情况下,我想拥有以下工作流程: 按超级键 类型panel --left(例如) 破折号消失,左侧被镶板。 现在,它运行正确的脚本,但忽略--left。 提示?

2
Ubuntu相当于CentOS的成功/失败
CentOS中的许多服务如下所示(分别为绿色和红色): $ sudo service blah start Starting blah: [ OK ] $ sudo service notrunning stop Stopping notrunning: [FAILED] 发生这种情况是因为这些/etc/init.d脚本使用/etc/rc.d/init.d/functions称为success和的实用程序脚本failure。这是/etc/init.d/sshdCentOS中的片段: echo -n $"Starting $prog: " $SSHD $OPTIONS && success || failure 我的问题是:是否有Ubuntu等效产品?我可以复制这些脚本,但是它们比您想象的要复杂得多,如果不需要,为什么还要重新发明轮子呢?

3
如何在Unity登录/注销上运行脚本?
我有两个脚本-一个用于通过SSHFS挂载一些文件夹的脚本-一个用于卸载的脚本。 我想在启动默认的Ubuntu桌面时(在图形控制台登录后)启动安装脚本,而当我从工具栏右上角的齿轮“注销...”时启动卸载脚本。桌面。 请有人能告诉我如何实现吗?在桌面启动/退出时运行命令最方便/最标准的钩子是什么?

3
在Shell脚本中评估字符串
我正在遵循此bash shell脚本指南: http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html 在“数字比较”部分中,引用了一个示例: anny > num=`wc -l work.txt` anny > echo $num 201 anny > if [ "$num" -gt "150" ] More input> then echo ; echo "you've worked hard enough for today." More input> echo ; fi 上面发生的事情是,我们在bash变量中存储了一串命令,然后在该变量上调用echo。似乎发生的事情是对字符串求值并执行wc命令并将行数返回到控制终端。 好的,所以我在Ubuntu 12.04中启动终端并尝试类似的操作: $ touch sample.txt && echo "Hello World" > …


2
使用contab使用bash脚本创建Screen会话
我希望每次服务器启动时都运行一个.jar文件(我们使用的是VPS),因此我使用crontab -e,然后添加来编辑crontab @reboot bash /home/bash/startserver.sh。但是我什至还没有达到脚本可以工作的地步。 这是我的脚本: #!/bin/bash screen -S bukkit cd $HOME/server java -jar bukkit.jar 我需要使用的原因screen是,当我启动bukkit.jar时,它将进入控制台,在该控制台中,我可以为该程序输入更多命令(不过,我确信您对该站点上的Minecraft及其服务器都非常熟悉。 ,哈哈),但我需要能够在运行时以root用户的身份对其他程序执行其他命令,甚至关闭我的PuTTY会话。 唯一的问题是,运行此脚本时,它将创建一个屏幕会话,但是ID 为,因此ID 未在中列出screen -ls。相反,我必须去/run/screen/S-root查找ID,然后screen -X -S $name quit在其上使用典型的ID 。 也许这甚至是不可能的,或者实际上有一个更简单的方法可以做到这一点(我想更简单),但是我不知道为什么这不起作用。并且如果可行,screen -S bukkit在运行bash脚本时是否可以重新加入会话?(我想有多个问题,但是非常感谢您的帮助!(括号))

2
Oneliner命令使用kill给定的TCP端口号代替PID?
我经常做 sudo netstat -lpn |grep :8088 查看输出 tcp6 0 0 :::8088 :::* LISTEN 11189/java 然后 sudo kill -kill 11189 我想有一个更方便的命令,就像killatport 8088该命令使用tcp端口号作为变量,并且可以将其用作执行所需功能的管道的别名,但是如何从输出和管道中获取PID它对kill命令?我想我也许可以使用awk从netstat的输出中获取PID,但是我该如何维护并精确匹配端口,以使输入80与8080不匹配?我应该改为使用C程序吗?还是已经有一个像这样的小工具?

1
为什么将$ 0设置为-bash?
第一个登录进程名称似乎设置为-bash,但是如果我使用subshel​​l,它将变为bash。例如: root@nowere:~# echo $0 -bash root@nowere:~# bash root@nowere:~# echo $0 bash -bash 导致某些脚本失败,例如 . /usr/share/debconf/confmodule exec /usr/share/debconf/frontend -bash Can't exec "-bash": No such file or directory at /usr/share/perl/5.14/IPC/Open3.pm line 186. open2: exec of -bash failed at /usr/share/perl5/Debconf/ConfModule.pm line 59 有人知道为什么$0设置为-bash吗?

1
如何在Ubuntu 13.04中将自定义键盘快捷方式链接到bash脚本?
作为Ubuntu 13.04用户,我自己也遇到了这个最新版本的Ubuntu的各种问题和不兼容性。其中之一是,在我安装了一些软件包之后,“系统设置->亮度和锁定”选项卡的亮度栏突然消失了(我真的不记得它是什么)。我发现一种解决方法是使用xbacklight。 作为我自己的练习,我编写了一个简短的脚本,以便使用来自终端的xbacklight轻松地增加和减少亮度。该脚本是可执行文件(具有执行权限),是一个包含在我的.bashrc文件中$ PATH中的目录,并链接至别名(“ blup”增加,“ bldn”减少屏幕亮度)。因此,我的两个别名(blup / bldn)在终端线路上工作正常。接下来,我想将它们链接到一些键盘快捷键(例如F2 / F3)。我是在“系统设置->键盘->快捷方式->自定义快捷方式”中执行此操作的,但是它不起作用。 为什么? 此外,是否有一种方法可以“发现”在哪里以及如何执行其他(非自定义)键盘快捷键命令?例如,上调音量的快捷键执行的是什么终端线,连接到什么别名(如果有)以及它们放在什么目录下(/ usr / bin,其他...)? 作为脚本编写的新手,我将不胜感激! 谢谢 PS1当然,只需将一个命令“ xbacklight -inc / -dec 10”粘贴到自定义键盘快捷键上,它将正常工作。我只是想抓住机会,对脚本的编写和执行有更多的了解。 PS2我的问题与以下问题不同:如何使用键盘快捷键启动bash脚本?,即我不将'〜/'用作'/ home / user /'。


3
让用户仅使用GUI(隐藏终端)为bash脚本输入密码的正确方法
我制作了一个bash脚本,专门使用kdialog与用户进行交互。它是从“ .desktop”文件启动的,因此用户永远不会看到终端。它看起来100%像一个GUI应用程序(即使它只是一个bash脚本)。它仅在KDE(Kubuntu 12.04)中运行。 我唯一的问题是安全,方便地处理密码输入。我找不到令人满意的解决方案。 该脚本旨在以普通用户身份运行,并在首次需要sudo命令时提示输入密码。这样,大多数不需要sudo权限的命令都以普通用户身份运行。发生的情况(从终端运行脚本时)是提示用户输入一次密码,并且默认的sudo超时允许脚本完成,包括所有其他sudo命令,而无需再次提示用户。这也是我希望它也可以在GUI后运行的方式。 主要问题是使用kdesudo启动我的脚本(这是标准的GUI方式)意味着整个脚本由root用户执行。因此,文件所有权分配给了根用户,我不能~/在路径中依赖它,而其他许多事情都不理想。以root用户身份运行整个脚本只是一个非常不令人满意的解决方案,我认为这是一个不好的做法。 我非常感谢让用户通过GUI一次输入sudo密码而不以root身份运行整个脚本的任何想法。谢谢。
8 bash  scripts  sudo  gui  kde4 

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.