04 新手练兵 - Linux 基础指令 -1
ls 显示目录中文件及其属性信息
ls命令来自英文单词 list 的缩写,中文译为“列出”,其功能是显示目录中的文件及其属性信息,是最常使用的 Linux 命令之一。- 语法格式:
ls 参数 文件名
常见参数
| 参数 | 描述 |
|---|---|
-a | 显示所有文件及目录(all) |
-A | 不显示当前目录和父目录(almost-all) |
-color | 以彩色显示信息(color) |
-d | 显示目录自身的属性信息(directory) |
-i | 显示文件的 inode 属性信息(inode) |
-l | 显示文件的详细属性信息(long format) |
-m | 以逗号为间隔符,水平显示文件信息(comma-separated) |
-r | 依据首字母将文件以相反次序显示(reverse) |
-R | 递归显示所有子文件(recursive) |
-S | 依据内容大小将文件排序显示(size) |
-t | 依据最后修改时间将文件排序显示(time) |
-X | 依据扩展名将文件排序显示(extension) |
常用命令
| 命令 | 描述 |
|---|---|
ls | 显示当前目录下的内容 |
ls -l | 显示当前目录下内容的详细信息 |
ls -la | 与 ls -l 输出内容与格式基本相同,a 指令使得多输出了隐藏文件信息 |
ls -lha | 与 ls -l 输出内容与格式基本相同,h 指令将文件大小转换为人类适读单位 |
ls -lt | 与 ls -l 输出内容与格式基本相同,t 指令按时间排序 |
ls -R | 递归显示当前目录中的所有文件和子目录 |
ls -l [dir_name] | 显示 [dir_name] 目录下的详细信息 |
ls列出当前目录下的文件和目录。ls -a列出当前目录下的所有文件和目录,包括隐藏文件(以.开头的文件)。ls -l以长格式列出当前目录下的文件和目录的详细信息,包括权限、所有者、大小、最后修改日期等。ls /etc列出/etc目录下的文件和目录。ls -i /etc列出/etc目录下的文件和目录,并显示每个文件的 inode 号。ls /dev/sd*列出/dev目录下所有以sd开头的设备文件,通常这些是硬盘设备。ls -Sl /etc以长格式列出/etc目录下的文件和目录,并按文件大小排序,-S选项表示按文件大小排序,-l选项表示长格式输出。
cd 切换当前目录
cd命令来自英文词组change directory的缩写,其功能是更改当前所处的工作目录,路径可以是绝对路径,也可以是相对路径,若省略不写则会跳转至当前使用者的家目录。- 语法格式:
cd 参数 目录名
常用参数
| 命令和参数 | 描述 |
|---|---|
cd -L [链接路径] | -L 选项将遵循符号链接,并切换到链接指向的目录 |
cd -P [链接路径] | -P 选项将切换到符号链接指向的实际物理目录,而不是链接本身 |
cd ~ | 切换到当前用户的主目录(家目录) |
cd .. | 切换到当前目录的父目录 |
cd -- | 切换到之前所在的目录(如果之前使用过 cd 命令的话) |
常用命令
| 命令 | 描述 |
|---|---|
cd | 通常不这么使用,功能上等同于 cd ~,即切换到自己的 home 目录 |
cd ~ | 切换到自己的 home 目录 |
cd . | 通常不这么使用,表示切换到当前目录,即不进行目录切换 |
cd .. | 切换到上一级目录 |
cd ../.. | 切换到上上一级目录。 |
cd - | 切换到上一次的目录 |
cd [dir_name] | 切换到特定目录 [dir_name] |
cd /Dir- 切换当前工作目录到/Dircd ~- 切换当前工作目录到当前用户的主目录cd ..- 切换当前工作目录到当前目录的父目录cd -- 切换当前工作目录到之前的工作目录mkdir foo && cd "$_"- 创建一个名为foo的新目录,如果创建成功,则切换到该目录。$_是一个特殊变量,它保存最后一个命令的最后一个参数的值,在这里是foo
cp 复制文件或文件夹
cp命令来自英文单词copy的缩写,中文译为“复制”,其功能是复制文件或目录。cp命令能够将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。-r参数用于递归操作,复制目录时若忘记添加则会直接报错;-f参数则用于当目标文件已存在时会直接覆盖而不再询问。这两个参数尤为常用。
- 语法格式:
cp 参数 源文件名 目标文件名
常用参数
| 参数 | 描述 |
|---|---|
-a | 功能等价于 -pdr 参数组合,即保留属性信息、递归复制、复制链接文件(archive) |
-b | 覆盖目标文件前先进行备份(backup) |
-d | 复制链接文件时,将目标文件也建立为链接文件(no-dereference) |
-f | 若目标文件已存在,则会直接覆盖(force) |
-i | 若目标文件已存在,则会询问是否覆盖(interactive) |
-l | 对源文件建立硬链接,而非复制文件(link) |
-p | 保留源文件或目录的所有属性信息(preserve) |
-r | 递归复制所有子文件和子目录(recursive) |
-s | 对源文件建立软链接,而非复制文件(symbolic link) |
-v | 显示执行过程详细信息(verbose) |
常用命令
| 命令 | 描述 |
|---|---|
cp [file] [new_file] | 将 [file] 拷贝生成 [new_file],功能上等于 cp -f |
cp -r [dir] [new_dir] | 将 [dir] 目录及其所有内容递归拷贝生成 [new_dir] |
cp -i [file] [new_file] | 将 [file] 拷贝生成 [new_file],若 [new_file] 存在则询问是否覆盖 |
cp -f [file] [new_file] | 将 [file] 拷贝生成 [new_file],若 [new_file] 存在则直接覆盖 |
cp -b [file] [new_file] | 将 [file] 拷贝生成 [new_file],若 [new_file] 存在则备份原 [new_file] |
cp -f --backup=numbered [file] [file] | 将 [file] 进行备份,备份文件后缀为数字 |
NOTE
CentOS 8 系统中的 cp 命令默认带有 -i 选项,这意味着如果目标文件存在,cp 命令会提示用户是否覆盖。这有助于防止意外覆盖文件。
cp File1.cfg File2.cfg- 将File1.cfg文件复制为File2.cfg。cp -r Dir1 Dir2- 将Dir1目录及其所有内容递归复制到Dir2。cp -a File1.cfg File2.cfg- 将File1.cfg文件复制为File2.cfg,并保持文件的所有属性。cp -f File1.cfg /etc- 强制将File1.cfg文件复制到/etc目录,如果目标文件已存在,则覆盖它。cp File1.cfg File2.cfg /etc- 将File1.cfg和File2.cfg文件都复制到/etc目录,如果目标文件已存在,则询问是否覆盖。
mv 移动或改名文件
mv命令来自英文单词move的缩写,中文译为“移动”,其功能与英文含义相同,能够对文件进行剪切和重命名操作。- 这是一个被高频使用的文件管理命令,我们需要留意它与复制命令的区别。
cp命令是用于文件的复制操作,文件个数是增加的,而mv则为剪切操作,也就是对文件进行移动(搬家)操作,文件位置发生变化,但总个数并无增加。 - 在同一个目录内对文件进行剪切的操作,实际上应理解成重命名操作。
- 语法格式:
mv 参数 源文件名 目标文件名
常用参数
| 参数 | 描述 |
|---|---|
-b | 覆盖前为目标文件创建备份(backup) |
-f | 强制覆盖目标文件而不询问(force) |
-i | 覆盖目标文件前询问用户是否确认(interactive) |
-n | 不要覆盖已有文件(no-clobber) |
-u | 当源文件比目标文件更新时,才执行覆盖操作(update) |
-v | 显示执行过程详细信息(verbose) |
-Z | 设置文件安全上下文(context) |
--help | 显示帮助信息(help) |
--version | 显示版本信息(version) |
常用命令
| 命令 | 描述 |
|---|---|
mv [src_file] [dest_file] | 将 [src_file] 重命名为 [dest_file] |
mv -i [src_file] [dest_file] | 在覆盖 [dest_file] 文件前进行询问 |
mv -f [src_file] [dest_file] | 如果存在 [dest_file] 文件时,直接覆盖 |
mv [src_file] [dir_name] | 将 [src_file] 移动到特定文件夹 [dir_name] 下 |
mv [src_file] .. | 将 [src_file] 文件移动到上一级目录 |
mv [dir_name]/* . | 将 [dir_name] 文件夹下的所有内容移动到当前文件夹下 |
NOTE
CentOS 8 系统中的 mv 命令默认带有 -i 选项,这意味着如果目标文件存在,mv 命令会提示用户是否覆盖。这有助于防止意外覆盖文件。
mv File1.cfg File2.cfg- 将File1.cfg文件重命名为File2.cfg。mv File2.cfg /etc- 将File2.cfg文件移动到/etc目录。mv Dir1 /etc/Dir2- 将Dir1目录移动到/etc目录下并重命名为Dir2。mv -f /home/* .- 强制将/home目录下的所有文件和目录移动到当前目录,如果目标位置有同名文件或目录,则覆盖它们。
cat 在终端设备上显示文件内容
cat命令来自英文词组concatenate files and print的缩写,其功能是在终端设备上显示文件内容。- 在 Linux 系统中有很多用于查看文件内容的命令,例如
more、tail、head等,每个命令都有各自的特点。 cat命令适合查看内容较少的纯文本文件。对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl + C组合键中断命令执行,所以对于大文件,干脆用more命令显示吧。- 语法格式:
cat 参数 文件名
常用参数
| 选项 | 描述 |
|---|---|
-A | 等价于 -vET 参数组合(show-all) |
-b | 显示行数(空行不编号)(number-nonblank) |
-e | 等价于 -vE 参数组合(equivalent) |
-E | 每行结束处显示 $ 符号(show-ends) |
-n | 显示行数(空行也编号)(number) |
-t | 等价于 -vT 参数组合(equivalent) |
-T | 将 TAB 字符显示为 ^I 符号(show-tabs) |
-v | 使用 ^ 和 M- 引用,LFD 和 TAB 除外(show-nonprinting) |
--help | 显示帮助信息(help) |
--version | 显示版本信息(version) |
常用命令
| 命令 | 描述 |
|---|---|
cat [file] | 将 [file] 文件的内容打印到显示器上 |
cat -n [file] | 将 [file] 文件的行号和内容打印到显示器上 |
cat -n [src_file] > [dest_file] | 将 [src_file] 文件的行号和内容输出至 [dest_file] 中 |
cat [src_file_1] [src_file_2] > [dest_file] | 将文件 [src_file_1] 和 [src_file_2] 的内容输出到 [dest_file] 中 |
cat /dev/null > [dest_file] | 清空 [dest_file] 文件内容 |
cat anaconda-ks.cfg- 显示anaconda-ks.cfg文件的内容。cat -n anaconda-ks.cfg- 显示anaconda-ks.cfg文件的内容,并显示行号。cat /dev/null > anaconda-ks.cfg- 清空anaconda-ks.cfg文件的内容。- bash
cat > anaconda-ks.cfg << EOF Hello,World Linux!~ EOF将标准输入的内容(在这里是 "Hello,World" 和 "Linux!~" 两行文本)重定向到
anaconda-ks.cfg文件中。 cat /dev/cdrom > rhel.iso- 尝试将/dev/cdrom设备的内容重定向到rhel.iso文件中,这通常用于创建 ISO 镜像文件的副本。注意,这个命令可能需要适当的权限,并且只有在/dev/cdrom设备被正确挂载并且是可读的 CD 或 DVD 时才会成功。
head 显示文件开头的内容
head命令的功能是显示文件开头的内容,默认为前 10 行。- 语法格式:
head 参数 文件名
常用参数
| 参数 | 描述 |
|---|---|
-c [chars] | 设置显示头部内容的字符数(bytes) |
-n [lines] | 设置显示行数(lines) |
-q | 不显示文件名的头信息(quiet, silent) |
-v | 显示文件名的头信息(verbose) |
--help | 显示帮助信息(help) |
--version | 显示版本信息(version) |
常用命令
| 命令 | 描述 |
|---|---|
head -n [lines] [file] | 查看文件 [file] 的前 [lines] 行内容 |
head -c [chars] [file] | 查看文件 [file] 的前 [chars] 个字符 |
head [file] | 查看文件 [file] 的前 10 行内容,等同于 head -n 10 [file] |
head -n 10 File.cfg- 显示File.cfg文件的前 10 行内容。head -n 5 File.cfg- 显示File.cfg文件的前 5 行内容。head -c 20 File.cfg- 显示File.cfg文件的前 20 个字符。
tail 查看文件尾部内容
tail命令的功能是查看文件尾部内容,例如默认会在终端界面上显示指定文件的末尾 10 行,如果指定了多个文件,则会在显示的每个文件内容前面加上文件名来加以区分。- 高阶玩法的
-f参数的作用是持续显示文件的尾部最新内容,类似于机场候机厅的大屏幕,总会把最新的消息展示给用户,对阅读日志文件尤为适合,再也不需要手动刷新了。 - 语法格式:
tail 参数 文件名
常用参数
| 参数 | 描述 |
|---|---|
-c [chars] | 设置显示文件尾部的字符数(bytes) |
-f | 持续显示文件尾部最新内容(follow) |
-n [lines] | 设置显示文件尾部的行数(lines) |
--pid [PID] | 当指定 PID 的进程结束时,自动退出命令(pid) |
--retry | 当文件无权限访问时,依然尝试打开(retry) |
--help | 显示帮助信息(help) |
--version | 显示版本信息(version) |
常用命令
| 命令 | 描述 |
|---|---|
tail -n [lines] [file] | 查看文件 [file] 的最后 [lines] 行内容 |
tail -c [chars] [file] | 查看文件 [file] 的最后 [chars] 个字符 |
tail -f [file] | 持续跟踪 [file] 文件的增长信息 |
tail [file] | 查看文件 [file] 的最后 10 行内容,等同于 tail -n 10 [file] |
tail File.cfg- 显示File.cfg文件的最后 10 行内容。tail -n 5 File.cfg- 显示File.cfg文件的最后 5 行内容。tail -c 30 File.cfg- 显示File.cfg文件的最后 30 个字符。tail -f File.cfg- 动态显示File.cfg文件的最后 10 行内容,并且当文件内容更新时,实时追加显示新内容。这个命令通常用于监控日志文件的实时更新。