Linux编程笔记1【个人用】

目录

一、Linux相关介绍

1.1 Linux的由来

1.2 Linux的发行版本

1.3 Linux 和 Windows 的一些区别

1.4 Linux和嵌入式

二、在虚拟机中安装Linux

2.1 安装Ubuntu时的操作步骤

三、Linux目录

3.1 各目录介绍

四、Linux系统命令

4.1 命令行当前状态

4.2 命令的组成格式

4.2.1 命令的注意事项

4.3 常用的命令

4.4 apt命令

4.4.1 apt常用的命令

五、什么是Vim编辑器

5.1 编辑器常见的功能

5.2 使用

5.2.1 命令模式(Command Mode)

5.2.2 输入模式(Insert Mode)

5.2.3 底线命令模式(Last Time Mode)

5.3 Vim常用命令


一、Linux相关介绍

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。

1.1 Linux的由来

Linux 是一个开源的操作系统,由分布在世界各地的多个组织机构或个人共同开发完成,每个组织结构或个人负责一部分功能,最后组合在一起,就构成了今天的 Linux。

例如:

  • Linux 内核最初由芬兰黑客 Linus Benedict Torvalds 开发,后来他组建了团队,Linux 内核由这个团队维护。
  • GNU 组织开发了很多核心软件和基础库,例如 GCC 编译器、C语言标准库、文本编辑器 Emacs、进程管理软件、Shell 以及 GNOME 桌面环境等。
  • VIM 编辑器由荷兰人 Bram Moolenaar 开发。

1.2 Linux的发行版本

Linux是一种自由和开放源代码的类UNIX操作系统,因此Linux具有非常多的发行版本(将Linux内核+应用软件做成一个包)。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

1.3 Linux 和 Windows 的一些区别

1.4 Linux和嵌入式

嵌入式系统通常作为某种设备装置或设备的一部分,是一种软件硬件可裁剪、对功能、可靠性、成本、体积,工耗有着严格要求专用的计算机系统。嵌入式开发就是在这些专用计算机系统上,开发相应系统、驱动、应用程序等

我们通常习惯在Linux系统环境下做“嵌入式开发”,所以我们学习Linux,主要就是学习如何使用Linux系统

二、在虚拟机中安装Linux

我们使用Linux中发行版本之一的Ubuntu,使用步骤如下

  1. 安装VirtualBox虚拟机,以便安装Ubuntu
  2. 在虚拟机中新建Ubuntu系统
  3. 开始安装

2.1 安装Ubuntu时的操作步骤

三、Linux目录

3.1 各目录介绍

目录含义/说明
/binbin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令
/boot这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/devdev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etcetc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录
/home用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的dalong。
/liblib 是 Library(库) 的缩写,这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/medialinux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
/mnt系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/optopt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/procproc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root该目录为系统管理员,也称作超级权限者的用户主目录。
/sbins 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv该目录存放一些服务启动之后需要提取的数据。
/sys这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。 sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。 该文件系统是内核设备树的一个直观反映。 当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmptmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usrusr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 /usr/bin: 系统用户使用的应用程序。 /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。 /usr/src: 内核源代码默认的放置目录。
/varvar 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

  •  /etc:这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
  • /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
  • 值得提出的是 /bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
.或者 ./ 代表当前目录
..或者 ../ 代表上一级目录
../..或者 ../../ 代表上上一级目录

四、Linux系统命令

在计算机的早期并没有图形界面,我们只能通过一个一个地命令来控制计算机,只有专业人员才能使用。

