第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.wmv

2.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.wmv

2.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
videos

2.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 --color

2.10 显示权限、所有者等详细信息

ls -l
ls --format=long
ls -la      # 包含隐藏文件
ls -lF      # 附加类型标识
ls -lh      # 人类可读的文件大小

ls -l 输出详解(从左到右)

  1. 权限位(10个字符)
  2. 硬链接数
  3. 所有者
  4. 所属组
  5. 文件大小(字节)
  6. 修改时间
  7. 文件名

示例:

$ 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 文件操作touchcpmvrm 目录操作mkdirrmdirrm -r 用户切换su

这些是日常使用中最频繁的命令,务必熟练掌握。


Linux Shell 基础命令 ls cd rm cp mv mkdir