Skip to content

Latest commit

 

History

History
210 lines (192 loc) · 16.4 KB

Linux_note.md

File metadata and controls

210 lines (192 loc) · 16.4 KB

Linux学习笔记(个人向)


1. 基础知识

  • 1991年首次发布,是开源软件发展历史上最著名的例子。只要遵循GNU通用公共许可证(GNU General Public License,简称==GPL==),任何人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
  • 很多公司或者组织都会基于Linux内核开发自己的操作系统,即Linux发行版。

1.1 Linux系统架构与组成

  • Linux是一个多层次的结构,包含内核程序、系统库、Shell(壳)、应用程序等:
    l1
  • 应用程序例如ChromeVirthGitSQL Server等,通常是专业的服务软件。提供页面访问的NGINX和提供数据库服务的MySQL都是基本必装的。

1.2 Linux发行版

  • Linux发行版是由第三方发行的,由内核程序、应用程序、系统工具、库文件、图形界面(GUI)、Shell、包管理器等等组成的一个完整的操作系统。
  • 它负责提供一个预先配置好的Linux 环境,使我们能够方便的安装、配置和使用Linux系统。
  • 每个发行版都有自己的目标受众、设计理念和特色,个人或者机构只要根据指引和需求选择适合自己的发行版即可。
    例如:Ubuntu适合个人桌面用户Kali适用于网络安全和渗透测试,Alpine体积小巧,适用于容器化的应用。

2. 安装和配置Linux系统

  • 通常在电脑原有操作系统上使用Linux系统有三种方式:
    1. 虚拟机软件
    2. 容器安装;
    3. 云服务器;
  • 我们用得较多的是虚拟机工具,以下为几种常见的虚拟机工具的介绍:
    l2
    在这里推荐安装的虚拟机软件是VirtualBox(Windows)、Multipass(Mac)或者 Hyper-V。后者直接使用Windows子系统WSL安装Linux即可。前两者安装完软件,直接新建一个虚拟机,然后安装一个Linux系统就可以了。
    1. Parallels Desktop也是一款很好用的Mac虚拟机。它不仅支持运行Linux,而且更适合在Mac中运行Windows。安装完PD后,就可以在Mac电脑上同时运行这两种系统了,且系统的切换也非常简单,只需要切换不同的桌面即可。
    2. UTM是一类非常特别且小众的虚拟机工具,基于QEMU(一种虚拟机架构) ,特点是可以模拟多种不同的CPU架构,例如x86ARMMIPS等。当你的电脑需要运行不同架构的操作系统的软件时,UTM就是一个很好的选择,只是会造成一定的性能损耗

2.1 使用multipass下载安装Ubuntu

  1. 下载multipass;
  2. 下载完成后,使用
    multipass launch --name ubuntu --cpus <分配给系统的核心数> --memory <分配给系统的内存大小> --disk <分配给系统的磁盘大小>  
  3. 使用multipass list命令参看multipass中存在的系统;
  4. 使用multipass shell ubuntu进入虚拟机中;
  5. 其他常用命令例如:
    l3

2.2 使用VMWare软件下载Ubuntu

  1. 打开Ubuntu的官网,下载Ubuntu
  2. 打开VMWare软件,点击新建虚拟机,选择典型安装,再选出我们刚刚下载好的镜像文件,然后一直下一步就可以了;

3. Linux的一些基础命令

3.1 vi/vim编辑器

  • vi编辑器是Unix系统下的一款文本编辑器,而vim是"vi improved"的缩写,即vi编辑器的增强版,增加了一些新的功能,做出了一些改进。
  • 通常在命令行(cmdpowershell)中输入vi或者vim都会启动vim,在Linux系统中,优先安装的也是vim。
  • 进入vim后,可以看到版本号等一些信息,此时我们可以使用:help来查看帮助信息或者使用:q来退出vim
  • vim中有三种常见的模式:
    1. 命令模式(Command mode)
    2. 插入模式(Insert mode)
    3. 尾行模式(Last line mode)
  • 可以使用vi <文件名>.txt来创建或者打开一个文件
  • 进入vim后默认采取命令模式,插入模式是用于编辑文件的。在命令模式的时候,可以通过按下键盘上的i/Ia/Ao/O建来切换到插入模式,分别代表insert、append和open。==大小写的i/Ia/Ao/O表示插入的位置,意义都不一样==,具体如下图所示:
    l4 进入插入模式后,键盘所有的输入都将作为插入的文本内容;要想退出插入模式,可以按键盘上的Esc键来回到命令模式。
  • 可以使用:wq保存文件并退出vim回到命令行界面;接着可以使用ls <文件名>.txt来打开文件并使用cat <文件名>.txt来查看文件内容;
  • 在vim界面中,可以使用"H、J、K、L"来控制光标在界面内的移动,具体如下:
    l5
    当然也可以直接使用方向键的上下左右进行光标移动
  • 常用的快捷键还有:
    1. ^,它会跳转到这一行的行首;
    2. $,它会跳转到这一行的行尾;

    这种方法在一行非常长的时候是非常方便的。除此以外,正则表达式或者查找替换的时候,会使用以上两个符号表示开头和结尾。

  • 除此之外,关于vim还有关于插入删除复制的快捷键,如yypdd:
    l6
    而且非常快捷的是,只需要在这些快捷键的前面加上数字,就可以表示复制或者粘贴的次数。例如:2yy表示复制光标前面的两行内容,3p表示将复制的内容在光标下面的行中粘贴三次;
  • 若界面中的行数太多容易搞混当前的位置,可以键入:set number\ :set nu来在语句左边显示出行号,以便清晰辨别相关内容。想要取消显示行号,也可以用:set nonnumber
  • 由于光标移动速度太慢,为了提高效率,我们可以使用ctrl f或者ctrl b来向前翻页或者向后翻页: l7
    或者:
    l8
    其中u表示up,d表示down。
  • 我们可以使用一个大写的G来跳转至文件的最后一页;使用gg来跳转到文件的第一行; 若我们要跳转到文件的指定行号,可以使用<行号>G来跳转到文件的指定行的位置;或者直接用:<行号>再回车的方式来跳转到文件的对应行的位置;
  • 在vim中查找和替换也是非常常用的:
    1. 查找 我们可以使用/<要查找的内容>从光标的位置开始向下进行查找;而使用?<要查找的内容>,可以从光标的位置开始向上进行查找;
      当我们找到目标之后,如果要继续查找下一个,可以键入一个n,这里它是“next”的缩写,下一个是相对于当前查找方向而定的;而使用N键入则是与当前查找方向相反地查找下一个,即“查找上一个目标”。
      尤其注意,==要查找的内容是区分大小写的==。如果要查找时忽略大小写的区别,可以在<要查找内容>之后加上\c标识或者输入set ic(ignore case)命令来修改全局的忽略大小写的设置。
    2. 替换
    3. 一般替换
      仅替换光标所在行的第一个查找词的内容,格式为:
      :s/<查找词>/<替换词>
    4. 逐行替换
      替换掉光标所在行的所有与查找词一样的内容,格式是:
      :s/<查找词>/<替换词>/g
    5. 分块替换
      替换掉选中段内的所有行中与查找词一样的内容,格式是:
      :<开始行号>,<结束行号>s/<查找词>/<替换词>
      同时,如果我们想查找整个文件内的情况并替换,则可以用以下格式:
      :1,$s/<查找词>/<替换词>   因为^表示文首,$表示文末
  • 还有一个非常好用的快捷键就是u,意为"undo",即撤销,类似Windows中的ctrl+z键。它可以撤销当前操作恢复到上一步
  • vim有一种特别重要的文件,叫.vimrc,它用于保存关于vim的配置信息或快捷键位,每次打开vim的时候都会自动预加载它。我们可以把自己习惯的一些设置都写入到这个文件中,这样在以后的使用中就会更加方便和高效。

3.2 常用命令

  • Linux中的命令基本都是命令名和它之后的一些参数组成的。基本上所有的命令都可以接受一到多个参数。

echo

可以用来修改源文件中的内容,格式为:

echo "<修改的文件内容>" > <文件名>      修改源文件内容  
echo "<创建的文件内容>" > <文件名>      创建新的文件   
echo <输出内容>     将输出内容输出到荧幕上

ls

即 list,显示目录内容;

直接输入ls可以查看当前目录下的所有文件和目录;ls -l可以显示更详细的信息;ls -a可以查看包括隐藏文件在内的所有文件和目录;ls -h可以以人类可读的方式显示文件的大小;ls -t可以按照修改时间排序ls -r可以逆序显示。**不同的 **

