Tag: bash

Linux Bash中的双和号(&&)和分号(;)有什么区别?

Linux Bash中的和号和分号有什么区别? 例如, $ command1 && command2 VS $ command1; command2

BASH中的“CLS”等价吗?

如何清除BASH中的整个terminal,如命令提示符的cls命令? clear不起作用,因为它实际上没有清除任何东西,只是向下滚动。

在Bash完成的上下文中,有关$ {array }与$ {array }的混淆

我第一次试图写一个Bash完成,而我对有两种解引用Bash数组( ${array[@]}和${array[*]} )的方法有些困惑。 下面是相关的代码块(顺便说一句,它可以工作,但我想更好地理解它): _switch() { local cur perls local ROOT=${PERLBREW_ROOT:-$HOME/perl5/perlbrew} COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} perls=($ROOT/perls/perl-*) # remove all but the final part of the name perls=(${perls[*]##*/}) COMPREPLY=( $( compgen -W "${perls[*]} /usr/bin/perl" — ${cur} ) ) } Bash的文档说 : 数组中的任何元素都可以使用$ {name [subscript]}引用。 大括号是为了避免与shell的文件名扩展操作符冲突。 如果下标是“@”或“*”,则该单词将扩展为数组名称的所有成员。 这些下标仅在双引号出现在单引号内时才有所不同。 如果单词是双引号,则$ {name [*]}将扩展为单个单词,每个数组成员的值由IFSvariables的第一个字符分隔,$ {name [@]}扩展每个名称元素到一个单独的词。 现在我想我明白了, compgen -W期望一个包含可能替代compgen -W的string,但在这种情况下,我不明白“$ {name [@]}将每个名称元素扩展为单独的单词”的意思。 […]

VIM色彩奇怪的行为256色屏幕内

我试图让语法突出显示(256色) vim工作在screen ,这是在gterm内gterm 。 它在一开始工作得很好。 我的意思是“在开始”是,我开始screen ,进入vim ,颜色看起来很好,并有真正的256色。 但过了一段时间(我不知道究竟有多长时间),颜色会自动变回一个外观,好像只有8(或16?)种颜色。 例如,在此之后,如果我input命令 hi Comment ctermfg=68 在vim里面,评论似乎是“纯粹”的绿色; 然而,如果我在屏幕之外(在同一个terminal)打开另一个vim ,那么使用相同的命令,这些注释看起来是一个“淡黄色”的绿色。 以下是我的.screenrc相关的颜色设置: attrcolor b ".I" defbce "on" termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' term xterm-256color 运行一个python脚本来显示所有的颜色后,我发现这可能是一个屏幕本身的问题,与vim无关。 我所做的是,在screen会话中出现问题,这个脚本给出256种颜色,但其中许多实际上是相同的; 但是,当我使用相同的configuration启动一个新的屏幕会话时,此脚本提供了256种彼此不同的颜色。 编辑: 昨天晚上,我用putty连接到我的Linux计算机(在我的办公室,它总是在),然后打开一个screen会话,其中有多个窗口。 昨晚的颜色是正确的。 然后,在我去睡觉之前,我分离了screen会议,并closuresputty 。 现在在早上当我用putty重新加上screen会话时,颜色就会崩溃:它们看起来好像只有8种颜色。 screen外的颜色很好(但还是在putty )。 编辑: 三年后,我问了这个问题,今天我看到了类似的问题。 问题是vim可以在screen外显示256种颜色, screen可以用testing脚本显示256种颜色,但vim在screen内不能显示任何颜色(只能显示黑白)。 就像我自己的一个说明,这里是我使用的.screenrc文件 hardstatus alwayslastline "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %Y-%m-%d %c" shell "bash" startup_message […]

bash:在后台启动多个链接命令

我正在尝试使用bash在后台运行一些命令。 这是我想要做的: forloop { //this part is actually written in perl //call command sequence print `touch .file1.lock; cp bigfile1 /destination; rm .file1.lock;`; } 反引号(“)之间的部分产生一个新的shell并连续执行这些命令。 事情是,控制到原来的程序只有在最后一个命令执行后才返回。 我想在后台执行整个语句(我不期望任何输出/返回值),我希望循环继续运行。 调用程序(具有循环的程序)在所有产生的炮弹完成之前不会结束。 我可以在Perl中使用线程来产生不同的线程,调用不同的shell,但它似乎是一个矫枉过正的… 我可以启动一个shell,给它一套命令,并告诉它去背景?

我如何在shell脚本中声明一个常量variables?

我无法从互联网上find这些信息,是不是可以声明最初的初始化后值不会改变的最终常量variables?

从命令行运行vim命令

从vim运行shell程序有很多问题。 我想知道的是,如果有可能做相反的事情 – 即 $ vim :BundleInstall 例如,让我运行BundleInstall作为脚本的一部分,而不必打开Vim并在第一次运行时手动运行它? 这可能吗?

在Bash中parsingdate

你将如何parsing一个date在bash中,将单独的字段(年,月,日,时,分,秒)分解成不同的variables? date格式是: YYYY-MM-DD hh:mm:ss

如何只显示wget进度条?

例如: wget ../../../TheFile.jpeg downloading: TheFile.tar.gz … –09:30:42– ../../../TheFile.jpeg => `/home/me/Downloads/TheFile.jpeg' Resolving somesite.co… xxx.xxx.xxx.xxx. Connecting to somesite.co|xxx.xxx.xxx.xxx|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 1,614,820 (1.5M) [image/jpeg] 25% [======> ] 614,424 173.62K/s ETA 00:14 我怎样才能看起来像这样 downloading: TheFile.jpeg … 25% [======> ] 614,424 173.62K/s ETA 00:14 我知道curl可以做到这一点,但是我需要得到wget来完成这项工作。

如何将包含斜线的variables传递给sed

实际上我知道这个问题的答案,但是我不止一次看到一些同事在这个问题上陷入困境,所以我认为这样做是值得的。 如果问题已经存在,我很乐意删除它。 所以在这里呢… 你如何将包含斜线的variables作为模式传递给sed 。 例如,如果我有以下variables: var="/Users/Documents/name/file" 我想把它传递给sed如下所示: sed "s/$var/replace/g" $file 但是我得到错误。 我怎样才能绕过这个问题呢?