Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。



6
每当我输入废话命令时,为什么会生成此python错误消息?
每当我键入任何“废话”命令时,都会生成此python错误消息。普通命令可以正常工作。知道如何调试吗? $ somenonexistingcommand Traceback (most recent call last): File "/usr/local/lib/python2.7/site.py", line 553, in <module> main() File "/usr/local/lib/python2.7/site.py", line 535, in main known_paths = addusersitepackages(known_paths) File "/usr/local/lib/python2.7/site.py", line 268, in addusersitepackages user_site = getusersitepackages() File "/usr/local/lib/python2.7/site.py", line 243, in getusersitepackages user_base = getuserbase() # this will also set USER_BASE File "/usr/local/lib/python2.7/site.py", …
16 bash  ubuntu  python 

5
在Chrome操作系统中,Bash无法执行我的脚本。我如何让Bash运行我的脚本?
foo.sh我的当前目录中有一个文件。如果我尝试运行./foo.sh,则会得到: -bash: ./foo.sh: /bin/sh: bad interpreter: Permission denied 但是,如果我运行,/bin/sh ./foo.sh它将运行正常。 如何解决此问题,以便我可以运行./foo.sh它并自动使用/ bin / sh运行它? 编辑:好的,这是Chrome操作系统,并且此特定文件夹已安装noexec。显然挫败了跑步的能力./foo.sh; 但是为什么呢?为什么我仍然可以sh foo.sh实现完全相同的目标?那么,有什么安全保障noexec呢?
16 bash  chrome-os 

6
使用先前命令输出中的文本
EDIT,2015年4月:如果您有相同的问题,建议您同时检查http://xiki.org/ 我知道这不是终端的工作方式,但是我发现自己经常希望有一种简便的方法来使用文本(复制,修改等),该文本已经在终端窗口历史记录中的某些先前命令输出中了。 我已经想象过像这样: 我正在bash shell中输入命令,我意识到我需要输入屏幕上方几行已经显示的内容。我可以拿起鼠标并选择它,但是我讨厌这样做。我现在真正希望的是我的整个终端都变成了一个巨大的Vim缓冲区,所有的一切:提示,我键入的命令以及这些命令的输出。一切。然后我可以跳几行,也许要编辑一些,然后拉一些文本。然后,返回bash shell模式,并将我拖拉的所有内容粘贴到当前命令行中。 我知道有一些选择: 自然地,将需要的文本直接从某个命令的输出管道传输到文件,或者直接传输到下一个命令。但是为此,您必须事先计划或从历史记录中重新执行命令(假设在两次调用之间输出不会更改)。 触摸鼠标并选择要复制的文本。me脚,烦人,我希望我没有这样做,(这不是GUI stackexchange网站,对吗?=) 要使用我的(Mac OS X)终端应用程序的“将文本导出为...”选项,并将终端文本保存到文件中。然后打开文件并使用它。差不多了,但是为什么要经过保存到磁盘上文件的步骤呢? 所以问题是:在这种情况下您会做什么?在这种情况下,是否有任何有用的技巧,工具,shell功能?您是否辞职以使用鼠标或重新键入需要输入的内容? 可能是问题出在,我不是按照“ unix方式”运行,但是请问,这是2010年,我不能轻易地将一些文本复制到距光标几行的地方吗?

3
bash查找xargs grep仅一次出现
也许有点奇怪-也许还有其他工具可以做到这一点,但是。 我正在使用以下经典bash命令来查找包含某些字符串的所有文件: find . -type f | xargs grep "something" 我有很多深度的文件。第一次出现“某物”对我来说已经足够了,但是find会继续搜索,并且需要很长时间才能完成其余文件。我想做的是从grep返回查找的“反馈”,以便查找可以停止搜索更多文件。这样的事情可能吗?
16 bash  find  grep  xargs 

1
交互式外壳能否变为非交互式,反之亦然?
交互式外壳能否变为非交互式,反之亦然? 注意:我已经对“交互式和非交互式之间的区别是什么?”这一基本问题进行了大量研究,研究的结果使我提出了这个问题。 这个问题的序言很长,部分原因是至关重要的是我们为回答“交互”所使用的定义类型。定义可以是特定集合的任意标签;它可以描述各种特性;或者它可以为您提供信息,以帮助您预测行为和了解目的。 我们可以将这最后一种称为“动作定义”或“动态定义”,这是最有用的。 在中man 1p sh,给出了交互式外壳的以下定义: If the -i option is present, or if there are no operands and the shell’s standard input and standard error are attached to a terminal, the shell is considered to be interactive. 从提及“ -i选项”和使用“操作数”一词开始,这是指Shell的调用,而不是可以在运行中的Shell中检查的属性。 Bash手册页的措辞略有不同: An interactive shell is one started without non-option …

4
按位移位和Bash中的最大整数
这是一个探索性问题,意味着我不确定这个问题是什么,但是我认为这与Bash中最大的整数有关。无论如何,我会表面上定义它。 $ echo $((1<<8)) 256 我通过移位产生一个整数。我可以走多远? $ echo $((1<<80000)) 1 显然,目前还没有。(1是意外的,我将返回。)但是, $ echo $((1<<1022)) 4611686018427387904 仍然是积极的。但是,这不是: $ echo $((1<<1023)) -9223372036854775808 再往前走一步 $ echo $((1<<1024)) 1 为什么是1?以及为什么以下? $ echo $((1<<1025)) 2 $ echo $((1<<1026)) 4 有人想分析这个系列吗? 更新 我的机器: $ uname -a Linux tomas-Latitude-E4200 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC …
16 bash  arithmetic 

