Questions tagged «shell»

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

5
立即返回特定返回码的Unix命令?
是否有标准的Unix命令,其执行的操作与以下示例相似 $ <cmd here> 56 $ echo Return code was $? Return code was 56 $ <cmd here>应该是可以分叉执行的东西,当进程退出时将56作为退出代码。在exit和returnshell内建不适合我要找的,因为它们影响调用shell本身它退出了。<some cmd>应该是我可以在非shell上下文中执行的东西-例如,使用调用Python脚本subprocess。 例如,/usr/bin/false总是立即返回返回码1,但是我想精确控制返回码是什么。我可以通过编写自己的包装脚本来达到相同的结果 $ cat my-wrapper-script.sh # i.e., <some cmd> = ./my-wrapper-script.sh #!/usr/bin/bash exit $1 $ ./my-wrapper-script.sh 56 $ echo $? 56 但是我希望这里确实存在可以为我做的标准Unix命令。



9
从PATH删除目录
我正在尝试使用MingW编译wxWidgets,并且我的路径中存在cygwin,这似乎冲突。所以我想/d/Programme/cygwin/bin从PATH变量中删除,我想知道是否有某种优雅的方法可以做到这一点。 幼稚的方法是将其回显到文件,手动将其删除并获取它,但是我敢说有更好的方法。

1
为什么echo> file比echo使用更多实时时间| sed>文件?
下面的例子令我惊讶。这似乎是反直观的……除了事实之外,该组合还有更多的用户时间echo | sed。 为什么单独运行时会花费echo那么多系统时间,或者问题应该是,如何sed改变游戏状态?似乎在两种情况下echo都需要执行相同的回显 ... time echo -n a\ {1..1000000}\ c$'\n' >file # real 0m9.481s # user 0m5.304s # sys 0m4.172s time echo -n a\ {1..1000000}\ c$'\n' |sed s/^\ // >file # real 0m5.955s # user 0m5.488s # sys 0m1.580s
28 bash  shell  pipe  time  echo 

4
如何使用gnu texttools连续执行'wc -l'?
我当然知道 cat logfile.txt | wc -l 120 会告诉我文件中的行数。 鉴于 tail -f logfile.txt 将向我展示另一个程序写入的新行logfile.txt。 是否可以将两者结合在一起,以便我可以使用标准文本实用程序连续更新logfile.txt的行数? 我知道 watch wc -l logfile.txt 但是我不想每次都重新计算整个文件,这似乎是浪费。一个人可能需要每秒钟左右追加一次计数,可能\r需要\n在行尾添加一个,而不是一个。

6
在UNIX中使用VI键编辑Shell命令
我曾经有一个非常擅长UNIX的同事。 他向我展示了如何使用Vi键绑定编辑我的shell命令。 他将命令放在我每次登录时都会运行的文件中。 从那时起,我搬到了另一个项目。 不幸的是,我不记得该如何设置。 这里有人知道如何使用Vi键绑定在终端中编辑命令吗? 如何使该设置永久化?
28 shell  vim  terminal  vi 

3
如何在Shell脚本中更改PATH?
我有几个项目需要更改Java / Grails / Maven的版本。我正在尝试通过一些脚本来进行更改。例如: #!/bin/sh export JAVA_HOME=/cygdrive/c/dev/Java/jdk1.5.0_22 export PATH=$JAVA_HOME/bin:$PATH export GRAILS_HOME=/cygdrive/c/dev/grails-1.0.3 export PATH=$GRAILS_HOME/bin:$PATH export MAVEN_HOME=/cygdrive/c/dev/apache-maven-2.0.11 export PATH=$MAVEN_HOME/bin:$PATH which java which grails which mvn 执行此操作时,它成功地在脚本的上下文中更改了PATH,但随后脚本结束了,并且尚未完成任何更改。 如何运行脚本以更改当前正在使用的shell的PATH? 我正在使用Cygwin。


3
逐行分割文件并控制生成的文件扩展名
有一个用于文件拆分的标准命令-split。 例如,如果我想将单词文件分成几行(每行10000行),则可以使用: split -dl 10000 words wrd 它将生成几个格式为wrd.01,wrd.02等的文件。 但是我想为这些文件指定特定的扩展名-例如,我想获取wtd.01.txt,wrd.02.txt文件。 有办法吗?
28 shell  filenames  split 

7
为什么用“ shell”一词来描述命令行界面?
我对“外壳”一词感到好奇。我想我知道它是什么(尽管“ shell”和“ terminal”之间的区别仍然很模糊),但是为什么选择“ shell”这个词来描述这种程序呢? 这看似无关紧要,但通常当“选择”一词使我困惑时,就表明我的理解存在差距。

1
$ _ vs!$。前面命令和输出重定向的最后一个参数
问题是关于特殊变量。文档说: !!:$ 指定前面命令的最后一个参数。可以将其缩短为!$。 ($_,下划线。)在shell启动时,设置为用于调用在环境或参数列表中传递的正在执行的shell或shell脚本的绝对路径名。随后,扩展到扩展后的上一个命令的最后一个参数。还设置为用于调用每个执行的命令的完整路径名,并将其放置在导出到该命令的环境中。 我一定无法捕捉到一些差异,因为: $ echo "hello" > /tmp/a.txt $ echo "!$" echo "/tmp/a.txt" /tmp/a.txt $ echo "hello" > /tmp/a.txt $ echo $_ hello 有什么不同?

4
如何确定文件夹是否实际上是符号链接,以及如何修复损坏的符号链接?
如何知道我在Linux中是否有符号链接,某种快捷方式或文件夹?请看下面的截图。 如您所见,该ls命令列出了一些对象,其中一些颜色为深蓝色,而另一些颜色为浅蓝色(青色)。这些青色的物体是什么?这些是实际的符号链接吗? 如您所见,我无法cd将其称为HDD。 root@dm500hd:/# cd hdd -sh: cd: can't cd to hdd 我认为它必须重定向到,/media/hdd并且我注意到hdd文件夹丢失了。 有没有办法解决这个问题? 更新:这是ls -al命令的结果。 如您所见hdd -> /media/hdd,它显示为红色。这是否意味着它已损坏或已自动安装,即连接了物理硬盘时? 更新:这是grep media /etc/auto*命令的结果。 这些/etc/auto.master:/media/net和/etc/auto.network条目做什么? 这是ls -Fal /media命令的结果。 这有什么帮助吗?... 这是stat和file命令的结果,以及/ usr和/ bin的清单。 这对我有没有帮助?...对您有帮助吗? 顺便说一句,您应该知道这是带有BusyBox的基于Linux的STB,它是嵌入式系统。因此,并非所有命令都受支持。 更新:最后一个屏幕快照,显示/ sbin和/ usr / sbin中的文件和受支持的命令。 更新:添加了新共享... 现在,我删除了该旧共享,并重新创建了一个与以前相同的名称,现在还添加了第二个共享。所以现在我有两个。 SHARES remote share local share mydream dream1 mydream2 dream2 LOCATIONS remote …
28 linux  shell  symlink 


4
测试shell脚本中变量是否为空
我已经看到以下技术在许多不同的shell上多次使用,以测试变量是否为空: if [ "x$1" = "x" ]; then # Variable is empty fi 与更规范的用法相比,使用此方法有什么好处if [ -z "$1" ]吗?可能是可移植性问题吗?

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.