Tag: shell

如何使用连接path将两个以上的string合并到文件path中?

如果我想把两个string合并成一个文件path,我使用如下的join-path : $path = join-path C: "Program Files" write-host $path 这打印C:\Program Files" 。如果我想这样做超过两个string: $path = join-path C: "Program Files" "Microsoft Office" write-host $path Powershell引发错误: Join-Path : A positional parameter cannot be found that accepts argument 'Micro soft Office'. At D:\users\ma\my_script.ps1:1 char:18 + $path = join-path <<<< C: "Program Files" "Microsoft Office" + CategoryInfo : InvalidArgument: […]

如何在当前shell中执行命令的输出?

我很清楚source (aka . )实用程序,它将从文件中获取内容并在当前shell中执行它们。 现在,我正在将一些文本转换成shell命令,然后运行它们,如下所示: $ ls | sed … | sh ls只是一个随机的例子,原文可以是任何东西。 sed也是,只是一个例子来转换文本。 有趣的是sh 。 我pipe任何我得到的东西,它运行它。 我的问题是,这意味着启动一个新的子shell。 我宁愿让命令在我的当前shell中运行。 就像我可以做的source some-file ,如果我有一个文本文件中的命令。 我不想创build一个临时文件,因为感觉脏。 另外,我想开始我的子shell与我目前的shell完全相同的特征。 更新 好的,使用反引号的解决scheme当然是有效的,但是当我检查和改变输出时,我经常需要这样做,所以我更喜欢是否有办法将结果转化为结果。 伤心的更新 嗯, /dev/stdin东西看起来非常漂亮,但是,在更复杂的情况下,它不起作用。 所以,我有这个: find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source /dev/stdin 这确保所有.doc文件的扩展名都是小写的。 而顺便说一句,可以用xargs来处理,但那不是重点。 find . […]

我如何获得STDOUT和STDERR去terminal和日志文件?

我有一个将由非技术用户交互式运行的脚本。 该脚本将状态更新写入STDOUT,以便用户可以确定脚本运行正常。 我希望STDOUT和STDERR都redirect到terminal(这样用户可以看到脚本正在工作以及是否有问题)。 我也希望这两个streamredirect到一个日志文件。 我在网上看到了一堆解决scheme。 有些不起作用,而另外一些则非常复杂。 我已经开发了一个可行的解决scheme(我将作为答案input),但是它很笨拙。 完美的解决scheme将是一行代码,可以合并到任何脚本的开始,这两个脚本都将stream发送到terminal和日志文件。 编辑:redirectSTDERR STDOUT和pipe道结果三通工程,但它取决于用户记住redirect和pipe道输出。 我希望logging是傻瓜式的和自动的(这就是为什么我想能够将解决schemeembedded到脚本本身中。)

如何从IDLE交互式shell运行python脚本?

如何从IDLE交互式shell中运行python脚本? 以下引发错误: >>> python helloworld.py SyntaxError: invalid syntax

在sh shell中找不到源命令

我有一个使用sh shell的linux脚本。 我在使用“source”命令的行中出现错误。 基本上看来,“源”并不包括在我的SH shell中。 如果我inputsh并input源码,我会得到: sh: 1: source: not found 我应该明确安装“源”吗? 我有一个sh shell的错误版本吗?

干净的方式从shell脚本启动网页浏览器?

在一个bash脚本中,我需要启动用户的Web浏览器。 似乎有很多这样做的方法: $BROWSER xdg-open 在GNOME上gnome-open gnome www-browser x-www-browser … 有没有一个比其他标准的方式来做到这一点,可以在大多数平台上工作,或者我应该这样做: #/usr/bin/env bash if [ -n $BROWSER ]; then $BROWSER 'http://wwww.google.com' elif which xdg-open > /dev/null; then xdg-open 'http://wwww.google.com' elif which gnome-open > /dev/null; then gnome-open 'http://wwww.google.com' # elif bla bla bla… else echo "Could not detect the web browser to use." fi

对于目录中的文件,只有echo文件名(无path)

如果我用for循环迭代一个目录,我该如何去回应一个文件的文件名? for filename in /home/user/* do echo $filename done; 将拉文件名的完整path。 我只想要文件名。

使用Bash在Linux中设置环境variables

在tcsh ,我有以下脚本工作: #!/bin/tcsh setenv X_ROOT /some/specified/path setenv XDB ${X_ROOT}/db setenv PATH ${X_ROOT}/bin:${PATH} xrun -d xdb1 -i $1 > $2 什么是相当于Bash的tcsh setenv函数? 有没有直接的模拟? 环境variables用于查找可执行文件。

如何将包括隐藏文件在内的所有文件通过*

它一定是一个受欢迎的问题,但我找不到答案。 如何将所有文件通过*包括隐藏文件,以及像这样的父目录: mv /path/subfolder/* /path/ 这将像预期的那样将所有文件移动到父目录,但不会移动隐藏的文件。 怎么做?

Shell脚本:从一个shell脚本中执行一个python程序

我试着用Googlesearch答案,但没有运气。 我需要使用我的超级计算机服务器,但是为了运行我的python脚本,它必须通过shell脚本来执行。 例如,我想job.sh来执行python_script.py 这怎么能做到呢?