[Linux学习日记] day1 - 基本指令(一)(大量图文详解基本指令)

[Linux]基本指令

0. 前言

用云服务器配置的Linux系统默认就是使用命令行界面,而不是像常用的Windows操作系统使用的图形化界面,命令行界面更多的是使用键盘敲下指令,图形化界面更多的是使用鼠标去点击,实际上Linux和Windows都是操作系统,都有图形化界面和命令行指令界面。

如果想要查看Windows下的命令行界面,按下Win+x键:

image-20230307091305388

在弹出的界面选择Windows powershell,就会看到Windows的命令行界面:

image-20230307091352410

并且Linux下的指令在Windows下一样有效,既然Linux和Windows那么相似,为什么学习Linux不用更方便的图形化界面?因为在实际开发中,Linux系统是不会有图形化界面的,只能通过指令来时使用Linux系统,这就是为什么要学习Linux的指令。

关于如何配置Linux环境戳这里:https://blog.youkuaiyun.com/csdn_myhome/article/details/127906854

1. 使用前准备工作

在配置好Linux系统后,开始使用前,需要做一些准备工作

1.1 配置登录用户名和IP

在上面给出链接的如何用云服务器配置Linux文中,只提到了,如何用ssh root@ 公网IP的方式以root身份登录,但实际上还有其他的登录方式,就是通过添加用户:

image-20230307093115913

image-20230307093911436

成功添加用户后,可以在下图位置打开此用户。

image-20230307094242440

选择你要使用的用户。

image-20230307094132334

输入登录的用户名

image-20230307094413867

除此之外,每次打开Xshell时,也可以通过选择用户登录的方式:

image-20230307094635579

当然除了添加用户也可以删除用户:

image-20230307095001036

在右键后的界面选择删除即可。

1.2 更改主题、字体、颜色

image-20230307095421204

1.3 全屏快捷键

Alt + Enter键

2. 关于操作系统

由于Linux是一种操作系统,因此需要对操作系统有一定的了解。

作为程序员每天都在使用电脑,在使用电脑时不知道大家有没有思考过一些问题,为什么电脑每次开机都需要等待一段时间,而不是连上电源直接就能使用?开机等待的过程是在做什么?世界上开机的过程就是操作系统的准备过程,电脑需要准备好操作系统才能使用。

为什么新买的鼠标或键盘第一次连接电脑时,可能不能正常使用或者过一会才能使用?这实际上是驱动和硬件的适配问题。没有驱动程序,硬件就无法正常的使用,每个硬件都有配套的驱动程序。

为什么Linux和Windows的使用方式一个是指令为主,一个图形化界面为主?这是由于操作系统向用户提供的形式不同。

计算机实际上是一个层状结构:

image-20230308105741729

驱动程序驱动着硬件,操作系统管理着驱动程序并且管理和给用户提供服务。

我们写的代码和程序都是存在用户层面的。

操作系统是负责管理软硬件的软件。

操作系统存在的意义:

​ 操作系统对软硬件进行合理的管理(手段),以达到为上层用户提供良好、稳定、安全的运行环境(目的)。

计算机是一个复杂的工具,必须要有操作系统这样的东西来很好的管理。

3. ls指令

