Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。


4
/ bin / etc / lib64 / root / sbin在su时被mv文件夹删除或移动/ * / *
操作系统是Centos 6.5 64位 我下载了一个tar文件,并想将其解压缩mv。 我解压了,然后意外地(以root身份)运行,mv folder/* /*而不是mv folder/* .bash表示它无法覆盖某些文件,然后要求其他人允许。我按Ctrl键退出。 我没有打开终端会话,但是退出了su。 现在,我已经无法访问大多数shell命令,无法访问ls任何目录,也无法返回su。 Web服务器和服务似乎仍在运行。我只能运行很少的命令,它cd是其中之一,当我尝试执行时cd,/etc或者/bin它出现错误no directory found。 编辑只注意到从丢失的所有文件夹/(bin,etc,lib64,root,sbin)得到搬到/var目录,我试过/var/bin/su和得到: -bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
11 shell  centos 

3
如何使用不同的参数重复执行命令?
我在Ubuntu上。我复制了一些参数(以换行符分隔),可以使用xsel这样打印出来 $ xsel arg1 arg2 arg3 arg4 ... 现在,我想将这些参数中的每一个用于另一个命令,并在有参数的情况下执行该命令。 所以我尝试了 $ xsel | mycommand "constantArgument" $1 但是,此操作mycommand仅对第一个参数执行。如何为每个参数执行它?


6
半异步管
假设我有以下管道: a | b | c | d 我如何可以等待完成c(或b)在sh或bash?这意味着该脚本d可以开始任何时间(和它不是必须等待),但需要完整的输出c正确地工作。 用例是difftool用于git比较图像的。它由调用,git并需要处理其输入(a | b | c部分)并显示比较结果(d部分)。呼叫者将删除a和所需的输入b。这意味着在从脚本返回之前,进程c(或b)必须终止。另一方面,我不能等待,d因为这意味着我正在等待用户输入。 我知道我可以将的结果写入c一个临时文件,或者在中使用FIFO bash。(不过,不确定FIFO是否会有所帮助。)在没有临时文件的情况下是否可以实现此目的sh? 编辑 如果我能以可靠的方式找出c(或b)进程的进程ID,也许就足够了。然后整个管道可以异步启动,我可以等待进程ID。遵循以下原则 wait $(a | b | { c & [print PID of c] ; } | d) 编辑^ 2 我已经找到了解决方案,欢迎提出评论(或更好的解决方案)。
11 bash  shell  pipe  fifo 

1
清除bash中的旧提示行以节省滚动空间
我的终端主题曾经是这样, 但是我认为提示浪费了很多空间。后来我有了一个主意,每次运行命令时都可以清除提示。我正在使用bash,解决方案之一是使用该preexec_invoke_exec功能。 我使用以下命令清除最后一个提示字符: echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m" 这样终端很干净 但是现在我的问题是,如果我想在一行中使用多个命令(例如,当我使用)时会出现问题for i in ...。 这是我的.bashrc中函数的完整版本, preexec () { echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"; echo -n "$1"; echo -ne " \033[37;2m["; echo -n "$2"; echo -ne "]\033[0m\n"; } preexec_invoke_exec () { [ -n "$COMP_LINE" ] && return # do nothing if completing [ "$BASH_COMMAND" …
11 bash  shell  terminal  prompt 

2
具有流程替代的输出订单
这是我通常在文件上运行grep而wc无需扫描两次的工作 <file.txt tee >(grep LITERAL) >(wc -l) >/dev/null 但是,这产生了 EXEC LITERAL 32 有时和 32 EXEC LITERAL 在其他时间。(第一个实例的输出grep先wc于,第二个实例的反之亦然。) 另一方面,带有重定向和文件描述符 { { <file.txt tee /dev/fd/3 | grep LITERAL >&4; } 3>&1 | wc -l ;} 4>&1 我总是似乎得到 EXEC LITERAL 32 我更喜欢输出顺序是可预测的,但是第二种方法可以保证吗?

3
将所有命令的输出重定向到文件,而不仅仅是最后一个
我想向带有回显的文件添加标头,然后使用命令创建文件的其余部分。这意味着我将使用两个单独的命令。 如何将两个命令的输出写入具有重定向的文件? 我试过了 echo "header line" | cut -c 1-5 input_file > output_file echo "header line"; cut -c 1-5 input_file > output_file 这只会重定向cut命令的输出。 以下命令有效,但感觉笨拙: echo "header line" > output_file; cut -c 1-5 input_file >> output_file 解决我的问题的聪明方法是什么?

4
如何安全地“组合”由多个程序打印的行?
假设我要并行执行多个程序,并将它们的输出组合到一个管道中: sh -c ' (echo qqq; echo qqq2; echo qqq3)& (echo www; echo www2; echo www3)& (echo eee; echo eee2; echo eee3)& wait; wait; wait' 这种shell方法在这种简单情况下效果很好,但我希望如果程序以缓冲方式输出越来越长的行,则它会失败,例如: qqq qqwww q2 qqq3www2 wwweee3 eee2 eee3 我被提示使用的解决方案之一是tail -f: tail -n +0 -q -f <(echo qqq; echo qqq2; echo qqq3) <(echo www; echo www2; …

2
Shell功能`>(tee tee copyError.txt>&2)的名称是什么?
我需要将stdout和stderr登录到日志文件,但只在屏幕上显示错误消息。我可以这样做: cp -rpv a/* b 1> copyLog.txt 2> >(tee copyError.txt >&2) 这是我在网络上找到的。 我只想知道这>(tee copyError.txt >&2)东西叫什么?我无法使用Google搜索,因为Google会忽略尖括号和括号之类的字符。
11 bash  shell 

2
`kill -p`真的有效吗?
在它的手册页中kill,内容如下 概要 kill [ -s signal | -p ] [ -a ] [ -- ] pid ... kill -l [ signal ] -p Specify that kill should only print the process id (pid) of the named processes, and not send any signals. 但是,由于我在RH和RHEL中都尝试了很多次,所以命令像kill -s SIGHUP |-p 123从未使用过,总是报告错误 bash:-p:找不到命令 我有没有犯错?

5
进程结束或被杀死时,是否可能获得SMS /文本消息通知?
有些脚本将在服务器进程完成后发送电子邮件。 但是,我不想经常检查我的电子邮件,只是为了查看工作是否完成。因此,我想收到一条短信。 我的问题与此类似,只是与所有出现的“电子邮件”交换SMS:是否有一个程序可以在过程完成时向我发送通知电子邮件? 您能想到任何解决方法/应用程序/脚本/在工作完成(或过早结束)时能够发送SMS的任何方法吗?



2
等待X窗口出现/消失(以理智的方式)
在shell脚本中,我需要等待标题上带有字符串的窗口出现,执行一些操作,然后等待它消失,然后执行其他操作。 直到昨天,我才有了这个简单的代码。这样做的问题是,脚本保持运行状态时,无法将磁盘置于省电状态,并且可能会持续多个小时: while :; do until wmctrl -l | grep -q "$string"; do # until sleep 0.5 done : do action 1 while wmctrl -l | grep -q "$string"; do # while sleep 0.5 done : do action 2 done 自从我确定所提到的代码疯狂地唤醒磁盘以来,我浏览了一些命令行工具的文档,并决定xdotool等待窗口出现,并xprop确定窗口何时消失: while :; do # we use `until' because sometimes …
11 bash  shell  python  window 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.