标签: bash

如何递归下载整个网络目录?

我有一个 web 目录,其中包含许多文件夹和许多包含文件的子文件夹。

我需要使用 wget 或 bash 下载所有内容。

linux bash wget

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

如何在 Ubuntu 中从多个终端会话中查看 Bash 历史记录?

可能的重复:
可以在 bash 中统一历史文件吗?

我使用 Ubuntu Server 9.10,我希望能够查看多个终端会话的 bash 历史记录。即我最近的 200 个左右的命令,即使我已经在这期间注销了。

当我使用时,history我只看到来自实际终端会话的所有命令。如何从 Bash 中查看更多命令历史记录?我应该从 Ubuntu 中的默认值更改 bash 的任何特定设置吗?

我没有~/.bash_history文件。但我有一个~/.bashrcHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth
Run Code Online (Sandbox Code Playgroud)

更新:我现在正在 VirtualBox 中尝试 Ubuntu Server 10.10。如果我在没有关闭命令的情况下关闭 VirtualBox,那么下次启动时,上次会话的命令不会保存在历史文件中。

仅当我使用 shutdown 命令关闭机器时才会保存这些命令。例如关机 -P 0。

这一定是我的问题的原因。所以我必须弄清楚如何更频繁地保存命令历史。例如在每个命令之后。

bash history command-line ubuntu

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

登录Ubuntu时如何自动执行shell脚本

如何让脚本在我登录时自动执行?不是在机器启动时,也不是对所有用户,而是仅当我(或任何具有脚本的特定用户)通过 GNOME UI 登录时。

从其他地方阅读我认为它.bash_profile在我的主目录中,但对我来说它没有影响。当我通过键入在终端窗口中手动执行它时,~/.bash_profile它可以工作,但是当我登录时它不会自动运行。

我正在运行 Ubuntu 11.04。我的 .bash_profile 的文件权限是-rwx------. 在我今天创建它之前,我的主目录中不存在 .bash_profile 。

我似乎记得旧版本的 Linux.profile为每个用户都有一个文件,但这也不起作用。

它是如何完成的?我是否需要配置其他东西才能使 .bash_profile 工作?或者每个用户的登录脚本是否需要在其他文件中?

gnome bash .bash-profile ubuntu-11.04

15
推荐指数
3
解决办法
6万
查看次数

bash < < 语法是什么意思?

Ruby 版本管理器 (RVM) 安装如下:

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
Run Code Online (Sandbox Code Playgroud)

我理解第一个 < 的意思(将 bash 脚本提供给 bash 解释器),我对<(...)部分感到困惑。那么,这里的括号和小于号的作用。在哪些情况下我们可以使用相同的语法?

我试图在互联网上挖掘,发现这个问题/sf/ask/153173961/和这个关于 ubuntuforums 的问题:http://ubuntuforums .org/showthread.php?p=7803008但是仍然不知道为什么要使用这些括号以及为什么要使用两次输入重定向。

bash < curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer
Run Code Online (Sandbox Code Playgroud)

不一样吗?

谢谢。

bash syntax

15
推荐指数
2
解决办法
5732
查看次数

如何在bash中转义“-”

可能的重复:
Unix 工具:如果一个文件的名字减去一些东西怎么办?

请告诉我如何逃避这个:

[root@unix ~]# ./-sh
-bash: ./-sh: 权限被拒绝
[root@unix ~]# chmod +x -sh
chmod:无效模式:`-sh'
试试 `chmod --help' 以获得更多信息。
[root@unix ~]#

bash escape-characters

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

Bash,如何全局修复 ^H 和 ^?退格问题

我想解决这个常见问题,远程服务器上的 shell 认为我的终端的退格键是^?,有时它认为是^H,并且碰巧不正确并在我按下退格键时输出错误的字符。如果我将其设置为 ^H 或 ^?用stty erase ^Hstty erase ^?在我的.bashrc文件,并使用一些其他的终端访问服务器,它往往最终是错误的。所以stty erase [whatever]当我发现退格键错误时,我不得不手动输入来修复它。

