第一阶段:Linux基础

1.1Linux基础

1.1.1课程简介

  1. python体验和励志公式

    • 在Linux终端下直接输入python会显示电脑中python的版本,同时进入python的编辑环境

    • 代码演示

      # 每天进步0.01,坚持365天后你就会有一个质的飞跃
      1.01 ** 365 # **表示指数运算,运算的结果为37.8
      # 三天打鱼两天晒网的最终结果就是一事无成
      1.01 ** 3 * 0.99 ** 2 # 结果为1.0098
      

1.1.2操作系统简介

1.1.2.1什么是操作系统

  1. 裸机:没有安装操作系统的计算机称为裸机,如果想在裸机上运行自己编写的程序就必须使用机器语言编写程序
  2. 操作系统的作用:
    • 实例说明:一个用户想要在电脑上播放一首音乐,在没有操作系统的情况下需要经过以下几个步骤:首先电脑要将存储在硬盘中的音乐加载到内存中,然后电脑使用声卡对音频文件进行编码,最后电脑将编码后对文件发送到音响进行播放(以上步骤需要用户用机器语言来操作计算机硬件)
    • 作用一:方便用户直观简单的操作硬件而不需要编写复杂的机器语言
    • 作用二:操作系统将对计算机硬件的操作封装成系统调用,这样用户就可以通过系统调用直接运行软件而不需要逐步操作硬件

1.1.2.2桌面操作系统

  1. 三种主流桌面操作系统的比较
    • Windows操作系统:用户基数大,应用软件多;但是安全性和稳定性差
    • Macos操作系统:安全性和稳定性好,适合程序员开发,但软件较Windows来说少
    • Linux操作系统:应用软件最少,主要用于服务器和嵌入式开发领域

1.1.2.3服务器操作系统

  1. 服务器:从硬件层面来说服务器就是一台电脑,从软件层面来说服务器就是一个操作系统;只不过这种特殊的电脑不是放在桌子上的而是放在柜子中的,这些装载服务器的柜子所在的地方一般称之为机房,通常机房噪声大,温度低,公司内部员工一般在办公室自己的电脑上安装软件来远程操作这些位于机房中的电脑;只要机房中的电脑连上网,世界各地的用户就可以通过网络来访问这台电脑并使用位于这台电脑上的资源,例如百度
  2. 两种服务器操作系统的比较
    • Linux:市场占有率高,免费,安全、稳定且提供的服务器相关的配套软件多
    • Windows server:市场占有率低,收费,且安全性和稳定性不如Linux,一般是使用微软提供的.net开发的公司使用

1.1.2.4嵌入式操作系统

  1. Linux:目前嵌入式操作系统是Linux一家独大的局面,主要用于智能硬件的开发(像智能手机和智能平板,这里Android也是基于Linux延伸开发的)以及智能家居、智能机器人的开发,因此要学习人工智能就需要学习Linux的基本使用

1.1.2.5虚拟机简介

  1. 虚拟机:虚拟机是一个软件,但这个软件可以运行具有完整硬件功能(模拟)的操作系统

1.1.2.6linux内核版和发行版

  1. 内核版:用来与计算机硬件进行交互的版本,内核版本永远只有一个
  2. 发行版:在内核版的基础上添加了图形界面、应用程序等,发行版本可以存在多个

1.1.2.7Windows和Linux文件系统的区别

  1. Windows:前生是单用户操作系统,一次只能有一个用户来操作系统,每个盘符只能根据当前用户来确定其功能(放文件还是软件)
  2. Linux:前生是多用户操作系统,没有盘符的概念,所有文件都在一个根目录下(/),在根目录下有一个目录(/home),在该目录下可以存放多个用户目录以实现多用户同时操作的功能,在每个用户目录下根据每个用户的需要创建不同功能的目录,但是每个用户只能操作自己用户目录下的文件,不允许操作其他用户的目录

1.1.2.8windows和linux系统目录结构

  1. Windows:系统盘下,Windows目录用来存放系统相关的文件;programfiles目录用来存放安装过的软件
  2. Linux:
    • /etc:用来存放系统配置的目录
    • /bin:用来存放可执行的二进制文件,像一些常用的命令:cat、ls等
    • /:根目录,所有的文件都是在该目录下
    • /home:家目录,在该目录下存放着不同用户的根目录

1.1.3Linux命令简介

1.1.3.1明确学习目标

  1. 为什么要学习终端:在对服务器的维护中,都是在远程电脑上通过ssh客户端来完成的,并没有图形界面,必须要在终端下维护

1.1.3.2终端放大与缩小字体的快捷键

  1. 放大字体:ctrl+shift+=
  2. 缩小字体:ctrl±

1.1.3.3七种常用的命令

  1. ls:查看当前文件夹下所包含的内容
  2. pwd:查看当前文件的路径
  3. cd:切换文件夹
  4. touch:新建文件
  5. mkdir:创建目录(新建文件夹,注意区分与touch的区别)
  6. rm:删除指定的文件名,若要删除文件夹,需要在rm后加-rf(-rf表示不接受提示强行删除该目录下的所有目录和子目录,而-r表示删除该目录下的所有目录和子目录但当遇到有些特殊文件时会有删除提示,需要向用户确认删除)
  7. clear:清屏

1.1.3.4终端命令格式

  1. 格式:command [-option] [parameter]

    command:命令名

    option:选项,对命令进行控制

    parameter:传给命令的参数

    []:表示可以省略

  2. 举例:rm -rf yfx(表示强制删除yfx目录以及该目录下的所有子目录)

