我已将终端首选项设置为执行:
set -o vi
Run Code Online (Sandbox Code Playgroud)
在启动时。问题是我在打开新的终端选项卡时没有执行该命令。
在 OS X 中是否有类似 .profile 的东西可以放置该命令?
我怎么能输入一个命令,比如 system_profiler,并将输出保存在我的计算机上的某个地方?
我在 Windows 7 上使用 Git bash。它为我提供了一种方法来使用我过去在 Ubuntu 机器上的 bash shell 上使用的大多数命令。但是 man 和 info 命令不起作用。有没有办法让这些(令人难以置信的)文档命令在 Windows 上的 Git bash shell 上工作?
对于某些 shell 会话,如果未设置和导出 shell 变量,我希望能够打印警告标志。
如果SET_ME未设置或为空,则执行类似操作以在提示中打印“错误”相当简单。
test_var () { test -z "$1" && echo Error; }
PS1='$(test_var "$SET_ME") \$ '
Run Code Online (Sandbox Code Playgroud)
但是,如果我设置SET_ME而不导出它,则无法标记,这是我希望能够检测到的错误。$(bash -c 'test -z "$SET_ME" && echo Error;')缺少类似或 grepping 的输出export,是否有一个简单的检查可以测试是否SET_ME已导出?
完全可以接受非 POSIX、仅 bash 的解决方案。
出于某种原因,我无法让我的系统在重新启动后保留我的 BASH 历史记录。以下是我的相关部分~/.bashrc:
shopt -s histappend
PROMPT_COMMAND='history -a; updateWindowTitle'
export HISTCONTROL=ignoredups
export HISTSIZE=9999
export HISTFILESIZE=999999
export HISTFILE="$HOME/.bash_history"
Run Code Online (Sandbox Code Playgroud)
据我所知,这些是所有必要的选项(我知道过去我可以在多次重新启动后保留历史记录,而过去没有所有这些)。但是,尽管在几次重新启动之前添加了这些选项,但在重新启动后我仍然丢失了大部分历史记录。它不是空的,但它没有我重新启动之前的 9999 行。
在有人抱怨之前,是的,我已经阅读了这些问题。我已经实施了他们上面列出的一些建议,其余的要么没有帮助,要么不相关:
如果那里可能有其他相关命令,您可以~/.bashrc 在此处查看我的全部内容。
那么,我错过了什么?为什么我的历史没有保存?如果有人认为另一个文件可能相关,请告诉我,我会发布它。我通过grep -i hist \.*在 my$HOME中运行来检查它显示唯一.包含字符串hist或的相关文件HIST是.bashrc.
我正在运行 Linux Mint Debian 版,GNU bash,版本 4.2.36(1)-release (x86_64-pc-linux-gnu) 和我最喜欢的终端模拟器(如果相关)是terminator.
更新:
按照@mpy 在评论中的建议,我将 my 更改 …
我从一本过时的教科书中学习 shell 脚本,在我看来,拥有一个只返回一串由空格分隔的数字的程序真的很有用,比如
$ range 10 20
10 11 12 13 14 15 16 17 18 19 20
Run Code Online (Sandbox Code Playgroud)
然后,如果你在做一个 shell 脚本,你可以有
for i in `range 10 20`; do some stuff with numbers in that range;done
Run Code Online (Sandbox Code Playgroud)
这种东西存在吗,还是我需要自己写?
我正在使用 bash 4.3.11(1) 并安装了以下历史插件(通过.bash_it):
# enter a few characters and press UpArrow/DownArrow
# to search backwards/forwards through the history
bind '"^[[A":history-search-backward'
bind '"^[[B":history-search-forward'
Run Code Online (Sandbox Code Playgroud)
当我登录到交互式会话时一切正常,但是当我通过ssh host 'ls -als'例如运行远程命令时,我看到以下输出:
: ssh host 'ls -als'
/home/ubuntu/.bash_it/plugins/enabled/history.plugin.bash: line 3: bind: warning: line editing not enabled
/home/ubuntu/.bash_it/plugins/enabled/history.plugin.bash: line 4: bind: warning: line editing not enabled
Run Code Online (Sandbox Code Playgroud)
当我echo -e '\0033\0143'在每次绑定调用后修改历史插件时,我不再收到警告,但我的控制台已被清除。不是一个巨大的缺点,但知道一种更简洁的方法来抑制远程命令的这种情况会很好。
# Works, but annoyingly clears console
# enter a few characters and press UpArrow/DownArrow
# to search backwards/forwards through the history …Run Code Online (Sandbox Code Playgroud) 我在 Mac OS X 10.10 (Yosemite) 上,我是 Bash 的新手。我正在尝试安装pdfunite. 我安装了Homebrew并运行了以下命令:
brew install pdfunite
Run Code Online (Sandbox Code Playgroud)
我收到了
错误:pdfunite 没有可用的公式
正在搜索公式...
正在搜索水龙头...
确实在那之后,如果我使用,pdfunite我会收到错误“找不到命令”。
我该如何解决这个问题?
我有一个 CURL 命令,我想每天在凌晨 3 点运行,但我不确定如何设置它,而且指南都很奇怪。
假设我有很多终端/bash 经验,但我以前从未设置过 cron。
cron 作业是否有可能唤醒我的计算机,即使它正在睡眠并且盖子关闭(macbook pro),只是为了运行这个 curl 命令然后让它重新进入睡眠状态?
我该如何设置?
我使用了很长时间来上传文件的 SCP 突然停止工作。我在 12 小时前运行了脚本,它运行得很好,但突然停止了。
有问题的命令是将当前目录上传到远程文件夹:
#!/bin/bash
cd "$(dirname "$0")"
scp -r . <remote_server>:<remote_folder>
Run Code Online (Sandbox Code Playgroud)
错误信息是:
scp: error: unexpected filename: .
Run Code Online (Sandbox Code Playgroud)
我在运行 Mojave 10.14.2 的 Mac 上。
更新:我已经通过将命令重写为此解决了特定问题,但我仍然有兴趣知道发生了什么:
scp -r $(pwd) <remote_server>:<remote_folder>
Run Code Online (Sandbox Code Playgroud)