Questions tagged «shell»

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

3
如何实时显示命令输出的行数?
我正在使用svn export打包程序脚本作为我的应用程序的一部分,并且与许多其他命令一样,此命令似乎没有任何进度条。 目前,我有两种选择: 在没有选项的情况下使用它,并观看它打印数千行 使用--quiet,直到完成后才开始使用。 有没有办法至少实时显示命令输出的行数?如: Exporting SVN directory ... 1234 files 并1234 实时看到这个数字的增加?我可以想象将输出管道到可以执行此操作的命令,但是哪一个呢?

2
\ e和^ [之间的区别
吉尔斯写道: 字符27 = 033 = 0x1b = ^[=\e Demizey 写道: ^ [只是ESCAPE的表示形式,\ e被解释为实际的ESCAPE字符 然后我还从TechRepublic的文章中找到了这一行 确保将键序列写为\ e [24〜而不是^ [[24〜。这是因为^ [序列等效于[Esc]键,该键在外壳程序中由\ e表示。因此,例如,如果键序列为^ [[OP,则要使用的最终绑定代码将为\ e [OP。 但是我一直在使用使用^ [而不是\ e的映射。 那么它们可以互换吗?我什么时候需要使用一个而不是另一个?

2
如何后台执行命令链?
我想像这样的命令链作为背景cp a b && mv b c && rm a。 我尝试做,cp a b && mv b c && rm a &但这仅是最后一个过程的背景。 如何为命令链设置背景?

1
如何使用grep输入保留颜色代码?
如果我使用两个连续的grep命令,例如: echo "foo bar" | grep foo | grep bar 然后,第一个模式(“ foo”)不突出显示。实际上,似乎grep会从其输入中删除颜色代码。有什么办法可以防止这种情况?
15 shell  grep  colors 

6
sudo over ssh:不存在tty且未指定askpass程序
我一直收到此错误,并尝试了几种在线讨论的方法来解决此问题,但没有一种对我有用。我已经设置了SSH密钥,因此当我运行'ssh newton@host.com'它时,它会自动登录我,我也将该用户设置visudo为'newton ALL=(ALL:ALL) ALL' ,然后我也尝试添加'newton ALL=NOPASSWD: /var/www/script.sh' 不幸的是,每次我ssh newton@host.com 'sudo /var/www/script.sh'从Cygwin 跑回来,我都会回来。我也尝试添加,-t -t但是随后提示我输入密码。 total size is 21209180 speedup is 314.69 sudo: no tty present and no askpass program specified Sorry, try again. sudo: no tty present and no askpass program specified Sorry, try again. sudo: no tty present and no …
15 shell  ssh  sudo 

4
指向目录和相对路径的符号链接
我创建了具有目录绝对路径的符号链接(Blink),并具有以下树: $ ls -l /tmp/A total 0 lrwxrwxrwx 1 root root 6 Apr 3 12:27 Blink -> /tmp/B -rw-r--r-- 1 root root 0 Apr 3 12:27 foo $ ls -l /tmp/B total 0 -rw-r--r-- 1 root root 0 Apr 3 12:27 bar 然后我转到/ tmp / A并将目录更改为Blink: $ cd /tmp/A $ …


4
从剪贴板粘贴到启用vi的zsh或bash shell
我希望能够使用键盘从系统剪贴板(或文本选择)粘贴到“类似于vi”的shell提示中。我通常使用zsh,有时使用bash。在这两种情况下,我都将外壳程序设置为类似vi的行为(bindkey -v/ set -o vi)。 在vim中,键序列可提供我正在寻找的行为"+p。但是,此特定的键序列在启用vi的shell提示中无法按预期工作。有什么方法可以仅通过键盘启用此功能或类似的行为,而在zsh或bash shell提示中保留类似vi的键绑定吗? -编辑- 用例:我经常在带有Pentadactyl插件,终端仿真器和vim本身的Firefox之间导航-使用带有自定义键的Xmonad窗口管理器来移动。这三个程序都具有类似vi的键绑定,这非常有效(用于“手指存储”),因此仅使用vim语法(或非常相似的语法)在它们之间传递文本是理想的选择。
15 bash  shell  zsh  vi  clipboard 



7
如何将文件夹时间戳递归更改为最新文件?
我想知道是否有人知道如何基于在该文件夹中找到的文件的最新时间戳来递归更改文件夹的时间戳。 因此,例如: jon @ UbuntuPanther:/ media / media / MP3s / Foo Fighters /(1997-05-20)颜色和形状$ ls -alF 总计55220 drwxr-xr-x 2乔恩·乔恩4096 2010-08-30 12:34 ./ drwxr-xr-x 11 jon jon 4096 2010-08-30 12:34 ../ -rw-r--r-- 1 jon jon 1694044 2010-04-18 00:51 Foo Fighters-Doll.mp3 -rw-r--r-- 1 jon jon 3151170 2010-04-18 00:51 Foo Fighters-足够的Space.mp3 -rw-r--r-- 1 …


3
在代码“ {exec> / dev / null; }> / dev / null”是什么意思?
当您重定向包含exec重定向的命令列表时,此后exec> / dev / null似乎仍然没有被应用,例如: { exec >/dev/null; } >/dev/null; echo "Hi" 打印“ Hi”。 我的印象是,{}除非命令列表是管道的一部分,否则它不被视为子外壳,因此exec >/dev/null外壳在我看来仍应在当前的外壳环境中应用。 现在,如果将其更改为: { exec >/dev/null; } 2>/dev/null; echo "Hi" 没有预期的输出;对于以后的命令,文件描述符1仍指向/ dev / null。通过重新运行可以看到: { exec >/dev/null; } >/dev/null; echo "Hi" 没有任何输出。 我尝试制作脚本并对其进行分级,但是我仍然不确定此处到底发生了什么。 在此脚本的每一点上,STDOUT文件描述符发生了什么? 编辑:添加我的strace输出: read(255, "#!/usr/bin/env bash\n{ exec 1>/de"..., 65) = 65 open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) …

1
退出一个终端时更新其他终端上的bash历史记录
我知道这个问题并不是很模糊,因为这里的问题一直在更新(这里重复)。 我想要达到的目标有些不同。我不喜欢每次ls输入(history -a; history -c; history -r)时都会立即重写文件的想法。 我想在退出时更新文件。这很简单(实际上是默认设置),但是您需要添加而不是重写: shopt -s histappend 现在,当终端关闭时,我想让所有其他保持打开状态以了解更新。 我更喜欢这样做,而不必检查我键入的$PS1每个内容command。我认为捕获某种信号会更好。你会怎么做?如果不可能,也许简单cronjob吗? 我们如何解决这个难题?

3
保存退出代码以备后用
因此,我有一个用于运行某些测试的小脚本。 javac *.java && java -ea Test rm -f *.class 现在的问题是,当我运行脚本时./test,即使由于rm -f *.class成功而导致测试失败,它也会返回成功的退出代码。 我想让它做我想做的唯一方法对我来说很丑陋: javac *.java && java -ea Test test_exit_code=$? rm -f *.class if [ "$test_exit_code" != 0 ] ; then false; fi 但这似乎是一个常见的问题-执行任务,清理,然后返回原始任务的退出代码。 什么是最惯用的方式(使用bash或一般来说只是shell)?

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.