Questions tagged «bash»

Bash是来自GNU Project的类Unix操作系统的免费外壳。

4
如何在Ubuntu的多个终端会话中查看Bash历史记录?[重复]
这个问题已经在这里有了答案: 10年前关闭。 可能重复: 历史文件可以在bash中统一吗? 我使用Ubuntu Server 9.10,我希望能够查看多个终端会话的bash历史记录。也就是说,即使我之间已经注销,我最近的200条左右命令也是如此。 当我使用时,history我只是从实际终端会话中看到所有命令。我如何从Bash查看更多命令历史记录?我应该从Ubuntu的默认值更改bash的任何特定设置吗? 我没有~/.bash_history档案。但我有一个~/.bashrc与HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups和HISTCONTROL=ignoreboth echo $HISTFILE /home/sanoj/.bash_history echo $HISTSIZE 500 echo $HISTFILESIZE 500 echo $HISTCONTROL ignoreboth 更新:我现在正在VirtualBox中尝试Ubuntu Server 10.10。如果仅关闭VirtualBox而没有shutdown命令,则下次启动时,上次会话中的命令不会保存在历史记录文件中。 仅当我使用shutdown命令关闭计算机时,才会保存命令。例如shutdown -P 0。 这一定是我遇到问题的原因。因此,我必须弄清楚如何更频繁地保存命令历史记录。例如,在每个命令之后。

6
GNU Screen不会在10.5.8上继承我的PATH
我每天都使用屏幕来满足终端的需求,对此我感到非常满意。不过,最近我做了一些更新我的bash配置文件和我注意到,我设置各种PATH元素(PATH,MANPATH,INFOPATH在2个地方,等)。我将文件修改为应有的样子,现在我的所有环境变量都已设置一次.bash_profile。这就是我的问题。 显然,我之所以将它们设置在两个位置是因为屏幕。屏幕似乎仅执行.bashrc,似乎没有PATH从原始bash shell正确继承我的或任何其他环境变量。因为它仅执行,.bashrc并且我现在仅将变量设置为in .bash_profile,所以我得到的不完整PATH。 那么,我的问题是如何在不进行复制的情况下将环境变量显示到屏幕上。阅读Bash文档似乎表明它可能是屏幕用于登录的外壳类型,即非登录交互式外壳,但是我不知道如何强制屏幕使用特定类型的外壳,只有通过使用的shell -s /bin/bash。 您可以在GitHub页面上仔细阅读我的配置文件。 这是打破屏幕的提交提交。 编辑:我正在使用,Screen version 4.00.03 (FAU) 23-Oct-06并且我倾向于通过screen -h 50000 编辑:我现在已经能够在Cygwin()上进行测试CYGWIN_NT-5.1 1.7.1(0.218/5/3) i686,Screen version 4.00.03 (FAU) 23-Oct-06并且它表现出与Mac上不同的行为。 我现在发现的特定行为是,在Cygwin中,我对PATH.bash_profile 所做的更改在进入屏幕时会被复制,然后连续创建屏幕窗口不会复制路径,而是重新提供.bash_profile。 为了说明我正在谈论的行为: 来自新终端的输出: ... PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man Aliases: alias ..='cd ..' alias ...='cd ../..' ... [~]$ 屏幕第一次调用的输出: [~]$ screen -h 50000 -s -/bin/bash …

1
当curl获得非200 HTTP状态时退出bash脚本
我有一个bash脚本设置来执行一些curl请求 for currency in EUR INR JPY do curl -i --data '{"currency": "'$currency'"}' -H "Accept: application/json" -H "Content-Type: application/json" http://0.0.0.0:8080/price && echo done 如果其中一个curl响应返回http状态!= 200,是否有办法使脚本退出? 我还希望保留标准的curl输出,例如,我不希望仅打印http状态代码的解决方案。 干杯

1
ssh + sudo + su进入登录shell
我经常有几台计算机要交换,仅用于将sudo su我的会话的剩余时间用于某些特殊用途的用户。常规工作流程为: mymachine:~ me$ ssh me@othermachine othermachine:~ me$ sudo su - specialuser # note: no password needed othermachine:~ specialuser$ # do stuff 我想将其简化为一个可以别名的直线,因此我可以为每台计算机设置一个别名,并通过单个命令到达需要的位置,而无需键入sudo su - specialuser样板。我可能会成立me@othermachine到sudo su上登录,但我想继续作为操作的灵活性me,如果我需要。 (请注意:我无法控制othermachine或设置方式;这是我在受聘时进入的既定工作流程。) 我的第一个念头是 ssh me@othermachine "sudo su - specialuser" 这样的作品,但是却没有任何提示,要^C杀死它然后将我注销,我认为其他各种情况也可能是错误的。 在阅读了具有完全登录Shell的Run Remote ssh命令之后,我尝试了一些更奇特的操作,例如 ssh me@othermachine 'bash -l -c "sudo su - specialuser"' 和 ssh …
11 bash  ssh  sudo 

