标签: bash

如何在不丢失命令的情况下中止为选项卡完成构建列表?

some_very_long_command_line --arg1 --arg2=555 --arg4 ... ... ... && <now Tab pressed>
(Now it works. I want to cancel before the following message)
Display all 6936 possibilities? (y or n)
Run Code Online (Sandbox Code Playgroud)

如何长时间搜索 Tab 完成,但不丢失命令?

如果只是按 Ctrl+C 它将中止,但也不会将命令保存到历史记录。

bash tab-completion

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

“ls”或正则表达式不区分大小写?

在 bash 中,我试过

ls [a-z]*
Run Code Online (Sandbox Code Playgroud)

并期望列出所有文件名以小写字母开头的文件。但是为什么还显示名称以大写字母开头的文件?

>ls [a-z]*
D  e
>
Run Code Online (Sandbox Code Playgroud)

如果需要,bash 版本:

bash --version GNU bash,版本 4.1.5(1)-release (i486-pc-linux-gnu) 版权所有 (C) 2009 Free Software Foundation, Inc. 许可证 GPLv3+:GNU GPL 版本 3 或更高版本http://gnu .org/licenses/gpl.html

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Run Code Online (Sandbox Code Playgroud)

bash regex globbing

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

将正在运行的进程移至后台

如何将正在运行的进程移到后台?例如,键入命令

sleep 60
Run Code Online (Sandbox Code Playgroud)

在命令行上并尝试将该进程移至后台。

linux bash

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

是否有更简单的 find 形式。-name "*substring_of_filename*" 在 Mac OS X 和 Linux 上?

在 Mac OS X 或 Linux 上,是否有更简单的命令形式

find . -name "*substring_of_filename*"
Run Code Online (Sandbox Code Playgroud)

这是查找名称包含substring_of_filename在当前目录(或其他给定目录)中的所有文件。因为这是一件很常见的事情,所以有没有办法让命令更短更容易输入,可能在 Bash 中使用别名或函数?或者是否有其他一些易于输入的命令可以使用?

如:

findfile . substring_of_filename
Run Code Online (Sandbox Code Playgroud)

注意:最初编写的问题使用app_config作为substring_of_filename的示例。)

linux unix bash find macos

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

为什么读取 FILE 比读取 VARIABLE 更快?

我不明白我使用两个基本脚本(在高端服务器上运行)运行的简单性能测试的结果:

perfVar.zsh

#!/bin/zsh -f

MYVAR=`cat $1`
for i in {1..10}
do
  echo $MYVAR
done
Run Code Online (Sandbox Code Playgroud)

perfCat.zsh

#!/bin/zsh -f

for i in {1..10}
do
cat $1
done
Run Code Online (Sandbox Code Playgroud)

性能测试结果:

> time ./perfVar.zsh BigTextFile > /dev/null
./perfVar.zsh FE > /dev/null  6.86s user 0.32s system 100% cpu 7.177 total
> time ./perfCat.zsh BigTextFile > /dev/null
./perfCat.zsh FE > /dev/null  0.01s user 0.10s system 91% cpu 0.118 total
Run Code Online (Sandbox Code Playgroud)

我原以为访问 VARIABLE 比读取文件系统上的 FILE 快得多......为什么会出现这个结果?有没有办法通过减少对文件系统的访问次数来优化 perfCat.zsh 脚本?

linux performance bash shell

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

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

进度指示器-掉落的一副牌(Bash)

我以一副落下的纸牌的形式编写了一个进度指示器(我妻子的想法)。

它尚未达到最终形式。这是代码:

vdeck="| | | | | "
hdeck[1]="__ | | | |"
hdeck[2]="__ __ | | |"
hdeck[3]="__ __ __ | |"
hdeck[4]="__ __ __ __ |"
hdeck[5]="__ __ __ __ __"

while true
do
    clear
    echo -n -e "\r$vdeck"
    sleep 0.8

    for i in 1 2 3 4 5
    do
        echo -n -e "\r${hdeck[$i]}"
        sleep 0.2
    done
    clear
done
Run Code Online (Sandbox Code Playgroud)

是否可以在没有 hdeck 数组的情况下优化此代码并获得相同的效果?增加'|' 意味着增加“hdeck”数组组合,这不好。

bash shell-script

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

bash vi 模式:什么是 (arg: N)?

我在 bash shell 中使用 vi 模式。

如果我进入插入命令模式并输入 1-9 之间的数字(例如:5,在下面的示例中),我会收到以下提示:

(arg: 5) <cursor>
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我似乎无法对这个提示做任何有用的事情,我不知道它的目的是什么。

我什至查看了 bash 源代码,而这些源代码又进入了 GNU Readline 源代码。

最终被调用的函数是rl_vi_arg_digit,然后调用rl_digit_argument,显示(arg: N)提示。但我无法从评论或相关代码中看到它实际用于.

有人知道吗?

bash vi

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

当 shell 加载时,我在哪里初始化我的环境?

我正在使用 bash shell 并且在我的.bashrc.

Terminal应用程序打开时(在我的 Mac 上),这个文件没有被初始化。

我总是能够手动. ./.bashrc,但我宁愿不必这样做。

文件的名称是什么,它可以为我初始化我的环境,或者我可以在其中放置自定义选项的文件?

terminal bash macos

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

Bash 路径行为异常

我正在尝试从命令行运行openscad并抛出错误,但是如果我输入报告的整个路径,它似乎可以正常工作,如下所示。

[dataproc@Euclid ~]$ which openscad
/usr/bin/openscad
[dataproc@Euclid ~]$ openscad
bash: /usr/local/bin/openscad: No such file or directory
[dataproc@Euclid ~]$ /usr/bin/openscad
[dataproc@Euclid ~]$ #this worked
Run Code Online (Sandbox Code Playgroud)

我完全不知道这里发生了什么,任何帮助将不胜感激。

bash which

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