对于 bash 计时器,我使用以下代码:
#!/bin/bash
sek=60
echo "60 Seconds Wait!"
echo -n "One Moment please "
while [ $sek -ge 1 ]
do
echo -n "$sek "
sleep 1
sek=$[$sek-1]
done
echo
echo "ready!"
Run Code Online (Sandbox Code Playgroud)
这给了我类似的东西
One Moment please: 60 59 58 57 56 55 ...
Run Code Online (Sandbox Code Playgroud)
是否有可能用最新的值替换 second 的最后一个值,以便输出不会产生大的轨迹,而是像一个位置的实时秒数一样倒计时?(希望你明白我的意思:))
我有一个 shell 脚本,set -x可以提供详细/调试输出:
#!/bin/bash
set -x
command1
command2
...
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
+ command1
whatever output from command1
+ command2
whatever output from command2
Run Code Online (Sandbox Code Playgroud)
我的问题是,外壳输出(由set -x)前往stderr,用命令的输出(混合command1,command2...)。我很高兴在屏幕上有“正常”输出(比如没有 运行的脚本set -x)和 bash 的“额外”输出分别在一个文件中。
所以我想在屏幕上显示这个:
whatever output from command1
whatever output from command2
Run Code Online (Sandbox Code Playgroud)
这在一个日志文件中:
+ command1
+ command2
Run Code Online (Sandbox Code Playgroud)
(如果日志文件包含所有内容也很好)
该set -x 2> file明明好好尝试采取正确的效果,因为它不是set命令的输出,但它改变的bash的行为。
使用bash 2> file整个剧本还没有做正确的事,因为它重定向在这个shell中运行,以及每个命令的标准错误,所以我没有看到的命令的错误消息。
我想在脚本中使用我的 Internet 服务提供商的名称,但我不知道该怎么做。
请帮助我,提前致谢。
我需要使用 shell 将所有 mp4 文件上传到长度 > 4 分钟的目录中。我找不到任何脚本来检查视频的长度。有人知道该怎么做吗?
非常感谢!
当我第一次使用一个新的 Firefox 配置文件时,我做的第一件事是设置browser.urlbar.trimURLs为false(尽管“首选项”确实应该可以更改或应该保持默认值),并将搜索和主页默认值更改为 DuckDuckGo。目前我手动转到about:config,单击愤怒的警告消息,然后搜索键(与 DConf 编辑器不同,它甚至没有组织)。
所以我想知道如何从命令行读取和写入这些键,以便我可以将这些调整添加到我的自定义脚本中。
我有一个简单的要求。我想定义几个变量,这些变量将对应于我想通过 shell 脚本安装的任意数量的给定包。
示例代码如下:
MISC="shutter pidgin"
WEB="apache2 mongodb"
for pkg in $MISC $WEB; do
if [ "dpkg-query -W $pkg | awk {'print $1'} = """ ]; then
echo -e "$pkg is already installed"
else
apt-get -qq install $pkg
echo "Successfully installed $pkg"
fi
done
Run Code Online (Sandbox Code Playgroud)
一切正常,但逻辑似乎有缺陷,因为它不能可靠地安装我想要的软件包。它要么说它们已经安装,要么正在尝试安装以前已经安装过的软件包。
我也一直在尝试command -v或以下内容:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
Run Code Online (Sandbox Code Playgroud)
即使使用-n和-z标志来检查返回的字符串是否为空。很确定我在这里错过了一些很好的意义。
您知道我可以做些什么来确保实际安装了软件包吗?
谢谢!
我有一些应用程序需要一直在我的笔记本电脑上运行。
我使用 bash 脚本来启动这些应用程序。在我的脚本中,我有一个与此类似的循环:
while true;
do
xterm
done
Run Code Online (Sandbox Code Playgroud)
这将运行一个应用程序(xterm在本例中),如果应用程序崩溃,循环将再次启动它。
这有一个缺点,即该循环没有“干净”的退出。因此,即使用户的意图是 close xterm,循环也会再次启动它。
有没有办法从 bash 脚本启动应用程序,观察它是否正在运行,如果脚本崩溃重新运行它或者如果用户正确关闭它什么都不做?
我想在后台运行一个简单的 python 脚本,从剪贴板读取文本并将其打印出来。这是我的代码。
#!/usr/bin/env python
import Tkinter
last_clipboard = ""
def get_clipboard():
global last_clipboard
root = Tkinter.Tk()
root.withdraw() # Hide the main window (optional)
text_in_clipboard = root.clipboard_get()
if text_in_clipboard != last_clipboard:
last_clipboard = text_in_clipboard
print last_clipboard
while True:
get_clipboard()
Run Code Online (Sandbox Code Playgroud)
这按预期工作,但消耗太多 CPU(100% CPU)。
如何在不消耗那么多的情况下使其正常工作?
在脚本中,第一行应该指定解释器的路径。
但是在 Linux、Unix 或 BSD 的不同服务器上,此路径可能不同。
什么更可取?
#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)
或者
#!/bin/bash
Run Code Online (Sandbox Code Playgroud) 如果我在 Nautilus 中选择一个图标并选择“属性”,我可以单击那里显示的图标。这给了我一个文件选择器对话框来选择一个新的图标图像。
我想通过某种脚本来做到这一点,以便我可以一次将相同的图标分配给许多文件。或者获取图标列表和文件列表并将它们分配给彼此。
有什么办法可以做到这一点吗?bash 或 Python 中的东西会很棒,但我会尽我所能。
请注意:
