标签: bash

Mac 中 Alt+Dot 的等效项/替代项

我在 Linux shell 中怀念的一件事是Alt+Dot快捷方式。它的作用是插入上一个命令的最后一个参数。这看起来是一个微不足道的技术,但它真的很有用。

即如果你输入这个:

$ ls /Applications/MAMP/conf/apache/
Run Code Online (Sandbox Code Playgroud)

下次您只需键入命令 + 快捷方式,参数就会为您完成。

$ cd 'alt+dot'
Run Code Online (Sandbox Code Playgroud)

在 Mac 上,我知道 2 个选择;按Esc+Dot或键入!$ , !*魔法空间设置

然而,虽然这两种替代方法都插入了您使用的最后一个参数,但它们无法像重复键入Alt+Dot那样在命令历史记录中向后滚动。

我现在可以接受这个选项,但我很想知道是否有人知道更好的方法。

linux mac terminal bash shell

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

命令:sudo su -

我明白了什么su -

  • 使用 root 环境将您登录到 root 中
  • (与su将您登录到您的环境中的根相反)

我明白了什么sudo

  • 你是一个命令的 root

但我不确定这是做什么的: sudo su -

任何人都想澄清

unix sudo bash su

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

如何调用bash函数

也许我正在以错误的方式看待这个..但在这里我正在尝试做。我的大部分工作都是用 Java 完成的,但只是切换到了 unix (bash) 环境。我正在这样做:

[~/Desktop/bashPlay]% cat myFunc
#!/bin/bash

ls2(){
        echo "Hello World"
}

ls3(){
        echo "Testing"
}

echo "this is a test"   
ls2 # this calls a function

[~/Desktop/bashPlay]% myFunc
this is a test
Hello World
Run Code Online (Sandbox Code Playgroud)

但是我的文件中有两个函数,我希望能够从命令行分别调用它们。即:myFunc.ls2()甚至只是ls2. 我知道我可以将这些函数添加到我的.bashrc文件中,但是有没有其他方法可以在不将它们添加到我的文件中的情况下执行这些函数.bashrc

bash

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

Bash Shebang 为傻瓜?

我有一些主要使用的 bash 脚本

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

但我经常遇到一些看起来像

#!/bin/bash -e
#!/bin/bash -x
#!/bin/bash -ex
Run Code Online (Sandbox Code Playgroud)

等等。

有人可以解释这些shebang选项的含义和好处以及它们是否适用于其他shebang吗?

script bash shell

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

使 bash 的制表符完成不区分大小写

可能的重复:
Bash 中不区分大小写的选项卡完成

有什么办法可以使 bash 中的 tab-completion 不区分大小写吗?例如,如果我调用了一个文件Hello.txt并尝试通过键入he后跟它来完成它的制表符Tab将不起作用。我必须通过键入He(注意大写 H)和Tab. 有什么方法可以设置 bash,这样我就不必在键入时保留大小写并尝试用 tab 完成它吗?

bash tab-completion

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

sha1sum 用于目录目录

sha1sum ./path/to/directory/* | sha1sum 
Run Code Online (Sandbox Code Playgroud)

上面是作为计算包含文件的目录的 sha1sum 的一种方式发布的。如果目录包含更多目录,则此命令将失败。有没有办法普遍地递归计算目录目录的 sha1sum (无需自定义适合特定目录的算法)?

bash hashing

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

Fish 中是否有类似于 Bash 的 CTRL+R 的“反向增量搜索”功能?

Fish的自动完成功能给我留下了深刻的印象。但是,我在 Fish 中找不到 Bash 中的一项功能。当您在 Bash 中按Ctrl+R并开始输入一个术语时,系统会.bash_history以相反的顺序对您进行搜索以查找匹配项。

Fish 中是否有类似的功能?

bash fish

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

有没有一种方法可以在 linux 中获取 DD 的百分比?

这就是正在发生的事情。

我通过 Linux live USB 开始备份我服务器上的驱动器。我开始使用dd命令 vanilla复制第一个驱动器;只是sudo dd if=/dev/sda of=/dev/sdc1然后我记得这只会让控制台空白,直到它完成。

无论如何,我需要对同一个驱动器运行不同的备份,所以我也开始了那个备份sudo dd if=/dev/sdb of=/dev/sdc3 status=progress,然后我得到了一行显示当前传输速率以及以字节为单位的进度的文本。

我希望有一种方法可以显示备份的百分比,而不是计算 1.8TB 中备份了多少字节。有没有比 status=progress 更简单的方法来做到这一点?

linux backup bash command-line dd

42
推荐指数
5
解决办法
9058
查看次数

为什么在 MacOSX 中使用 -e 参数时 echo 不支持“\e”(转义)

当我尝试通过内置echo命令使用 ANSI 转义序列打印出一些彩色文本时,似乎\e我提供的字符串中的转义序列是按字面解释的,而不是它应该表示的“转义”。这仅发生在 Snow Leopard 中——下面的示例在 Leopard 中按预期工作。

显然echo确实支持-e开关,因为它\n在使用时正确解释:

~ $ 
~ $ echo "\n"
\n
~ $ echo -e "\n"


~ $ 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用时\e,我得到了这个:

~ $ echo -e "\e[34mCOLORS"
\e[34mCOLORS
~ $ 
Run Code Online (Sandbox Code Playgroud)

就像我说的,在 Leopard 中,上面会给我颜色字符串“COLORS”。

有谁知道这可能是有意改变的原因?在 Snow Leopard 上从 Bash 脚本打印 ANSI 转义序列的解决方法如何?

我的 Leopard 机器上的 Bash shell 版本3.2.17(1)-release3.2.48(1)-release我的 Snow Leopard 机器一样。

bash command-line osx-snow-leopard macos

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

在 bash 中,如何对包含数字的字符串进行排序?

如果我在目录中有这些文件

cwcch10.pdf
cwcch11.pdf
cwcch12.pdf
cwcch13.pdf
cwcch14.pdf
cwcch15.pdf
cwcch16.pdf
cwcch17.pdf
cwcch18.pdf
cwcch1.pdf
cwcch2.pdf
cwcch3.pdf
cwcch4.pdf
cwcch5.pdf
cwcch6.pdf
cwcch7.pdf
cwcch8.pdf
cwcch9.pdf
Run Code Online (Sandbox Code Playgroud)

如何在 Bash 中列出它们,以便它们根据字符串的数字部分按数字升序排列。所以产生的顺序是cwcch1.pdf, cwcch2.pdf, ..., cwcch9.pdf, cwcch10.pdf,等等。

我最终要做的是将 pdf 与pdftk以下内容连接起来

pdftk `ls *.pdf | sort -n` cat output output.pdf
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为我的排序错误。

linux bash sorting

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

标签 统计

bash ×10

linux ×3

command-line ×2

shell ×2

backup ×1

dd ×1

fish ×1

hashing ×1

mac ×1

macos ×1

osx-snow-leopard ×1

script ×1

sorting ×1

su ×1

sudo ×1

tab-completion ×1

terminal ×1

unix ×1