1.1.3.5查看命令帮助信息

  1. 两种方式查看命令帮助信息

    • command --help

    • man command:进入帮助界面后的快捷操作

      q:退出帮助界面

      回车键:多输出一行帮助信息

      空格键/f:向后切换一页

      b:向前切换一页

1.1.4目录相关命令

1.1.4.1自动补全命令和选择命令

  1. 按一下tab键可以自动补全一个命令剩余的部分(当以输入部分开头的命令有多个时不会自动补全)
  2. 按两下tab键可以查看该文件夹下以输入部分开头的命令有哪些,当不输入命令直接按两下tab键时会显示当前文件夹下所包含的文件
  3. 在输入命令后如果不想执行或者想换一行重新输入一个新命令,输入ctrl+c键就可以实现

1.1.4.2隐藏文件和上级目录

  1. 创建隐藏文件:只需要在隐藏文件的前面加一个.就可以创建隐藏文件,例如:touch .yfx.txt
  2. 查看隐藏文件,只需要加入一个选项-a(all的意思)就可以查看所有文件(包括隐藏文件),例如:ls -a
  3. 一个.表示当前目录,两个…表示上级目录,例如:cd . (还处在当前目录),cd …(切换到上一级目录)

1.1.4.3ls常用选项

  1. 各参数及其含义

    • -a:显示包括隐藏文件的所有文件,在显示文件时,一般文件以白色字体显示,而文件夹以蓝色字体显示
    • -l:以列表的形式显示文件的信息,其中第一列(drwxr-xr-x)中的第一个字母如果是d表示是一个文件夹,如果是-表示是一个文件
    • -h:单独使用无效,只有结合-l使用才有效,以人性化的形式显示文件大小(例如将4096字节大小显示为4kb,方便用户理解)
    • 常用选项的参数既可以分开使用也可以结合使用(-a -l -h和-alh效果是一样的)
  2. 隐藏文件的作用

    一般以.开头的隐藏文件都是一些软件的配置文件

1.1.4.4ls和通配符的使用(用来匹配到指定的文件)

  1. 各种通配符及其含义

    • *:表示任意个数的字符(注意以下都只在当前目录下匹配(子目录无法匹配),最多可显示一层子目录)

      ls 1*:表示列出以1开头的所有文件和文件夹
      ls 1*.txt:表示列出以1开头的且后缀名为txt所有文件
      ls *1:表示列出所有以1结尾的文件和文件夹
      ls *1.txt:表示列出所有以1结尾且后缀名为txt的文件
      注意:一般是文件夹的后面会显示一个冒号,如果该文件下有文件会在换行后显示,但是只能显示一层子文件,同时查询也无法查询子文件中所包含的内容(即若子文件包含查询的内容但子文件在当前目录下的第一层文件不包含查询的内容,则子文件也不会显示)
      ls *1* :表示列出所有包含1的文件和文件夹
      ls *1*.txt :表示列出所有包含1且后缀为txt的文件
      
    • ?:代表任意一个字符,但只能表示一个字符

    • []:表示可以匹配字符组中的任意一个

      ls [123]abc.txt:表示列出所有以abc结尾且后缀为txt同时以123中任意一个开头的文件(注意,[]的位置可以在开头、中间和结尾,但是只能取其中的一个值,即[]只占一位,不能同时取123)
      ls [1-3]abc.txt:表示列出所有以abc结尾且后缀为txt同时以123中任意一个开头的文件(注意,这里的-表示为范围)
      

1.1.4.5cd命令的常用参数

  1. cd:直接输入cd命令就可以回到当前用户所在的家目录(即/home下的用户目录)
  2. cd ~:回到当前用户所在的家目录的另一种表示
  3. cd -:在最近的两次工作目录中来回切换

1.1.5文件相关命令

1.1.5.1touch和mkdir命令的拓展

  1. touch:如果文件不存在会创建一个新文件,如果文件存在会修改文件的最后一次修改日期(注意:这里仅仅是修改日期,其它的都没有变化)
  2. mkdir -p:递归创建目录
  3. 说明:在Linux文件中,文件和文件夹不允许同名(有后缀就不是同名)

1.1.5.2rm命令拓展

  1. 使用rm命令删除的文件或文件夹是不会放入垃圾桶中的,会直接从硬盘上删除而不能恢复
  2. -f:强制删除,不会有任何提示(例如用-r删除目录如果目录不存在会提示目录不存在,但是-f不会有任何提示)
  3. -r:递归删除目录下的内容,删除文件夹时必须有此选项
  4. 通配符也适用于rm命令

1.1.5.3拷贝和移动命令

  1. tree命令:以树状形式列出文件目录结构,同时会显示有几个目录有几个文件夹(tree :表示以树状列出家目录,在Linux中表示家目录),使用-d选项表示只显示目录,不显示文件
  2. cp 源文件 目标文件:这里的路径既可以是绝对路径也可以是相对路径(说明:这里如果复制后的文件名不改变则在目标文件中只需输入路径而不需要输入文件名,同时只有输入-r选项才可以复制目录)
    • -i:表示覆盖文件会提示
  3. mv 源文件/源目录 目标文件/目标目录(不需要-r就可以移动目录):这里可以在目标文件中修改文件名以达到移动的同时修改文件名,同时-i:表示覆盖文件会提示(要经常使用-i命令,为防止因为命名的错误导致重要文件被覆盖而丢失,在终端中文件的操作是不可逆的)

