Linux研学-入门命令
一 目录介绍
1 介绍
Linux与Windows在目录结构组织上差异显著:Linux采用树型目录结构,以单一根目录/
为起点,所有文件和子目录由此向下延伸形成层级体系,功能明确的目录各司其职,使文件系统层次清晰、逻辑连贯,便于统一管理与维护。
而Windows以C盘、D盘、E盘等盘符为基础构建文件系统,不同盘符下的文件系统相互独立,文件分散存储需用户在不同盘符间切换访问,这种设计在早期有一定便利性,但随着存储需求变化,其管理分散、操作繁琐且不利于整体规划的弊端逐渐凸显。
2 路径层级关系
在Linux系统中,路径之间的层级关系,使用/
来表示(/usr/local/hi.txt,其中开头的/
表示根目录,后面的/
表示层级关系);
在Windows系统中,路径之间的层级关系,使用\
来表示(E:\Kingsoft\Git)
3 HOME目录和工作目录
HOME目录:HOME目录是每个Linux用户在系统中的个人账户目录。路径通常为/home/用户名,例如,用户dahuang的HOME目录是/home/dahuang。HOME目录是用户存放个人文件、配置文件等的地方。
工作目录:工作目录是用户当前所在的目录,也是命令行终端中默认操作的目录。当用户在命令行终端中直接输入ls命令时,列出的是当前工作目录下的内容。在命令行终端启动时,默认会将当前登录用户的HOME目录作为当前工作目录。
二 入门命令
1 介绍
命令行(Terminal):命令行是Linux的纯字符交互界面,用户通过输入文本命令与系统交互。它高效灵活,支持复杂操作,且可通过脚本自动化执行任务,适合熟悉命令及系统管理、批量处理等场景。
命令(Linux程序):在Linux中,命令即无图形界面的可执行程序,用户通过命令行调用以执行特定功能。
2 Linux命令基础格式
# command 命令本身,表示要执行的操作。
# options 可选部分,用于控制命令的行为细节。通常以短横线 `-` 开头,可以是一个或多个字母的组合。
# parameter 可选部分,命令的参数,通常用于指定命令操作的目标或范围。
command [-options] [parameter]
# 例子
# 命令,用于列出目录内容;选项,表示以长格式显示详细信息;参数,指定要列出内容的目录。
ls -l /home/bjtj# 将文件夹 tj1 及其内容复制为 tj2
cp -r tj1 tj2
3 ls 命令 – 命令用于列出目录下的内容
① 语法:列出目录下的内容
# -a 列出所有文件和目录,包括隐藏文件。
# -l 以长格式显示详细信息。
# -h 以人类可读的格式显示文件大小。
# Linux路径 指定要列出内容的目录路径。如果不指定,默认列出当前工作目录下的内容。
ls [-a -l -h] [Linux路径]
② 例子:直接使用 ls
会以平铺形式列出当前工作目录下的内容。选项可以组合使用如-l -a
,-al
[root@localhost ~]# ls
anaconda-ks.cfg app bin logs mkdir nacos nohup.out software store touch
[root@localhost ~]# ls /
aa.txt boot etc lib mao2 mnt opt root sbin sys usr
bin dev home lib64 media mydata proc run srv tmp var
# 只要文件或文件夹的名称以点开头,它们就会在文件管理器或使用默认的 ls 命令时自动隐藏。
[root@localhost ~]# ls -a
. .bash_history bin .mao1.txt.swp nacos software .viminfo
.. .bash_logout .cshrc .mao5.txt.swp nohup.out store
anaconda-ks.cfg .bash_profile .docker mkdir .oracle_jre_usage .tcshrc
app .bashrc logs .mysql_history .pki touch
[root@localhost ~]# ls -l
total 4360
-rw-------. 1 root root 1203 Jul 28 2023 anaconda-ks.cfg
drwxr-xr-x. 2 root root 89 Aug 10 2023 app
drwxr-xr-x. 2 root root 92 Aug 10 2023 bin
drwxr-xr-x. 6 root root 71 Aug 25 2023 logs
-rw-r--r-- 1 root root 0 Oct 24 2023 mkdir
drwxr-xr-x. 3 root root 20 Aug 25 2023 nacos
-rw-------. 1 root root 4405717 Aug 25 2023 nohup.out
drwxr-xr-x. 4 root root 242 Aug 25 2023 software
drwxr-xr-x. 6 root root 113 Aug 25 2023 store
-rw-r--r-- 1 root root 0 Oct 24 2023 touch
# h要与l一起使用,单独使用无效果
[root@localhost ~]# ls -lh
total 4.3M
-rw-------. 1 root root 1.2K Jul 28 2023 anaconda-ks.cfg
drwxr-xr-x. 2 root root 89 Aug 10 2023 app
drwxr-xr-x. 2 root root 92 Aug 10 2023 bin
drwxr-xr-x. 6 root root 71 Aug 25 2023 logs
-rw-r--r-- 1 root root 0 Oct 24 2023 mkdir
drwxr-xr-x. 3 root root 20 Aug 25 2023 nacos
-rw-------. 1 root root 4.3M Aug 25 2023 nohup.out
drwxr-xr-x. 4 root root 242 Aug 25 2023 software
drwxr-xr-x. 6 root root 113 Aug 25 2023 store
-rw-r--r-- 1 root root 0 Oct 24 2023 touch
4 cd 命令 – 切换工作目录
① 语法:如果直接执行 cd 命令而不写参数,表示回到用户的 HOME 目录
# cd 命令只有参数 不需选项
cd [Linux路径]
② 例子
[root@localhost ~]# cd /
[root@localhost /]# ls
aa.txt boot etc lib mao2 mnt opt root sbin sys usr
bin dev home lib64 media mydata proc run srv tmp var
③ 注意:在Linux中,路径通常使用正斜杠/
作为分隔符,如果指定的路径不存在或用户没有访问权限,cd 命令会报错。而路径又分为相对路径与绝对路径:
绝对路径:从根目录/
开始的完整路径,例如 /home/dahuangdir
相对路径:相对于当前工作目录的路径,例如 ../
表示上一级目录,./
表示当前目录(通常可以省略)。
# 切换到上一级目录
cd ..# 切换到指定子目录
cd Documents# 切换到绝对路径指定的目录
cd /var/log# 切换到当前用户的 HOME 目录
cd ~
5 pwd 命令 – 查看当前工作目录
① 语法:没有选项,也没有参数,直接输入 pwd 即可执行。
pwd
② 例子
# 进入bin目录,查看当前工作目录
[root@localhost /]# cd bin
[root@localhost bin]# pwd
/bin
6 mkdir 命令 – 创建新目录
① 语法:创建新目录(文件夹)的命令
#参数 Linux路径是必填项,表示要创建的目录的路径。这个路径可以是相对路径,也可以是绝对路径。
#选项 -p 这是一个可选选项,表示自动创建不存在的父目录。这对于创建连续多层级的目录非常有用。
mkdir [-p] Linux路径
② 例子:如果指定的目录已经存在,mkdir 命令会报错,提示目录已存在。使用 -p 选项时,如果父目录已经存在,mkdir 命令不会报错,而是继续创建剩余的目录。在创建目录时,确保你有足够的权限在指定的路径下创建目录。
[root@localhost games]# mkdir -p /usr/games/Projects/new_project/src
[root@localhost games]# ls
Projects
[root@localhost games]# cd Projects/
[root@localhost Projects]# ls
new_project
[root@localhost Projects]# cd new_project/
[root@localhost new_project]# ls
src
7 touch 命令 – 创建文件
① 语法:主要用于更新文件的访问和修改时间,但它也可以用于创建一个新的空文件。当指定的文件不存在时,touch 命令会创建一个新的空文件。
# 参数 Linux路径 是必填项,表示要创建或更新的文件的路径。这个路径可以是相对路径,也可以是绝对路径
# 选项 touch 命令通常没有用于创建文件的选项(尽管它有一些用于修改文件时间戳的选项,但在创建文件时通常不需要使用)
touch Linux路径
② 例子:ls -l
,第一个字母显示d
表示文件夹,-
表示文件
[root@localhost games]# ls
Projects
[root@localhost games]# touch test.txt
[root@localhost games]# ls -l
total 0
drwxr-xr-x 3 root root 25 May 20 15:19 Projects
-rw-r--r-- 1 root root 0 May 20 15:32 test.txt
8 cat 命令 – 查看文件内容
① 语法:查看文件内容的常用命令
cat Linux路径
② 例子:
[root@localhost games]# cat test.txt
hello
9 more 命令 – 查看文件内容
① 语法:与 cat 命令不同,more 命令支持分页显示文件内容,这对于查看大文件特别有用。
more Linux路径
② 例子:
[root@localhost ~]# more /etc/services
③注意:执行上述命令后,more 命令会开始显示文件的内容,但不会一次性显示全部内容。当文件内容填满一屏时,more 命令会暂停,并显示一个提示(通常是 --More-- 或类似的提示)。此时可以使用以下按键来控制查看:
- 空格键:向下翻一页。
- 回车键:向下滚动一行。
- b:向上翻一页(如果支持的话,有些版本的 more 可能不支持这个功能)。
- q:退出 more 命令,不再查看文件内容。
10 cp 命令 – 复制文件或文件夹
① 语法:用于复制文件或文件夹的基本命令
# 选项 -r:这是一个可选选项,用于递归复制文件夹及其内容。如果你要复制的是文件夹而不是文件,必须使用 -r 选项。
# 参数1 Linux路径,表示被复制的文件或文件夹的路径。
# 参数2 Linux路径,表示要复制到的目标路径。
cp [-r] 参数1 参数2
② 例子:
# 文件
[root@localhost games]# cp test.txt test2.txt
[root@localhost games]# ls
Projects test2.txt test.txt# 文件夹
[root@localhost games]# cp -r Projects Projects2
[root@localhost games]# ls
Projects Projects2 test2.txt test.txt
11 mv – 命令移动文件或文件夹
① 语法:将文件或文件夹从一个位置移动到另一个位置,或者在同一目录下更改其名称
#参数1:Linux路径,表示被移动的文件或文件夹的路径。
#参数2:Linux路径,表示要移动到的目标路径。目标路径不存在的话,则 mv 命令会将源文件或文件夹重命名为目标名称。
mv 参数1 参数2
② 例子:
# 改名
[root@localhost games]# mv test.txt test3.txt
[root@localhost games]# ls
Projects Projects2 test2.txt test3.txt# 移动文件
[root@localhost games]# mv test2.txt Projects
[root@localhost games]# ls
Projects Projects2 test3.txt
[root@localhost games]# cd Projects
[root@localhost Projects]# ls
new_project test2.txt
12 rm – 命令删除文件或文件夹
① 语法:删除文件或文件夹的基本命令
# -r 用于递归删除文件夹及其所有内容。如果你要删除的是文件夹而不是文件,必须使用 -r 选项。
# -f 表示强制删除,不会弹出提示确认信息
# 参数1、参数2、……、参数N 表示要删除的文件或文件夹的路径,多个参数之间用空格隔开。
rm [-r -f] 参数1 参数2 ... 参数N
② 例子:
# 删除文件
[root@localhost games]# rm test3.txt
rm: remove regular file ?.est3.txt?. y
[root@localhost games]# ls
Projects Projects2# 删除文件夹,不存在的参数不影响其他文件删除
[root@localhost games]# rm -r Projects Projects2 test3.txt
rm: cannot remove ?.est3.txt?. No such file or directory
[root@localhost games]# ls
[root@localhost games]#
③ 搭配通配符使用,通配符 *
可以匹配任意字符序列,包括空字符。
test* 匹配任何以 "test" 开头的文件或文件夹。
*test 匹配任何以 "test" 结尾的文件或文件夹。
*test* 匹配任何包含 "test" 的文件或文件夹。
[root@localhost games]# touch test1 test2 test3
[root@localhost games]# ls
test1 test2 test3
[root@localhost games]# rm -r *est*
[root@localhost games]# ls
[root@localhost games]#
13 which 命令 – 查找并显示给定命令的完整路径
① 语法:在 Linux 系统中,我们使用的命令(如 cd、pwd、touch、mkdir、cp、mv 等)实际上都是存储在文件系统中的二进制可执行程序,类似于 Windows 系统中的 .exe 文件。which 命令帮助我们确定这些程序文件的确切位置。
which 要查找的命令
② 例子:
# 查找cd命令
[root@localhost ~]# which cd
/usr/bin/cd
14 find 命令 – 按文件名,文件大小查找文件
① 语法:可用通配符,根据文件名、类型、大小、时间戳等多种条件搜索文件和目录
# 起始路径:这是搜索开始的目录路径。如果你想从当前目录开始搜索,可以使用 . 作为起始路径。
# -name "被查找文件名":这是用于指定文件名的表达式。你可以使用通配符来匹配文件名模式。
find 起始路径 -name "被查找文件名"
find 命令不仅可以根据文件名查找文件,还可以根据文件的大小进行搜索。这对于查找大文件或小文件非常有用,尤其是在需要清理磁盘空间或管理存储时。
# [+-]n[kMG]:用于指定文件大小。
# + 表示大于指定大小。
# - 表示小于指定大小。
# n 是大小数字。
# k 表示千字节(KB),M 表示兆字节(MB),G 表示千兆字节(GB)。
find 起始路径 -size [+-]n[kMG]
② 例子:
# 在当前目录及其子目录中查找名为 test1 的文件
[root@localhost ~]# find . -name "test1"
./test1# 在根目录及其子目录中查找名为 test1 的文件(使用通配符)
[root@localhost ~]# find / -name "tes*1"
/root/test1
# 在根目录及其子目录中查找大于 1GB 的文件(这个是虚拟文件)
[root@localhost ~]# find / -size +1G
/proc/kcore
[root@localhost ~]# ls -lh /proc/kcore
-r-------- 1 root root 128T May 21 10:33 /proc/kcore
15 grep 命令 – 文件中通过关键字过滤文件行
① 语法:需要确保文件已经创建并包含你想要过滤的内容,
# -n:在结果中显示匹配行的行号
# 关键字 要过滤的文本,如果包含空格或特殊字符,建议用双引号包围。
# 文件路径 要过滤内容的文件路径。
grep [-n] 关键字 文件路径
② 例子:
# 创建文件并输入内容
[root@localhost games]# touch test.txt
[root@localhost games]# vim test.txt
[root@localhost games]# cat test.txt
dahuang play linux
xiaohuang play java# 进行过滤,得到文件行
[root@localhost games]# grep "play" test.txt
dahuang play linux
xiaohuang play java
[root@localhost games]# grep -n "linux" test.txt
1:dahuang play linux
16 wc 命令 – 统计文件内容
① 语法:用来统计文件的行数、单词数、字符数和字节数
# -c:统计文件的字节数。
# -m:统计文件的字符数。
# -l:统计文件的行数。
# -w:统计文件的单词数。
wc [选项] [文件路径]
② 例子:
# 行数 单词书(按空格划分) 字节数 文件
[root@localhost games]# wc test.txt 2 6 39 test.txt
17 管道符 |
① 语法:将左侧命令的标准输出作为右侧命令的标准输入
# -c:统计文件的字节数。
# -m:统计文件的字符数。
# -l:统计文件的行数。
# -w:统计文件的单词数。
wc [选项] [文件路径]
② 例子:
# cat 命令输出文件内容,通过管道符 | 将内容传递给 grep 命令进行过滤。
[root@localhost games]# cat test.txt | grep "linux"
dahuang play linux# 列出当前目录下的文件和目录,通过管道符 | 将 ls 命令的输出传递给 grep 命令进行过滤
[root@localhost ~]# ls
anaconda-ks.cfg bin mkdir nohup.out store
app logs nacos software touch
[root@localhost ~]# ls | grep bin
bin# 统计有多少文件
[root@localhost ~]# ls | wc -l
10# 嵌套使用
[root@localhost games]# cat test.txt | grep "play" | grep "dahuang"
dahuang play linux
18 echo 命令与特殊符号 – 终端输出指定的文本内容
① 语法:通常用于脚本中显示信息或进行简单的调试。
# 通常不需要选项
# 内容包含空格或特殊字符(如 \),建议用双引号包围
echo [选项] [要输出的内容]
② 例子:
[root@localhost games]# echo "Hello Linux"
Hello Linux
③ 反引号 ` (飘号):其中的内容会被当作命令执行
[root@localhost games]# echo pwd
pwd
[root@localhost games]# echo `pwd`
/usr/games
④ 重定向符>
:用于将命令的输出覆盖写入到指定的文件中。如果文件已经存在,文件中的原有内容将被删除,新的内容将覆盖原有内容。
[root@localhost games]# cat test.txt
dahuang play linux
xiaohuang play java
[root@localhost games]# echo "Hello Linux" > test.txt
[root@localhost games]# cat test.txt
Hello Linux
⑤ 重定向符>>
:将命令的输出追加写入到指定的文件中。如果文件已经存在,新的内容将被添加到文件的末尾,而不会删除原有内容。
[root@localhost games]# cat test.txt
Hello Linux
[root@localhost games]# echo "Play Linux" >> test.txt
[root@localhost games]# cat test.txt
Hello Linux
Play Linux[root@localhost games]# ls > test.txt
[root@localhost games]# ls
test.txt
[root@localhost games]# cat test.txt
test.txt
19 tail 命令 – 查看文件尾部内容
① 语法:用于查看日志文件的最新内容,或者跟踪文件的实时更新。
# -f 持续跟踪文件的最新内容,通常用于实时监控日志文件的更新。
# -num(数字) 指定查看文件尾部的行数,默认情况下,tail 命令显示文件的最后 10 行
tail [-f -num] Linux路径
② 例子:
# 看5行
[root@localhost games]# cat test.txt
7
8
9
10
11
12
13
14
15
16
[root@localhost games]# tail -5 test.txt
12
13
14
15
16# -f tail 命令会一直运行,直到停止(通常按 Ctrl + C)。持续关注
[root@localhost games]# tail -f test.txt
7
8
9
10
11
12
13
14
15
16
三 vim编辑器
Vim/Vi 编辑器是一种功能强大且广泛使用的文本编辑器,它具有三种主要的工作模式:命令模式、输入模式和底线命令模式。
1 命令模式
① 介绍:在命令模式下,用户输入的按键被解释为命令,而不是文本内容。用于执行导航、复制、粘贴、删除、撤销等操作。不能直接编辑文本内容。
② 进入方式:启动 Vim 时默认处于命令模式。从其他模式(输入模式或底线命令模式)按 ESC
键返回命令模式。
③ 常用命令
`h`、`j`、`k`、`l`:向左、下、上、右移动光标。
`x`:删除光标下的字符。
`dd`:删除整行。
`yy`:复制整行。
`p`:粘贴。
`u`:撤销。
2 输入模式
① 介绍:在输入模式下,用户可以自由编辑文本内容。类似于其他文本编辑器的普通编辑模式。
② 进入方式:在命令模式下,按以下按键之一进入输入模式:
`i`:在光标前插入文本。
`a`:在光标后插入文本。
`o`:在当前行下方插入新行并进入输入模式。
`I`:在行首插入文本。
`A`:在行尾插入文本。
`O`:在当前行上方插入新行并进入输入模式。
③ 退出方式:按 ESC
键返回命令模式。
3 底线命令模式
① 介绍:底线命令模式用于执行保存文件、退出编辑器、查找替换等高级操作。以冒号 :
开头,输入命令后按回车执行。
② 进入方式:在命令模式下,按 :
键进入底线命令模式。
③ 常用命令
`:w`:保存文件。
`:q`:退出 Vim(如果文件未修改或已保存)。
`:wq` 或 `:x`:保存并退出。
`:q!`:强制退出,不保存更改。
4 模式切换总结
-
命令模式 → 输入模式:
- 按
i
、a
、o
、I
、A
或O
。
- 按
-
输入模式 → 命令模式:
- 按
ESC
键。
- 按
-
命令模式 → 底线命令模式:
- 按
:
键。
- 按
-
底线命令模式 → 命令模式:
- 按回车执行命令后,返回命令模式或退出vim编辑器。
5 例子
① 进入命令模式 – 默认
# 如果文件路径表示的文件不存在,则创建并编辑新文件,存在,则编辑已有文件
[root@localhost games]# vim hello.txt
② 进入输入模式 – I键
③ 回到命令模式 – Esc键,此时可以通过快捷键进行操作,如/er
进行搜索
④ 进入底线命令模式 – :
键,通过:wq
回车保存退出