我想要做的是同时绑定^?^H退格,因为如果我能做到这一点,我可以将它添加到我所有的 .bashrc 文件中,它肯定会结束这场噩梦。这可能吗?如果是这样,如何?

linux terminal bash shell bashrc

15
推荐指数
1
解决办法
3万
查看次数

使用 sed 在 Apache 配置中启用 .htaccess 文件

我正在尝试使用 Bash 脚本自动配置 Ubuntu Vagrant 框。一切都很好,但我在配置 Apache 以允许覆盖.htaccess文件时遇到了困难。在我的配置文件中,有以下块:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

我需要做的就是替换AllowOverride NoneAllowOverride all. 这似乎是 的任务sed,但<Directory>在此配置文件中还有其他块我不想允许覆盖。

当特定字符串出现在两个其他特定字符串之间时,如何使用 sed 将特定字符串替换为新字符串?

换句话说,AllowOverride None只有当它出现在<Directory /var/www/>和之间时,我该如何替换</Directory>

我可以使用以下命令来获取我感兴趣的块:

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default
Run Code Online (Sandbox Code Playgroud)

linux apache-http-server bash sed ubuntu

15
推荐指数
1
解决办法
4084
查看次数

命令的反向输出

我正在尝试从

git log --branches --graph --oneline
Run Code Online (Sandbox Code Playgroud)

(遗憾的是,您无法传递--reverse给它,因为它说它与--graph.不兼容。)

有没有办法反转命令的输出?

bash git

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

pip 不适用于 hombrew python 2.7 安装

我已经使用自制软件安装了 python,但无法从 bash 调用 pip。我尝试修改我的 .bash_profile 以包含 /usr/local/bin/python 和 /usr local/share/python 无济于事。

当我使用 bash 命令时:

find / -name 'pip'
Run Code Online (Sandbox Code Playgroud)

我得到的唯一结果是:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip
Run Code Online (Sandbox Code Playgroud)

其中没有一个是可执行文件。

我真的不知道在哪里指向我的 $PATH,因为我找不到 pip 可执行文件。当我打开

/usr/local/lib/python2.7/site-packages/pip
Run Code Online (Sandbox Code Playgroud)

或者

/usr/local/Cellar/python/2.7.9/libexec/pip/pip
Run Code Online (Sandbox Code Playgroud)

我找到以下文件:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models
Run Code Online (Sandbox Code Playgroud)

其中没有一个是可执行文件。

我会感谢任何比我更有经验的人的帮助。

编辑:我尝试了 Marco 建议的步骤:

以下是步骤的结果:

  1. echo $PATH 显示几个目录:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/ texbin:/opt/X11/bin:/usr/local/mysql/bin

  2. which -a python …

bash python homebrew pip macos

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

如何检查 bash 命令字符串的逐字字符?

今天早上我在 bash 终端中有这种奇怪的行为:

user@home:/home/user$ [ -f /etc/openvpn/client.conf ] && echo true
bash: [: missing «]»
user@home:/home/user$ [ -f /etc/openvpn/client.conf ] && echo true
true
Run Code Online (Sandbox Code Playgroud)
  • 第一个命令是从使用 gedit 编辑的脚本粘贴的
  • 第二个是直接在终端中输入的。

经过一番挖掘,我发现删除第 30 个字符(client.conf 和“]”之间的空格)并用空格替换它使命令再次起作用。

我的假设是正确的:命令中出现了一个未知的空白字符,但问题是:

  1. 如何在终端中显示这些字符以便调试命令?更重要的是:
  2. 我怎样才能防止这种情况再次发生?

顺便说一句,我运行的是 Ubuntu 18.04 / 法语,我粘贴命令的脚本位于 USB 驱动器中,并且也可能在 Windows 上进行了编辑。


谢谢你的好答案。坏字符是一个c2 a0不间断空格 UTF-8 字符。How to remove special 'M-BM-' character with sed这个问题有关于该角色的有趣事实。

奇怪的是,剧本竟然没有这个角色。所以我不知道它是从哪里来的。

linux bash gnome-terminal

15
推荐指数
3
解决办法
1724
查看次数