1.1.5.4文件内容命令

  1. cat:将文件中的内容一次性全部显示出来,通常用于查看内容比较小的文件

    • -b:显示所写内容的行号(空行不会显示行号)
    • -n:显示每一行的行号(空行也会显示行号)
  2. more:将文件中的内容通过分屏的方式显示出来,通常用于查看内容比较多的文件,对于显示的内容可以通过b,回车,空格,f,q等来完成查看等相关操作

  3. grep:查找指定文件内容(grep 查找文件内容 查找文件名)

    • -n:显示指定文件内容所在的行号(这里-b不能表示显示(不包括空行)指定文件内容所在的行号,-n显示的内容行号包括空行)(grep 123 -n 222.txt)

    • -v:显示不包含指定文件内容所在的行号

    • -i:表示忽略大小写进行文件内容的查找(grep abc -ni 222.txt)

    • 说明:当查找的内容有空格时,要在查找的内容前面加上引号(grep “hello world” -ni 222.txt)

    • grep允许对文本文件进行模式查找(例如搜寻以a开头的行),所谓模式查找就是正则表达式

      a$:查找以a结尾的行(grep -n a$ 123.txt)
      ^a:查找以a开头的行(grep -n ^a 123.txt)
      

1.1.5.5其它命令

  1. echo和重定向

    • echo:显示参数指定的文字,通常和重定向联合使用

      echo hello world:终端会显示hello world
      
    • 重定向>和>>:用于将指定的文字覆盖或追加到指定的目录中,其中>会以覆盖原文件内容的形式追加到指定文件中,>>会以追加到原文件的形式追加到指定文件中,不会覆盖原文件的内容

      echo hello world >> a.txt:将hello world追加到a.txt文件的末尾,不会覆盖之前a.txt文件中的内容(如果文件不存在会自动出创建该文件)
      echo hello world > a.txt:将hello world添加到a.txt文件中,会覆盖之前a.txt文件中的内容
      ls -lh >> q.txt:将ls -lh命令的结果追加到q.txt文件的末尾(Linux中通常将命令的结果追加到指定文件中)
      
  2. 管道|

    • 说明:Linux允许将一个命令的输出通过管道作为另一个命令的输入

    • 举例:

      ls -lh ~ | more:将ls -lh ~的结果进行分屏输出
      ls -lh ~ | grep -i do:在ls -lh ~的结果中不分大小写的查找含有do的行
      

1.1.6远程管理命令

1.1.6.1关机和重启

  1. shutdown:表示一分钟后关机
  2. shutdown -c :表示取消关机
  3. shutdown -r now:表示立刻重新启动
  4. shutdown +10:表示10分钟后关机
  5. shutdown 20:04:表示在20:04分关机

1.1.6.2网卡和ip地址的概念

  1. 网卡:网卡是一个专门负责网络通讯的硬件设备
  2. IP地址:IP地址是可以设置在网卡上的地址信息,可以唯一标识一台主机
  3. 简易理解:我们可以将电脑比作电话卡,将网卡比作sim卡,将IP地址比作手机号码;IP地址就可以唯一标识一个网卡从而唯一标识一台电脑,所以每台电脑的IP地址不可以冲突
  4. 在ubuntu中输入ifconfig可以查看网卡信息,其中ens33下的IP地址就是本机的IP地址,而另一个lo下的IP地址是本地环回地址,用来测试本机网卡是否正常

1.1.6.3ping

  1. 用ping命令来测试本地网卡是否正确

    ping 172.0.0.1:过程分析,本机向网卡发送一个固定字节的信息,网卡在接受到信息后回向本机回复一个固定字节的信息,最终终端会显示是否收到网卡发送的接受信息以及接受信息所用的时间,时间越短说明网速越好(ping的工作原理皆是如此)
    

1.1.6.4远程管理命令ssh工作方式简介

  1. ssh全称secure shell,是一种安全的远程管理服务器的方式,管理员需要在服务器端和客户端分别安装ssh端相关ssh软件,然后管理员在客户端通过ssh远程管理服务器(这里一般linux和mac系统都是默认已经安装了ssh,只有windows需要自己安装ssh),这种通过ssh的方式传输数据是会加密的,而且数据在传输的过程中是会压缩的则会提高数据的传输效率

1.1.6.5域名和端口号的概念

  1. 域名:就是IP地址的别称,方便用户记忆,同样可以唯一标识一台电脑,例如百度的域名为www.baidu.com
  2. 端口号:通过端口号可以访问计算机上的应用程序,严格来说一台计算机如果要得到另一台计算机的服务,域名和端口号是缺一不可的,域名用来找到要访问的计算机,端口号则用来找到具体要访问的应用程序,但是向web服务器有一个默认的端口号是80,ssh有一个默认的端口号是22,如果用户访问时没有输入端口号则使用默认的端口号,例如用web访问百度时就只输入域名同样可以得到服务就是启用了默认的端口号

1.1.6.6ssh客户端的简单使用

  1. 使用格式:ssh [-p port] user@remote

    • user是指远程机器上的用户名,如果不指定就默认为当前用户
    • remote是指远程机器的地址,这个地址可以时IP地址,也可以是域名,还可以是别名
    • port是ssh server监听的端口,如果不指定就默认为22,即[]内的内容可以省略
  2. mac电脑远程连接ubuntu

    ssh -p 22 [email protected]

  3. 连接问题处理:connect to localhost port 22: Connection refused

    查询网址:https://blog.csdn.net/c1481118216/article/details/52385056
    如果远程连接mac电脑时出现连接问题:connect to localhost port 22: Connection refused,则可能是mac的远程登陆端口没有打开:系统偏好设置->共享->远程登陆勾选->允许访问选择所有用户
    
  4. 当远程操作其它电脑时出现权限不够的问题时,可以在命令行前面加上sudo就可以获得一定的权限(表示以超级用户的权限执行)

