我的系统上运行了两个 python 程序,它们被称为 programx和 program y。
我想获得 program 的 pid y,但不是x我的 bash 脚本。使用时pgrep python,我得到了他们两个的pid,不知道哪个是哪个。
任何想法如何在 bash 脚本中区分两者之间的区别?
我有一个 shell 脚本在 /home/joey/hello.sh
现在,我想在任何地方执行它,如pwd, cut, sort, grep。
所以,hello.sh虽然我在另一个目录中,但我只是输入。
所以……我做了坏事。在 Cygwin 中,我编写了一个 bash 脚本,它接收两个目录并将其中一个目录的内容复制到另一个目录中。首先,它调用“rm -rf”来删除第二个目录的内容。我不小心在没有提供第二个参数的情况下运行了脚本,看起来 Cygwin 将其视为可怕的“rm -rf /”。
我不确定损坏是什么,我正在尝试对其进行评估。因为它在我停止之前正在运行,所以我看到了很多“权限被拒绝”的消息。
最明显的损坏是我的 C:\cygwin64 文件夹被破坏了。里面只剩下几个空目录。我相信可能有一些按字母顺序排列在 cygwin64 之上的目录被删除,因为我不记得它是列表中的最高目录,现在是。
我的电脑运行 100% 正常,我还没有遇到任何奇怪的事情。我只想知道是否有人对 Cygwin 上的“rm -rf /”有任何经验,以及这是否会像在 Linux 上一样破坏您的整个驱动器。
部分难题在于 Cygwin 的根目录位于 c 驱动器下方,但它包含对“cygdrive”中 c 驱动器的引用。我想知道“rm -rf /”是否真的会彻底删除“/cygdrive”的所有内容,或者是否以某种方式受到保护。
编辑:附带说明,有人知道为什么“rm -rf”与“rm -rf /”相同。我清楚地记得没有提供路径并将该参数留空,所以我不知道为什么它在根目录上调用 rm 。
我依赖 emacs(Debian 上的 24.4.1 版)term和ansi-term模式。它们对我来说通常就像 xTerm 一样工作,但是在运行具有提示(如 node.js 提示或 mongoDB 提示)的交互式程序时,删除一个字符会使整个提示重绘内联。
例如,当我打开节点应用程序并键入TEXT后跟一个退格键时,我看到
jim@achileus:~$ node
> TEXT> TEX
Run Code Online (Sandbox Code Playgroud)
当我输入LONGER STRING后跟 13 个退格时,我看到
jim@achileus:~$ node
> LONGER STRING> LONGER STRIN> LONGER STRI> LONGER STR> LONGER ST> LONGER S> LONGER > LONGER> LONGE> LONG> LON> LO> L>
Run Code Online (Sandbox Code Playgroud)
这个错误在 emacs 中不会发生,shell但我不想使用它。
关于为什么会发生这种情况的任何见解,或有关如何解决它的任何线索?
谢谢!
尝试运行:
dd if=/dev/urandom count=1000
Run Code Online (Sandbox Code Playgroud)
然后一旦完成,按回车键。我正在运行 Debian Sid,我得到:
user@host$ dd if=/dev/urandom count=1000
<lots of random characters, then I hit enter again>
bash: 62: command not found
bash: 9: command not found
bash: c62: command not found
bash: 9: command not found
bash: c62: command not found
bash: 9: command not found
bash: c: command not found
user@host$
Run Code Online (Sandbox Code Playgroud)
这似乎非常不恰当!dd 写入其标准输出如何可能导致该文本最终出现在 Bash 的输入缓冲区中?我对这种情况如何发生以及从安全角度如何将其视为可接受的行为深感困惑。
假设我已经使用 ctrl-z 对一个进程进行了后台处理,例如 VIM。然后我使用以下命令启动一个 xterm xterm &> /dev/null &。如果我只是输入 disown 那么我将丢失我的 vim 进程。相反,我必须键入 xterm 进程的 PID 才能否认它。
有什么办法可以解决这个问题,或者是否有发生这种情况的原因?
我想要实现的是将正常消息和错误消息重定向到一个文件。还要将错误信息打印到控制台(只有错误信息)。
重复项已经关闭,但这还不够(我觉得我必须经常输入命令)。
假设我有 2000 条bash历史记录和一个我过去经常使用(n多次)但最近不使用的命令,现在我想再次使用。假设此命令位于历史记录中最旧的位置,并且将在下一次非重复命令执行后被逐出。我希望保留此命令,并将最旧的命令(使用计数 < n)从历史记录中逐出。
有人可能会争辩说,这使得bash历史不再是(线性)历史。我同意,但不在乎,因为我想轻松访问我最喜欢的命令(自动收集)。
我bash在 Ubuntu 15.10 上使用4.3.42。
我需要实现一些配置 - 如果我的系统上有人bash以任何形式(交互式、非交互式和bash -c表单)调用命令,我需要执行一些代码。例如,这是我想添加到每个 bash 调用的命令:
touch /tmp/$RANDOM
我添加了该行/bash/bash.bashrc,它适用于登录外壳和外壳,通过调用bash命令初始化。
但这不适用于像这样初始化的 bash 会话:
bash -c 'echo 1' - 不会创建新文件
从技术文档我明白,bash.bashrc并bash_profile呼吁仅用于登录或交互式shell。有没有办法为非交互式 shell 创建一些类似的调用?
现在有很多命令行工具(或工具套件)使用命令行界面,这样每个命令都以应用程序/工具的名称开头,后跟一个空格和几个可用的“子命令”之一。例如,Git 有许多不同的子命令:“git status”、“git init”、“git fetch”、“git commit”等。
我能想到的其他一些也使用这种模式的项目是:
这远不是一个全面的清单。
不使用此模式的命令行应用程序的一些示例(但如果设计略有不同):
我的问题是“是否有专门用于这种‘子命令’风格的命令行界面模式的名称,如果有,它是什么?”
bash ×10
linux ×4
command-line ×3
bashrc ×1
cygwin ×1
emacs ×1
git ×1
history ×1
job-control ×1
pid ×1
python ×1
shell ×1
shell-script ×1
terminal ×1