3
执行存储在变量中的命令
我有一个存储在变量中的命令。让我们假设变量$i具有值: cat -nT index.php |grep 'someregex' 当我尝试通过键入来执行上述变量时,$i它失败了,因为外壳程序尝试将整个变量作为一个命令执行。我使用也尝试eval($i)并把$i在反引号。 如何使Shell $i像命令一样执行?而且为什么它不能与之相同。 $i='echo hi'; $i 是因为我不得不在单引号中弄乱吗?(因为您不能嵌套它们。)目前,我的解决方案是 echo $i > /foo; . /foo 但是我不想为此创建一个文件,而只是以后删除它。 我的意思是“我砍了单引号是: $i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"
11 linux  bash  shell 

1
Bash:活动IP地址的反向DNS查找
我有一个单行命令,列出了Web服务器访问日志中最活跃的10个IP地址: cat access.log | awk '{print $1}' | sort | uniq -c | sort -n | tail -n10 示例结果集(为简单起见,仅包含3个条目)为: 20 12.34.56.7 22 3.67.89.201 29 9.0.203.255 如您所见,计数在IP地址之前,二者之间用空格隔开。实际上在计数之前也有空白,但我无法在此处显示。 我想对IP地址进行反向DNS查找,以便看起来像这样: 20 12.34.56.7 (d12-34-56-7.abhsia.telus.net) 22 3.67.89.201 (customer.vpls.net) 29 9.0.203.255 (9-0-203-255.hlrn.qwest.net) 如何不借助脚本(即坚持单行命令)来执行此操作?任何建议深表感谢。
11 linux  networking  bash  dns 

3
是否可以将前台进程置于后台而不挂起(control + z)?
我正在运行一个接收TCP和UDP数据包的应用程序,因此无法将其挂起。我在后台模式下使用最初运行了具有相同参数的同一应用程序的3个进程&。当我仅这样做时$fg,这三个过程就成为了前台。现在,我想再次将它们发送到后台,但不要暂停。我怎样才能做到这一点?
11 linux  bash  unix 

8
从另一个目录运行脚本
通常,我要执行的脚本不在我当前的工作目录中,并且我真的不想离开它。 从另一个目录运行脚本(BASH,Perl等)是一种好习惯吗?他们通常会找到正常运行所需的所有东西吗? 如果是这样,运行“远程”脚本的最佳方法是什么?是吗 . /path/to/script 要么 sh /path/to/script 以及sudo在这种情况下如何使用?例如,这不起作用: sudo . /path/to/script

1
.bashrc从其他文件加载别名
我有一个.bashrc文件,我想对其进行设置,以便它从.aliases文件中读取别名并进行设置。 目前我有: # User specific aliases and functions while read alias_line do echo `alias ${alias_line}` done < .aliases 但是登录后我得到: -bash:别名:-fu:找不到-bash:别名:$ USER“:找不到 -bash:别名:-lart“:找不到 .aliases文件是这样的: psu =“ ps -fu $ USER” ll =“ ls -lart” pico ='nano'
11 bash  alias  bashrc 

2
用bash将任务放到后台
我知道您可以通过Bash做后台工作foo &。但是,我知道将前台作业放到后台的最好方法是先执行Ctrl+ z暂停,然后再bg 1在后台恢复。 有没有更快的方法?我不知道某些Ctrl+ Something组合键?
11 bash 

7
如何在bash shell脚本中回显命令,但不执行命令?
是否可以通过回显命令来运行Shell脚本,但实际上不执行这些命令? 假设我有脚本删除名称存储在变量中的文件: #!/bin/bash set -v FN="filename" rm -f ${FN} 添加set -v将在执行前回显以下命令: $ ./scr.sh FN="filename" rm -f ${FN} 现在,我想看看没有实际删除文件的该脚本的流程。IOW,我想防止对外部环境和文件系统的任何影响。这可能吗? 我可以用命令包装所有命令echo,但冗长的脚本很累人。

3
Guake-Windows 10 + Bash
有没有一种方法可以使Guake在Windows 10上运行,或者有替代的下拉“控制台主机”来托管新的Win 10 Bash?
11 windows-10  bash 

2
仅在修改某些目录中的文件时才执行git pre-commit hook
我正在尝试为git pre-commit钩子创建bash脚本。每当进行提交时,我都想检查某个目录中的文件是否是已暂存文件的一部分,如果是,请运行命令(Grunt任务)。到目前为止,我一切正常,除了只有在修改某些文件后才能运行。我正在尝试使它起作用: SRC_PATTERN="site/assets/js/" if [ grep --quiet $SRC_PATTERN `git diff --cached --name-only` ] then echo "none" exit 0 fi 不幸的是,这给了我错误。
11 bash  git 



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.