标签: bash

为什么 CTRL-r 在 OS X 上表现得很奇怪(只显示命令的一部分)

Ctrl+r是一个很棒的小工具,用于搜索.bash_history以前运行的命令。

然而,当我在我的 OS X Terminal.app 中使用它时,我看到了奇怪的行为,我想知道是否有其他人看到了同样的事情或知道如何修复它。

  1. Ctrl+r
  2. 输入类似的东西 find
  3. 哦,酷,看……这是我想要的命令 find . -exec grep -q "hello world" '{}' \; -print
  4. 我想运行该命令,但将 hello world 更改为其他内容。
  5. 所以我打??
  6. 现在命令在命令行上是 SORTA 但它总是看起来像命令的一些截断版本,像这样:-q "blog_posts_by" '{}' \; -print,整个命令都在那里,我可以使用光标键在行上移动,但不是全部它被打印出来。线上显示的内容与终端实际认为我正在编辑的内容之间存在脱节。

有谁知道为什么会发生这种情况?在网上搜索这不是一个容易的现象。

bash terminal mac-osx

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

如果 wget 的进度:mega 不再削减它该怎么办?

我有用于在队列中下载大文件的脚本。现在我真的很感激,如果我有一个像样的日志。指定-oor-a选项显然是为此特制的,但是在我编写这个“非常大的文件”时,正如联机帮助页所述,大小不再是 50m,而是千兆字节。--progress=dot:mega仅为 3GB 文件生成 1000 行输出(显然它将是 3000*80 点('.'))。所以我想知道:有没有办法自定义进度样式设置,以便我可以真正使用日志功能?

linux bash log-files logging wget

10
推荐指数
2
解决办法
2280
查看次数

将文件从子文件夹移动到当前文件夹

假设我在 Ubuntu 服务器上的文件是这样的: /folder1/folder2/

folder1目前在,我想将所有文件/文件夹(递归)从folder2当前文件夹中移动。

我怎样才能做到这一点?

shell bash

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

通过远程 SSH 连接使用 rsync 时在远程路径中转义空格

当使用 SSH 将 rsync 连接到远程服务器时,如何在远程路径中转义空格等?一个简单的反斜杠转义本地 bash 提示符的空间,但在远程机器上,该空间被读取为路径中的中断,从而标记该路径的结尾。

因此,当我这样rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/做时,远程服务器正在读取它/path/to/dest/some/,因为它无法远程找到该目标,因为实际目标是“某个目录”而不仅仅是“某个”。

如果我尝试相同的命令并转义反斜杠和空格以通过本地 bash 提示符并维护远程服务器的反斜杠(总共三个反斜杠:)/path/to/dest/some\\\ dir/,它确实将反斜杠发送到远程服务器,但远程服务器然后将路径解释为/path/to/dest/some\/而不是/path/to/dest/some\ dir/仍然剥离空格和它后面的字符。

如果我尝试用引号包裹路径,它的行为方式几乎相同,有效地在空格处切断路径。所以它也只能通过本地 bash 提示。

最初我使用的路径中有一个“ - ”(空格-连字符-空格)段,远程服务器返回一个错误rsync: on remote machine: -: unknown option,这是整个空间转义努力的开始。

那么我必须做些什么才能使远程服务器正常工作,而不必从远程路径中删除空格或其他错误字符(如连字符)?

ssh bash rsync remote path

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

查找在过去 10 分钟内修改过的文件

我正在运行此命令以找出过去 10 分钟内修改过的文件

 find / -fstype local -mtime -10m
Run Code Online (Sandbox Code Playgroud)

但每次都会出现以下错误

