在我的脚本中,我向用户发送通知并提示他输入一些数据。之后我想清除之前发送的通知。通知应保留在托盘中,直到用户输入数据。
目前我正在使用notify-send,但只能通过超时才能清除。
我想要的是这样的:
send-notification --title="Hey, enter some data pls" --id=999
prompt-to-enter-data
delete-notification --id=999
Run Code Online (Sandbox Code Playgroud)
我正在使用 linux Mint 20。带有 cinnamon DE (v4.6.6)。
notify-osd未安装。
在 OSX 下安装驱动器时如何运行脚本?
我的用例是,当我的 USB 存储器/硬盘驱动器插入我的 USB 读卡器时,我想从我的 USB 存储器/硬盘驱动器中自动复制图像,当插入 DVD 或 CD 时,我想将其复制以存储在我的媒体中心。
我试过使用马可波罗(如在这个相关问题中提到的),但从我所看到的,它只能检测到某个 USB 设备的存在,而不是特定硬盘驱动器的存在。
使用 shell 脚本,可以判断它何时使用 cron 运行还是手动运行?
更新:
有人问我为什么想知道。我的 cron 作业将被记录,如果有人手动执行它,我希望能够记录它。
使用 file 命令,我需要验证许多文件是 ASCII 还是其他格式
有时我从文件命令中得到:
file1: ASCII English text
Run Code Online (Sandbox Code Playgroud)
有时我从文件命令得到不同的答案
file2: Non-ISO extended-ASCII English text, with very long lines
Run Code Online (Sandbox Code Playgroud)
我真的不确定是否还有其他语法不同的答案
我的问题是:
我编写了以下 ksh 语法来验证文件是否为 ASCII,但我不确定
以下语法是验证 ASCII 格式的最佳语法?
[[ ` file $some_file | grep –c ASCII ` = 1 ]] && print "you have ascii file for sure"
Run Code Online (Sandbox Code Playgroud)
如果有人有其他建议来确定验证 ASCII 格式!,我会很高兴看到
我有一个脚本,我想在每次屏幕解锁时自动调用。Ubuntu 是否为希望这样做的用户提供一些支持?
我试图弄清楚如何操作一个相当大的 Java 程序“prog”。如果我转到它的 /bin/ 目录并配置它的 setenv.sh 和 prog.sh 以使用本地目录和我当前的用户帐户。然后我尝试通过“./prog.sh start”运行它。以下是 prog.sh 的所有相关部分:
USER=(my current account)
_CMD="/opt/jdk/bin/java -server -Xmx768m -classpath "${CLASSPATH}" -jar "${DIR}/prog.jar""
case "${ACTION}" in
start)
nohup su ${USER} -c "exec ${_CMD} >>${_LOGFILE} 2>&1" >/dev/null &
echo $! >${_PID}
echo "Prog running. PID="`cat ${_PID}`
;;
stop)
PID=`cat ${_PID} 2>/dev/null`
echo "Shutting down prog: ${PID}
kill -QUIT ${PID} 2>/dev/null
kill ${PID} 2>/dev/null
kill -KILL ${PID} 2>/dev/null
rm -f ${_PID}
echo "STOPPED `date`" >>${_LOGFILE}
;;
Run Code Online (Sandbox Code Playgroud)
当我实际执行 ./prog.sh start 时,它会启动。但是我在进程列表中根本找不到它。我也不能使用 shell 脚本使用的相同命令手动杀死它。但是我可以说它正在运行,因为如果我执行 ./prog.sh …
运行sha256sum文件夹/文件`返回
711ad4b9939e0e20e591d753103717f40e794babc4129a0670fd342309bec5af *folder/file
Run Code Online (Sandbox Code Playgroud)
我想输出总和旁边的文件名,使其看起来像:
711ad4b9939e0e20e591d753103717f40e794babc4129a0670fd342309bec5af file
Run Code Online (Sandbox Code Playgroud)
我该如何更改输出?
我以一副落下的纸牌的形式编写了一个进度指示器(我妻子的想法)。
它尚未达到最终形式。这是代码:
vdeck="| | | | | "
hdeck[1]="__ | | | |"
hdeck[2]="__ __ | | |"
hdeck[3]="__ __ __ | |"
hdeck[4]="__ __ __ __ |"
hdeck[5]="__ __ __ __ __"
while true
do
clear
echo -n -e "\r$vdeck"
sleep 0.8
for i in 1 2 3 4 5
do
echo -n -e "\r${hdeck[$i]}"
sleep 0.2
done
clear
done
Run Code Online (Sandbox Code Playgroud)
是否可以在没有 hdeck 数组的情况下优化此代码并获得相同的效果?增加'|' 意味着增加“hdeck”数组组合,这不好。
我有一个 ksh 脚本调用:
while read LINE do...
输入已被重定向(未显示),以便它从管道读取输入。
问题是当管道的写入器关闭时, read 返回 false 并退出循环。
我希望它在管道关闭后继续读取(写入过程可能会不时重新启动,导致这种情况)。
我尝试将整个读取 LINE 包装在一个子外壳中并循环遍历整个子外壳,但是 read 在管道关闭后只得到一个空行,而不是像脚本正常启动时那样阻塞直到有更多输入。
我正在尝试创建一个 shell 脚本来接受一个参数并使用它来命名终端选项卡。因此,如果脚本的名称是 tabnm,则 tabnm "test" 应该将当前选项卡重命名为 "test"
这是我的代码:
#!/bin/sh
echo -ne "\e]1;$1\a"
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到了这个输出:
robin@icarus $ sh tabnm.sh test
-ne \e]1;test
如果我直接在 shell 中运行 echo -ne "\e]1;Test\a" ,选项卡将被重命名。