标签: bash

警告:未启用行编辑

我发现这个有用的命令bind -x '"\C-r"':reset可以清除终端,但我想制作一个简单的 bash 脚本:

#!/bin/bash
bind -x '"\C-r"':reset
Run Code Online (Sandbox Code Playgroud)

输出:

alfred@alfred-laptop:~/bash$ ./bind 
./bind: line 2: bind: warning: line editing not enabled
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下:

  1. 我怎样才能解决这个问题?
  2. 什么warning: line editing not enabled意思?

bash

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

在bash中用一行创建mysql数据库

是否可以在 bash 中使用一行命令创建一个空数据库?

我的新手尝试失败了:

mysql -uroot $(create database mydatabase;)

我最终不得不

  • mysql -uroot
  • create database mydatabase;
  • exit;

bash database mysql command-line

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

使用管道将两个参数传递给命令

通常,我们只需要传递一个参数:

echo abc | cat
echo abc | cat some_file -
echo abc | cat - some_file
Run Code Online (Sandbox Code Playgroud)

有没有办法传递两个参数?就像是

{echo abc , echo xyz} | cat
cat `echo abc` `echo xyz`
Run Code Online (Sandbox Code Playgroud)

我可以先将两个结果存储在一个文件中

echo abc > file1
echo xyz > file2
cat file1 file2
Run Code Online (Sandbox Code Playgroud)

但是我可能会不小心覆盖一个文件,这是不行的。这是进入一个非交互式脚本。基本上,我需要一种方法来将两个任意命令的结果传递给cat而不写入文件。


更新:抱歉,该示例掩盖了问题。虽然{ echo abc ; echo xyz ; } | cat似乎确实有效,但输出是由于echos 而不是cat.

一个更好的例子是{ cut -f2 -d, file1; cut -f1 -d, file2; } | paste -d,它不能按预期工作。

file1:
a,b …
Run Code Online (Sandbox Code Playgroud)

bash shell-script pipe command-line-arguments bash-scripting

27
推荐指数
1
解决办法
5万
查看次数

屏幕的默认密码是什么?

当我在screen 中输入Ctrl-X X (sic) 时,会话被锁定。默认密码是多少?它是我用来登录 linux 的相同密码吗?

我问是因为:我通过 ssh 连接到几个不同的远程 linux 服务器,在各种风格的 linux/unix 下,并在所有这些服务器运行屏幕会话。当我锁定屏幕会话并输入我的密码时,有时它可以工作,但在其他安装上它不起作用,因此我不知道密码是什么(所以我必须从外部“退出”该屏幕会话)。

那么,screen的默认密码是多少呢?

PS:我从不root。使用的屏幕版本:屏幕版本 4.00.03 (FAU) 23-Oct-06

linux display bash

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

cmd 相当于 Bash 的 &(&(&符号))用于运行命令而不等待它终止?

在 bash 中:

java -jar jarfile1.jar &
java -jar jarfile2.jar &
Run Code Online (Sandbox Code Playgroud)

&符号允许您启动第一个程序,然后在第一个程序仍在运行时执行另一个程序。

我如何在 cmd 中执行此操作?(如果相关,则为 XP)。

windows bash command-line process

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

如何使用 OS X 终端创建文件并在其中插入一行

如何使用 OS X 上的终端执行以下操作?

创建一个.inputrc在用户主目录中命名的文件,并将此行放入其中:

set completion-ignore-case On

terminal bash command-line macos

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

我如何为时间命令提供参数(ubuntu)

我想获得比标准时间命令更多的信息,所以我想传递详细标志。info time举个例子time -v sleep 4,但是当我执行那个(在 bash 或 tcsh 中)我得到

% time -v sleep 4
-v: Command not found.
0.000u 0.000s 0:00.00 0.0%  0+0k 0+0io 0pf+0w
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

bash time ubuntu

26
推荐指数
1
解决办法
7840
查看次数

使用目录/链接完成标签

我在 archlinux 和 ubuntu 中的终端中的 tab-completion 都有这个问题:

我有一个链接,该链接链接到我的主目录中名为“某物”的目录。现在,当我打开一个终端并想要对该目录做一些事情时,假设cd我会输入cd somet然后点击 Tab,因为现在“某事”是它完成的唯一可能性。

问题是某些东西后面没有斜杠(因为它是指向目录的链接,所以应该有斜杠)。我必须再按一次 Tab 才能出现斜线。

有没有办法解决这个问题,即。这样斜线就直接出现了?

linux bash symbolic-link autocomplete

26
推荐指数
1
解决办法
3580
查看次数

bash 管道构造将某些内容添加到上一个命令的 stdoutput 之前

我想使用 sendmail 向我发送东西,并想在 oneliner 中完成。

echo "mail content" | sendmail emailataddres.com 
Run Code Online (Sandbox Code Playgroud)

发送它没有主题。

主题行必须在邮件内容之前,所以我正在寻找以下内容:

echo "mail content" | prepend "Subject: All that matters" | sendmail emailataddres.com 
Run Code Online (Sandbox Code Playgroud)

sed 和 awk 往往很难使用和记住。

编辑:只是为了澄清:回声“邮件内容”只是一个说明性的例子。我需要能够将东西添加到来自任何来源的 stdout 流。例如:ifconfig、zcat 等。

bash command-line posix

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

继续运行命令,直到输出与之前在 Bash 中运行的不同

我有一个脚本,我想每 x 秒运行一次,直到输出发生变化。通过一个简单的 while 或 until 循环,我知道如何使用 grep 检查特定字符串的输出,但我想要做的是继续迭代循环,直到当前迭代的输出不等于前一次迭代的输出。

我怎样才能在 bash 中实现这一点?

我得到的最接近的是下面,命令在每次迭代中运行两次,但这会产生额外的运行,因为 while 循环无法记住上一次迭代的输出。

while [ "$(command)" = "$(command)" ]; do sleep 10m; done
Run Code Online (Sandbox Code Playgroud)

bash

26
推荐指数
3
解决办法
2579
查看次数