我可以ls -ld */
用来列出当前目录中的所有目录条目。有没有类似的简单方法来列出当前目录中的所有常规文件?我知道我可以使用 find
find . -maxdepth 1 -type f
Run Code Online (Sandbox Code Playgroud)
或统计
stat -c "%F %n" * | grep "regular file" | cut -d' ' -f 3-
Run Code Online (Sandbox Code Playgroud)
但这些并没有让我觉得过于优雅。有没有一个很好的简短方法来只列出常规文件(我不关心设备、管道等)而不是当前目录的子目录?列出符号链接也是一个加分项,但不是必需的。
我经常想做一些快速的日期计算,例如:
我通常打开日历并计算天数,但我认为应该有一个程序/脚本可以用来进行这些类型的计算。有什么建议?
ulimit 中的硬限制和软限制有什么区别?
对于打开文件的数量,我的软限制为 1024,硬限制为 10240。可以运行打开超过 1024 个文件的程序。什么是软限制?
排序文件名时,ls
忽略-,_
. 我希望它也能在排序中使用这些字符。
一个例子:
touch a1 a2 a-1 a-2 a_1 a_2 a.1 a.2 a,1 a,2
Run Code Online (Sandbox Code Playgroud)
现在显示这些文件ls -1
:
a1
a_1
a-1
a,1
a.1
a2
a_2
a-2
a,2
a.2
Run Code Online (Sandbox Code Playgroud)
我期望的是这样的:
a1
a2
a,1
a,2
a.1
a.2
a_1
a_2
a-1
a-2
Run Code Online (Sandbox Code Playgroud)
即我希望在排序时考虑非字母数字字符。
谁能解释这种行为?这种行为是由标准强制要求的吗?或者这是因为编码是UTF-8?
更新:这似乎与 UTF-8 排序有关:
$ LC_COLLATE=C ls -1
a,1
a,2
a-1
a-2
a.1
a.2
a1
a2
a_1
a_2
Run Code Online (Sandbox Code Playgroud) 我最近在命令行上遇到了一些正则表达式的问题,发现为了匹配反斜杠,可以使用不同数量的字符。这个数字取决于用于正则表达式的引用(无、单引号、双引号)。请参阅以下 bash 会话以了解我的意思:
echo "#ab\\cd" > file
grep -E ab\cd file
grep -E ab\\cd file
grep -E ab\\\cd file
grep -E ab\\\\cd file
#ab\cd
grep -E ab\\\\\cd file
#ab\cd
grep -E ab\\\\\\cd file
#ab\cd
grep -E ab\\\\\\\cd file
#ab\cd
grep -E ab\\\\\\\\cd file
grep -E "ab\cd" file
grep -E "ab\\cd" file
grep -E "ab\\\cd" file
#ab\cd
grep -E "ab\\\\cd" file
#ab\cd
grep -E "ab\\\\\cd" file
#ab\cd
grep -E "ab\\\\\\cd" file
#ab\cd
grep -E "ab\\\\\\\cd" file
grep -E 'ab\cd' file
grep …
Run Code Online (Sandbox Code Playgroud) 我想卸载 Gentoo 中的特定软件包并浏览了emerge 手册页。我找到了--unmerge
选项:
警告:此操作可以删除重要的包!删除所有匹配的包。这不会检查依赖关系,因此它可能会删除系统正常运行所需的包。它的参数可以是原子或 ebuilds。对于--unmerge的依赖感知版本 ,请使用--depclean或--prune。
但是,我想通过emerge来检查系统中任何其他已安装的软件包是否需要我要卸载的软件包。--depclean
并且--prune
不提供该功能:
--depclean
删除作为依赖项安装但不再需要的包--prune
“从您的系统中删除除最高安装版本之外的所有软件包”没有依赖检查版本--unmerge
吗?
当我执行以下行时
test -n && echo not empty
Run Code Online (Sandbox Code Playgroud)
它打印“非空”。当您有一个空变量时会发生这种情况,并在忘记引用该值时测试非空:
VAR=
test -n $VAR && echo wrong 1
test -n "$VAR" && echo wrong 2
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?
我最近改用 KDE 4,我不喜欢 KDE 使用这么多 Ctrl-Fn 快捷键,因为我将它们用于其他目的。具体来说,我想在 KDE 中禁用 Ctrl-F4 快捷键。但是,我无法在系统设置 -> 快捷方式和手势中找到此快捷方式。
更新:我想重新定义的另一个快捷方式是“显示窗口菜单”快捷方式,我喜欢 Alt-Space,但 KDE 在 Alt-F3 上有。
我一直无法找到一个全局位置来更改所有快捷方式。
作为我正在编写的更大的自动完成功能的一部分,我想使用 compgen 生成文件列表。我阅读了compgen
and的 bash 手册条目complete
,从那里我认为该选项-G "*"
将是解决方案。但是,我无法让它工作:无论我的输入如何,都会显示当前目录中的文件列表,即:
$ cmd <Tab>
aa bb cc
$ cmd a<Tab>
aa bb cc
$ cmd aa<Tab>
aa bb cc
Run Code Online (Sandbox Code Playgroud)
因此,我尝试通过使用来调试它complete
,它支持与 compgen 相同的选项,但我得到了相同的结果:
$ complete -G "*" cmd
$ cmd a<Tab>
aa bb cc
Run Code Online (Sandbox Code Playgroud)
我也试过complete -o filenames
,但这也不起作用..
我想使用 vi 编辑器将一行移动 4 个字节。我应该使用什么命令?
我试过“>>”,它确实移动了,但它移动了 8 个字节..