第2章 基础命令
所属:第一部分 shell入门 来源:Linux命令速查手册
本章介绍几乎每天都会用到的基础命令。这些命令就像锤子、螺丝刀、锯等木匠经常用的工具,需要放在工具箱的最上面。
2.1 列出文件和文件夹
ls列出当前所在目录的内容。第一次登录shell时,当前目录是你的home目录。
示例输出:
alias Desktop iso pictures program_files todo
bin documents music podcasts src videos
ls命令听起来可能很简单,但它的选项组合多得令人吃惊,也使它表现出惊人的灵活性。
2.2 列出其他文件夹的内容
ls music
ls /home/scott/music
ls ~/videos- 可以使用相对路径或绝对路径
~字符代表你的home目录
示例:
$ ls ~/videos
Ubuntu_Talk.mpeg nerdtv_1_andy_hertzfeld
airhorn_surprise.wmv nerdtv_2_max_levchin
apple_navigator.mov nerdtv_3_bill_joy
b-ball-e-mail.mov RPG_Nerds.mpeg
carwreck.mpg tiger_woods_just_did_it.wmv2.3 使用通配符列出文件夹的内容
ls ~/videos/*.wmv
ls ~/videos/*tiger*使用通配符快速筛选文件。
示例:
$ ls ~/videos/*.wmv
airhorn_surprise.wmv tiger_woods_just_did_it.wmv
$ ls ~/videos/*tiger*
tiger_woods_just_did_it.wmv2.4 查看子文件夹中的文件列表
ls -R
ls --recursive递归遍历目录,显示所有子目录的内容。
示例:
$ ls -R ~/iso
iso:
debian-31r0a-i386-netinst.iso knoppix ubuntu
iso/knoppix:
KNOPPIX_V4.0.2CD.iso KNOPPIX_V4.0.2DVD.iso
iso/ubuntu:
kubuntu-5.10-install.iso ubuntu-5.10-install.iso
kubuntu-5.10-live.iso ubuntu-5.10-live.iso如果有很多子目录,递归选项显示的内容会一屏接着一屏,很难找到想要的内容。按
Ctrl+c取消命令。
2.5 以单独一列显示内容
ls -1
ls --format=single-column按单列显示文件列表。
示例:
$ ls -1 ~/
bin
Desktop
documents
iso
music
pictures
src
videos2.6 用逗号分隔的列表显示内容
ls -m
ls --format=commas用逗号分隔显示文件名。
示例:
$ ls -m ~/
bin, Desktop, docs, iso, music, pix, src, videos将
-m中的 m 看作是”逗号”的助记符,更容易记住。编写脚本需要逗号分隔的列表时很有用。
2.7 查看隐藏的文件和文件夹
ls -a
ls --all显示所有文件,包括隐藏文件(以 . 开头的文件和目录)。
说明:
- 既能显示隐藏内容,也能显示非隐藏内容
- 总能看到
.(当前目录)和..(父目录),这两个在每个文件夹中都存在,不能删除 - home目录通常有大量隐藏文件(配置文件)
2.8 显示文件的类型
ls -F
ls --classify在文件名后附加符号表示文件类型。
| 符号 | 含义 |
|---|---|
* | 可执行文件 |
/ | 目录 |
@ | 符号链接文件 |
| ` | ` |
= | 套接字(socket) |
示例:
$ ls -F ~/bin
addext* fixm3u* pix2tn.pl*
adblock_filters.txt getip* procmail/2.9 用不同的颜色显示内容
ls --color用颜色区分不同类型的文件。很多Linux系统默认已开启颜色显示。
颜色对照表
| 颜色 | 含义 |
|---|---|
| 默认shell文本颜色 | 普通文件 |
| 绿色 | 可执行文件 |
| 蓝色 | 目录 |
| 紫红色 | 符号链接文件 |
| 黄色 | 管道(FIFO) |
| 紫红色 | 套接字(socket) |
| 红色 | 压缩文件(.tar、.zip、.deb、.rpm) |
| 紫红色 | 图片文件(.jpg、.gif、.png、.tiff) |
| 紫红色 | 音频文件(.mp3、.ogg、.wav) |
想知道系统为各种文件映射了什么颜色吗?输入
dircolors --print-database查看。也可以使用dircolors命令修改颜色配置。
组合使用:
ls -F --color2.10 显示权限、所有者等详细信息
ls -l
ls --format=long
ls -la # 包含隐藏文件
ls -lF # 附加类型标识
ls -lh # 人类可读的文件大小ls -l 输出详解(从左到右)
- 权限位(10个字符)
- 硬链接数
- 所有者
- 所属组
- 文件大小(字节)
- 修改时间
- 文件名
示例:
$ ls -l ~/bin
total 2951
-rw-r--r-- 1 scott scott 15058 2005-10-03 18:49 adblock_filters.txt
-rwxr-xr-- 1 scott root 33 2005-04-19 09:45 addext
drwxr-xr-x 9 scott scott 1080 2005-09-22 14:42 bin_on_bacon权限位详解
权限位共10个字符,分为4组:类型 | 所有者 | 组 | 其他用户
例如:drwxr-xr-x = d | rwx | r-x | r-x
文件类型(第1位)
| 字符 | 含义 |
|---|---|
- | 普通文件 |
d | 目录 |
l | 符号链接 |
s | 套接字(socket) |
b | 块设备(block device) |
c | 字符设备(character device) |
p | 命名管道(named pipe) |
要查看各种设备文件,可以试试
ls -l /dev
权限含义(rwx)
r= 读取(read)w= 写入(write,修改和删除)x= 执行(execute)-= 无此权限
目录权限的特殊含义
对于目录,权限含义有所不同:
r= 可以使用ls列出目录的内容w= 可以在目录中增加、重命名、删除文件x= 可以访问目录(进入目录、使用目录中的文件、访问子目录)
常见权限组合
| 权限 | 适用场景 |
|---|---|
rw-r--r-- (644) | 普通文件,所有者可读写,其他人只读 |
rwxr-xr-x (755) | 可执行文件/目录,所有者全部权限,其他人读和执行 |
2.11 以相反的顺序显示列表内容
ls -r
ls --reverse按相反顺序排列。
⚠️ 注意区分:
-r= 反向(reverse)-R= 递归(recursive)
2.12 按文件的扩展名排序
ls -X按文件扩展名的字母顺序排序。
2.13 按日期和时间排序
ls -t按修改时间排序,最新的在前。
常用组合:
ls -lt # 详细信息按时间排序
ls -ltr # 详细信息按时间反向排序(最旧的在前,最新的在最后)2.14 按文件大小进行排序
ls -S按文件大小排序,最大的在前。
2.15 用K、M和G显示文件大小
ls -h
ls --human-readable以人类可读的格式显示文件大小(KB、MB、GB)。
常用组合:
ls -lh # 详细信息 + 易读大小
ls -lSh # 按大小排序 + 易读大小2.16 显示当前目录的路径
pwd显示当前工作目录的完整绝对路径。
2.17 切换到不同的目录
cd /path/to/directory
cd documents
cd .. # 回到上一级目录切换到指定目录,支持相对路径和绝对路径。
2.18 切换到home目录
cd
cd ~不带参数的 cd 直接回到home目录。
2.19 切换到以前的目录
cd -快速切换回上一个工作目录,在两个目录间来回切换非常方便。
2.20 将文件时间修改为当前时间
touch filename- 如果文件不存在,创建空文件
- 如果文件存在,更新访问时间和修改时间为当前时间
2.21 将文件时间修改为想要的任意时间
touch -t 202501011200 filename时间格式:YYYYMMDDhhmm(年月日时分)
2.22 创建新的空文件
touch newfile.txt创建空文件。
2.23 创建新目录
mkdir new_directory创建新目录。
2.24 创建新目录和任何必要的子目录
mkdir -p parent/child/grandchild
mkdir --parents parent/child/grandchild递归创建多级目录,中间不存在的目录会自动创建。
2.25 看看mkdir到底做了什么
mkdir -v directory
mkdir --verbose directory显示创建过程。
2.26 复制文件
cp source destination
cp file.txt /path/to/destination/复制文件到目标位置。如果目标是目录,则复制到该目录下。
2.27 使用通配符复制文件
cp *.jpg ~/pictures/使用通配符批量复制文件。
2.28 复制文件时显示执行过程
cp -v source destination
cp --verbose source destination显示复制的详细过程。
2.29 防止复制时覆盖重要的文件
cp -i source destination
cp --interactive source destination覆盖前提示确认,输入 y 才覆盖。
2.30 复制目录
cp -r source_dir destination_dir
cp --recursive source_dir destination_dir递归复制目录及其所有内容。
2.31 复制文件到其他目录以作为完整的备份
cp -a source destination
cp --archive source destination归档模式复制,保留:
- 权限
- 所有者
- 时间戳
- 软链接
- 递归目录
非常适合做完整备份。
2.32 移动和重命名文件
mv source destination移动文件。如果目标是同一目录下的新名称,则为重命名。
2.33 重命名文件和文件夹
mv oldname newname在同一目录内移动即重命名。目录也一样。
2.34 删除文件
rm filename删除文件。
⚠️ 警告:删除后无法恢复! Linux没有回收站的概念,删除就是真的删了。
2.35 使用通配符一次删除多个文件
rm *.tmp
rm *.log批量删除文件,使用前建议先用 ls 确认匹配结果。
2.36 删除文件时显示执行过程
rm -v filename
rm --verbose filename显示删除过程。
2.37 防止删除重要文件
rm -i filename
rm --interactive filename删除前提示确认。
2.38 删除空目录
rmdir empty_directory只能删除空目录,目录非空会报错。
2.39 删除文件和非空的目录
rm -r directory
rm -rf directory # 强制递归删除,无提示-r/-R= 递归删除(recursive)-f= 强制删除,不提示(force)
⚠️ 极度危险警告:
rm -rf无法恢复! 使用前务必确认路径正确,尤其不要在根目录/下使用! 建议先用ls确认路径内容,再执行删除。
2.40 删除难缠的文件
rm -- -filename
rm "./-filename"删除以 - 开头的特殊文件名(防止被误认为是选项)。
2.41 变更到其他用户
su username切换到其他用户,需要输入目标用户密码。
注意:
su只切换用户身份,不切换环境变量和工作目录。
2.42 变更到其他用户,包括其环境变量
su - username
su -l username
su --login username完全切换用户环境:
- 切换到目标用户的home目录
- 加载目标用户的环境变量
- 相当于真正登录为该用户
2.43 变更成root用户
su切换到root用户,需要root密码。
2.44 变更成root用户,包括其环境变量
su -
su -l完全切换到root环境。
Ubuntu/Kubuntu 推荐使用
sudo而不是直接以root登录。
2.45 小结
本章介绍了最常用的基础文件操作命令:
查看类:ls(及其众多选项)、pwd
导航类:cd
文件操作:touch、cp、mv、rm
目录操作:mkdir、rmdir、rm -r
用户切换:su
这些是日常使用中最频繁的命令,务必熟练掌握。