标签: shell

在 Linux 中运行 Python 脚本

我正在尝试在 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。

scripting linux python shell

2
推荐指数
1
解决办法
4107
查看次数

如何在 Red Hat 中运行 .sh 文件?

当我尝试.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

还是同样的错误

有谁能够帮助我?

linux redhat shell command-line-interface

2
推荐指数
1
解决办法
5万
查看次数

windows cmd shell 环境

我经常使用它(cmd),但坦率地说,它的环境很糟糕。没有选项卡,调整窗口大小很痛苦,......等等。

Console2PowerCmd修复了其中一些问题。但是,我仍然很想知道 cmd shell 是否还有其他环境。如果你知道任何,请告诉。

shell windows-command-prompt

2
推荐指数
1
解决办法
521
查看次数

Shell命令删除文件扩展名

我有一个目录,其中包含所有以 .sample 扩展名结尾的自动生成的文件。我想有一种方法可以在一个终端命令中从它们中删除 .sample 扩展名。

我试过这个:

mv ./{$1}*.sample ./$1
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为我肯定将 {$1} 放在错误的位置或方式。任何人都可以指出正确的方向吗?

提前致谢。

unix shell bash terminal

2
推荐指数
3
解决办法
4458
查看次数

按它们出现的顺序从 grep 获取结果?

我正在尝试 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复仇者联盟

shell grep unix-shell

2
推荐指数
1
解决办法
5992
查看次数

如何从长时间运行的 shell 命令发出桌面通知?

我目前正在尝试配置 sphinxsearch。索引大约需要 7 分钟。等得太久了,所以我通常在测试结果之前开始做一些其他的任务。但是我想在索引完成时收到通知 - 你有什么想法?问题还在于会话是通过 ssh 运行的。理想的是一些托盘通知,可以观察终端上最小化或显示在不同虚拟桌面上的变化。

linux unix shell

2
推荐指数
1
解决办法
243
查看次数

被锁定在 FreeBSD 之外

所以我要从 FreeBSD 7.2 升级到 FreeBSD 8.0,过了一会儿我就到了必须重建所有 3rd 方应用程序的部分(来自端口树的内容或从源代码编译的内容)。我这样做,freebsd-update install最后一次调用并重新启动。

事实证明,bash 需要一个旧的 libncurses 版本,这很好,只是我完全忘记了重建 bash!此外,我没有注意保持 root 的默认 shell sh 的通常警告。(就像会发生什么,对吧?哈!)所以我学到了关于注意警告的教训。

但是,现在我需要了解我是否被搞砸了,或者是否有办法摆脱这种情况。谢谢。

freebsd login shell

2
推荐指数
1
解决办法
238
查看次数

在计算机挂起时使用 ssh 重新启动计算机

我有一台正在运行测试的计算机,有时在测试过程中它会死机。我正在考虑编写一个shell脚本来ping测试机器,如果它挂起重新启动它。

我通过 ssh 进入测试机器并能够重新启动它,但是在挂起期间我没有运气!如何在挂起 ssh 期间重新启动它?

谢谢

规格: mac osx

scripting shell

2
推荐指数
2
解决办法
8406
查看次数

将当前目录添加到路径

这是一个我似乎找不到好的答案的问题。

在 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 在他的回答中的第一句话“与其他任何事情一样,它是一种心态。”。我认为我们应该就此搁笔。

security linux shell

2
推荐指数
1
解决办法
3533
查看次数

ZSH `--color=auto` 不起作用

出于某种原因,当我执行以下操作时:

ls --color=auto 
Run Code Online (Sandbox Code Playgroud)

结果与:

ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
Run Code Online (Sandbox Code Playgroud)

不知道为什么会发生这种情况,我想知道是否有其他人遇到过同样的问题。

shell zsh

2
推荐指数
1
解决办法
3259
查看次数