在Linux中,以半角英文的.开头的文件和目录都是隐藏的,例如:用于保存SSH密钥的.ssh目录、保存用户配置信息的.bash_profile文件等。以上的后缀可以合并简写,例如非常常用的ls -ltr

  1. 在打开的详细目录中,左边这一列是文件的类型和权限。第一个字符表示的是文件的类型,-表示普通文件、d表示目录、l表示这是一个链接文件。

    1. 链接文件是Linux系统中的一种特殊的文件,分为硬链接和软链接两种。软链接也叫符号链接,它类似于Windows系统中的快捷方式,如每行的最末尾又出现形如
      l9 的文件格式,箭头左边表示链接文件本身,箭头右边表示它所指向的文件或者是目录。
    2. 创建链接文件的命令是ln,后边加上源文件的名称以及链接文件的名称,即
    ln <可能的参数> <链接到的文件或者目录名> <链接文件的名字>  
    
    • 也可以加上一个-s参数在ln后以表示创建的是一个软链接文件。若不加则是默认创建硬链接文件。
    1. 软链接文件本身其实并不存储文件的内容,它只是一个指向目标文件的"快捷方式",故软链接文件的大小是很小的,通常远小于源文件。
      与软链接不同,硬链接本质上是一个指向文件系统中另一个文件的==指针==,与原始文件共享相同的i节点,也就是共享相同的文件内容。源文件和硬链接实际上是一个文件的"不同姓名",删除其中一个文件后,另一个还是可以正常访问。
    2. i节点是文件系统中一个非常重要的概念,全称为index node。在Linux系统中,==每个文件或者说目录都有一个唯一的节点,它存储了文件的元数据信息==,包含文件的权限、所有者、大小、修改时间等。==系统也是通过这个 i 节点来识别一个文件的==。对于文件的 i节点,我们可以通过ls -ltri命令进行查看,每行最左端的一串数字就是i节点编码。
  2. 列表中的第二列表示的就是文件此时的硬链接数,可以使用rm <文件名>命令删除文件。此时我们发现,删除源文件后,硬链接文件还是能够访问,但是软链接文件则会失效。

  3. 列表第一行的后续符号是权限信息,具体如下:
    l10
    若相对位置没有相应的权限,则位置会用-来代替,如rw-代表可读可写不可执行。如果我们要修改文件访问的权限,可以使用chmod(change mode)命令,具体格式如下:

    chmod +<权限符号> <修改的文件名>    添加权限  
    chmod -<权限符号> <修改的文件名>    删除权限

    除此之外,还可以在+\-号前面加上ugo来给文件的所有者、同组用户或者其他用户修改访问权限,可以两个连写,例如ug。如果都不写,意为给全部用户修改权限。
    有一种更快的修改权限的方法,即:将权限与数字对等,r是4,w是2,x是1,然后将权限数字求和就是每一种用户所得到的权限数。通过权限数我们可以快速知道用户获得了什么样的权限:
    l11
    由此修改权限可以写作:
    chmod <三位权限数> <修改权限的文件名

touch

在Linux中本来的作用是更新文件的修改时间,但如果系统中原来没有相关文件,则会自动生成一个,形同创建文件。

touch <文件名>      创建文件

命令行都有一个特点,都可以使用方向键的上箭头复制查找上面输入的命令,按下回车就可以再执行。

cd

在Windows系统中,文件是以盘符开始的,即文件首先要隶属于某个盘中。==在Linux系统中,文件系统是一个树状结构,所有的文件和目录都是从根目录开始的,根目录符号为/==。

  1. 我们可以使用pwd命令,显示当前所在目录的位置
  2. 我们还可以使用cd <切换目录地址>命令来切换目录,如cd /代表切换到根目录。

Linux中的路径有两种,一种是绝对路径,即从根目录开始的完整路径;另一种是相对路径,即相对于当前目录的路径。其中一个.代表当前目录;..代表上一级目录;~代表当前用户的家目录;-表示上一次所在的目录。

以下介绍一下根目录下的常见目录及其功能:

  1. bin目录,即binary目录,存放系统的基本命令和一些二进制的可执行文件;
  2. etc目录,存放系统和一些软件的配置文件;
  3. home目录,是用户的家目录,即当我们进入系统之后默认的目录
    其他不常用的如下:
    l12

cp

用于复制文件或者目录,格式为:

cp <要复制的文件> <粘贴到的对应文件名>      复制文件  
cp -r <要复制的目录名> <粘贴到的对应目录名>       用递归复制的方式复制目录    

mv

用于移动文件或者说重命名文件,格式为:

mv <原先文件名> <修改的文件名>

rm

删除文件的命令,格式为:

rm <删除的文件名>  

mkdir

全称为make directory,即创建目录命令,格式为:

mkdir <要创建的目录名>

还可以在mkdir之后加入-p操作来创建多级目录,例如mkdir -p folder1/folder2/folder3就是一次性创建了三个嵌套的目录。

du

全称为disk usage,本用于查看文件和目录大小的,但它会将当前目录下所有目录、文件一次显示出来,所以实用性极强,非常好用。但有个问题,du操作在目录里有特别大文件的情况下,速度会特别的慢,甚至死机。
例如: l13
左边的是文件或者目录的大小,右边的是其相对地址和名称。加上-h操作可以更人性化的方式来显示。

clear

用于在命令行界面清除萤幕中的所有内容,即清屏。

rmdir

全称为remove directory,即删除目录。 当目录下边为空时,可以直接使用rmdir <目录名的方式删除;但当目录不为空时,会报错,此时更好的方法是使用rm -r <目录名>的方式递归地删除一个整个文件夹。

【注意】:Linux中的删除命令都是不可逆的,故任何对Linux中文件的删除都要慎重。因此,使用rm命令的时候要十分小心,特别是rm -r删除整个目录的时候。

3.3 用tree显示目录结构

  • tree可以用树状图的形式显示目录的结构。但它不是系统自带的命令,需要使用包管理器下载,具体代码如下:
    sudo apt install tree
    之后就可以直接在当前文件夹里输入tree查看可视树状化后的文件层次了。