标签: bash

bash 脚本中 IFS=$'\n' 的含义是什么?

bash shell 脚本的开头是以下行:

IFS=$'\n'
Run Code Online (Sandbox Code Playgroud)

这组符号背后的含义是什么?

command-line bash shell-script

230
推荐指数
3
解决办法
30万
查看次数

.bashrc 的目的是什么,它是如何工作的?

我找到了该.bashrc文件,我想知道它的用途/功能。还有它是如何以及何时使用的?

bash bashrc

228
推荐指数
3
解决办法
65万
查看次数

每行管道输入执行一次命令?

我想为每个匹配运行一次 java 命令ls | grep pattern -。在这种情况下,我想我可以做,find pattern -exec java MyProg '{}' \;但我对一般情况很好奇 - 有没有一种简单的方法可以说“为每一行标准输入运行一次命令”?(在鱼或bash中。)

shell bash fish

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

如何确定环境变量来自哪里?

我有一个前段时间设置的 Linux 实例。当我启动并登录时,因为root我设置了一些环境变量,但我不记得或找不到它们来自哪里。

  • 我已检查~/.bash_profile/etc/.bash_rc和所有启动脚本。
  • 我跑了findgrep没有用。

我觉得我一定是忘了看某个明显的地方。有什么技巧可以解决这个问题吗?

shell bash environment-variables

219
推荐指数
7
解决办法
16万
查看次数

是否有一个单线允许我创建一个目录并同时进入它?

我发现自己重复了很多:

mkdir longtitleproject
cd longtitleproject
Run Code Online (Sandbox Code Playgroud)

有没有办法在一行中完成而不重复目录名称?我在这里狂欢。

command-line shell bash

215
推荐指数
5
解决办法
10万
查看次数

终端提示未正确换行

我有一个问题,如果我在 bash 中输入很长的命令,终端将无法正确显示我输入的内容。我希望如果我有如下命令:

username@someserver ~/somepath $ ssh -i /path/to/private/key
myusername@something.someserver.com
Run Code Online (Sandbox Code Playgroud)

该命令应呈现在两行上。相反,它通常会环绕并开始写在我提示的顶部,有点像这样:

myreallylongusername@something.somelongserver.comh -i /path/to/private/key
Run Code Online (Sandbox Code Playgroud)

如果我决定返回并更改某些参数,则不知道光标会出现在哪里,有时在提示的中间,但通常在我正在输入的行上方

当我Up执行上一个命令时会发生额外的乐趣。我已经在 gnome-terminal 和 terminator 以及 i3 和 Cinnamon 上尝试过这个。有人建议这是我的提示,所以这里是:

\[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\]
Run Code Online (Sandbox Code Playgroud)

Ctrll, reset, 并且clear都按照他们说的做,但是当我重新输入命令或Up发生相同的事情时。

我检查并checkwinsize在 bash 中启用。这发生在 80x24 和其他窗口大小上。

这只是我学会忍受的东西吗?有什么我应该知道的魔法吗?我已经决定只使用一个非常短的提示,但这并不能解决问题。

bash prompt terminal

214
推荐指数
7
解决办法
13万
查看次数

有停止的作业(在 bash 退出时)

There are stopped jobs.有时我尝试退出 bash shell 时会收到消息。这是 python 2.x 中可重现的场景:

  • ctrl+c由解释器作为异常处理。
  • ctrl+ z“停止”进程。
  • ctrl+d退出 python 为实数。

这是一些真实世界的终端输出:

example_user@example_server:~$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Run Code Online (Sandbox Code Playgroud)

ctrl+z

[1]+  Stopped                 python
example_user@example_server:~$ exit
logout
There are stopped jobs.
Run Code Online (Sandbox Code Playgroud)

bash 没有退出,我必须exit再次退出 bash shell。

  • 问:什么是“停止工作”,或者这意味着什么?
  • 问:可以恢复停止的进程吗?
  • 问:第一个会exit杀死停止的工作吗?
  • Q:有没有办法第一次退出shell?(无需输入exit两次)

shell bash process

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

如何在命令行(bash 和 zsh)中向后删除一个单词?

如何在命令行中向后删除单词?我真的习惯于某些编辑器使用Ctrl+删除最后一个“单词” Backspace,我也希望在命令行中使用该功能。

我现在正在使用 Bash,虽然我可以向后跳一个词然后向前删除一个词,但我宁愿将其作为快捷键,或将事件作为Ctrl+ Backspace

怎样才能做到这一点?

bash keyboard-shortcuts

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

将命名参数传递给 shell 脚本

有没有什么简单的方法可以将命名参数传递(接收)给 shell 脚本?

例如,

my_script -p_out '/some/path' -arg_1 '5'
Run Code Online (Sandbox Code Playgroud)

并在内部my_script.sh将它们接收为:

# I believe this notation does not work, but is there anything close to it?
p_out=$ARGUMENTS['p_out']
arg1=$ARGUMENTS['arg_1']

printf "The Argument p_out is %s" "$p_out"
printf "The Argument arg_1 is %s" "$arg1"
Run Code Online (Sandbox Code Playgroud)

这在 Bash 或 Zsh 中可能吗?

bash zsh shell-script arguments

192
推荐指数
8
解决办法
28万
查看次数

运行被别名隐藏的命令

假设我在 bash 中有以下别名 - alias ls='ls --color=auto'- 我想在ls没有选项的情况下调用普通。这样做的唯一方法是取消别名,执行命令然后再次别名吗?或者有一些漂亮的技巧或解决方法?

shell bash alias

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