语法: ls [ 选项 ] [目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

(类似于Windows下打开文件夹查看文件夹内容)

常用选项

  • -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
  • -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
  • -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
  • -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
  • -l 列出文件的详细信息。
  • -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
  • -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表 示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
  • -R 列出所有子目录下的文件。(递归)
  • -1 一行只输出一个文件。

键盘下输入ls显式当前目录下的文件列表(包括目录,普通文本文件…)

image-20230307101941084

键盘下输入ls -l可以显示当前目录下的文件的详细信息:

image-20230307103100939

-l是一个命令选项,一个指令可以没有指令选项,也可以有一个或很多个命令选项。

输入ls -l显示的文件信息很多,为了更好的理解这些信息,我们先来看看Windows下的文件信息

在Windows的文件夹下,创建一个空文件

image-20230307104602462

图中显式大小为0,是否意味着创建一个空文件那么该文件的大小就是0呢?实际上这个想法是错误的,右键文件点击属性查看文件的详细信息:

image-20230307104834975

详细信息中有很多内容,这些内容也是需要存放在硬盘内的,也就是说这个空文件也是占用空间的,这个空间用于存储文件的属性信息,那为什么前面还显示文件大小为0呢?是因为0所指的是文件的内容信息,由于我们没有写入数据,因此显示文件大小为0。

打开空文件写入数据:

image-20230307105206137

文件大小改变了,图中大小显示的文件内容大小,而我写入了数据,因此文件大小改变,至此我们应该明白:

文件 = 内容 + 属性

现在再来看前面的详细相信:

image-20230307105528800

这些详细信息就类似于在Windows下打开文件属性查看的详细信息。

Linux下文件/目录名以.开头的是隐藏文件/目录。

image-20230307105959854

直接输入ls指令是无法查看到隐藏文件的,需要加上-a的命令选项。

image-20230307110048090

命令选项也可以写在一起。

在Windows下当然也有相同的操作:

image-20230307110244675

image-20230307110305163

image-20230307110317071

Windows下隐藏文件通过设置也就可以查看了。

4. mkdir 指令

语法:mkdir [选项] dirname…

功能:在当前目录下创建一个名为 “dirname”的目录

常用选项:

-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录;

用mkdir指令创建一个mydir的目录,再用ls指令查看目录下是否有mydir目录,这个指令类似于Windows下的新建文件夹。

image-20230307102135801

如果想要创造连续的目录,直接创建是不被允许的:

image-20230308101224375

加上-p命令选项就可以了:

image-20230308101339694

5. pwd指令

语法: pwd

功能:显示用户当前所在的目录

常用选项

输入pwd指令就能显示当前所处的目录:

image-20230307110644443

不同于在Windows下查看文件夹,在文件查看时是显式的知道文件路径的:

image-20230307110724716

在Linux是不显示当前所处的目录,因此需要pwd指令知道当前所处的目录下,建议pwd指令要在每次打开Linux时使用一下,避免在错误的目录下找不到目录/文件或者错误操作。

6. cd指令

**语法: ** cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下。

cd指令改变目录,就类似于Windows下打开进入文件夹:

image-20230307111346498

image-20230307111356392

在Linux下,不管我们cd进入哪个目录都会有.和…目录:

image-20230307111529641

.其实是当前路径,…是上级路径

image-20230307111751776

由于.是当前路径,cd .还会留在当前目录下,而…是上级路径,cd …会进入上一级目录,通过不断cd …,可以不断回退到上一级目录。

image-20230307123238301

image-20230307123254931

上图中的过程就类似于cd … 的操作。

前面提到了,cd命令能改变当前所处的目录,如何用cd命令进入到想要到的目录下呢?

关于这个问题,不得不提到一个概念,为了方便理解,还是用Windows系统去举例:

假设我们要找下图中的Project1文件夹应该如何去找呢?

image-20230307123610044

通过观察下图可以看出,到达Project1文件夹是需要按一段文件夹顺序去寻找的:

image-20230307123816185

这个文件夹打开顺序称之为路径

寻找这个文件夹可以从电脑的总文件夹下开始按照路径一步步寻找,叫做按照绝对路径寻找:

image-20230307123923344

但如果我们所处的文件夹到要到的文件夹只需要打开一个或两个文件夹,还有必要从电脑的总文件夹中寻找吗?当然是不需要的。

比如当前处于这文件夹:

image-20230307124423194

只需要打开两个文件夹就到了要找的文件夹:

image-20230307124514573

这个从某一文件夹下去寻找要找的文件夹,叫做按相对路径寻找。

看完了Windows下的,再来看Linux下的:

通过pwd指令查看当前目录。

image-20230307124908317

image-20230307124852802

首先将Linux和Windows进行对比:

Linux: 以 / 作为路径分隔符

Windows: 以 \ 作文路径分隔符

若要找到图中的testdir目录和Windows下一样可以通过绝对路径寻找也可以通过相对路径寻找:

image-20230307125325471

image-20230307125426049

Linux下总的目录是 / 根目录。

绝对路径:使用起来麻烦,一般在配置文件中采用,保证绝对的正确性。

相对路径:使用起来简单,常用的路径定位,使用时需要注意自身所处的目录。

cd ~指令是到达用户目录下的一种方式,由于使用的是root用户登录cd ~会来到root目录:

image-20230307130242342

如果是用普通用户登录cd ~命令会带到/home目录下的用户目录

cd -指令是回到最近上一次所在的目录下:

image-20230307131141065

7. tab快捷键

tab快捷键可以提供信息:

  1. 输入不完整的指令,按两下tab,会显式相关的所有指令

输入a连按两下tab会显示a开头的所有指令:

image-20230307180932166

  1. 可以在不进入目录的情况下查看某一路径下的目录

    cd加路径加连按两下tab可以显示该路径下的所有目录

image-20230307181309387

8. tree指令

语法:tree [路径]

功能: 显示该路径下的目录以及后续的所有目录和文件以树状形式显示。

输入tree .显示当前目录下以及后续所有目录和文件

image-20230307182212288

可能你的Linux下没有tree命令会显示命令不存在:

image-20230307182354733

此时你需要安装tree命令,安装tree命令只需要在Linux下输入 yum install -y tree Linux就会自动下载。(可能有配置Linux用的是Ubuntu 的那需要把yum换成 apt-get)。输入命令会显示一个下载安装的进度:

image-20230307183451679

有了tree命令,肯定会有程序员tree根目录,由于根目录内容过于庞大,会一直显示很长时间:

image-20230307182927284

此时就需要知道ctrl + c键可以将不断进行的指令停止:

image-20230307183013039

9. touch指令

语法:touch [路径]… 文件名…

功能:在路径下创建一个普通文本文件。

image-20230307183413974

10. nano指令

**语法:**nano 普通文本文件名

**功能:**以类似记事本的形式打开一个普通文件

image-20230308094512591

事先touch出了一个test.c的普通文本文件,然后nano test.c打开:

image-20230308094733310

可以像使用记事本一样写入数据:

image-20230308094830044

如果像退出按下ctrl + x(^ 就表示ctrl):

image-20230308094951269

系统会提示是否确认修改文件内容,确认修改输入y,不想修改输入n:

image-20230308095049700

按下回车退出:

image-20230308095159992

由于是云服务器配置的Linux一般都自带nano,如果没有nano需要输入yum install -y nano指令安装。

如果想要知道自己的Linux系统下是否有nano,只需要输入nano回车:

image-20230308095518812

在写好代码好,如果想运行代码,先使用gcc编译一下:

image-20230308100217460

编译后生成了一个叫a.out的可执行程序,输入./a.out(意思是执行当前路径下的可执行程序)运行它:

image-20230308100309460

11. cat指令

**语法:**cat 普通文本文件名

**功能:**打印普通文件的内容

image-20230308095958477

12. stat命令

**语法:**stat 文件名/目录民

**功能:**显示文件/目录的所有属性

image-20230308100824416

image-20230308100935137

13. rmdir指令

前面学习的都是怎么创建文件/目录,现在看看如果删除文件/目录:

语法: rmdir + 空目录名

适用对象:具有当前目录操作权限的所有使用者

**功能:**删除空目录

常用选项:

  • -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

由于rmdir只能删除空目录,因此只能在一些特定的场景下使用。

删除非空目录无效:

image-20230308101746846

删除空目录有效:

image-20230308101913187

14. rm指令

**语法:**rm + 文件名/目录名

适用对象:所有使用者

功能:删除文件或目录

常用选项:

  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下所有文件

删除一个普通文本文件,只需要rm + 文件名,然后在输入y确认删除:

image-20230308103245789

直接rm+目录名是无法删除目录的:

image-20230308103650359

加上-r(表示递归)的命令选项后,即可删除目录,但是需要确认是否删除:

image-20230308103813661

像上图中总是要询问是否确认删除,十分的麻烦,可以加上-f强制删除命令选项:

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好想写博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值