文章目录
- [1. 命令格式](#1. 命令格式)
- [2. 基本用法](#2. 基本用法)
-
- [2.1 ls](#2.1 ls)
- [2.2 ls -a (--all)](#2.2 ls -a (--all))
- [2.3 ls -l (--long)](#2.3 ls -l (--long))
- [2.4 ls -lh (--human-readable)](#2.4 ls -lh (--human-readable))
- [2.5 ls -F (--classify)](#2.5 ls -F (--classify))
- [3. 高级用法](#3. 高级用法)
-
- [3.1 ls -t](#3.1 ls -t)
- [3.2 ls -r (--reverse)](#3.2 ls -r (--reverse))
- [3.3 ls -S](#3.3 ls -S)
- [3.4 ls -d](#3.4 ls -d)
- [3.5 ls -i (--inode)](#3.5 ls -i (--inode))
- [3.6 ls -R (--recursive)](#3.6 ls -R (--recursive))
- [4. 注意事项](#4. 注意事项)
1. 命令格式
bash
ls [OPTION]... [FILE]...
- [OPTION]: 零个、一个或多个选项,用于改变 ls 命令的默认行为。
- [FILE]: 零个、一个或多个文件或目录的路径。如果省略,则默认为当前目录。如果提供的是文件,则列出该文件的信息;如果提供的是目录,则列出该目录下的内容
2. 基本用法
2.1 ls
- 作用 :列出当前目录下的非隐藏文件和目录(以点 . 开头的文件和目录被视为隐藏项)
- 案例:
bash
$ ls
Documents Downloads Music Pictures file.txt
2.2 ls -a (--all)
- 作用:列出当前目录下的所有文件和目录,包括隐藏文件。
- 案例:
bash
$ ls -a
. .. .bashrc Documents Downloads .profile Music Pictures file.txt
2.3 ls -l (--long)
- 作用:使用长列表格式显示详细信息,包括文件权限、链接数、所有者、所属组、文件大小、最后修改时间等。
- 案例:
bash
$ ls -l
total 32
drwxr-xr-x 2 user user 4096 Jan 10 10:30 Documents
-rw-r--r-- 1 user user 27 Jan 10 09:15 file.txt
...
- total 32:表示该目录下所有文件占用的磁盘空间总和(单位是 KB)
- drwxr-xr-x:文件类型与权限
- 2:硬链接数量
- user:文件所有者
- user:文件所属用户组
- 4096:文件大小(字节)
- Jan 10 10:30:最后修改日期和时间
- Documents:文件/目录名
2.4 ls -lh (--human-readable)
- 作用 :与 -l 一起使用,以更人性化的单位(K, M, G)显示文件大小。
- 案例:
bash
$ ls -lh
total 32K
drwxr-xr-x 2 user user 4.0K Jan 10 10:30 Documents
-rw-r--r-- 1 user user 27 Jan 10 09:15 file.txt
-rw-r--r-- 1 user user 1.2M Jan 10 11:20 large_file.iso
2.5 ls -F (--classify)
- 作用 :在文件后加一个符号,帮助快速识别文件类型
- /:表示目录
- *:表示可执行文件
- @:表示符号链接(软链接)
- |:表示 FIFO(命名管道)
- = :表示套接字(socket)
- 什么都不加:表示普通文件
- 案例:
bash
$ ls -F
Documents/ Downloads/ script.sh* link@ file.txt
3. 高级用法
3.1 ls -t
作用 :按修改时间排序,最新的文件在最前面
案例:快速找到刚才下载或创建的文件
bash
$ ls -lt
3.2 ls -r (--reverse)
- 作用:反向排序。通常与其他排序选项联用
- 案例:按时间倒序排列,最旧的文件在最前面
bash
$ ls -ltr
# 组合了 -l (长格式), -t (按时间排序), -r (反向,即最旧的在前)
3.3 ls -S
- 作用:按文件大小排序,最大的文件在最前面
- 案例:快速找出目录中最大的文件
bash
$ ls -lS
# 或者使用更易读的大小格式
$ ls -lhS
3.4 ls -d
- 作用:仅列出目录本身,而不列出目录下的内容
- 案例:只想查看当前目录下有哪些子目录
bash
# 通配符 */ 用于匹配所有目录
$ ls -d */
Documents/ Downloads/ Music/ Pictures/
3.5 ls -i (--inode)
- 作用:显示每个文件的 inode 号。inode 是文件系统存储文件元信息的数据结构
- 案例:在处理硬链接或某些底层文件系统问题时非常有用
bash
$ ls -i
123456 file.txt 789012 Documents/
3.6 ls -R (--recursive)
作用 :递归地列出所有子目录中的内容
案例:查看一个复杂项目的完整目录树结构
bash
$ ls -R
.:
dir1 file1.txt
./dir1:
dir2 file2.txt
./dir1/dir2:
file3.txt
4. 注意事项
- 隐藏文件:默认情况下,以点 . 开头的文件不会被列出,必须使用 -a 选项
- 排序问题:ls 的默认按字母顺序一列列排序
- 文件名中的特殊字符 :如果文件名包含空格、换行符等特殊字符,直接使用 ls 的输出进行脚本处理可能会出错。在脚本中应使用其他方法 如 find 或配合 printf
- 性能:在包含极大量文件(例如数十万个)的目录中使用 ls(尤其是 -l 或 -R)可能会导致命令执行缓慢,因为它需要为每个文件获取信息
- 权限:如果对某个目录没有读权限,ls 该目录时会报错 Permission denied
- 别名:在大多数 Linux 系统中,ls 通常被设置为一个别名(alias),默认已经包含了一些常用选项
bash
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
这样,之后你只需要输入 ll 就能实现 ls -alF 的效果。