find: missing argument to `-mtime'
Run Code Online (Sandbox Code Playgroud)

上面有什么问题?

bash find

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

Bash 脚本错误:./test:第 5 行:UID:只读变量

我有一个脚本可以在我的开发服务器上正常工作,但是当我尝试在生产中运行它时不起作用。

我收到以下错误,我无法弄清楚:

./test.sh:第 5 行:UID:只读变量

有什么建议?

#!/bin/sh

    while read inputline
    do
     UID="$(echo $inputline | cut -d '"' -f4)"
     PASSWORD="$(echo $inputline | cut -d '"' -f8)"
     FIRST="$(echo $inputline | cut -d '"' -f6 | cut -d ' ' -f1)"
     LAST="$(echo $inputline | cut -d '"' -f6 | cut -d ' ' -f2)"    

    zmprov createAccount $UID $PASSWORD displayName "$FIRST $LAST" givenName $FIRST sn $LAST    

    done < company.csv
Run Code Online (Sandbox Code Playgroud)

scripting bash

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

Bash:当命令作为参数传递给函数时引用被剥离

我正在尝试为我的脚本实现一种空运行的机制,并面临当命令作为参数传递给函数并导致意外行为时引号被剥离的问题。

dry_run () {
    echo "$@"
    #printf '%q ' "$@"

    if [ "$DRY_RUN" ]; then
        return 0
    fi

    "$@"
}


email_admin() {
    echo " Emailing admin"
    dry_run su - $target_username  -c "cd $GIT_WORK_TREE && git log -1 -p|mail -s '$mail_subject' $admin_email"
    echo " Emailed"
    }
Run Code Online (Sandbox Code Playgroud)

输出是:

su - webuser1 -c cd /home/webuser1/public_html && git log -1 -p|mail -s 'Git deployment on webuser1' user@domain.com
Run Code Online (Sandbox Code Playgroud)

预期的:

su - webuser1 -c "cd /home/webuser1/public_html && git log -1 -p|mail -s 'Git deployment on webuser1' …
Run Code Online (Sandbox Code Playgroud)

scripting linux shell bash

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

如何在bash中回显EOF?

经过搜索似乎EOF的ascii是-1,但我怎么能echo出来呢?

我这样做的目的是测试它的行为是否与ctrl-d如果我刚echo退出时按下一样EOF

bash

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

我可以从以前的终端恢复纳米进程吗?

我的系统在 nano 会话中因未保存的更改而崩溃。

当我通过 SSH 重新登录时,当我执行ps.

davidparks21@devdb1:/opt/frugg_batch$ ps -ef | grep nano
1001     31714 29481  0 18:32 pts/0    00:00:00 nano frugg_batch_processing
1001     31905 31759  0 19:16 pts/1    00:00:00 grep --color=auto nano
davidparks21@devdb1:/opt/frugg_batch$
Run Code Online (Sandbox Code Playgroud)

有没有办法让我在新终端中控制纳米进程?

或者有什么方法可以强制它远程保存(从我的新终端)?

linux bash terminal pid

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

如何在没有用户交互的情况下使用 APT 安装软件包?

我有一个脚本可以下载和替换 Debian 压缩中的内核头文件。

function fixHeaders(){
    #Replace the kernel headers from OVH with standard kernel headers...
    aptitude -y install linux-image-2.6.32-5-amd64  
    sed s/'GRUB_DEFAULT=0'/'GRUB_DEFAULT=1'/g
    update-grub
    echo "Rebooting the machine. Run this script again after reboot and choose option 2."
    sleep 1
    reboot  
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在 aptitude 下载软件包后,它会将脚本放入文本 gui 并询问用户一堆问题。有什么办法可以跳过这个或在适当的时间发送选项卡/输入来为所有答案选择“确定”?

bash kernel aptitude apt debian-squeeze

9
推荐指数
1
解决办法
8486
查看次数

标签 统计

bash ×10

linux ×3

scripting ×2

shell ×2

terminal ×2

apt ×1

aptitude ×1

debian-squeeze ×1

find ×1

kernel ×1

log-files ×1

logging ×1

mac-osx ×1

path ×1

pid ×1

remote ×1

rsync ×1

ssh ×1

wget ×1