当前位置: 首页 > news >正文

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 模式切换总结

  • 命令模式 → 输入模式

    • iaoIAO
  • 输入模式 → 命令模式

    • ESC 键。
  • 命令模式 → 底线命令模式

    • : 键。
  • 底线命令模式 → 命令模式

    • 按回车执行命令后,返回命令模式或退出vim编辑器。

5 例子

  ① 进入命令模式 – 默认

# 如果文件路径表示的文件不存在,则创建并编辑新文件,存在,则编辑已有文件
[root@localhost games]# vim hello.txt

在这里插入图片描述
  ② 进入输入模式 – I键
在这里插入图片描述
  ③ 回到命令模式 – Esc键,此时可以通过快捷键进行操作,如/er进行搜索
在这里插入图片描述
  ④ 进入底线命令模式 – 键,通过:wq回车保存退出
在这里插入图片描述

相关文章:

  • 经营分析会,财务该怎么做?
  • web自动化-Selenium、Playwright、Robot Framework等自动化框架使用场景优劣对比
  • 从零打造算法题刷题助手:Agent搭建保姆级攻略
  • 【位运算】常见位运算总结
  • Bitlocker密钥提取之SYSTEM劫持
  • C++17原生测试编程实践:现代特性与分支覆盖指南
  • 如何做好一份技术文档:从信息孤岛到知识图谱的进阶之路
  • 深入理解 Git 底层机制:指针(Refs)、提交(Commit)与分支的关系
  • 【Python-Day 20】揭秘Python变量作用域:LEGB规则与global/nonlocal关键字详解
  • 晨控CK-UR12与西门子PLC配置Modbus TCP通讯连接操作手册
  • TC/BC/OC P2P/E2E有啥区别?-PTP协议基础概念介绍
  • DAY 15 复习日
  • 长尾关键词优化驱动SEO增长
  • 二叉树实验
  • 自动过滤:用 AutoFilterer 实现高性能动态查询
  • 4.0/Q2,GBD数据库最新文章解读
  • PostIn V1.1.2版本发布,新增接口评审功能,提升接口质量与合理性
  • Android 代码阅读环境搭建:VSCODE + SSH + CLANGD(详细版)
  • QPushButton设置菜单
  • [原创](Windows使用技巧): Windwos11如何设置局域网共享访问? (多图详解)
  • 芜湖网站制作公司/中国国家培训网正规吗
  • 个人网站建设公司/免费行情软件网站大全
  • 旅游类网站建设教案/百度网盘账号登录入口
  • 网站首页图片尺寸/潍坊seo按天收费
  • wordpress 前台 用户/seo教程seo教程
  • 网站推广建设加盟/网络营销与管理