ls默认不显示以点开头的隐藏文件,因遵循POSIX规范;需加-a查看全部(含.和..),-A跳过.和..更安全;-lh组合实现人类可读大小,-lSh按大小降序排列;空格文件名用引号或--处理,递归慎用-R,优先选find。

直接用 ls 就能列出当前目录的文件名,但多数时候你需要的不是“能列”,而是“列得对”——比如看到隐藏文件、按大小排序、避免空格截断、防止误删。
为什么 ls 不显示以点开头的文件?
因为默认行为就是忽略隐藏文件(即以 . 开头的文件或目录),这是 POSIX 规定,不是 bug。想看到它们必须加 -a。
-
ls -a:显示.和..,也显示其他隐藏项(如.bashrc) -
ls -A:跳过.和..,只显示其余隐藏项——日常更安全,避免误操作根目录本身 - 别用
ls .*:它会先被 shell 展开成多个参数,可能报错ls: cannot access '.cache': No such file or directory(因部分隐藏目录不存在)
如何让 ls 输出真正可读的文件大小?
-h 必须和 -l 一起用才生效;单独 ls -h 没效果,且可能触发意外行为(某些旧版 BusyBox 会报错)。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
ls -lh:正确组合,大小显示为1.2K、45M、2.1G -
ls -lSh:按大小降序 + 人类可读 + 长格式——查大日志、找残留包最常用 - 注意
--si:用 1000 进制(KB=1000B)而非默认 1024 进制,适合和磁盘厂商标称值比对
文件名含空格或破折号时,ls 报错怎么办?
错误典型如:ls: cannot access 'my file.txt': No such file or directory 或 ls: invalid option -- 'f'(当你运行 ls -filename)。
- 用引号包裹:
ls "my file.txt"或ls './-filename' - 用
--终止选项解析:ls -- -filename(告诉ls后面全是文件名,不是参数) - 避免用
ls *.txt处理含空格的匹配结果——shell 展开后可能被拆成多个参数,改用find . -name "*.txt" -ls更稳
递归列出子目录却卡住或漏内容?
ls -R 会无差别遍历所有子目录,包括 /proc、/sys 这类虚拟文件系统,容易卡死或报权限错误。
-
ls -R /var/log可行,但ls -R /基本不可取 - 加
-d防止误入符号链接循环:ls -Rld /path/to/dir - 真要深度扫描,优先用
find:find /var/log -maxdepth 2 -type f -ls,可控且不卡
最常被忽略的是:你敲的 ls 命令,实际可能是 alias(比如 alias ls='ls --color=auto'),而某些脚本环境里 alias 不生效——这时得显式写 /bin/ls 或加 \ls 绕过 alias。别假设终端里看到的就是原始命令。

