1.1.6.7scp远程复制文件或者文件夹

  1. 从本地向服务器复制文件格式:scp -P port 源文件 用户名@IP地址:目标文件的地址
  2. 从远程端口向本地复制文件的格式:scp -P port 用户名@IP地址:源文件地址 目标地址
  3. 从远程端口向本地复制文件夹的格式:scp -r 用户名@IP地址:源文件地址 目标地址
  4. 从本地向服务器复制文件夹格式:scp -r 源文件 用户名@IP地址:目标文件的地址
  5. 注意:上面提到的地址都是相对地址,本机是相对当前操作目录的地址,而远程服务器是相对于家的地址
  6. 上面的port是端口号,ssh命令默认的端口号为22
  7. 注意:-P port这两个也可以不写

1.1.6.8ssh高级

  1. 目录.ssh:有关ssh的配置信息都保存在该目录下且该目录默认是隐藏的,该目录存储在用户的目录下
  2. known_hosts:.ssh目录下的文件,用来保存远程登陆的连接信息,一般当第一次登陆后后面再次登陆这些服务器时就可以直接输入: ssh 用户名@IP地址就可以远程登陆

1.1.6.9免密码登陆

  1. 在客户端终端中输入ssh-keygen创建免密码登陆的钥匙,客服端的.ssh文件夹中会增加两个文件:id_rsa(私钥)和 id_rsa_pub(公钥),然后在客户端的终端中输入ssh-copy-id 服务端名称@服务端IP地址,这样就会将服务器端产生的公钥id_rsa_pub复制并发送到服务器端的.ssh文件夹中同时取名为authorized_keys,这样客户端就可以免密码登陆服务器端并进行一些操作
  2. 客户端使用私钥对数据进行加密/解密,服务器端使用公钥对数据进行加密/解密
  3. 非对称加密算法:使用公钥加密的数据需要使用私钥解密;使用私钥加密的数据需要使用公钥进行解密
  4. 免密码登陆的工作原理:服务器使用私钥对发送数据进行加密并传输到服务器,服务器使用公钥对数据进行解密然后对要发送到客户端的信息进行公钥加密,客户端再使用私钥对信息进行解密

1.1.6.10配置别名

  1. 在客户端中为服务器创建别名,方便客户端快速连接服务器

    • 在客户端的.ssh文件夹下新建一个文件config,在文件中输入以下信息

      Host 服务器别名
      	HostName 服务器的IP地址
      	User 服务器名称
      	Port 22
      
    • 现在在客户端就可以直接输入ssh 服务器别名直接远程登陆服务器,就不需要再输入其它信息

1.1.7用户权限

1.1.7.1基本概念

  1. 对文件/用户的权限包括:

    权限 缩写 数字代号
    r 4
    w 2
    执行 x 1
  2. 组:为了方便对用户权限的设置,设定组的概念,对组进行相关权限的设置,然后将需要设定相关权限的用户划分到这些组中来设定用户的权限

1.1.7.2ls -l输出信息介绍

drwxr-xr-x 2 dedicationyu dedicationyu 4096 1月 20 18:09 1
说明:
drwxr-xr-x:是对应的读、写、执行权限;一共10个字母,将这10个字母分割成4份;第一个d表示对应的文件是文件夹还是文件;第二个rwx表示该文件所属的用户(dedicationyu)所拥有的权限(可读、可写、可执行,有时s也表示可执行);第三个r-x表示该文件所属的组的所拥有的权限(可读、不可写、可执行);第四个r-x表示除了所在用户和所在组之外的其它用户的权限(可读、不可写、可执行);2表示硬链接数,通俗来说就是有多少种方式可以访问到当前的目录/文件(一般文件的访问方式都是一种,而目录访问方式的多少取决于子目录的多少)第一个dedication表示文件所属用户的名称;第二个 dedication表示文件所处的组的名称;4096表示文件的大小;1月20日18:09分表示文件的修改时间;1是文件名

1.1.7.3chmod修改文件权限

  1. 一般命令格式(无法指定特定的用户相关的权限):

    chmod +/-rwx 文件名/目录名
    chmod -w 1.txt:表示禁止文件的可写权限
    chmod +x 1.txt:表示增加文件的可执行权限
    说明:一般文件如果有可执行权限那么文件一般在终端中的颜色是绿色的,用./1.txt来执行当前文件(一般向代码就可以执行);对于目录而言(文件夹),如果没有可执行权限就无法针对该目录使用任何命令,如果没有可读权限就无法查看该目录下所包含的内容,如果没有可写命令就无法在该目录下创建新文件
    
  2. 常用命令格式:

    chmod -R 755 文件名/目录名递归修改文件权限(r:4,w:2,x:1)
    这里的755分别代表拥有者用户、拥有者所在组、其它用户的权限
    

1.1.7.4超级用户

  1. 一般用户只可以修改家目录下自己的用户的相关文件而无法修改其它的文件
  2. 如果一般用户想要使用超级用户的权利,只需在命令前面加上sudo但是需要验证密码,但是每一次输入密码后的五分钟之内用户就无需再次输入密码就可以使用sudo,超过五分钟后则需要再次输入密码

