linux-note-2

linux-note-2

Charles Lv7

linux-note-2

Linux基础命令

Linux的目录结构

Linux的目录结构是一个树型结构,没有盘符这个概念。
Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘

image-20221027214128453

  • /,根目录是最顶级的目录了
  • Linux只有一个顶级目录:/
  • 路径描述的层次关系同样适用/来表示
  • /home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt

Linux命令基础格式

无论是什么命令,用于什么用途,在Linux中,命令有其通用的格式:
command [-options] [parameter]
command: 命令本身
-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等

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

ls命令

功能:列出文件夹信息
语法:ls [-l -h -a] [参数]

  • 参数:被查看的文件夹,不提供参数,表示查看当前工作目录
  • -l,以列表形式查看
  • -h,配合-l,以更加人性化的方式显示文件大小
  • -a,显示隐藏文件
    当不使用选项和参数,直接使用ls命令本体,表示:以平铺形式,列出当前工作目录下的内容
    语法中的选项是可以组合使用的,比如学习的-a和-l可以组合应用。
    写法:
  • ls -l -a
  • ls -la
  • ls -al
    上述三种写法,都是一样的,表示同时应用-l和-a的功能.

HOME目录和工作目录

直接输入ls命令,表示列出当前工作目录下的内容.
Linux系统的命令行终端,在启动的时候,默认会加载:
当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容
HOME目录:每个Linux操作用户在Linux系统的个人账户目录,路径在:/home/用户名

隐藏文件、文件夹

在Linux中以.开头的,均是隐藏的。
默认不显示出来,需要-a选项才可查看到。

pwd命令

功能:展示当前工作目录
语法:pwd

cd命令

功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录

HOME目录

每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。

  • 普通用户的HOME目录,默认在:/home/用户名
  • root用户的HOME目录,在:/root

FinalShell登陆终端后,默认的工作目录就是用户的HOME目录

相对路径、绝对路径

  • 相对路径,非/开头的称之为相对路径
    相对路径表示以当前目录作为起点,去描述路径,如test/a.txt,表示当前工作目录内的test文件夹内的a.txt文件

  • 绝对路径,以/开头的称之为绝对路径
    绝对路径从开始描述路径

特殊路径符

  • .,表示当前,比如./a.txt,表示当前文件夹内的a.txt文件
  • ..,表示上级目录,比如../表示上级目录,../../表示上级的上级目录
  • ~,表示用户的HOME目录,比如cd ~,即可切回用户HOME目录

mkdir命令

功能:创建文件夹
语法:mkdir [-p] 参数

  • 参数:被创建文件夹的路径,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可
  • 选项:-p,可选,表示创建前置路径,适用于创建连续多层级的目录

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

touch命令

功能:创建文件
语法:touch 参数

  • 参数:被创建的文件路径

cat命令

功能:查看文件内容
语法:cat 参数

  • 参数:被查看的文件路径

more命令

功能:查看文件,可以支持翻页查看
语法:more 参数

  • 参数:被查看的文件路径
  • 在查看过程中:
    • 空格键翻页
    • q退出查看

cp命令

功能:复制文件、文件夹
语法:cp [-r] 参数1 参数2

  • 参数1,被复制的
  • 参数2,要复制去的地方
  • 选项:-r,可选,复制文件夹使用

示例:

  • cp a.txt b.txt,复制当前目录下a.txt为b.txt
  • cp a.txt test/,复制当前目录a.txt到test文件夹内
  • cp -r test test2,复制文件夹test到当前文件夹内为test2存在

mv命令

功能:移动文件、文件夹
语法:mv 参数1 参数2

  • 参数1:被移动的
  • 参数2:要移动去的地方,参数2如果不存在,则会进行改名

rm命令

功能:删除文件、文件夹
语法:rm [-r -f] 参数...参数

  • 参数:支持多个,每一个表示被删除的,空格进行分隔
  • 选项:-r,删除文件夹使用
  • 选项:-f,强制删除,不会给出确认提示,一般root用户会用到
    rm命令支持通配符 *,用来做模糊匹配
  • 符号* 表示通配符,即匹配任意内容(包含空),示例:
  • test*,表示匹配任何以test开头的内容
  • *test,表示匹配任何以test结尾的内容
  • *test*,表示匹配任何包含test的内容

rm命令很危险,一定要注意,特别是切换到root用户的时候。

diff命令

对于两个纯文本文件来说,我们还可以使用 diff 命令进行比较的操作。

用法:diff [选项] 文件1 文件2

选项(常用) 作用
-b 不检查空白字符的不同。
-B 不检查空行。
-q 仅显示有无差异,不显示详细信息。

which命令

功能:查看命令的程序本体文件路径
语法:which 参数

  • 参数:被查看的命令

find命令

功能:搜索文件
语法1按文件名搜索:find 路径 -name 参数

  • 路径,搜索的起始路径
  • 参数,搜索的关键字,支持通配符*, 比如:*test表示搜索任意以test结尾的文件

语法2按文件大小搜索:find 路径 -size |-n[kMG]

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

示例:
查找小于10KB的文件: find / -size -10k
查找大于100MB的文件:find / -size +100M
查找大于1GB的文件:find / -size +1G

grep命令

功能:过滤关键字
语法:grep [选项] 关键字 文件路径

  • 选项:
选项 用途
-a 不忽略二进制数据进行搜索。
-i 忽略大小写差异。
-r 从目录中递归查找。
-n 可选,表示在结果中显示匹配的行的行号。
  • 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来

  • 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口

参数文件路径,可以作为管道符的输入

tree命令

需要sudo apt install tree预处理

用法: tree [选项] [目录名]

