小编Yor*_*ubs的帖子

我可以使clear命令的行为类似于Bash中的Ctrl-L吗?

看来clear和 bash Ctrl-L是有很大不同的;clear完全删除以前的所有终端信息(因此您无法向上滚动) while Ctrl-L只是滚动屏幕,使光标位于页面顶部,以便您仍然可以向上滚动并查看以前的信息。我更喜欢Ctrl-L系统。有没有办法覆盖,clear以便它执行Ctrl-L而不是擦除所有以前的终端信息?这不是一个大问题,但我只是出于好奇而想知道是否有一种方法可以使用别名clear来指向我喜欢的Ctrl功能L

顺便说一句,我刚刚注意到 PowerShell 也有一个绑定Ctrl-并且它的执行方式与-在 bash 上L相同;看起来 PowerShell 设计者从 bash 中借鉴了很多,而控制台没有这个功能。CtrlLcmd.exe

bash terminal inputrc

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

排除查找中的目录

find每当我使用它时,对我来说总是一个完全的谜;我只是想/mnt从我的搜索中排除(我在 WSL 上的 Ubuntu 20.04 上的 bash 中,所以不希望它在 Windows 空间中搜索)下的所有内容,但find只是错误地进入这些目录,完全忽略了我。我从这个页面找到了语法。/sf/ask/294702971/并尝试了所有变体 - 全部失败。

\n
sudo find / -name \'git-credential-manager*\' -not -path \'/mnt/*\'\nsudo find / -name \'git-credential-manager*\' ! -path \'/mnt/*\'\nsudo find / -name \'git-credential-manager*\' ! -path \'*/mnt/*\'\n
Run Code Online (Sandbox Code Playgroud)\n

当我这样做时,它只是犯了错误/mnt并抛出错误(这确实令人沮丧,因为上面的语法看起来很清晰,并且 stackoverflow 页面语法似乎是正确的):

\n
find: \xe2\x80\x98/mnt/d/$RECYCLE.BIN/New folder\xe2\x80\x99: Permission denied\nfind: \xe2\x80\x98/mnt/d/$RECYCLE.BIN/S-1-5-18\xe2\x80\x99: Permission denied\n
Run Code Online (Sandbox Code Playgroud)\n

有人可以告诉我如何停止find忽略我的目录排除开关吗?

\n

find

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

Bash,查找内容与搜索字符串匹配的函数

我想在 bash 中搜索所有定义的函数以查找某些搜索字符串。下面是一个开始,但我想消除下一行中所有后面没有$1空格的术语(即消除在该函数体中找不到的所有条目)。

fu() { declare -f | grep -e \(\) -e $1; }
Run Code Online (Sandbox Code Playgroud)

例如这个输出:

...
tt ()
untargz ()
urlfix ()
ver ()
    [ -f /etc/lsb-release ] && RELEASE="$(cat /etc/lsb-release | grep DESCRIPTION | sed 's/^.*=//g' | sed 's/\"//g') ";
vi. ()
vi.su ()
...
Run Code Online (Sandbox Code Playgroud)

会减少到

...
ver ()
    [ -f /etc/lsb-release ] && RELEASE="$(cat /etc/lsb-release | grep DESCRIPTION | sed 's/^.*=//g' | sed 's/\"//g') ";
...
Run Code Online (Sandbox Code Playgroud)

一个更好的方法(如果可能的话)是如果每个匹配函数都可以被确定并完整显示。

我设想大致如下:

  • 收集函数的名称以及其主体中的搜索字符串(函数的名称始终是匹配项之前的一行中的单个单词,从 at 开始,^后跟一个空格,然后以 结尾的行()$ …

bash text-processing

4
推荐指数
1
解决办法
658
查看次数

bash,如何围绕某些限制操作“ls”?

ls似乎有许多对我来说很奇怪的限制,这些限制未包含在其开关中(例如--max-depth=其他工具所具有的)。我喜欢维护通用标准(因此lsll遵循大多数普通发行版所具有的标准),但我的其他别名遵循某种易于记住的语法(lls“长列表、安全性”等)。我可以将其分成几个不同的问题,但由于这一切都与寻找通用操作方法的尝试有关ls,因此列出我的工作清单来描述我正在谈论的内容感觉更合适,因为它们都是相关的。一些具体问题:

  • 我经常听到有人说你永远不应该lsfor循环等中使用。这在默认情况下如何查看子目录等方面是有意义的ls,但是有没有一种简单的方法可以剪辑ls以从不查看子目录内部?我--max-depth=man页面中没有看到任何类似的内容,但在我看来,如果我们剪辑ls不进入子目录,那么在循环或其他结构中使用应该是可靠的for。是否有一种可靠的方法来剪辑ls为仅一个目录的输出,然后在 for 循环中使用它?

  • 我使用了我认为相当笨重的结构lld(带有目录的长列表)和llf(带有文件的长列表)。有没有更好的方式来表达“我只想查看文件”?或“我只想查看目录?”;再次, man页面中我看不到任何内容。特别是,我只能以-l格式进行此列表,否则我无法 grep 出我不想显示的项目。一般来说,我认为以这种方式使用 grep 可能是一个坏主意(因为锁定-l格式),那么有没有更好的方法来实现仅选择目录项或仅选择文件,而不是使用 grep ?

  • 如果下面的任何其他方法格式错误,我希望知道更好的方法?

尝试拥有一组标准的ls输出(每个发行版的设置通常不同)。

字符[]集通配符。例如ls name[03][17].c, 将匹配name01.c, name07.c, name31.c, name37.c, 并且[]还允许范围:ls name[07][1-9].c

请注意使用\ls来运行裸命令,忽略别名。

向条目 vs附加-F …

ls bash

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

标签 统计

bash ×3

find ×1

inputrc ×1

ls ×1

terminal ×1

text-processing ×1