1.1.8组管理

1.1.8.1创建组/删除组/确认组信息/修改所属组

  1. 格式

    命令 作用
    groupadd 组名 添加组
    groupdel 组名 删除组
    cat /etc/group 确认组信息
    chgrp -R 组名 文件名/目录名 递归修改文件/目录所属的组
  2. 说明:对组的操作,因为在/etc目录下,不是用户的家目录下,所有对于组的相关操作都要在超级用户权限下进行,其中在ubuntu中用shift可以切换中英文

1.1.9用户管理

1.1.9.1创建用户/设置密码/删除用户

  1. 相关命令及作用(这些命令都需要超级用户的权限)

    命令 作用 说明
    useradd -m -g 组 新建用户名 添加用户 -m:自动建立用户家目录(如果没有使用-m那么在用户界面的目录下就没有这个用户的目录);-g:指定用户所在的组,否则用户会建立一个和用户同名的组
    passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以修改自己的账户密码
    userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
    cat /etc/passwd |grep 用户名 确认用户信息 新建用户后,用户信息回保存在/etc/passwd文件中
  2. 说明:再创建新用户是必须创建密码,因为通过其它客户端远程连接时必须要输入密码才能进行远程连接,如果不设置密码就无法被其它用户远程连接

1.1.9.2id查看UID和GID以及passwd文件介绍

  1. GID:组代号

  2. UID:用户代号

  3. id 用户名:查看用户的相关代号

    id devyfx
    uid=1001(devyfx)gid=1001(dev)组=1001(dev)
    说明:uid的信息是保存在/etc/passwd的文件中的,而gid的信息是保存在/etc/group中
    cat -n /etc/passwd | grep devyfx
    43 devyfx:x:1001:1001::/home/devyfx:/bin/sh
    说明:43表示行号;devyfx表示用户名;x表示有密码且密码是加密的;1001表示用户代号;1001表示组代号;两个冒号中间的内容表示用户的拓展名如果没有显示则表示默认使用用户名;/home/devyfx表示用户所在的家目录;/bin/sh表示登陆使用的shell(终端),Ubuntu默认使用的是dash
    cat -n /etc/group | grep dev
    67 dev:x:1001
    说明:分别表示组名,组加密,组代号
    ls :会直接显示当前所在用户的组代号和用户代号等信息(即@后面的用户)
    cat -n /etc/group | grep dedicationyu
    adm:x:4:syslog,dedicationyu:表示dedicationyu这个用户具有adm这个管理员组的权限
    cardom:x:4:decicationyu:表示dedicatioyu这个用户可以访问系统的光驱
    sudo:表示dedicationyu表示dedicationyu这个用户可以使用sudo这个超级用户的权限来维护和管理系统
    

1.1.9.3who和whoami

  1. who:查看当前所有登陆的用户列表

    dedicationyu :0 2020-01-20 10:41(:0)
    说明:2020-01-20 10:41表示登陆到账号dedicationyu的时间(只要电脑不重启,时间就定格不变),括号中的内容为0表示dedicatioinyu这个账号是从当前电脑登陆的,如果不是从当前电脑登陆的就会显示一个IP地址
    
  2. whoami:查看当前登陆用户的账户名

1.1.9.4usermod设置主组和附加组

  1. 主组:通常在新建用户时指定(使用-g选项确定的组),在etc/passwd的第四列gid对应的组
  2. 附加组:在/etc/group中最后一列表示该组的用户列表,用户指定用户的附加权限(adm就表示一个附加组,改行最后一列的dedicationyu就表示dedicationyu用户能够使用这个附加组的权限);一般直接输入id时会显示当前用户的相关组信息,如果只有一个组而没有其它的附加组一般该用户就没有其它组的附加权限(像sudo权限等)
  3. 修改用户的主组:usermod -g 组 用户名
  4. 添加用户的附加组:usermod -G 组 用户名
  5. 修改用户登陆的shell:usermod -s /bin/bash 用户名
    • dedicationyu@dedicationyu:@前面的dedicationyu表示用户名,后面的dedciationyu表示计算机名
    • 当ubuntu中新建的用户的shell时sh(Ubuntu默认创建的事dash)而默认管理员的用户使用的shell时bash时(通过cat -n /etc/passwd |grep 用户名查看默认的shell),则在新建用户的终端中不会出现用户名@计算机名的情况同时文件和文件夹也不会有颜色区分,这里需要修改新建用户的默认shell为管理员使用的shell即为bash
    • 修改后用户登陆的shell不会立刻生效需要退出后再次进入用户界面才会生效
    • 一般Ubuntu默认使用的shell时dash但是这种shell使用不方便一般都改为bash来简化使用(一般电脑的默认用户的shell就是bash)

1.1.9.5which查看命令所在位置

  1. /etc/passwd:用户保存用户信息的文件
  2. /usr/bin/passwd:用于修改用户密码的程序(直接输入passwd就可以修改用户的密码)
  3. 用法:passwd 命令
  4. bin和sbin
    • 说明:在Linux中,绝大多数可执行文件都是保存在/bin,/sbin,/usr/bin,/usr/sbin中
    • /bin:全称是binary,是二进制执行文件目录,主要用于具体应用
    • /sbin:全称是system binary,是系统管理员专用的二进制代码存放目录,主要用于系统管理
    • /usr/bin:后期安装的一些软件
    • /usr/sbin:超级用户的一些管理程序