选项(常用) 作用
-a 列出全部文件(包含隐藏文件)。
-d 只列出目录。

wc命令

功能:统计
语法:wc [-c -m -l -w] 文件路径

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

参数文件路径,可作为管道符的输入

管道符|

写法:|
功能:将符号左边的结果,作为符号右边的输入
示例:

cat a.txt | grep itheima,将cat a.txt的结果,作为grep命令的输入,用来过滤itheima关键字

可以支持嵌套:
cat a.txt | grep itheima | grep itcast

echo命令

功能:输出内容
语法:echo 参数

  • 参数:被输出的内容

无需选项,只有一个参数,表示要输出的内容,复杂内容可以用””包围,带有空格或\等特殊符号,建议使用双引号包围,防止被识别为参数2

`反引号

功能:被两个反引号包围的内容,会作为命令执行
示例:

  • echo `pwd`,会输出当前工作目录

tail命令

功能:查看文件尾部内容
语法:tail [-f -num] 参数

  • 参数:被查看的文件
  • 选项:-f,持续跟踪文件修改
  • 选项: -num,表示,查看尾部多少行,不填默认10行

head命令

功能:查看文件头部内容
语法:head [-n] 参数

  • 参数:被查看的文件
  • 选项:-n,查看的行数

重定向符

功能:将符号左边的结果,输出到右边指定的文件中去

  • >,表示覆盖输出
  • >>,表示追加输出

vi编辑器

Vim 是 Linux 系统下最著名的开源编辑器之一,编辑效率高,十分适合编辑代码,被誉为“编辑器之神”。Vim 的所有操作都是在 CLI 中完成的,对于习惯了图形化界面文本编辑软件的同学们来说,刚接触 Vim 时一定会觉得非常不习惯,非常不顺手。但经过一段时间的学习和训练之后,你就可以体验到飞一般的开发效率。接下来介绍 Vim 的基本输入操作。

你也可以使用命令 vimtutor 来查看 Vim 的官方教程。

vi\vim编辑器的三种工作模式

命令模式(Command mode):命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。

如果需要通过vi/vim编辑器编辑文件,请通过如下命令:
vi 文件路径
vim 文件路径
vim兼容全部的vi功能,后续全部使用vim命令

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

输入模式(Insert mode):也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑。
底线命令模式(Last line mode):以开始,通常用于文件的保存、退出。

vi编辑器的快速体验

通过vi/vim命令编辑文件,会打开一个新的窗口,此时这个窗口就是:命令模式窗口
命令模式是vi编辑器的入口和出口,如下图:

image-20230206165906511

  • 进入vi编辑器会进入命令模式
  • 通过命令模式输入键盘指令,可以进入输入模式
  • 输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式

命令模式快捷键

image-20221027215841573

image-20221027215846581

image-20221027215849668

提示——<h,j,k,l>巧记:

h 的键位于左边,每次按下就会向左移动。
l 的键位于右边,每次按下就会向右移动。
j 键看起来很象一支尖端方向朝下的箭头。

底线命令快捷键

image-20221027215858967

后言

以上就是 Vim 最基本的操作方式。另外,Vim 可以进行个性化的配置。我们在前面了解到 Linux“一切皆文件”,所以 Vim 的配置也是以文件的形式储存在系统中的。Vim 的配置文件叫做 .vimrc,它通常储存在用户主目录下。这里,文件名开头的点代表这个文件是 Linux 中的“隐藏文件”。这个文件在你的用户主目录下,你可以看看这个文件里都写了什么内容。Vim 的配置非常丰富,想要了解更多配置参数的同学可以自行在网上搜索。

我们如果想在实验课程中使用得得心应手,就需要了解更多的使用技巧。在这里我们推荐给大家一篇质量极高的 Vim 教程——《简明 Vim 练级攻略》 。这里提到了 Vim 的很多快捷键和使用技巧。理解它们十分简单,但想要熟悉这些操作,还需要很长的时间去练习。

sed命令

sed [选项] ‘命令’ 输入文本

选项(常用) 作用
-n 安静模式,只显示经过sed处理的内容。否则显示输入文本的所有内容。
-i 直接修改读取的档案内容,而不是输出到屏幕。否则,只输出不编辑。

行号可以是“数字”,在这一行之后新增,也可以是“起始行,终止行”,在其中的每一行后新增。当不写行号时,在每一行之后新增。使用$表示最后一行。后面的命令同理

命令(常用) 作用
<行号>a<内容> 新增,在行号后新增一行相应内容。。
<行号>c<内容> 取代。用内容取代相应行的文本。
<行号>i<内容> 插入。在当前行的上面插入一行文本。
<行号>d 删除当前行的内容。
<行号>p 输出选择的内容。通常与选项-n一起使用。
s/<re>/<string> 将<re>(正则表达式)匹配的内容替换为<string>。

sed ‘s/str1/str2/g’ my.txt # 在整行范围内把 str1 替换为 str2。

如果没有 g 标记,则只有每行第一个匹配的 str1 被替换成 str2

命令的选项

我们学习的一系列Linux命令,它们所拥有的选项都是非常多的。
比如,简单的ls命令就有:-a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1等选项,可以发现选项是极其多的。

所以如果想要获得某个指令较为冷门的参数如何使用,可以依靠帮助文档。

查看命令的帮助

可以通过:命令 --help查看命令的帮助手册
image-20221027220005610

查看命令的详细手册

可以通过:man 命令查看某命令的详细手册
image-20221027220009949

  • Title: linux-note-2
  • Author: Charles
  • Created at : 2023-02-06 09:29:15
  • Updated at : 2023-11-05 21:36:18
  • Link: https://charles2530.github.io/2023/02/06/linux-note-2/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments