当前位置:   article > 正文

Linux基础学习笔记(最新版)_linux笔记

linux笔记

什么是linux

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统

linux对比windows

在这里插入图片描述

文件系统

linux:一切皆文件

Linux,维护系统正常运行的进程:守护进程,而windows则是一个个服务

目录结构

登录系统后,在当前命令窗口下输入命令:ls /

会看到如下图所示:

在这里插入图片描述

\代表根目录,根目录是linux的第一层目录

树状目录结构:

在这里插入图片描述

以下是对这些目录的解释:

  • /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev:dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。

  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /medialinux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /srv:该目录存放一些服务启动之后需要提取的数据。

  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs 。

  • /tmp:这个目录是用来存放一些临时文件的。

  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fifiles目录。

  • /usr/bin:系统用户使用的应用程序。

  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:内核源代码默认的放置目录。

  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。

常用基本命令

linux最顶级的目录是根目录/

绝对路径

从根目录写起,例如/usr/share

相对路径

是指从当前位置所在的目录写起

  • 当前目录:./
  • 上一级目录:../

目录命令

  • ls:列出目录
  • cd:切换目录
  • pwd:显示目前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • cp:复制文件或目录
  • rm:移除文件或目录
  • mv:移动文件或目录,或修改文件与目录的名称

可以使用man命令来查看各个命令的使用文档,如man cp

ls

语法:ls [-aAdfFhilnrRSt] 目录名称

选项与参数:

  • -a:全部的文件,连同隐藏文件(开头为 . 的文件)一起列出来
  • -l:长数据串列出,包含文件的属性与权限等等数据,ls -l 可以简写为 ll
ls -al ~
  • 1

~代表当前登录用户目录,root用户就是/root

在这里插入图片描述

.开头的文件都是隐藏文件

cd(切换目录)

语法:

cd [相对路径或绝对路径]
  • 1
cd 目录位置:相对or绝对路径

cd .. 回到上一级目录
cd ~ 回到用户主目录,根据不同用户来的
cd / 回到根目录
  • 1
  • 2
  • 3
  • 4
  • 5

pwd(显示目前所在的目录)

  • -P:显示出真实的路径,而非使用连接(link)的路径
pwd
  • 1

在这里插入图片描述

mkdir(创建新目录)

语法:

mkdir [-mp] 目录名称
  • 1
  • -m:配置文件的权限
  • -p:将所需要的目录(包含上一级目录)递归创建起来
mkdir a/b/c/d
  • 1

rmdir(删除空的目录)

语法:

rmdir [-p] 目录名称
  • 1
  • -p:连同上一级目录也一起删除

cp(复制文件或目录)

选项与参数:

  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)

  • -d:若来源档为连接档的属性,则复制连接档属性而非文件本身

  • -r:递归持续复制,用于目录的复制行为

  • -a:相当于-pdr

  • -i:若目标档已经存在,覆盖时会先进行询问

文件命令

rm(移除文件或目录)

选项与参数:

  • -f:强制删除,忽略不存在的文件,不会出现警告信息
  • -i:删除前会询问是否删除
  • -r:递归删除,非常危险

一个非常危险命令(删库跑路)

rm -rf /
  • 1

删除系统根目录下所有文件,非常危险,千万不要执行

mv(移动文件与目录,或修改名称)

选项与参数:

  • -f:如果文件已经存在,直接覆盖不询问
  • -i:询问是否覆盖

文件基本属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组。

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

  • 当为[ d ]则是目录

  • 当为[ - ]则是文件;

  • 若是[ l ]则表示为链接文档 ( link fifile );

  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );

  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。

  • 若是[ s ]则表示为管道文件。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

1-3 位:属主权限 U
4-6 位:属组权限 G
7-9 位:其他用户权限 O

其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。

要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

每个文件的属性由左边第一部分的10个字符来确定(如下图):

在这里插入图片描述

修改文件属性

chgrp(更改文件属组)

  • -R:递归更改文件属组
chgrp [-R] 属组名 文件名
  • 1

chown(更改文件属组,也可以同时更改文件属组)

chown [-R] 属主名:属组名 文件名
  • 1

chmod(更改文件9个属性)

chmod [-R] xyz 文件或目录
  • 1

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

r:4	w:2	x:1
  • 1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:770

文件内容查看

cat(从第一行显示文件内容)

  • -A:相当于-vET
  • -b:列出行号,仅针对非空白行做行号处理,空白行不标行号
  • -E:将结尾的断行字节$显示出来
  • -n:列印出行号,连同空白行也会有行号,与 -b 的选项不同
  • -T:将 [tab] 按键以 ^I 显示出来
  • -v:列出一些看不出来的特殊字符

tac(从最后一行显示文件内容,与cat相反)

nl(显示行号)

  • -b:指定行号指定的方式,主要有两种:

    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

    -b t :如果有空行,空的那一行不要列出行号(默认值);

  • -n:列出行号表示的方法,主要有三种

    -n ln :行号在荧幕的最左方显示

    -n rn :行号在自己栏位的最右方显示,且不加 0

    -n rz :行号在自己栏位的最右方显示,且加 0

  • -w:行号栏位的占用的位数。

more(一页一页翻动)

