Questions tagged «shell»

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

2
find(1):如何实现星号通配符以使其在某些文件名上失败?
在文件名使用UTF-8的文件系统中,我的文件名称错误;它显示为:D�sinstaller,根据zsh:的实际名称 D$'\351'sinstaller,Latin1表示Désinstaller,本身是法式野蛮的“卸载”。Zsh不会将其与之匹配,[[ $file =~ '^.*$' ]]但会与之匹配(*这是我期望的行为)。 现在,我仍然希望在运行时能够找到它find . -name '*'-事实上,我绝不会期望文件名能够通过该测试。然而,随着LANG=en_US.utf8,该文件确实不露面,我必须集LANG=C(或en_US,或'')为它工作。 问题: 背后的实现是什么,我如何预测结果? 信息:Arch Linux 3.14.37-1-lts,查找(GNU findutils)4.4.2

2
哪里没有“ export var = value”?
我可能是在1990年代中期在Usenet上发现的(!) export var=value 是Bashism,而可移植的表达是 var=value export var 我一直提倡这一点,但是最近有人挑战了我,我真的找不到任何文档来支持我的坚定信念。 谷歌搜索"export: command not found"似乎并没有提出任何实际有人遇到这个问题的案例,因此即使它是真实的,我想也不是很常见。 (我发现的命中点似乎是新手,他们复制/粘贴了标点符号,并最终使用了'export: command not found或类似的东西,或者试图export与sudo; 一起使用;而新手csh用户则尝试使用Bourne shell语法。) 我可以肯定地说它可以在OS X以及各种Linux发行版上运行,包括shis dash。 sh$ export var=value sh$ echo "$var" value sh$ sh -c 'echo "$var"' # see that it really is exported value 在当今世界,可以安全地说export var=value使用安全吗? 我想了解后果是什么。如果它不能移植到v7“ Bourne classic”中,那就比琐事多了。如果在生产系统中shell确实无法使用此语法,那么了解这一点将很有用。

9
如何干净地添加到$ PATH?
我想要一种在系统范围内或为单个用户向$ PATH添加内容的方法,而不必多次添加相同的路径。 想要这样做的一个原因是,可以在中添加内容.bashrc,而无需登录,并且在使用(例如)的系统中更有用lightdm,该系统从不调用.profile。 我知道有关如何从$ PATH 清除重复项的问题,但是我不想删除重复项。我想只在尚不存在的情况下添加路径。
31 shell  path 

3
设置环境变量的最好的发行版/与外壳无关的方法是什么?
问题说明了一切。我目前使用Arch Linux和zsh,但是我想要一个(至少)可以在VT和xterm上运行的解决方案,并且(希望,最好是)如果我切换发行版或shell,它也可以继续工作。 我已经在不同发行版的文档中听到了对该问题的截然不同的答案。Ubuntu说“使用.pam_environment”。我认为在Arch中,他们的建议取决于您的外壳。当前,我将所有内容都放在.profile中,如果外壳由于某种原因(例如bash如果存在.bash_profile存在)不提供该资源,则可以通过手动采购来覆盖它。但是似乎必须有一个更好的方法。

4
如果在执行过程中编辑脚本会怎样?
我有一个普遍的问题,这可能是对Linux中如何处理进程的误解的结果。 出于我的目的,我将定义一个“脚本”作为bash代码的片段,该片段保存到文本文件中,并且为当前用户启用了执行权限。 我有一系列脚本相互调用。为了简单起见,我将它们称为脚本A,B和C。脚本A执行一系列语句,然后暂停,然后执行脚本B,然后暂停,然后执行脚本C。换句话说,该系列步骤如下: 运行脚本A: 一系列声明 暂停 运行脚本B 暂停 运行脚本C 从经验中我知道,如果我运行脚本A直到第一次暂停,然后在脚本B中进行编辑,那么当我允许恢复执行时,这些编辑将反映在代码的执行中。同样,如果在脚本A仍暂停的状态下对脚本C进行编辑,然后在保存更改后继续执行,这些更改将反映在代码的执行中。 那么,这是一个真正的问题,有什么办法可以在脚本A仍在运行时对其进行编辑?还是一旦开始执行便无法进行编辑?

10
如果Python脚本被杀死或死亡,如何自动重启
我像这样在我的Ubuntu机器(12.04)中在后台运行Python脚本- nohup python testing.py > test.out & 现在,在某些情况下,我的上面Python script可能由于某种原因而死亡。 因此,我正在考虑使用某种cron agentin bash shell脚本,如果由于某种原因被杀死,它可以自动重新启动上述Python脚本。 这可能吗?如果是,那么解决此类问题的最佳方法是什么? 更新: testing.conf像这样创建文件后- chdir /tekooz exec python testing.py respawn 我在sudo命令下运行以启动它,但是我看不到使用ps ax在后面运行该进程? root@bx13:/bezook# sudo start testing testing start/running, process 27794 root@bx13:/bezook# ps ax | grep testing.py 27806 pts/3 S+ 0:00 grep --color=auto testing.py 知道为什么px ax没有显示任何内容吗?以及如何检查我的程序是否正在运行? 这是我的python脚本- #!/usr/bin/python while …
31 bash  shell  cron  python 


2
grep和转义一个美元符号
我想知道哪些文件具有字符串$Id$。 grep \$Id\$ my_dir/mylist_of_files 返回0次。 我发现我必须使用 grep \$Id$ my_dir/mylist_of_files 然后,我看到$Id输出中有,即已被匹配。 我怎么能匹配第二$,为什么不\$Id\$工作。 第二$个字符是否不是最后一个字符都没有关系。 我使用grep2.9。 在发布我的问题之前,我使用过Google ... 我找到了答案 要在名为test2的文件中搜索$(美元符号),请输入: grep \\ $ test2 为了强制外壳程序将\ $(单个反斜杠,美元符号)传递给grep命令,必须使用\\(双反斜杠)字符。\(单反斜杠)字符告诉grep命令将以下字符(在本示例中为$)视为文字字符而不是表达式字符。使用fgrep命令可避免使用转义字符(例如反斜杠)的必要性。 但我不明白grep \$Id为什么grep \\$Id\\$可行,为什么不可行。 我有点困惑...

3
我可以将pgrep与kill链接吗?
我注意到这|是用来将第一个命令的结果发送给另一个命令的。我想杀死所有与名称匹配的进程。 pgrep通常这样做: $ pgrep name 5089 5105 而且似乎有多个参数可以使用kill: sudo kill 5089 5105 但这是错误的: pgrep name | kill 那么如何正确地做呢?
31 shell  pipe  arguments 

1
为什么string命令不会停止?
该strings命令的行为很奇怪,显然,即使驱动器空间不足,它也不会停止写入文件。还是我想念什么? 我运行以下命令: # strings /dev/urandom > random.txt 这一直保持运行,甚至在填充磁盘后也没有停止(常规USB闪存)。 为了更快,我创建了一个ramdisk并再次尝试了相同的命令。它也没有停止。 我知道这urandom不是一个常规文件,而且strings的输出也被重定向,但是在以上两种情况下,cat当没有更多空间时,该命令都会报告错误。 # cat /dev/urandom > random.txt cat: write error: No space left on device 这是字符串的正常行为吗?如果是这样,为什么? 没有剩余空间后,数据将写入哪里?
30 linux  shell  string 

3
五彩的Grep
我正在尝试让每个grep命令以不同的颜色突出显示它的结果。我可以用这样的一行手动进行操作: ls -l GREP_COLORS='mt=01;32' grep c | GREP_COLORS='mt=01;31' grep o | GREP_COLORS='mt=01;34' grep n | GREP_COLORS='mt=01;36' grep f 每个c字符将以绿色突出显示,每个o字符将以红色突出显示,等等。 为了使该示例正常工作,您需要确保始终使用 --color=alwaysgrep命令。我已经在我的.bashrc grep中设置了它,所以它将始终具有颜色: export GREP_OPTIONS='--color=always' 我要完成的工作是用别名包装此功能,这样我每次grep都可以调用并具有不同的GREP_COLORS值。我了解为每个新的管道grep考虑多个外壳的问题,并且我试图通过创建一些文件(每种颜色一个)来解决这个问题,以表明它们已被使用。 我做了一些尝试,但奇怪的是,这似乎是“最好的”方法。我在我的.bashrc: alias mg="mygrep" mygrep(){ # define possible colors COLORS=("01;32" "01;31" "01;34" "01;36") COUNTER=0 NUM=0 # as long as the color has already been used, keep …
30 bash  shell  grep  pipe  bashrc 

4
是否有JavaScript Shell?
最近,我一直在与JS合作,并对这种语言非常热情。我知道有在服务器端运行JS的node.js,但是是否有使用JS作为脚本语言的shell?如果存在这种情况,它的可用性和稳定性如何?

2
将输出重定向到文件是否对文件施加锁定?
如果我有命令 $ ./script >> file.log 被两次调用,第二次调用在第一个调用结束之前发生,会发生什么? 第一次调用是否在输出文件上获得排他锁?如果是这样,第二个脚本在尝试编写时是否失败,或者外壳程序是否接受输出(允许脚本结束)并抛出错误? 还是日志文件被写入两次?



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.