看来clear
和 bash Ctrl-L是有很大不同的;clear
完全删除以前的所有终端信息(因此您无法向上滚动) while Ctrl-L只是滚动屏幕,使光标位于页面顶部,以便您仍然可以向上滚动并查看以前的信息。我更喜欢Ctrl-L系统。有没有办法覆盖,clear
以便它执行Ctrl-L而不是擦除所有以前的终端信息?这不是一个大问题,但我只是出于好奇而想知道是否有一种方法可以使用别名clear
来指向我喜欢的Ctrl功能L。
顺便说一句,我刚刚注意到 PowerShell 也有一个绑定Ctrl-并且它的执行方式与-在 bash 上L相同;看起来 PowerShell 设计者从 bash 中借鉴了很多,而控制台没有这个功能。CtrlLcmd.exe
find
每当我使用它时,对我来说总是一个完全的谜;我只是想/mnt
从我的搜索中排除(我在 WSL 上的 Ubuntu 20.04 上的 bash 中,所以不希望它在 Windows 空间中搜索)下的所有内容,但find
只是错误地进入这些目录,完全忽略了我。我从这个页面找到了语法。/sf/ask/294702971/并尝试了所有变体 - 全部失败。
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 页面语法似乎是正确的):
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
忽略我的目录排除开关吗?
我想在 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)
一个更好的方法(如果可能的话)是如果每个匹配函数都可以被确定并完整显示。
我设想大致如下:
^
后跟一个空格,然后以 结尾的行()$ …
ls
似乎有许多对我来说很奇怪的限制,这些限制未包含在其开关中(例如--max-depth=
其他工具所具有的)。我喜欢维护通用标准(因此ls
并ll
遵循大多数普通发行版所具有的标准),但我的其他别名遵循某种易于记住的语法(lls
“长列表、安全性”等)。我可以将其分成几个不同的问题,但由于这一切都与寻找通用操作方法的尝试有关ls
,因此列出我的工作清单来描述我正在谈论的内容感觉更合适,因为它们都是相关的。一些具体问题:
我经常听到有人说你永远不应该ls
在for
循环等中使用。这在默认情况下如何查看子目录等方面是有意义的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
来运行裸命令,忽略别名。