1.1.9.6切换用户

  1. su - 用户名:-可以切换到用户家目录,否则保持位置不变(只会切换用户不会切换目录)
  2. su:直接切换到root用户,一般不推荐使用,因为不安全
  3. 说明:如果使用su切换到root用户时出现认证失败,基本上是因为root密码没有设定,在终端下输入sudo passwd即可设置root用户的密码(直接输入passwd只能修改当前用户的密码)

1.1.9.7修改文件权限

  1. chown:修改拥有者(修改文件所属的用户)
    • chown 用户名 文件名/目录名:修改文件/目录的拥有者
  2. chgrp:修改组
    • chgrp -R 组名 文件名/用户名:递归修改文件/目录的组
  3. chmod:修改文件权限

1.1.10系统信息

1.1.10.1date和cal查看系统时间

  1. 时间和日期
命令 作用
date 查看系统时间
cal calendar的缩写,查看日历,-y选项可以查看一年的日历

1.1.10.2df和du查看磁盘和目录空间占用

  1. 磁盘信息
命令 作用
df -h disk free 显示磁盘剩余空间
du -h [目录名] disk usage显示目录下的文件大小

​ 说明:-h这个选项可以用人性化的方式显示文件大小

1.1.10.3进程信息

  1. 进程的概念:所谓进程就是当前正在执行的程序

1.1.10.4进程相关命令使用

  1. 相关命令介绍

    命令 作用
    ps aux process status 查看进程的详细状况
    top 动态显示运行中的进程并且排序
    kill [-9] 进程代号 终止指定代号的进程,-9表示强行终止
  2. ps命令介绍

    • 只输入ps默认只会显示当前通过终端启动的应用程序

    • ps选项说明:

      选项 含义
      a 显示终端上的所有进程,包括其它用户的进程
      u 显示进程的详细状态
      x 显示没有控制终端的进程(不是通过终端启动的程序也会显示,即显示所有进程)
    • 说明:ps的这些选项都不需要加-,直接输入选项即可

    • 相关参数说明:

      PID:表示进程的代号

      %CPU:表示cpu占有率

      %MEN:表示内存占有率

  3. top命令介绍

    • 退出top命令:输入q即可退出命令
  4. kill命令介绍

    • 说明:不要随意终止以root身份开启的进程,可能会导致系统崩溃

1.1.11其它命令

1.1.11.1查找文件命令find命令的基本使用

  1. 说明:find命令功能非常强大,常用于在特定的目录下查找符合条件的文件

  2. 格式:

    命令 作用
    find [路径] -name “*.py” 查找指定路径下拓展名为.py的文件,包括子目录(意思就是可以递归查找)
  3. 格式说明:

    • 如果省略路径则表示在当前文件下查找
    • 通配符可以配合find使用

1.1.11.2软链接

  1. 格式:

    命令 作用
    ln -s 被链接的源文件 链接文件 建立文件的软链接,用通俗的话讲就是Windows下的快捷方式,用软链接的方式快速打开软链接指向的文件
  2. 格式说明:

    • 没有-s选项建立的是一个硬链接,工作中几乎不会建立硬链接
    • 源文件要使用绝对路径,不能使用相对路径(相对于输入命令的位置),这样可以防止移动链接文件后仍然可以正常使用 (例如:当创建的软链接位置发生变化后,对于软链接所在的新位置而言,源文件的位置就不再是之前的相对路径位置(例如相对路径的上一级目录不同,之前的上一级目录是在创建软链接时的上一级目录,而移动软链接后的上一级目录则是相对于软链接所在的上一级目录),即可能在修改后的目录下该相对路径是错误的)

1.1.11.3硬链接

  1. 硬链接相对于软链接而言的差异:如果将源文件删除,创建的硬链接仍然可以使用而创建的软链接将无法使用
  2. 软链接和硬链接工作方式的差异
    • 在Linux中,文件名和文件数据是分开存储的
    • 软链接就是和Linux一样创建一个软链接文件名和软链接的文件数据,通过访问源文件的文件名来访问源文件的文件数据(即软链接只有通过源文件的文件名才可以访问源文件的文件数据,如果源文件的文件名被删除,软链接将无法访问源文件的文件数据)
    • 硬链接就是创建一个和源文件文件名具有相同功能的文件,硬链接可以直接访问源文件的文件数据而无需通过源文件的文件名来进行访问,也就是说如果源文件的文件名被删除,硬链接仍然可以访问源文件的文件数据

1.1.12打包压缩

1.1.12.1tar命令的相关介绍

  1. 说明:在不通过的操作系统中,打包压缩的方式是不同的,在Windows中常用rar,在Linux中常用tar.gz,在Mac中常用zip

  2. tar命令只负责打包不负责压缩:可以一系列文件打包成为一个大文件同时也可以将一个大文件恢复成一系列文件

    • 打包和解包

      # 打包文件
      tar -cvf 打包文件.tar 被打包的文件/路径……
      # 解包文件
      tar -xvf 打包文件.tar
      
    • 相关选项说明

      选项 说明
      c 生成档案文件,创建打包文件
      x 解开档案文件
      v 列出归档解档的详细过程,显示进度
      f 指定档案文件名称,f后面一定是.tar文件,所以必须放在选项最后
    • 打包和解包演练

      # 打包
      tar -cvf py.tar 01.py 02.py 03.py
      # 解包
      tar -xvf py.tar
      

