标签: shell

按日期检索 Linux 命令行历史记录

我想看看一周前的某一天我在 bash 命令行上输入了什么。有没有办法检索命令行历史记录?也许像下面这样?

> history --include-date | grep 2012-02-27`
Run Code Online (Sandbox Code Playgroud)

linux bash shell history command-line

23
推荐指数
1
解决办法
10万
查看次数

zsh post 命令函数/钩子

在命令完成后是否有相当于 zsh 的 precmd 来执行功能?

我正在寻找一种方法来向自己发送超过 60 秒的任何进程的通知。如果命令花费的时间长于 REPORTTIME 秒中设置的值,则 Zsh 具有打印用于每个命令的资源摘要的强大功能。据我所知,唯一可用的选项是在 TIMEFMT 中打印格式。

(更具体地说,如果在分离的 tmux 会话中运行的任何进程需要超过 60 秒才能完成,我希望通过https://pushover.net/向自己发送通知。)

zsh shell

23
推荐指数
1
解决办法
1813
查看次数

为单个管道命令设置 pipefail

我需要从非 BASH 脚本(即 PHP 脚本)执行许多管道 shell 命令,如下所示:

command1 | command2 | command3
Run Code Online (Sandbox Code Playgroud)

所以,如果 command1以非零退出代码失败,则每个其他命令也会失败。到目前为止,我想出的是:

set -o pipefail && command1 | command2 | command3
Run Code Online (Sandbox Code Playgroud)

但即使它从终端运行良好,如果从脚本执行它也会产生这个:

sh: 1: set: 非法选项 -o pipefail

linux shell command-line pipe

23
推荐指数
2
解决办法
2万
查看次数

每次登录时 BASH 历史记录被截断为 500 行

出于某种原因,我无法让我的系统在重新启动后保留我的 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 更改 …

linux terminal bash shell history

23
推荐指数
2
解决办法
8178
查看次数

为什么我们有登录、非登录、交互式和非交互式 bash shell?

所以bash 手册页解释了什么是登录和交互式 shell:

登录 shell 是参数零的第一个字符是 - 或以 --login 选项开头的 shell。

交互式 shell 是一个没有非选项参数并且没有 -c 选项的启动,其标准输入和错误都连接到终端(由 isatty(3) 确定),或者一个以 -i 选项启动。如果 bash 是交互式的,则设置 PS1 并且 $- 包括 i,允许 shell 脚本或启动文件测试此状态。

我认为这意味着我们可以有 4 种不同类型的 shell:

  • 交互式登录外壳,
  • 非交互式登录外壳,
  • 交互式非登录外壳,
  • 非交互式非登录 shell

但是为什么我们首先要有交互式/非交互式和登录/非登录 shell?为什么品种多?如果我们只有一种壳,我们会失去什么?

此外,当试图通过运行确定我是否在登录 shell 中时echo $-,它输出:

himBH
Run Code Online (Sandbox Code Playgroud)

关于这些标志的解释这里,但是hHm没有解释。有没有描述所有这些标志的地方?

linux bash shell command-line

23
推荐指数
1
解决办法
7075
查看次数

远程 SSH 命令 - bash 绑定警告:未启用行编辑

我正在使用 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)

ssh bash shell

23
推荐指数
3
解决办法
6781
查看次数

为什么在重定向时 clang 会生成难以理解的文本?

我正在尝试将命令的输出保存到文件中。命令是:

clang -Xclang -ast-dump -fsyntax-only main.cpp > output.txt
Run Code Online (Sandbox Code Playgroud)

但是,打开时生成的 output.txt 文件(通过 ubuntu 上的 gedit 和 jedit)给了我这个:

[0;1;32mTranslationUnitDecl[0m[0;33m 0x4192020[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m
[0;34m|-[0m[0;1;32mTypedefDecl[0m[0;33m 0x4192558[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m implicit[0;1;36m __int128_t[0m [0;32m'__int128'[0m
[0;34m| `-[0m[0;32mBuiltinType[0m[0;33m 0x4192270[0m [0;32m'__int128'[0m
[0;34m|-[0m[0;1;32mTypedefDecl[0m[0;33m 0x41925b8[0m <[0;33m<invalid sloc>[0m> [0;33m<invalid sloc>[0m implicit[0;1;36m __uint128_t[0m [0;32m'unsigned __int128'[0m
[0;34m| `-[0m[0;32mBuiltinType[0m[0;33m 0x4192290[0m [0;32m'unsigned __int128'[0m
...
Run Code Online (Sandbox Code Playgroud)

当它真的应该是这样的:

TranslationUnitDecl 0x4e46020 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x4e46558 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x4e46270 '__int128'
|-TypedefDecl 0x4e465b8 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned …
Run Code Online (Sandbox Code Playgroud)

linux shell clang

23
推荐指数
2
解决办法
3994
查看次数

每个 bash 命令之前的命令

有谁知道在 bash 会话中的每个命令之前放置“时间”命令的方法吗?

bash shell command-line

22
推荐指数
2
解决办法
6296
查看次数

rm -rf * 会删除当前目录中的所有文件/文件夹吗?

rm -rf *删除当前目录中的所有文件/文件夹吗?我想确保通配符*不会在上层目录中向上移动并擦除我的所有文件系统。:D

我记得chmod 777 .* -Rchmod隐藏文件做的,它chmod编辑了我所有的文件系统。显然,我使用的是 root 帐户。

shell globbing

22
推荐指数
4
解决办法
4万
查看次数

子shell/子进程中的别名

我在 /etc/profile.d/alias.sh 中为每个登录 shell 设置了别名。但是如果我运行 script.sh,我就不能使用那个别名。如何为子shell或子进程设置别名?

/etc/profile.d/alias.sh

alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';
Run Code Online (Sandbox Code Playgroud)

linux shell alias

22
推荐指数
3
解决办法
2万
查看次数

标签 统计

shell ×10

linux ×6

bash ×5

command-line ×4

history ×2

alias ×1

clang ×1

globbing ×1

pipe ×1

ssh ×1

terminal ×1

zsh ×1