运行中,可以按以下按键:

  • 空白键 (space):代表向下翻一页
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字
  • :f :立刻显示出档名以及目前显示的行数
  • q :代表立刻离开 more ,不再显示该文件内容
  • b :代表往回翻页,不过这动作只对文件有用,对管线无用

less(一页一页翻动,可以向前)

less命令在查看前不会加载整个文件,更快

可以输入的命令:

  • 空白键 :向下翻动一页
  • [pagedown]:向下翻动一页
  • [pageup] :向上翻动一页
  • /字串 :向下搜寻『字串』的功能
  • ?字串 :向上搜寻『字串』的功能
  • n :重复前一个搜寻 (与 / 或 ? 有关!
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序

head(取出文件前面几行)

  • -n:后面接数字,代表显示几行
  • -f:可以实时查看,用于查看日志

tail(取出文件后面几行)

连接

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。情况下,ln 命令产生硬链接。

硬连接

硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软连接

ln -s 创建软链接

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

ls -i 查看索引

vim编辑器

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的文字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。

vim 则可以说是程序开发者的一项很好用的工具。

所有的 Unix 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

在这里插入图片描述

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式

用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。

  • x 删除当前光标所在处的字符。

  • : 切换到底线命令模式,以在最底一行输入命令。

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

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

输入模式

在命令模式下按下i就进入了输入模式。

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

  • 字符按键以及Shift组合,输入字符

  • ENTER,回车键,换行

  • BACK SPACE,退格键,删除光标前一个字符

  • DEL,删除键,删除光标后一个字符

  • 方向键,在文本中移动光标

  • HOME/END,移动光标到行首/行尾

  • Page Up/Page Down,上/下翻页

  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

  • ESC,退出输入模式,切换到命令模式

底线命令模式

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

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

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

  • q 退出程序

  • w 保存文件

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

简单的说,我们可以将这三个模式想成底下的图标来表示:

在这里插入图片描述

vim按键说明

除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用。

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←)光标向左移动一个字符
j 或 向下箭头键(↓)光标向下移动一个字符
k 或 向上箭头键(↑)光标向上移动一个字符
l 或 向右箭头键(→)光标向右移动一个字符
[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕『向下』移动半页
[Ctrl] + [u]屏幕『向上』移动半页
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
n< space>那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。
0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个档案的最后一行(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg移动到这个档案的第一行,相当于 1G 啊! (常用)
n< Enter>n 为数字。光标向下移动 n 行(常用)
搜索替换
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word向光标之上寻找一个字符串名称为 word 的字符串。
n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
删除、复制与粘贴
x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd删除游标所在的那一整行(常用)
nddn 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该行的最后一个字符
d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy复制游标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G复制游标所在行到第一行的所有数据
yG复制游标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)

删除dd :复制yy 粘贴p

第二部分:一般模式切换到编辑模式的可用的按钮说明

进入输入或取代的编辑模式
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 为止;(常用)
[Esc]退出编辑模式,回到一般模式中(常用)

第三部分:一般模式切换到指令行模式的可用的按钮说明

指令行的储存、离开等指令
:w将编辑的数据写入硬盘档案中(常用)
:w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q离开 vi (常用)
:q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename]将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
:! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu 相反,为取消行号!

系统管理

systemctl

systemctl start | stop | restart | status 服务名

进程管理

  1. 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号
  2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
  3. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束

ps(查看当前系统中正在执行的进程的各种进程信息)

  • -a:显示当前终端的所有进程信息
  • -u:以用户的形式显示进程信息
  • -x:显示后台进程运行的参数
  1. grep 命令用于查找文件里符合条件的字符串
  2. 管道符|,格式:命令A|命令B,即命令A的正确输出作为命令B的操作对象
ps -aux|grep mysql
  • 1

查看进程名包含mysql的所有进程

使用 ps -ef可查看父进程

  • ps -ef是以全格式显示当前所有的进程
  • -e 显示所有进程。-f 全格式。

kill(终止进程)

  • -9:表示强迫进程立即停止
kill -9 进程号
  • 1

磁盘管理

du 列出文件系统整体磁盘使用量

df 检查磁盘空间使用量,可以看到总量和已使用的。

在这里插入图片描述

选项与参数:

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示

用户管理

root用户,系统最高级别的用户 /root

可以自己新建用户,linux是多用户系统

useradd 用户名

-m 产生一个用户的主目录
-g 分配到某个组
-s 默认的.. /bin/bash
  • 1
  • 2
  • 3

自己添加完毕的用户是普通用户 ,普通用户的目标。/home/xxx,root用户则为/root

添加完毕的用户要登录,设置密码,passwd + 用户名

删除用户 userdel

userdel 用户名,将这个用户删除

userdel -r 用户名,递归删除这个用户所产生的所有文件

用户组管理

添加groupadd 删除 groupdel

groupadd 用户组名
/etc/group

系统有保留id,我们自己创建的账号和组都是 1000+开始的

组都会有一个id,默认情况下,是从1000开始,每增加一个,不指定的id情况下,递增。

如果想自己修改组id,方便标识,可以自行修改 
groupmod -g id号(不能重复) 组名

groupmod -n 新组名 老组名 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

安装软件方式

所有的环境变量配置 /etc/profile

rpm 安装

rpm -ivh rpm包

rpm包是以.rpm为后缀的包

tar解压安装

tar -zxvf tar包

tar包是以.tar.gz为后缀的包

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号