1.1.12.2压缩和解压缩

  1. gzip压缩和解压缩

    • 用gzip压缩的tar包其拓展名一般用.tar.gz,表示用tar对文件进行一个打包然后用gzip来压缩

    • 在tar命令的选项中有一个选项-z可以调用gzip,从而方便实现压缩和解压缩功能,而不需要在终端下写入两个命令(先打包在压缩)

    • 命令格式

      # 压缩文件
      tar -zcvf 打包文件.tar.gz 被压缩到文件/路径……
      # 解压缩文件
      tar -zxvf 打包文件.tar.gz
      # 解压缩到指定路径
      tar -zxvf 打包文件.tar.gz -C 目标路径
      # 要解压缩到指定路径时,该路径必须存在
      
    • 通配符可以适用于压缩和解压缩

  2. bzip2压缩和解压缩

    • bzip2压缩到后缀名为***.tar.bz2

    • bzip2压缩文件的格式基本和gzip一样,只有一个地方不同,就是在tar的选项中有一个选项j是可以调用 bzip2的

    • 命令格式

      # 压缩文件
      tar -jcvf 打包文件.tar.bz2 被压缩到文件/路径……
      # 解压缩文件
      tar -jxvf 打包文件.tar.bz2
      # 解压缩到指定路径
      tar -jxvf 打包文件.tar.bz2 -C 目标路径
      # 要解压缩到指定路径时,该路径必须存在
      

1.1.13ubuntu软件安装

1.1.13.1设置软件源

  1. 软件源:提供所有软件安装包的源头就称为软件源(ubuntu主服务器就称为软件源,所有用户可以通过apt命令来安装软件源所提供的所有软件),但是Ubuntu的主服务器是放在国外的,所以国内下载会非常慢
  2. 镜像源:就是拥有软件源上面的相同软件而且是在国内,方便国内的用户进行下载(像阿里镜像服务器、清华镜像服务器等)
  3. 在Ubuntu中设置镜像源,在Ubuntu的应用程序中搜索软件和更新,找到ubuntu软件下的下载自选项,在这里修改软件源(一般情况下清华的软件源下载的速度更快),注意这里修改中需要等待的时间可能很长,可以点击选择最佳服务器来由系统进行测试哪个服务器的下载最佳

1.1.13.2apt命令

  1. apt的全称是advance package tool,是Linux下的一款软件安装包管理工具
  2. apt可以在终端中方便的进行安装/卸载/更新的相关操作
    • 安装软件:sudo apt install 软件包
    • 卸载软件:sudo apt remove 软件包
    • 更新安装包:sudo apt upgrade

1.1.14vi编辑器

1.1.14.1vi简介

1.1.14.1.1学习vi的目的
  1. 在工作中需要对服务器上的文件进行简单的修改,可以使用ssh远程登陆到服务器上,并且使用vi进行快速的编辑
1.1.14.1.2vi的基本特点
  1. vi的核心思想:让程序员的手指始终保持在键盘的核心区域就可以完成所有的编辑操作而不需要使用鼠标
  2. vim:是从vi发展出来的一个文本编辑器,包含vi的全部功能同时支持代码补全、编译等其它的功能,在程序员中被广泛使用,被称为编辑器之神
  3. 在很多Linux系统中直接将vi做成了vim的软链接,也就是说输入vi实际上打开的是vim

1.1.14.2打开文件

  1. vi 文件名(如果文件名存在就打开该文件,如果文件不存在就新建该文件后将文件打开)
  2. vi快捷键:将指定行的代码复制粘贴指定次数(将光标移动到要复制的行数,在命令行下连续按两次y,然后按下要粘贴的次数(比如20),最后按下p即可)
  3. 在打开文件的同时定位到指定的行:vi 文件名 +指定的行(vi hello.py +18),如果+后面不写任何内容就会自动定位到程序的最后一行
  4. 删除交换文件:当某一个程序的交换文件出现时(比如.hello.py.swp)如果直接vi hello.py会出出现一个错误E325,这时只需要输入大写的D就可以删除交换文件,此时在vi hello.py就可以正常编辑

1.1.14.3工作模式

  1. 职责以及切换方式

    • vi的三种工作模式:命令模式、末行模式、编辑模式
    • 命令模式:命令模式下可以对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除等
    • 末行模式:末行模式下可以进行保存、退出等操作(wq:保存并退出(write quit))
    • 编辑模式:编辑文字
  2. 末行模式下的快捷键:

    命令 功能
    w 保存
    q 退出,如果没有保存则不允许退出
    wq 保存并退出
    q! 不保存退出
    x 保存并退出

1.1.14.4移动命令

  1. 重复次数:在命令模式下,先输入一个数字再跟上一个命令可以让该命令重复执行指定的次数

  2. 方向移动

    命令 功能
    h 向左
    j 向下
    k 向上
    l 向右
  3. 行内移动:

    命令 功能
    w 向后移动一个单词
    b 向前移动一个单词
    0 行首(是真正意义上的行首)
    ^ 行首,第一个不是空白字符的位置(如果行首是空白字符则不会到行首)
    $ 行尾
  4. 行数移动

    命令 功能
    gg 文件顶部
    G 文件末尾
    数字gg 移动到数字对应行数
    数字G 移动到数字对应行数
    :数字(末行模式) 移动到数字对应行数
  5. 屏幕移动

    命令 功能
    ctrl+b 向上翻页
    ctrl+f 向下翻页
    H 屏幕顶部
    M 屏幕中间
    L 屏幕底部
  6. 段落切换:python中用空行来区分不同的段落(即连续在一起的属于一个段落)

    命令 功能
    { 切换到上一个段落
    } 切换到下一个段落
  7. 括号切换

    命令 功能
    % 括号匹配及切换(切换到下一个括号,但只能在一行内切换)
  8. 标记:在开发时如果需要某一行代码需要稍后处理,可以使用m增加一个标记,后面使用’来快速回到标记处,同名的标记后写的会覆盖之前的标记

    命令 功能
    mx x可以是任意一个字母,用来标记行
    'x 快速定位到标记的行

