我正在尝试在 Ubuntu 上使用 shebang 运行 Python 脚本。当我创建一个 python 脚本时
#! /usr/bin/env python
import sys
Run Code Online (Sandbox Code Playgroud)
...并运行它我得到一个shell错误:
root@host:/home/user# ./test.py
: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它工作?
解决方案:使用 dos2unix 从行尾中删除 '\r's。
当我尝试.sh使用 Redhat运行我的文件时./test.sh
我收到类似的错误
[test@tester unix_scripts]$ ./test.sh
: No such file or directory
[test@tester unix_scripts]$
Run Code Online (Sandbox Code Playgroud)
我还设置了文件的权限 chmod 777 test.sh
还是同样的错误
有谁能够帮助我?
我有一个目录,其中包含所有以 .sample 扩展名结尾的自动生成的文件。我想有一种方法可以在一个终端命令中从它们中删除 .sample 扩展名。
我试过这个:
mv ./{$1}*.sample ./$1
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为我肯定将 {$1} 放在错误的位置或方式。任何人都可以指出正确的方向吗?
提前致谢。
我正在尝试 grep 日志文件以仅显示与某个会话 ID 匹配的行。到目前为止,它工作得很好。但是,当我获得 grep 命令的结果时,我没有按照条目出现的顺序获得条目。
如果目录中的日志文件有以下数据:
SESSNUM=4437 login.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 info.jsp
SESSNUM=4437 logout.jsp
Run Code Online (Sandbox Code Playgroud)
我输入:
grep SESSNUM=4437 *
Run Code Online (Sandbox Code Playgroud)
我得到这个信息:
SESSNUM=4437 logout.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 login.jsp
SESSNUM=4437 info.jsp
Run Code Online (Sandbox Code Playgroud)
有没有办法让 grep 按照它们在日志文件中出现的顺序显示匹配的行?
谢谢!
IVR复仇者联盟
我目前正在尝试配置 sphinxsearch。索引大约需要 7 分钟。等得太久了,所以我通常在测试结果之前开始做一些其他的任务。但是我想在索引完成时收到通知 - 你有什么想法?问题还在于会话是通过 ssh 运行的。理想的是一些托盘通知,可以观察终端上最小化或显示在不同虚拟桌面上的变化。
所以我要从 FreeBSD 7.2 升级到 FreeBSD 8.0,过了一会儿我就到了必须重建所有 3rd 方应用程序的部分(来自端口树的内容或从源代码编译的内容)。我这样做,freebsd-update install最后一次调用并重新启动。
事实证明,bash 需要一个旧的 libncurses 版本,这很好,只是我完全忘记了重建 bash!此外,我没有注意保持 root 的默认 shell sh 的通常警告。(就像会发生什么,对吧?哈!)所以我学到了关于注意警告的教训。
但是,现在我需要了解我是否被搞砸了,或者是否有办法摆脱这种情况。谢谢。
我有一台正在运行测试的计算机,有时在测试过程中它会死机。我正在考虑编写一个shell脚本来ping测试机器,如果它挂起重新启动它。
我通过 ssh 进入测试机器并能够重新启动它,但是在挂起期间我没有运气!如何在挂起 ssh 期间重新启动它?
谢谢
规格: mac osx
这是一个我似乎找不到好的答案的问题。
在 Windows/DOS 下,我们被“教导”可以从当前目录启动程序而无需为路径添加前缀。
但是,Linux 的默认行为是您必须为当前目录中的应用程序/脚本添加 ./ 前缀。
人们说允许程序/脚本在没有前缀的情况下执行是一种糟糕的安全做法。有很多“糟糕的安全做法”,但这对我来说没有意义。例如,我不会进入 /some/unfamiliar/directory 并开始执行 ls 之类的程序。我会 cd (进入我的主目录),然后输入 ls -la /some/unfamiliar/directory。当然,在糟糕的一天我会。
如果有人将一个名为 ls 的程序放在一个目录中,并将一个坏的 sysadmin cds 放入该目录并以 root 身份运行 ls 并且 ls 添加一个后门用户和其他邪恶的东西,我可以看到“威胁”。美好的。但是,通常在这种情况下,用户会抱怨“哦 ls 不起作用,您可以检查一下吗?”。我会 sudo su "user" 并尝试 ls 作为他。
除非我完全遗漏了什么,否则添加“。” 你的PATH真的有那么糟糕吗?
编辑:
到目前为止,所有答案都可以指出安全风险 - 但是 - 每个人都错过了 Windows 的论据。在 Windows 下,当前目录不在您的路径中,因此无法禁用仅运行 program.exe afaik 的功能。但是,命令提示符确实接受在命令前面加上 .\ 的能力(.\ 似乎可以工作,但是,您应该使用 \,否则最终可能会出现某种转义序列)。在 Windows 下,我们应该总是在命令前面加上前缀吗?另外,我们是否应该联系微软并告诉他们他们植入这种预期行为是不好的?
我的背景是 Windows,所以我倾向于期望当前目录中的程序能够运行,即使我知道这不是它在 Unix 世界中的工作方式。这就是我提出这个问题的原因。
扩展我关于“不良安全实践”的意思(以及为什么它们用引号引起来)是因为我们可以引用人们应该做的数百万甚至数十亿的安全实践......但我们没有,如果我们这样做了,一个人肯定会发疯。我们是否应该减轻可能干扰用户体验的所有安全风险?我说不,但那是因为我相信安全性应该对用户透明,但我喜欢 haus 在他的回答中的第一句话“与其他任何事情一样,它是一种心态。”。我认为我们应该就此搁笔。
出于某种原因,当我执行以下操作时:
ls --color=auto
Run Code Online (Sandbox Code Playgroud)
结果与:
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
Run Code Online (Sandbox Code Playgroud)
不知道为什么会发生这种情况,我想知道是否有其他人遇到过同样的问题。