我有一个绑定CTRL+ ALT+的应用程序F7,但我的 linux 机器似乎可以捕捉到击键。
有没有办法重新绑定/禁用此密钥?重新编译内核是可以接受的答案。
有问题的发行版是 Fedora 16 和 Ubuntu 11.10。
我有包含多个命令的脚本。如何将命令分组在一起运行(我想制作几组命令。在每个组内,命令应该并行运行(同时)。这些组应该顺序运行,等待一组完成后再开始下一组)...即
#!/bin/bash
command #1
command #2
command #3
command #4
command #5
command #6
command #7
command #8
command #9
command #10
Run Code Online (Sandbox Code Playgroud)
我怎样才能每 3 个命令运行一次?我试过:
#!/bin/bash
{
command #1
command #2
command #3
} &
{
command #4
command #5
command #6
} &
{
command #7
command #8
command #9
}&
command #10
Run Code Online (Sandbox Code Playgroud)
但这不能正常工作(我想同时并行运行多组命令。另外,我需要等待第一组完成后再运行下一组)
脚本退出并显示错误消息!
shell shell-script process-management background-process wait
Ubuntu 的do-release-upgrade命令将操作系统升级到最新版本。Debian 出于相同目的(升级到最新的稳定版本)的方式或工具是什么?
我在“admin”组中有 3 个用户A、B和C。我有另一个用户“ D ”,在其主目录中有一个project文件夹。我已将D设为该文件夹的所有者,并使用chgrp. 组和所有者拥有所有权限,但A、B或C仍然无法访问该文件夹。我有两个问题:
其他用户甚至可以访问其他用户目录中的任何内容吗
授予组权限只会使该组中的用户可以访问任何用户主目录之外的文件?
编辑:这是我设置项目所有者和组的方式
sudo chown -R D project
sudo chgrp -R admin project
Run Code Online (Sandbox Code Playgroud)
我在尝试进入D主目录中的project文件夹时出错(以A身份登录)
cd /home/D/project
-bash: cd: /home/D/project: Permission denied
Run Code Online (Sandbox Code Playgroud)
这是ls -la命令的输出:
drwxrwsr-x 7 D admin 4096 Nov 18 13:06 project
Run Code Online (Sandbox Code Playgroud)
以下是该组的描述admin:
getent group admin
admin_users:x:501:A,B,C
Run Code Online (Sandbox Code Playgroud)
另请注意,admin当我groups从用户D键入时未列出组,但在我使用cut …
我试图以这样一种方式处理 SIGINT/CTRL+C 中断,如果用户不小心按下了 ctrl-c,他会收到一条消息提示,“你想退出吗?(y/n)”。如果他输入 yes,则退出脚本。如果否,则从中断发生的地方继续。基本上,我需要 Ctrl-C 与 Ctrl-Z/SINTSTP 类似,但方式略有不同。我尝试了各种方法来实现这一点,但没有得到预期的结果。以下是我尝试过的几个场景。
情况1
脚本:play.sh
#!/bin/sh
function stop()
{
while true; do
read -rep $'\nDo you wish to stop playing?(y/n)' yn
case $yn in
[Yy]* ) echo "Thanks for playing !!!"; exit 1;;
[Nn]* ) break;;
* ) echo "Please answer (y/n)";;
esac
done
}
trap 'stop' SIGINT
echo "going to sleep"
for i in {1..100}
do
echo "$i"
sleep 3
done
echo "end of sleep"
Run Code Online (Sandbox Code Playgroud)
当我运行上面的脚本时,我得到了预期的结果。
输出:
$ play.sh
going to sleep
1 …Run Code Online (Sandbox Code Playgroud) 我会得到像 2743410360.320 这样的值,我想要像 2743410360 这样的值给一个变量。
我试过
INTValueOfGB=$ echo "($gb+0.5)/1" | bc
Run Code Online (Sandbox Code Playgroud)
但我越来越 (standard_in) 1: syntax error
在 Archlinux 中,我可以打开一个包,它只是一个.tar.xz.,然后阅读.PKGINFO文件以找出我下载的软件版本。
但是,如果我有一个mysoftware-unstable.deb文件,则不清楚我必须在哪里查看才能知道版本(或者是否可以阅读它)。
请注意,我没有 Ubuntu,也没有apt-get诸如此类,我只有一个.deb文件。
在 OSX 上,我正在构建一个函数来验证日期格式,然后将它们转换为纪元时间。该函数应验证日期是否为以下格式之一,如果不是错误: 01/01/1970 10:00PM或10:00PM(%m/%d/%Y %I:%M%p或%I:%M%p)
功能
checkTIME () {
local CONVERT_CHK_TIME="$1"
if [[ "$CONVERT_CHK_TIME" =~ ^(0[0-9]|1[0-2]):[0-9][0-9](AM|PM)$ ]]; then
CONVERT_TIME="$(date -j -f "%I:%M%p" "$CONVERT_CHK_TIME" "+%s")"
elif [[ "$CONVERT_CHK_TIME" =~ (0[0-9]|1[0-2])\/([0-2][0-9]|3[0-1])\/\d{4}\s[0-9][0-9]:[0-9][0-9](AM|PM) ]]; then
CONVERT_TIME="$(date -j -f "%m/%d/%Y %I:%M%p" "$CONVERT_CHK_TIME" "+%s")"
else
echo "ERROR!"
exit 1
fi
}
Run Code Online (Sandbox Code Playgroud)
它目前工作正常,10:00PM但在我尝试时无法匹配01/10/2017 10:00PM
我这样称呼它:
./convert '01/10/2017 10:00PM'
...
...
+ [[ -n 01/10/2017 10:00PM ]]
+ checkTIME '01/10/2017 10:00PM'
+ local 'CONVERT_CHK_TIME=01/10/2017 10:00PM'
+ [[ …Run Code Online (Sandbox Code Playgroud) 我.sh在我的主目录中编写了一个带有扩展名的简单脚本,我可以直接在我的主目录中运行该脚本,但我想从我所在的每个目录运行该脚本。我该怎么办?
我只询问与文件中的传统输入重定向具有类似效果的用法。
<<<"$(<file)"
Run Code Online (Sandbox Code Playgroud)
据我所知相当于
<file
Run Code Online (Sandbox Code Playgroud)
在我看来,这些在功能上是等效的。在低级别看来,<<< here 文档实际上可能会导致更多的数据副本一次在内存中。
我知道 bash 和 zsh 中都存在这种类型的重定向,但我不熟悉它的实现方式,尽管我看到 zsh 联机帮助页包含一些实现细节。
我运行了一个脚本(作为 cronjob),它会在执行 Rsync 作业并将列表通过电子邮件发送给我之前列出文件夹中的文件。如何添加主题行。
find /path/to/folder/ -type f -size +1M -name "*.mov" -printf "%f\n" | ssmtp my_email@domain.com
Run Code Online (Sandbox Code Playgroud)
我用 -s "Subject" 试过这个,但没有运气。仅当我将主题放在文本文件中并调用此文本文件时才有效
find /path/to/folder/ -type f -size +1M -name "*.mov" -printf "%f\n" | my_email@domain.com < /path/to/file/subjectline.txt
Run Code Online (Sandbox Code Playgroud)
但是它不会在消息中添加搜索结果。
关于我做错了什么的任何想法,
巴斯
shell 变量保存一个路径。如何获得它的文件名部分?
在bash(1)中,我试验了一下,发现用."${i/*\///}"where iis环境变量名就可以了。这种方法不仅难看,而且在路径不包含任何/字符的情况下也是错误的。
我将演示一个需要此类功能的实际案例。假设我们要为源目录中的每个 PDF 文件建立一个指向当前目录的符号链接。
$ for i in /source/path/*.pdf; do\
ln -s "$i" ."${i/*\///}"; \
done
Run Code Online (Sandbox Code Playgroud) shell ×3
shell-script ×3
bash ×2
variable ×2
apt ×1
aptitude ×1
basename ×1
bc ×1
console ×1
conversion ×1
cron ×1
date ×1
deb ×1
debian ×1
dist-upgrade ×1
filenames ×1
find ×1
git ×1
group ×1
interrupt ×1
linux ×1
osx ×1
permissions ×1
security ×1
signals ×1
ssmtp ×1
trap ×1
tty ×1
upgrade ×1
wait ×1
x11 ×1
zsh ×1