1.1.14.5选中命令

  1. 在vi中要选择文本,需要先用visual命令切换到可视模式,按住esc可以返回到命令行模式

  2. vi提供三种可视模式:

    命令 模式 功能
    v 可视模式 从光标位置开始按照正常模式选择文本
    V 可视行模式 选中光标经过到完整行
    Ctrl + v 可视块模式 垂直方向选中文本
  3. 可视模式下可以和移动命令联合使用,例如:ggVG能够选中全部文本

1.1.14.6撤销和删除

  1. 撤销和恢复撤销

    命令 功能
    u 撤销上一次命令
    Ctrl + r 恢复撤销的命令
  2. 删除文本

    命令 功能
    x 删除光标所在字符或者选中文字(数字+x可以删除从光标开始的之后数字个字符)
    d(移动命令) 删除移动命令对应的内容
    dd 删除光标所在的行,可以ndd复制多行
    D 删除至行尾
  3. 说明:d,x这两个删除命令实际上是一个剪切操作,删除后使用p就可以粘贴删除的内容

  4. 常用结合命令的使用

    • dw:从光标位置删除到单词末尾
    • d0:从光标位置删除到一行的起始位置
    • d}:从光标位置删除到段落末尾
    • ndd:从光标出向下连续删除n行
    • d代码行G:从光标所在行删除到指定代码行之间的代码
    • d’a:从当前光标位置删除到标记位置之间的所有代码

1.1.14.7复制和粘贴

  1. 命令

    命令 功能
    y(移动命令) 复制
    yy 复制一行,nyy可以复制多行
    p 粘贴
  2. 在其它软件中复制到的内容如果想粘贴到vi中不能使用p命令,必须进入编辑模式下右击选择粘贴

1.1.14.8替换命令

  1. 命令

    命令 功能 工作模式
    r 替换当前字符 命令模式
    R 替换当前光标后的字符 替换模式

1.1.14.9缩排以及重复执行

  1. 命令

    命令 功能
    >> 向右增加缩进
    << 向左增加缩进
    . 重复上次命令
  2. 在可视行模式下缩进只需要按一个>或者<就可以了

1.1.14.10查找和替换命令

  1. 常规查找

    命令 功能
    /str 查找str,查找到指定内容后,使用n可以查找下一个出现的位置,使用N可以查找上一个出现的位置(会从文件开始出开始查找)
  2. 单词快速匹配

    命令 功能
    * 向后查找当前光标所在单词
    # 向前查找当前光标所在单词
  3. 全局替换

    • 在vi中替换的记忆格式::%s///g
    • 一次性替换文件中的所有出现的旧文本::%s/旧文本/新文本/g
  4. 可视区域范围的替换:/旧文本/新文本/g(选定可视化区域后执行替换前面会有<>,系统会默认输出不用理会在后面接着写替换的命令即可)

  5. 确认替换(替换前会向用户确认是否替换,推荐使用这种替换方式)::%s/旧文本/新文本/gc

    命令 功能
    y 替换
    n 不替换
    a 替换所有
    q 退出替换
    l 最后一个,并把光标移动到行首
    ^E 向下滚屏
    ^Y 向上滚屏

1.1.14.11插入命令

命令 功能
i 在当前字符前插入文本
I 在行首插入文本
a 在当前字符后添加文本
A 在行末添加文本
o 在当前行后面插入一空行
O 在当前行前面插入一空行

1.1.14.12vi演练

  1. 连续输入多个相同的代码:在命令行下输入数字(表示要重复输入到次数),输入i进入编辑模式,输入要重复的内容,按esc进入命令模式,现在编辑器就会将需要重复的内容重复指定的次数
  2. 利用可视化给多行代码增加注释:将光标移动到要注释代码块的行首,按住ctrl+v进入可视块模式,使用j向下选中要注释的代码,输入I进入编辑模式(注意在可视化模式下i不能进入到编辑模式),输入#,按下esc返回命令模式,此时就会将可视化部分的内容都添加为注释

1.1.14.13分屏命令

  1. 末行命令拓展

    命令 功能
    :e 文件名 会切换到指定的文件(当前文件必须保存否则不允许切换到指定文件),如果使用e .会打开内置的文件浏览器,浏览当前目录下的文件,然后在该目录下切换到指定的文件
    :n 文件名 新建文件
    :w 文件名 另存为,但是仍然要编辑当前文件,并不会切换文件,在实际开发中可以实时进行阶段性备份方便后期进行对比
  2. 分屏命令

    命令 功能
    :sp[文件名] 横向增加分屏,如果不知道切换到哪个文件可以使用:sp .进入到内置浏览器进行查看
    :vsp[文件名] 纵向增加分屏
  3. 切换分屏窗口(分屏窗口都是基于ctrl+W,也就是说以下所有命令执行前都要按ctrl+W)

    命令 功能
    w 切换到下一个窗口
    r 互换窗口
    c 关闭当前窗口,但是不能关闭最后一个窗口
    q 退出当前窗口,如果是最后一个窗口,则关闭vi
    o 关闭其它窗口

你可能感兴趣的:(从零开始学习人工智能)