现在我们使用的操作系统(Windows、HarmonyOS、Android、iOS 等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及离不开图形界面

对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。

图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。

4.1 命令行当前状态

命令提示符,实际上就是在提示当前终端的状态。

命令提示符的格式如下:

dalong@dalong-VirtualBox:~$

4.2 命令的组成格式

Linux中命令由三个部分组成,分别是命令、选项、参数

4.2.1 命令的注意事项

  • 命令、选项、参数之间使用空格隔开
  • 命令是必须存在的 选项和参数选填
  • 选项以“-”开始
  • 选项不需要死记硬背(使用man ls 查看ls命令的文档)
  • 输入完命令后按下enter回车执行命令

4.3 常用的命令

命令功能简述
pwd显示当前工作目录的绝对路径(Print Working Directory)。
cd切换当前工作目录(Change Directory)。
ls列出当前目录下的文件和子目录信息(List)。
mkdir创建一个新的空目录(Make Directory)。
sudo以超级管理员(root)的权限执行后续命令(Superuser Do)。
rmdir删除一个空目录(Remove Directory)。
touch创建一个新的空文件,或更新已有文件的时间戳。
gedit用图形界面的文本编辑器(GNOME编辑器)打开或创建文件。
rm删除文件或目录(Remove)。注意:删除目录需配合 -r 选项。
mv移动文件/目录到其他位置,或用于重命名(Move)。
cp复制文件或目录(Copy)。复制目录通常需配合 -r 选项。
cat查看文件内容(将其输出到终端),或用于合并多个文件(Concatenate)。
ps显示当前系统中运行的进程快照(Process Status)。

4.4 apt命令

apt(Advanced Packaging Tool)是一个在前端软件包管理器,我们在后面会经常用到 apt安装一些软件
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令。

4.4.1 apt常用的命令

  • 列出所有可更新的软件清单命令:sudo apt update
  • 升级软件包:sudo apt upgrade
  • 列出可更新的软件包及版本信息:apt list --upgradeable
  • 升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
  • 安装指定的软件命令:sudo apt install
  • 安装多个软件包:sudo apt install
  • 更新指定的软件命令:sudo apt update
  • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show
  • 删除软件包命令:sudo apt remove
  • 清理不再使用的依赖和库文件: sudo apt autoremove
  • 移除软件包及配置文件: sudo apt purge
  • 查找软件包命令: sudo apt search
  • 列出所有已安装的包:apt list --installed
  • 列出所有已安装的包的版本信息:apt list --all-versions

五、什么是Vim编辑器

Windows下面有记事本编辑器,以及其他第三方的编辑器。Linux下也有编辑器。
vi 是老式的文本处理器,而Vim 是从 vi 发展出来的一个文本编辑器

VIM 是 Linux 系统上一款文本编辑器,它是操作 Linux 的一款利器。具备文本编辑的常见用能,并且还有代码补全提示、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。Vim官方认为Vim是一个程序开发工具。

但因为多数人习惯了Windows上的编辑器,所以在接触Vim时会不适应,但习惯之后就会发现Vim的优点。

5.1 编辑器常见的功能

  • 新建、打开、编辑、保存文件
  • 复制、删除、粘贴
  • 查找、替换
  • 编辑(光标)位置移动
  • 代码补全提示、错误跳转

5.2 使用

Vim分成了命令模式、输入模式和底线命令模式三种模式

5.2.1 命令模式(Command Mode)

用户刚刚启动Vim时,默认就处于命令模式。

在当前状态下通过键盘输入的动作会被Vim识别成一个“命令”,而非对文件进行编辑。

  •  比如想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,比较单一。因此仍要依靠底线命令模式输入更多命令。

5.2.2 输入模式(Insert Mode)

在命令模式下按下 i 就即可进入到输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

5.2.3 底线命令模式(Last Time Mode)

在命令模式下按下:(英文输入法下的冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

按ESC键可随时退出底线命令模式。

三种命令的切换方式如下:

5.3 Vim常用命令

一般模式可用的光标移动、复制粘贴、搜索替换等常用编辑功能

移动光标的方法

h 或 向左箭头键(←)

光标向左移动一个字符

j 或 向下箭头键(↓)

光标向下移动一个字符

k 或 向上箭头键(↑)

光标向上移动一个字符

l 或 向右箭头键(→)

光标向右移动一个字符

如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!

[Ctrl] + [f]

屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)

[Ctrl] + [b]

屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)

[Ctrl] + [d]

屏幕『向下』移动半页

[Ctrl] + [u]

屏幕『向上』移动半页

+

光标移动到非空格符的下一行

-

光标移动到非空格符的上一行

n

那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。

0 或功能键[Home]

这是数字『 0 』:移动到这一行的最前面字符处 (常用)

$ 或功能键[End]

移动到这一行的最后面字符处(常用)

H

光标移动到这个屏幕的最上方那一行的第一个字符

M

光标移动到这个屏幕的中央那一行的第一个字符

L

光标移动到这个屏幕的最下方那一行的第一个字符

G

移动到这个档案的最后一行(常用)

nG

n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)

gg

移动到这个档案的第一行,相当于 1G 啊! (常用)

n

n 为数字。光标向下移动 n 行(常用)

搜索替换

/word

向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)

?word

向光标之上寻找一个字符串名称为 word 的字符串。

n

这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!

N

这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。

使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!

:n1,n2s/word1/word2/g

n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:

『:100,200s/vbird/VBIRD/g』。(常用)

:1,$s/word1/word2/g

:%s/word1/word2/g

从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)

:1,$s/word1/word2/gc

:%s/word1/word2/gc

从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)

删除、复制与贴上

x, X

在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)

nx

n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。

dd

剪切游标所在的那一整行(常用),用 p/P 可以粘贴。

ndd

n 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。

d1G

删除光标所在到第一行的所有数据

dG

删除光标所在到最后一行的所有数据

d$

删除游标所在处,到该行的最后一个字符

d0

那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符

yy

复制游标所在的那一行(常用)

nyy

n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)

y1G

复制游标所在行到第一行的所有数据

yG

复制游标所在行到最后一行的所有数据

y0

复制光标所在的那个字符到该行行首的所有数据

y$

复制光标所在的那个字符到该行行尾的所有数据

p, P

p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)

J

将光标所在行与下一行的数据结合成同一行

c

重复删除多个数据,例如向下删除 10 行,[ 10cj ]

u

复原前一个动作。(常用)

[Ctrl]+r

重做上一个动作。(常用)

这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!

.

不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)

一般模式切换到编辑模式的可用的按钮说明

进入输入或取代的编辑模式

i, I

进入输入模式(Insert mode):

i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)

a, A

进入输入模式(Insert mode):

a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)

o, O

进入输入模式(Insert mode):

这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)

r, R

进入取代模式(Replace mode):

r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)

上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!

[Esc]

退出编辑模式,回到一般模式中(常用)

一般模式切换到指令行模式的可用的按钮说明

指令行的储存、离开等指令

:w

将编辑的数据写入硬盘档案中(常用)

:w!

若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关

:q

离开 vi (常用)

:q!

若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。

注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~

:wq

储存后离开,若为 :wq! 则为强制储存后离开 (常用)

ZZ

这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出)

ZQ

不保存,强制退出。效果等同于

:q!

:w [filename]

将编辑的数据储存成另一个档案(类似另存新档)

:r [filename]

在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面

:n1,n2 w [filename]

将 n1 到 n2 的内容储存成 filename 这个档案。

:! command

暂时离开 vi 到指令行模式下执行 command 的显示结果!例如

『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!

vim 环境的变更

:set nu

显示行号,设定之后,会在每一行的前缀显示该行的行号

:set nonu

与 set nu 相反,为取消行号!

在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么的意思。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

撩得Android一次心动

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

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

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

打赏作者

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

抵扣说明:

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

余额充值