标签: shell

如果达到特定的噪音水平,如何使机器“黑屏”一段时间(作为惩罚)?

我的孩子(4 岁和 5 岁)在电脑上玩游戏时会大喊大叫。我找到了一种有效的治疗方法。当我听到很大的噪音时,我会进入游戏计算机并执行以下操作:

chvt 3;  sleep 15;  chvt 7 
Run Code Online (Sandbox Code Playgroud)

这将在 Linux 上关闭屏幕 15 秒。我告诉他们电脑不喜欢大声喧哗。他们完全相信这一点,并请求计算机原谅。他们变得更安静了,但没有达到我会高兴的程度,所以我需要继续这个教育过程。但是,我并不总是手动执行此操作。

是否可以自动执行此操作?麦克风附在盒子上。如果响度水平超过某个阈值,那么我想运行一个命令。

audio linux shell parental-controls

1567
推荐指数
6
解决办法
16万
查看次数

1557
推荐指数
10
解决办法
130万
查看次数

“源”有什么作用?

$ whatis source
source: nothing appropriate.
$ man source
No manual entry for source
$ source
bash: source: filename argument required
source: usage: source filename [arguments]
Run Code Online (Sandbox Code Playgroud)

它存在,并且可以运行。为什么 Ubuntu 中没有关于它的任何文档?它有什么作用?如何安装有关它的文档?

bash shell documentation

688
推荐指数
10
解决办法
68万
查看次数

每当文件更改时如何执行命令?

我想要一种快速而简单的方法来在文件更改时执行命令。我想要一些非常简单的东西,我会在终端上运行并在我完成处理该文件时关闭它。

目前,我正在使用这个:

while read; do ./myfile.py ; done
Run Code Online (Sandbox Code Playgroud)

然后Enter,每当我将该文件保存在我的编辑器中时,我都需要转到该终端并按。我想要的是这样的:

while sleep_until_file_has_changed myfile.py ; do ./myfile.py ; done
Run Code Online (Sandbox Code Playgroud)

或任何其他简单的解决方案。

顺便说一句:我正在使用 Vim,我知道我可以添加一个自动命令来在 BufWrite 上运行一些东西,但这不是我现在想要的那种解决方案。

更新:如果可能的话,我想要一些简单的、可丢弃的。更重要的是,我想在终端中运行一些东西,因为我想查看程序输出(我想查看错误消息)。

关于答案:感谢您的所有回答!他们都非常好,每个人都采用与其他人截然不同的方法。因为我只需要接受一个,所以我接受了我实际使用过的一个(它简单、快速且易于记忆),尽管我知道它不是最优雅的。

linux unix script shell

549
推荐指数
21
解决办法
43万
查看次数

无需注销即可重新加载 Linux 用户的组分配

使用以下方法分配用户的次要组列表时:

# usermod -G <grouplist> <user>
Run Code Online (Sandbox Code Playgroud)

是否可以在不注销所有正在运行的会话的情况下强制此组分配生效?

这在Screen会话存在许多正在运行的 shell的情况下非常有用,因为本质上需要销毁整个会话才能使组分配生效。

我想我可以使用newgrp命令在正在运行的 shell 中更改用户的主要组- 是否有一些适用于次要组的替代方法?

理想情况下,我想要一些可以在每个 shell 中生效的东西,而无需在每个 shell 中手动运行,但如果失败,可能是某种强制 Screen 在每个 shell 中执行相同命令的方法。

linux debian shell permissions gnu-screen

468
推荐指数
9
解决办法
33万
查看次数

如果文件不存在,如何使 rm 不出错?

我正在编写一个 makefile,它将在编译结束时清理一些无用的文件。如果已经创建了一个目标,它当然会跳过该目标,而无用的文件可能不存在。所以如果我这样做:

rm lexer.ml interpparse.ml interpparse.mli
Run Code Online (Sandbox Code Playgroud)

我可能会收到错误,因为其中一个文件不存在。有没有办法告诉rm忽略这些文件?

在阅读手册页时,我看到以下选项:

 -f          Attempt to remove the files without prompting for confirma-
             tion, regardless of the file's permissions.  If the file does
             not exist, do not display a diagnostic message or modify the
             exit status to reflect an error.  The -f option overrides any
             previous -i options.
Run Code Online (Sandbox Code Playgroud)

这听起来几乎是我想要的,但我不太确定权限部分。有没有办法做到这一点?

shell rm makefile

431
推荐指数
8
解决办法
37万
查看次数

如何完全从终端分离进程?

我在 Ubuntu 上使用 Tilda(下拉式终端)作为我的“命令中心”——几乎就像其他人使用 GNOME Do、Quicksilver 或 Launchy 的方式一样。

但是,我正在努力解决如何将进程(例如 Firefox)与启动它的终端完全分离 - 即防止这样的(非)子进程

  • 关闭始发终端时终止
  • 通过 STDOUT/STDERR“污染”始发终端

例如,为了在“正确的”终端窗口中启动 Vim,我尝试了一个简单的脚本,如下所示:

exec gnome-terminal -e "vim $@" &> /dev/null &
Run Code Online (Sandbox Code Playgroud)

但是,这仍然会导致污染(而且,传递文件名似乎不起作用)。

linux terminal bash shell ubuntu

350
推荐指数
11
解决办法
43万
查看次数

chown 没有改变符号链接

我正在尝试使用以下命令更改符号链接的用户/组:

$ chown -h myuser:mygroup mysymbolic/ 
Run Code Online (Sandbox Code Playgroud)

但它并没有改变。我以 root 身份登录。当前用户/组设置为 root:root。什么地方出了错?

linux root bash shell symbolic-link

349
推荐指数
4
解决办法
34万
查看次数

如果我知道一个进程的 PID 号,我怎样才能得到它的名字?

如果我有一个进程的 PID 号(在 UNIX 机器上),我怎样才能找到其关联进程的名称?

我需要做什么?

linux unix shell process pid

324
推荐指数
5
解决办法
66万
查看次数

在 tmux 中使用鼠标滚动 shell 输出

当我在没有 tmux 的情况下运行 shell(在 Gnome 终端中)时,鼠标滚动在tmux 中不起作用。似乎 tmux 发送鼠标滚动事件就像我按下向上/向下键一样。但我希望它通过 shell输出历史滚动。有没有办法让 tmux 像这样工作?

注意:我知道如何使用键盘滚动(感谢这里的另一个问题)。

我尝试在两个版本的 tmux 中进行鼠标滚动:

shell tmux

319
推荐指数
7
解决办法
20万
查看次数