bash - 我可以通过管道将路径名扩展传递给命令吗?
问题描述
使用 bash 我想在不使用命令的情况下完成以下命令的功能ls
,而是使用纯路径名扩展。这可能吗?
ls * | tail -1
我正在寻找类似的东西
* | tail -1
解决方案
是的,您可以使用这样做,但*
不会做您认为的事情。它扩展为目录内容列表并尝试将自身作为二进制文件执行。当您的目录内容包含不打算运行的实际可执行文件时,这可能很危险。
您可以使用内置的 shell 来处理路径名扩展结果,而无需分叉一个单独的进程。例如使用printf()
printf '%s\n' *
看看当你尝试*
在命令行中执行时会发生什么
mkdir -p foobar
cd foobar
touch zeezee
*
bash: zeezee: command not found
您可以查看tail
此输出的结果并在您觉得方便时过滤结果。
推荐阅读
- windows-10 - Windows 10:仅将窗口固定到特定任务栏
- google-apps-script - 需要谷歌电子表格脚本错误权限
- javascript - 在反应中使用 =, =>, : 有什么不同?
- c# - 预览 OpenXML 创建的 zip 文件中的文档时出错
- javascript - 如何在javascript中获取元素的背景div
- python - Python:float() 参数必须是字符串或数字,而不是“期间”
- python - 什么是 numpy.core._multiarray_umath.implement_array_function 以及为什么要花费大量时间?
- r - 需要帮助将列数据组织和汇总到 R Markdown
- javascript - 根据请求jQuery将pdf从后端传输到前端
- java - 如何使用 selenium4 获取 .har 文件或网络请求