1
等待bash-builtin以100%的速度消耗CPU
至少在GNU bash版本4.3.42 x86_64和&GNU bash版本4.3.11 x86_64上发生 我用sleep & wait $!一个简单的方法而不是简单的方法sleep来获得sleep信号的可中断性(如SIGUSR1)。但是wait当您运行以下命令时,bash-builtin的行为似乎很奇怪。 1号航站楼: cat <( trap 'echo SIGUSR1' SIGUSR1; echo $BASHPID; while :;do sleep 1 & wait $!; echo test; done )& 2号航站楼: kill -10 /the pid of the subshell, printed by the previous command/ 1号航站楼: ^C (ctrl + C) 然后,我得到了以100%消耗CPU的子外壳。 1号航站楼: pkill …

1
在bash和zsh中推送,popd与cd,cd-
bash与zsh中push / popd的行为之间有区别吗?在zsh cd中,cd-的行为与push / popd(在cd时会自动添加/ pops目录)完全相同,而在bash cd中则不会影响目录堆栈。 如果有人可以给我一个指针,那将是很好。
16 bash  zsh  cd-command  pushd 

6
在bash提示中仅显示当前目录和父目录
我是bash的新手,希望我的提示显示tcsh中的内容不重要,但是经过良好的google搜索,我仍然无法执行。 我希望提示符仅包括当前目录和父目录,如下所示: /parent/currentdir $ 在tcsh中,这可以通过以下方法实现: set prompt = "%C2 %" 但是到目前为止,在bash中,我只发现我必须解析pwd才能获得相同的输出。 有没有更简单的方法,例如: export PS1="$(some_command) $"
16 bash  prompt 


5
如何转义字符串中的特殊字符?
假设$file拥有文件名的值,请说Dr' A.tif。在bash编程中,如何在$file不删除特殊字符的情况下转义单引号和其他任何特殊字符? 2014年7月9日更新 根据@Gilles的要求,以下代码片段无法处理Dr' A.tif: files=$(find /path/ -maxdepth 1 -name "*.[Pp][Dd][Ff]" -o -name "*.[Tt][Ii][Ff]") echo "${files}" > ${TEMP_FILE} while read file do newfile=$(echo "${file}" | sed 's, ,\\ ,g') ## line 1 done < ${TEMP_FILE} 我已经试过了之后从@Patrick答案上line 1,这似乎为我工作。但是,如果我有诸如的文件Dr\^s A.tif,printf命令似乎无济于事,它会向我显示Dr\^s\ A.tif。如果我在这样的控制台上手动尝试: printf "%q" "Dr\^s A.tif" 我将得到以下输出: Dr\\\^s\ A.tif 知道如何处理吗?
16 bash 

5
Bash:类型(Bash内置函数)有什么用?
我在Bash脚本中遇到了一条命令,发现: find /var/log/abcd -type f 上面的命令是在清理日志文件的上下文中。我知道是什么find呢。 看过之后-type f,我在手册页上找到了它。我在BASH_BUILTINS(1)的手册页中看到了它 type命令下的-f标志的描述是:- The -f option suppresses shell function lookup, as with the command builtin. 以下是我的问题: 有什么用type? -f标志的意义是什么? 使用typewith find命令有什么用? [编辑]:-在阅读完所有评论和答案后,我想提及我对-type option in command findVs的误解的原因type command。之所以如此,是因为我一直假设并且直到现在为止都只看到find带有一个减号'-'的简短选项(在命令情况下为Tests ),例如ls -l。在大多数情况下,我看到带有双减号'-'的长期权,例如ls --version。
16 bash  bash-script 

2
bash_history:注释掉危险的命令:#
为了防止在bash历史记录中记录“危险”命令,我在.bashrc文件中添加了以下行: HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*' 这行之有效,但有副作用:我看不到在计算机上执行的命令的完整历史记录。假设我有几台用于实验的机器,并且希望能够看到所有执行的命令。我将使用bash内部history显示执行的命令,也许还可以显示今天的日期的grep: history | grep Sep-28 我想做的是也记录“危险”命令,但是#在行的开头放置一个,这样,如果我偶然从历史记录中错误地执行了该命令,将不会造成任何损失。 我不知道这是否可能。 更新和说明: 对我来说这是个问题的主要原因是,我通常从多个终端连接到我的机器,并且在一个终端上执行的任何命令都会立即读入其他终端的历史记录中。这是通过实现 PROMPT_COMMAND="history -a; history -c; history -r" 假设我有两个开放的终端。在一个我有一些cat /dev/foo > file.out进程正在运行。在第二个中,我使用查看进度ls -lAhF。我一直ls通过按Up和ENTER(即历史记录中的最后一条命令)重复操作。第一个命令完成后,历史记录中的最后一个命令将不再是ls,而是cat /dev/foo > file.out。如果我不小心,我将再次启动cat并覆盖file.out。 我想实现的是cat命令将以开头#,这样它就不会被执行。但是,我仍然会在历史记录中看到它,并且可以通过取消注释它来重用它(如果这是一个长命令)。

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.