2.Linux - 基础结构及命令

Linux - 基础结构及命令

文章目录

  • [Linux - 基础结构及命令](#Linux - 基础结构及命令)
  • 一、目录
  • 二、基础命令
    • [2.1 ls](#2.1 ls)
      • [2.2.1 选项使用](#2.2.1 选项使用)
      • [2.2.2 参数使用](#2.2.2 参数使用)
    • [2.2 目录切换 cd/pwd](#2.2 目录切换 cd/pwd)
    • [2.3 路径](#2.3 路径)
    • [2.4 创建目录 mkdir](#2.4 创建目录 mkdir)
    • [2.5 文件操作命令](#2.5 文件操作命令)
      • [2.5.1 创建文件 touch](#2.5.1 创建文件 touch)
      • [2.5.2 查看文件内容 cat/more](#2.5.2 查看文件内容 cat/more)
      • [2.5.3 复制文件/文件夹 cp](#2.5.3 复制文件/文件夹 cp)
      • [2.5.4 移动文件/文件夹 mv](#2.5.4 移动文件/文件夹 mv)
      • [2.5.5 删除文件/文件夹 rm](#2.5.5 删除文件/文件夹 rm)
    • [2.6 查找命令](#2.6 查找命令)
      • [2.6.1 查找命令的程序文件 which](#2.6.1 查找命令的程序文件 which)
      • [2.6.2 查找指定文件 find](#2.6.2 查找指定文件 find)
    • [2.7 过滤文件内容 grep](#2.7 过滤文件内容 grep)
    • [2.8 统计内容数量 wc](#2.8 统计内容数量 wc)
    • [2.9 管道符 |](#2.9 管道符 |)
    • [2.10 输出内容 echo](#2.10 输出内容 echo)
    • [2.11 反引号 `](#2.11 反引号 `)
    • [2.11 跟踪文件更改 tail](#2.11 跟踪文件更改 tail)
    • [2.12 重定向符号 > >>](#2.12 重定向符号 > >>)
    • [2.13 --help](#2.13 --help)
  • 三、vi编辑器

一、目录

Linux没有盘符这个概念,只有一个根目录"/",所有文件都在它下面

  • 在Linux系统中,路径之间的层级关系使用"/"来表示

    开头的"/"表示根目录

    后面的"/"表示层级关系

  • 在Windows系统中,路径之间的层级关系,使用"\"来表示

二、基础命令

学习Linux,本质就是学习在命令行下熟练使用Linux的各类命令

  • 命令行

    即Linux终端(Terminal),是一种命令提示符页面。

    以纯"字符"的形式操作系统,可以使用各种字符化命令对系统发出操作指令

  • 命令

    即Linux程序,一个命令就是一个Linux程序,命令没有图形化页面,可以在命令行(终端中)提供字符化的反馈

下面的整个框就是命令行(终端)程序

无论什么命令,用于什么用途,在Linux中,命令有其通用的格式

sh 复制代码
command [-options] [parameter]
  • command:命令本身
  • -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
  • parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等

语法中的[],表示可选的意思

示例

  • ls -l /home/itheima

    ls是命令本身,-l是选项,/home/itheima是参数

    以列表的形式,显示/home/itheima目录内的内容

  • cp -r test1 test2

    cp是命令本身,-r是选项,test1和test2是参数

    表示复制文件夹test1成为test2

2.1 ls

ls命令的作用就是列出目录下的内容,语法细节如下:

sh 复制代码
ls [-a -l -h] [Linux路径]
  • -a,-l,-h是可选的选项

  • Linux路径是此命令可选的参数

当不使用选项和参数,直接使用ls命令本体,表示:以平铺形式,列出当前工作目录下的内容

示例

在桌面打开终端,输入ls命令

其实就是Home文件夹中的内容

为什么会列出Home目录中的内容呢

当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容

HOME目录:每个Linux操作用户在Linux系统的个人账户目录,路径在/home/用户名

如Linux的用户为zjqlinux,其HOME目录是/home/zjqlinux,说白了就是用户在Linux系统中的专属目录,默认在/home/用户名

Windows系统和Linux系统,都有用户的HOME目录

2.2.1 选项使用

sh 复制代码
ls [-a -l -h] [Linux路径]

-a,-l,-h是可选的选项

  • -a选项,表示all,即列出全部文件,包含隐藏的文件/文件夹
sh 复制代码
ls -a

文件以"."开头的,表示是Linux系统的隐藏的文件/文件夹,只要以"."开头,就能自动隐藏

只有通过-a选项,才能看到这些文件

  • -l选项,表示以列表竖向排列的形式展示内容,并展示更多信息
sh 复制代码
ls -l
  • -h选项,表示易于阅读的形式,列出文件大小,如K、M、G

-h选项必须要搭配-l一起使用

sh 复制代码
ls -l -h

或者直接写在一起

sh 复制代码
ls -lh
  • 可以混合使用
sh 复制代码
ls -a -l

2.2.2 参数使用

ls的参数表示的是一个Linux的路径,也就是ls要展示的目标,如果不写这个参数的话,默认展示的就是当前HOME目录,若指定一个Linux路径的话,就能查看指定文件夹的内容

比如下面就是查询根目录下的文件

sh 复制代码
ls /

2.2 目录切换 cd/pwd

  • cd命令切换工作目录

    cd:Change Directory

Linux终端打开的时候,默认以用户的HOME目录作为当前的工作目录

我们可以通过cd命令,更改当前所在的工作目录

语法如下所示:

sh 复制代码
cd [Linux路径]

cd命令无需选项,只有参数,表示要切换到哪个目录下

如下图所示,切换到了根目录"/"

cd命令直接执行,不写参数,表示回到用户的HOME目录

如下图所示,切换到了HOME目录

  • pwd展示当前工作目录命令

Print Work Directory

可以通过pwd命令,来查看当前所在的工作目录

sh 复制代码
pwd

2.3 路径

下面两种写法,都可以正确的切换到指定的Desktop中

  1. 绝对路径

    以根目录为起点,描述路径的一种写法,路径描述以/开头

sh 复制代码
cd /home/zjqlinux/Desktop
  1. 相对路径

    以当前目录为起点,描述路径的一种写法,路径描述无需以/开头

sh 复制代码
cd Desktop

怎么退回到上一级目录

通过特殊路径符来完成

  • .

    表示当前目录,比如 cd ./Desktop 表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致

  • ...

    表示上一级目录,比如:cd...即可切换到上一级目录,cd .../... 切换到上二级的目录

  • ~

    表示HOME目录,比如:cd ~ 即可切换到HOME目录或 cd ~/Desktop,切换到HOME内的Desktop目录

2.4 创建目录 mkdir

通过mkdir命令创建文件夹

Make Directory

sh 复制代码
mkdir [-p] Linux路径
  • -p选项

    可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录

  • Linux路径参数必填

    表示Linux路径,即要创建的文件夹路径,相对路径或绝对路径均可

示例

  1. 在当前目录创建文件夹

    下面三种方式都能在/home/用户路径下创建一个新的文件夹

  1. 一次性创建多个文件夹
sh 复制代码
mkdir -p test4/test1/666

创建文件夹需要修改权限,请确保操作均在HOME目录内,HOME外操作无法成功

后续会说明权限管控的知识

但是如果使用的是root用户,便可以在HOME目录外的地方创建文件夹

2.5 文件操作命令

如何分辨文件夹和文件呢

首先文件夹的颜色是深色,其次文件会带后缀

除此之外,执行 ls -l命令,如果信息前面是"-"的话,代表是文件,是"d"的话,代表文件夹

2.5.1 创建文件 touch

sh 复制代码
touch Linux路径
  • touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用

示例

sh 复制代码
touch test.txt

2.5.2 查看文件内容 cat/more

  • cat命令

有了文件之后,我们可以通过cat命令查看文件的内容

sh 复制代码
cat Linux路径

首先手动向文件夹内添加一些内容

  • more命令

more命令同样可以查看文件内容,同cat不同的是,cat是直接将内容全部显示出来,more支持翻页,如果文件内容过多,可以一页页的展示

sh 复制代码
more Linux路径

命令没有选项,只有必填参数,参数表示被查看的文件路径

示例

查看Linux系统内的文件,路径为/etc/services

sh 复制代码
more /etc/services

"More 0%"表示查看了当前文件的百分之零

可以通过空格进行翻页

点击键盘的"q"即可退出查看文件的内容

2.5.3 复制文件/文件夹 cp

copy

sh 复制代码
cp [-r] 参数1 参数2
  • -r选项,可选,用于复制文件夹使用,表示递归
  • 参数1,Linux路径,表示被复制的文件或文件夹
  • 参数2,Linux路径,表示要复制去的地方

示例

sh 复制代码
cp test.txt testcopy.txt

2.5.4 移动文件/文件夹 mv

move

sh 复制代码
mv 参数1 参数2
  • 参数1,Linux路径,表示被移动的文件夹或文件
  • 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

示例

sh 复制代码
mv test.txt  ./test1/

其实也可以修改名字

sh 复制代码
 mv test.txt test1.txt

2.5.5 删除文件/文件夹 rm

sh 复制代码
remove

语法

sh 复制代码
rm [-r -f] 参数1 参数2 ... 参数N
  • -r选项用于删除文件夹

  • -f表示force,强制删除(不会弹出确认信息)

    普通用户删除内容不会弹出提示,只有root管理员用户删除内容才会有提示

    一般普通用户用不到-f选项

    通过 su - root,并输入密码123456(和普通用户的密码一样),可以临时切换到root用户

    输入"exit"命令会退出

  • 参数1、参数2...参数N表示要删除的文件或文件夹路径,按照空格隔开

    假如同时删除多个文件,若其中一个文件删除有问题,并不会影响其他文件的删除操作

rm命令支持通配符"*"来做模糊匹配的

  • 符号*表示通配符,即匹配任意内容(包括空)

    test*,表示匹配以test开头的内容

    *test,表示匹配以test结尾的内容

    *test*,表示匹配任何包含test的内容

rm是一个危险的命令,特别是处于root用户时

下面两条命令千万不要在root管理员用户执行,效果等同于在Windows上执行C盘格式化

sh 复制代码
rm -rf /
sh 复制代码
rm -rf /*

2.6 查找命令

2.6.1 查找命令的程序文件 which

Linux命令的本体就是一个个的二进制可执行程序

比如执行ls命令,其实就是执行了pwd这个程序

和Windows系统中的.exe文件,是一个意思

我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里

2.6.2 查找指定文件 find

语法

shell 复制代码
find 起始路径 -name "被查找文件名"

为了确保可以在整个系统完成搜索,我们可以切换到root用户以获得管理员权限

  • "起始路径"就表示要从哪里开始搜索

  • "-name"表示按照文件名进行搜索

find命令支持通配符"*"来做模糊匹配的

  • 符号*表示通配符,即匹配任意内容(包括空)

    test*,表示匹配以test开头的内容

    *test,表示匹配以test结尾的内容

    *test*,表示匹配任何包含test的内容

find命令也可以按照文件大小查找文件

sh 复制代码
find 起始路径 -size +|-n [kMG]

"|"是一个竖线,在这里表示可能是+,或者是-

  • +、-表示大于和小于
  • n表示大小数字
  • kMG表示大小单位,k(小写)表示kb,M表示MB,G表示GB

示例

  • 查找小于10kb的文件
sh 复制代码
find / -size -10k
  • 查找大于100MB的文件
sh 复制代码
find / -size +100M 
  • 查找大于1GB的文件
sh 复制代码
find / size +1G

2.7 过滤文件内容 grep

从文件中通过关键字过滤文件行

哪几行带有我们要搜索的关键字

语法

sh 复制代码
grep [-n] 关键字 文件路径
  • 选项-n,可选,表示在结果中显示匹配的行的行号
  • 关键字参数,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用" "将关键字包围起来
  • 文件路径参数,必填,表示要过滤内容的文件路径,可作为内容输入端口

2.8 统计内容数量 wc

统计文件的行数、单词数量等

语法

sh 复制代码
wc [-c -m -l -w] 文件路径
  • -c选项,统计bytes数量
  • -m选项,统计字符数量
  • -l选项,统计行数
  • -w选项,统计单词数量
  • 文件路径参数,被统计的文件,可作为内容输入端口

2.9 管道符 |

含义:将管道符左边命令的结果,作为右边命令的输入

如上图,cat itheima.txt的输出结果(也就是文件的内容)座位了右边grep命令的输入(被过滤的文件)

  • 统计文件中带有zhangjingqi关键字的有几行
sh 复制代码
cat test.txt | grep zhangjingqi | wc -l

cat test.txt 查出文件的内容

  • 统计文件中带有zhangjingqi关键字的结果中有多少个单词
sh 复制代码
cat test.txt | grep zhangjingqi | wc -w

2.10 输出内容 echo

可以在命令行内输出指定的内容

语法

sh 复制代码
echo 输出的内容

无需选项,只有一个参数,表示要输出的内容,复杂内容可以用双引号包围

类似变成语言中的print

2.11 反引号 `

本意是想输出当前的工作路径,但是pwd被作为普通字符串输出了

我们可以通过将命令用反引号(通常称之为飘号)将其包围,被包围的内容会被作为命令执行,而非普通字符

2.11 跟踪文件更改 tail

使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改

语法

sh 复制代码
tail [-f -num] Linux路径
  • -f选项,表示持续跟踪
  • -num选项,表示查看尾部多少行,不填默认10行
  • Linux路径参数,表示被跟踪的文件路径

示例

查看文件中倒数五行内容

2.12 重定向符号 > >>

  • >,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
  • >>,将左侧命令的结果,追加写入到符号右侧指定的文件中

演示

sh 复制代码
echo "hello zhangjingqi" > test1.txt

再次执行命令,发现已经将之前的内容覆盖掉了

sh 复制代码
echo "hello zhangjingqi123456" > test1.txt
sh 复制代码
echo "hello zhangjingqi789" >> test1.txt

综合示例

  1. 请使用echo并配合反引号,输出内容:我当前的工作目录是:具体的工作目录路径

并结合重定向符,将输出结果覆盖写入test1.txt文件

sh 复制代码
echo "mulu:`pwd`" >test1.txt
  1. 请使用echo输出任意内容并追加到test1.txt文件中,通过tail命令持续跟踪文件内容更改

需要打开两个控制台,分别输入下面的命令

sh 复制代码
tail -f test1.txt
sh 复制代码
echo "hello zhangjingqi789" >> test1.txt

2.13 --help

如果想要对命令的其它选项进行查阅,可以通过如下方式:

任何命令都支持:--help 选项, 可以通过这个选项,查看命令的帮助文档

会列出ls命令的帮助文档

sh 复制代码
ls --help

如果想要查看命令的详细手册,可以通过man (manual, 手册)命令查看

比如:

man ls,就是查看ls命令的详细手册

man cd,就是查看cd命令的详细手册

三、vi编辑器

vi\vim是visual interface的简称,是Linux中最经典的文本编辑器

同图形化界面中的文本编辑器一样,vi是命令行下对文本进行编辑的绝佳选择

vim是vi的加强版本,兼容了vi的所有指令,不仅能编辑文本,而且还具有shell程序的编辑功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性

编辑器的三种工作模式

  • 命令模式 Command mode

命令模式下,所有的按键编辑器都理解为命令,以命令驱动执行不同的功能

  • 输入模式 Insert mode

所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑

  • 底线命令模式 Last line mode

以":"开始,通常用于文件的保存、退出

命令

sh 复制代码
vi 文件路径
sh 复制代码
vim 文件路径

vim兼容全部的vi功能,后续全部使用vim命令

如果文件路径表示的文件不存在,那么此命令会用于编辑新文件

如果文件路径表示的文件存在,那么此命令用于编辑已有文件

示例

编辑新文件

sh 复制代码
 vim hello.txt

会进入到一个窗口,并且底部会显示此文件是一个刚创建的文件

此时的模式是命令模式

当我们单击键盘的"i"后,变成了插入模式

输入模式回退到命令模式,点击"Esc"键即可

在命令模式有许多的快捷指令

  • 复制yy 粘贴p

如光标放在第一行,点击"yy",就会将此行内容复制,点击"p",就会将内容粘贴出来

  • 删除 dd

按两下"d",就可以将光标所在的行删除

  • 撤销 u

由命令模式到底线命令模式,输入一个冒号即可

若再输入 wq表示保存并退出

w表示保存,q表示退出

编辑模式没有什么特殊的,进入编辑模式后,任何快捷键都没有作用,就是正常输入文本而已。

唯一需要记住的,就是:通过esc,可以退回到命令模式中即可。

在命令模式内,输入": "即可进入底线命令模式,支持如下命令:

相关推荐
源图客4 分钟前
Nacos3.1.1部署(Docker)
运维·docker·容器
ChristXlx4 分钟前
Linux安装Minio(虚拟机适用)
linux·运维·网络
华纳云IDC服务商6 分钟前
服务器被DDOS跟CC攻击了怎么处理,如何抵御攻击?
服务器·网络·安全
顾安r8 分钟前
12.18 脚本网页 C标准库
linux·c语言·stm32·嵌入式硬件·html5
NineData8 分钟前
NineData 数据库 DevOps 正式支持谷歌云,全面接入 GCP 数据源
运维·数据库·devops·ninedata·gcp·玖章算术·数据智能管理平台
从零开始学习人工智能9 分钟前
《8076 能通 9003 却超时?一次 Docker 容器跨网段排障小记》
运维·docker·容器
A13247053129 分钟前
Linux文件查找:find和locate命令入门
linux·运维·服务器·网络·chrome
咕噜企业分发小米9 分钟前
阿里云与华为云服务器哪个更利于人工智能?
服务器·阿里云·华为云
物联网软硬件开发-轨物科技10 分钟前
【轨物新闻】轨物科技光伏清洁机器人智能控制和运维解决方案正式上线华为鲲鹏解决方案市场
运维·科技·机器人
一周困⁸天.10 分钟前
DevOps
运维·devops