Articles of shell

在Linux中运行Python脚本

我试图在Ubuntu上运行一个shebang的Python脚本。 当我创build一个Python脚本 #! /usr/bin/env python import sys …并运行它我得到一个shell错误: root@host:/home/user# ./test.py : No such file or directory 我怎样才能使它工作? 解决scheme :使用dos2unix从行尾删除'\ r'。

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

我目前正在尝试configurationsphinxsearch。 索引需要大约7分钟。 太长等待,所以我通常在testing结果之前开始做其他一些任务。 但是,我希望在索引完成时收到通知 – 您有什么想法? 问题在于会话通过ssh运行。 理想的是一些托盘通知,它会监视在最小化或在不同的虚拟桌面上显示的terminal上的变化。

bash:“set -e”并检查用户是否存在make脚本退出

我正在写一个脚本来安装Bash的程序。 我想退出,所以我添加了set -e到我的脚本的开始。 我必须检查用户是否存在于我的脚本中。 为此,我使用grep ^${USER}: /etc/passwd 。 如果用户存在,脚本正常运行。 但是,如果用户不存在,该命令将退出。 如果后一种情况发生,我不想退出。 相反,我想创build用户并继续我的安装。 什么是使我的脚本继续运行的解决scheme? 我试图将grep的输出redirect到一个variables,但我仍然有同样的问题。

我的服务器上的其他用户?

我从一个人(我不太清楚)购买一台服务器,我想确保以前的所有者没有任何访问了。 这是一个Ubuntu的虚拟服务器,我已经收到pipe理员访问(通过壳)。 我怎样才能知道是否还有其他账户,仍然可以访问我的服务器(例如,仍然存在shell帐户,ftp或其他types的用户帐户)? 如果这些账户存在,我怎样才能删除它们? 最好的问候,詹妮弗

Shell命令删除文件扩展名

我有一个自动生成的文件的目录,所有文件都以.sample扩展名结尾。 我想有一种方法可以在一个terminal命令中删除它们的.sample扩展名。 我试过这个: mv ./{$1}*.sample ./$1 但是这是行不通的,因为我肯定把{$ 1}放在错误的地方或方式上。 任何人都可以指向正确的方向? 提前致谢。

最常见的Unix / Linuxshell

这个问题可能有些天真,但是有没有一个在Unix / Linux用户中最受欢迎的shell? 我以前的公司在tcsh上基本上是标准化的,所以我学到了一个好的或者更坏的,但是我想知道是否应该学习bash,ksh或者其他的,如果这些更常见的话。

Linux(Ubuntu)环境variables,shell和安全性

我试图理解Ubuntu 10.04服务器上运行在Apache下的Web应用程序的安全和环境variables的一些概念。 我有几个应用程序,我想作为一个用户没有shell或密码运行(我明白,这是一个好主意,但我不是专家)。 其中一个应用程序是一个通过系统初始化脚本启动的Web应用程序,另一个是通过sudo和-u开关通过sudo行在特定情况下启动的实用程序。 每个应用程序都需要访问相同的一组环境variables。 我可以修改启动每个应用程序的脚本,并在那里设置环境variables,但是如果环境variables以某种方式为运行应用程序的用户设置,我更喜欢它。 我的问题是: 可以为没有shell的用户设置“每个用户”的环境variables吗? 我读过“ 在Debian上设置没有loginshell的服务的环境variables ”,但给定的解决scheme与修改我的每个应用程序脚本基本相同。 如果我不能为每个用户设置环境variables,那么与给用户一个shell相关的安全风险是什么? 如果有的话,对于这种可能普遍的情况,有什么替代scheme或build议?

从打字稿重新构buildshell会话

有一些工具,如'脚本','屏幕','ttyrec',允许logging内容的会议。 通过devise这些工具logging在pty上显示的所有内容,包括控制字符。 但是,似乎没有解决scheme来删除控制字符,并显示logging的会话的转录本在用户看到。 即使重放程序似乎也不能正确处理多行命令。 我花了一些时间试图为打字稿做适当的parsing,得出结论,事实上在一般情况下是不可能的。 问题是现代terminal模拟器(终结者,xterm,rxvt)function自动换行和shell(bash,zsh)使用它。 事情对于交互式shell进程来说工作得很好,因为它能够保持与terminal的宽度同步,并根据需要调整光标位置。 不幸的是,“脚本”(也就是我所看不到的其他工具)并没有跟踪pty大小变化事件,而这些信息简直就会丢失。 结果是一个渲染打字稿的工具没有足够的信息,不能重构多行命令的外观。 我错过了什么吗? 有解决scheme吗? 我看到以下可能的解决scheme,但是它们都不容易也不完整: 使用shell没有复杂的命令行编辑器(如bourne shell) 总是运行'set -x'on(在bash中会产生大量乱七八糟的命令auto-completion) 修补“脚本”(和“屏幕”)工具来loggingpty大小的变化(在Linux上它可以提供时间信息到stderr已经是合乎逻辑的在那里添加pty大小变化事件) 想出一些狡猾的algorithm来parsing搞砸的打字稿。 例如,在多行命令编辑期间,shell在需要转到另一行时发送CR。 当用户提交命令时,它会发送CR + NL。 不幸的是bash在处理用户的一些Ctrl-U命令时也会发送CR。 从另一个来源获取命令的文本(正在打印在打字稿中),例如从shell历史logging中获取。 但是这需要定制shellconfiguration文件脚本等。

Move-Item命令仅部分成功

我正在运行一个简单的脚本来使用Windows Server 2008 R2的任务计划程序来存档SMDR日志。 脚本的最后一行如下所示 – dir c:\smdr -Filter *.txt | where-object {$_.basename -eq 'SMDR_Log'} | move-item -destination "c:\smdr\ARCHIVED\SMDR_log_$yesterdayString.txt" pipe道中的最后一个cmdlet正确地重命名该文件(将date插入到文件名中),但不会将其移至ARCHIVED文件夹。 如果我在Task Scheduler之外运行这个命令,一切都很好。 目标文件夹的权限没问题。 我可以想出很多方法来解决这个问题,但我真的很想解释为什么文件被重命名,但仍然保留在当前目录中。 导出的预定任务XML <?xml version="1.0" encoding="UTF-16"?> -<Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.3"> -<RegistrationInfo> <Date>2014-07-14T09:34:56.2252628</Date> <Author>DOMAIN\taskadmin</Author> <Description>Aggregates the individual daily call logs into one master log (.csv format)</Description> </RegistrationInfo> -<Triggers> -<CalendarTrigger> <StartBoundary>2014-07-15T00:00:01</StartBoundary> <Enabled>true</Enabled> -<ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> […]

OSX的Terminal.app似乎成为“暂停”,除非我VNC进入Mac

所以我有一些复杂的设置,但让我看看我是否可以简化 我在远程OSX机器上运行单声道应用程序。 这个应用程序偶尔会使单声道运行时崩溃。 有一个恢复shell脚本通过launchctl每2分钟运行一次。 该脚本通过ps ax | grep mono检测单声道死亡 ps ax | grep mono 如果进程已经死了,它会运行下面的applescripts来产生一个新的terminal窗口 osascript -e 'tell app "Terminal" to close every window' osascript -e 'tell app "Terminal" to do script "mono –server myapp.exe' 我在“用户空间”的terminal窗口中运行单声道应用程序的原因是因为应用程序与其他窗口应用程序交互,不能直接从appchecking.sh文件 但是,有时上述过程失败,出现以下错误 $ osascript -e 'tell application "Terminal" to open' 31:35: execution error: An error of type -10810 has occurred. […]