美文网首页
Python爬虫 - 入门Linux基础

Python爬虫 - 入门Linux基础

作者: nimw | 来源:发表于2020-07-28 08:19 被阅读0次

    1. Linux简介与安装

    1.1 Linux的基本介绍

    1. 操作系统
      UnixMax OSLinux或(GNU/Linux)
      MS-DOSWindows
    2. Linux无处不在
      大部分网站的服务器都是Linux系统
      Android系统的底层用的是修改过的Linux内核
      全球500台最快的超级计算机中,80%采用Linux系统
    3. Linux特点
      免费、更新频繁
    4. 不同Linux发行版
      RedHat:性能稳定,老牌的Linux发行版。收费的是RHEL(企业版)。
      FedoraRedHat的社区免费后继版。
      CentOS:可以算是RHEL的克隆版,免费。
      Mandriva:最早Mandrake的开发者是基于RedHat进行开发的。
      SUSE:德国最著名的Linux发行版。
      Debian:迄今为止,最遵循GNU规范的Linux系统。
      UbuntuDebian的后继或一个分支。
      Gentoo:高度的自定制性。
      Slackware:历史最悠久的Linux发行版,创建于1992年。
      Deepin:中国发行。对优秀的开源产品进行集成和配置,开发软件。
      总结如下:
      LinuxMandrivaRed HatDebianSlackware
      DebianKnoppixUbuntuSkolelinux
    5. Ubuntu
      简便易用、更新频繁、社区完善、标准化
      有多个版本:桌面版、服务器版、嵌入式版、云版
      官网中文官网优麒麟
    6. Linux主流桌面管理器
      GnomeKDEUnityXFCE

    1.2 Ubuntu系统的安装

    1. 华为云安装Ubuntu系统
      系统版本 Ubuntu 18.04.4 LTS
      密码 Aa299***
    2. 第一次root登录
      命令行输入:ssh root@121.37.170.230
      密码:Aa299***
      报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! Host key verification failed.
      由于更换了服务器的操作系统,导致之前配置的SSH免密登录失效。
      解决:ssh-keygen -R 121.37.170.230
      重新登录:ssh root@121.37.170.230
    3. XFCE介绍
      XFCE是一个精简的轻量化桌面,与GnomeKDE相比更小巧,并且界面美观、对用户友好,适合云服务器远程连接场景下使用。
      资料:Linux的桌面环境gnome、kde、xfce、lxde 等等使用比较
    4. 安装XFCE桌面并使用VNC Viewer连接
      (1) 安装VNC Server
      远程登录云服务器
      ssh root@121.37.170.230
      更新软件列表
      sudo apt update
      安装Xfce桌面环境。
      sudo apt install xfce4 xfce4-goodies
      安装TightVNC服务器
      sudo apt install tightvncserver
      初始化VNC Server
      vncserver
      输入密码、验证密码、输入n
      (2) 配置VNC Server
      停止第一个虚拟桌面
      vncserver -kill :1
      修改xstartup文件
      vim ~/.vnc/xstartup
      i进入编辑模式,添加以下内容
      #!/bin/sh
      xrdb $HOME/.Xresources
      startxfce4 &
      配置可执行
      sudo chmod +x ~/.vnc/xstartup
      重启VNC Server
      vncserver
      回显信息中出现类似这样的一条信息:Log file is /root/.vnc/xxx:1.log。其中,1表示当前用户分配的是VNC的第一个虚拟桌面。
      (3) 云服务器控制台配置
      更改安全组规则,放行5901端口。
      (4) 使用VNC Viewer连接云服务器
      在本地PC打开VNC Viewer客户端,输入云服务器的弹性公网IP:5901,设置名称,单击OK
      注意:① 服务器重启后,需要重新执行vncserver重启VNC Server。②xxx:1.log日志中的15901端口中的1对应。 ③XFCE桌面配置重置命令 rm -r ~/.config/xfce4 ④ 如果本地通过VNC Viewer连接时报错Too many authentication failures,则需要重启vncserver。即:sudo vncserver -kill :1sudo vncserver :1
      资料: 使用VNC Viewer连接Linux云服务器
    5. 安装Gnome桌面(可选)
      在Ubuntu Server 18.04上安装GNOME桌面

    2. Linux中基本命令的使用

    2.1 终端的基本操作

    1. 终端介绍
      有些操作使用终端更方便快捷。
      LinuxUnix终端命令大部分类似。
      自从20世纪6,70年代开始,终端基本没变。一次学习,终身受用。
      mac OS系统使用的是Unix终端。
    2. 命令行Command Line提示符拆解
      root@ecs-x-large-2-linux-20200315202744:~#
      root: 当前用户名
      ecs-x-large-2-linux-20200315202744:主机名。
      ~:当前用户的家目录
      #:用户权限,其中$表示普通用户,#表示超级管理员。
    // 切换到超级管理员
    root@ecs-x-large-2-linux-20200315202744:~# sudo su
    //查看用户
    root@ecs-x-large-2-linux-20200315202744:~# whoami
    root
    //查看主机
    root@ecs-x-large-2-linux-20200315202744:~# hostname
    ecs-x-large-2-linux-20200315202744
    
    1. 命令介绍
      (1) 格式
      command parameters
      命令区分大小写。
      (2) 短参数
      command -pcommand -p -acommand -pacommand -p 10
      一个横线、短参数可以合并、通过空格赋值。
      (3) 长参数
      command --paracommand --para1 --para2command --para=10
      两个横线、长参数不可以合并、通过等号赋值。
      (4) 其他参数
      有些参数的形式没有绝对的准则。例如: ls 路径名
      (5) 命令补全
      按一次Tab键补全命令或路径。
      按两次Tab键列出所有相关命令。
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
    root@ecs-x-large-2-linux-20200315202744:~# ls -a
    .              .bash_history  .dbus     .ssh              Desktop    Pictures
    root@ecs-x-large-2-linux-20200315202744:~# ls --all
    .              .bash_history  .dbus     .ssh              Desktop    Pictures
    root@ecs-x-large-2-linux-20200315202744:~# ls Desktop
    root@ecs-x-large-2-linux-20200315202744:~# date 
    Fri Jul 31 08:30:38 CST 2020
    root@ecs-x-large-2-linux-20200315202744:~# c
    Display all 103 possibilities? (y or n)
    c++                        clear_console
    c++filt                    cloud-init
    c89                        cloud-init-per
    c89-gcc                    cmp
    root@ecs-x-large-2-linux-20200315202744:~# logout
    Connection to 121.37.170.230 closed.
    ➜  ~ 
    

    注意:①按两次Tab列出所有相关命令。如果相关命令太多时,则只显示第一页。按空格显示下一页,按回车显示下一行,按Q退出显示。 ②logout关闭服务器连接。

    1. 查看命令历史记录
      上下查找:
      搜索查找:Ctrl + R
      (reverse-i-search)d': date
      列出所有:history
    2. 快捷键
      清屏:Ctrl + L或者clear
      Ctrl + D:退出连接或关闭命令行:
      Ctrl + A:光标跳到一行命令起始位置
      Ctrl + E:光标跳到一行命令结束位置
      Ctrl + U:删除在光标左侧的所有命令字符
      Ctrl + K:删除在光标右侧的所有命令字符
      Ctrl + W:删除在光标左侧的一个单词
      Ctrl + Y:粘贴用Ctrl + UCtrl + KCtrl + W删除的字符串。
      注释:Ctrl + Lclear相当于滚动到新的一屏。而macOS中的command + K才是真正的清屏。

    2.2 Linux下的文件操作

    2.2.1 Linux文件系统

    1. Linux中的文件目录组织形式
      Linux有且只有一个根目录,就是/
      Linux/来表示目录的层级与包含关系。
      Linux的目录形式为:/usr/bin
      binusr目录的子目录,usr/根目录的子目录。
    2. /根目录的直属子目录介绍
      (1) bin
      binary二进制文件,包含用户的所有可执行程序。
      (2) boot
      boot启动,包含与Linux启动密切相关的文件。
      (3) etc
      包含系统的配置文件。
      (4) home
      用户的私人目录。在这个目录中,我们放置私人的文件。
      Linux中的每个用户(除了root)都在home目录中有一个私人目录(家目录)。
      例如:用户名是nmw,那么我的私人目录(家目录)就是/home/nmw
      (5) lib
      library“库”,包含被程序所调用的库文件。
      例如:.so结尾的文件。windows中这样的库文件是以.dll结尾的。
      (6) media
      媒体,当可移动的外设(例如USB盘、SD卡、DVD、光盘等)插入电脑时,Linux可以让我们通过media的子目录访问这些外设的内容。
      (7) mnt
      mount挂载,类似于media,但一般用于临时挂载一些装置。
      (8) opt
      optional application software package“可选的应用软件包”。
      用于安装多数第三方软件和插件。
      (9) root
      根,超级管理员的root的家目录。
      一般用户的家目录位于/home下,root用户例外。
      (10) sbin
      system binary系统二进制文件,比bin多了个system
      包含的是系统级的重要可执行程序。
      (11) srv
      service服务,包含一些网络服务启动后所需要取用到的数据。
      (12) tmp
      temporary临时,普通用户和程序存放临时文件的地方。
      (13) usr
      Unix Software Resource表示Unix操作系统软件资源(历史遗留命名)。
      该目录是最庞大的目录之一,安装了大部分用户要调用的程序。
      类似于Windows中的C:\WindowsC:\Program Files这两个文件夹的集合。
      (14) var
      包含程序的数据,例如log日志文件。
    root@ecs-x-large-2-linux-20200315202744:~# pwd
    /root
    root@ecs-x-large-2-linux-20200315202744:~# cd /
    root@ecs-x-large-2-linux-20200315202744:/# ls
    CloudResetPwdUpdateAgent                    initrd.img.old  sbin
    CloudrResetPwdAgent                         lib             snap
    HostGuardAgent_Linux64_V1.12.50.deb.sha256  lib64           srv
    bin                                         lost+found      swapfile
    boot                                        media           sys
    dev                                         mnt             tmp
    etc                                         opt             usr
    home                                        proc            var
    hostguard_setup_config.dat                  root            vmlinuz
    initrd.img                                  run             vmlinuz.old
    root@ecs-x-large-2-linux-20200315202744:/# cd root
    root@ecs-x-large-2-linux-20200315202744:~# 
    

    注意:pwd命令可以打印当前所在的绝对目录结构。② 以上目录列表形式不仅限于Linux系统,类Unix系统类似。

    ➜  ~ cd /
    ➜  / ls
    Applications Users        cores        home         sbin         var
    Library      Volumes      dev          opt          tmp
    System       bin          etc          private      usr
    ➜  / cd ~
    ➜  ~ pwd
    /Users/nimengwei
    ➜  ~ 
    
    1. Linux文件系统结构图
      /bindevhomelibrootvar
      homedrewnmw
    2. witch命令
      获取命令的可执行文件的位置。
    root@ecs-x-large-2-linux-20200315202744:~# pwd
    /root
    root@ecs-x-large-2-linux-20200315202744:~# which pwd
    /bin/pwd
    root@ecs-x-large-2-linux-20200315202744:~# which which
    /usr/bin/which
    

    注意:Windows命令中可执行程序一般以.exe为后缀,而Linux中一般没有后缀名。

    1. ls命令
      (1) --color=auto/none
      开启/关闭颜色,默认开启。
      其中:蓝色→目录;绿色→可执行文件;绿色→压缩文件;浅蓝色→链接文件;灰色→其他文件。
      (2) -a
      aall,显示隐藏的文件。
      .开头的文件是隐藏文件。
      .表示当前目录。
      ..表示上一级目录。
      (3) -A
      -a的区别就是不列出...两个文件。
      (4) -l
      列出文件和目录详细信息的列表。
      (5) -h
      hhumain readable,表示适合人类阅读的。
      (6) -t
      按照文件最后一次修改时间排序。
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
    root@ecs-x-large-2-linux-20200315202744:~# ls -a
    .              .bash_history  .dbus     .ssh              Desktop    Pictures
    ..             .bashrc        .gnupg    .viminfo          Documents  Public
    root@ecs-x-large-2-linux-20200315202744:~# ls .
    Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
    root@ecs-x-large-2-linux-20200315202744:~# ls ..
    bin                                         lost+found      swapfile
    boot                                        media           sys
    initrd.img                                  run             vmlinuz.old
    root@ecs-x-large-2-linux-20200315202744:~# ls -l
    total 32
    drwxr-xr-x 2 root root 4096 Jul 30 09:49 Desktop
    drwxr-xr-x 2 root root 4096 Jul 30 09:49 Documents
    drwxr-xr-x 2 root root 4096 Jul 30 09:49 Downloads
    root@ecs-x-large-2-linux-20200315202744:~# ls -lh
    total 32K
    drwxr-xr-x 2 root root 4.0K Jul 30 09:49 Desktop
    drwxr-xr-x 2 root root 4.0K Jul 30 09:49 Documents
    drwxr-xr-x 2 root root 4.0K Jul 30 09:49 Downloads
    root@ecs-x-large-2-linux-20200315202744:~# ls -lath
    total 128K
    -rw-r--r--  1 root root 1.5K Aug  1 00:45 .bash_history
    -rw-------  1 root root  35K Jul 31 21:15 .xsession-errors
    drwx------ 17 root root 4.0K Jul 31 20:08 .
    -rw-------  1 root root 1.3K Jul 31 20:08 .ICEauthority
    

    注释::① total 32:该层文件/文件夹大小之和。
    drwxr-xr-x 2 root root 4096 Jul 30 09:49 Desktopdrwxr-xr-x文件权限,2对于目录表示目录中文件个数,对于文件则表示链接数目,root文件所有者名称,root文件所在的群组,4096文件大小,Jul 30 09:49最近修改的时间,Desktop文件/目录名。

    1. cd命令
      可以使用相对路径和绝对路径(/开头)。
      回到家目录:cd ~或者cd
    root@ecs-x-large-2-linux-20200315202744:~# cd /
    root@ecs-x-large-2-linux-20200315202744:/# cd usr
    root@ecs-x-large-2-linux-20200315202744:/usr# pwd
    /usr
    root@ecs-x-large-2-linux-20200315202744:/usr# cd ..
    root@ecs-x-large-2-linux-20200315202744:/# cd usr/games
    root@ecs-x-large-2-linux-20200315202744:/usr/games# cd ../..
    root@ecs-x-large-2-linux-20200315202744:/# cd ~
    root@ecs-x-large-2-linux-20200315202744:~# cd /usr/games
    root@ecs-x-large-2-linux-20200315202744:/usr/games# cd ~
    root@ecs-x-large-2-linux-20200315202744:~# cd ../usr/games
    root@ecs-x-large-2-linux-20200315202744:/usr/games# 
    

    注意:两次tab可以自动补全命令。

    1. du命令
      dudisk usage的缩写,表示磁盘使用/占用。
      可以查看文件和目录所占的空间大小。
      (1) -h
      表示适合人类阅读的。
      (2) -a
      默认du目录只显示目录大小。加上-a,则会显示目录和文件的大小。
      (3) -s
      只显示目录总大小,不显示目录和文件列表。
    root@ecs-x-large-2-linux-20200315202744:~# du -ah
    4.0K    ./Pictures
    4.0K    ./.viminfo
    4.0K    ./.dbus/session-bus/90234ee485824633a7d7fa2e6f70265b-1
    8.0K    ./.dbus/session-bus
    12K ./.dbus
    .....
    644K    .
    root@ecs-x-large-2-linux-20200315202744:~# du -sh
    644K    .
    

    注意:ls -l只会统计文件或目录本身的大小。du命令会遍历目录内部的目录和文件,统计所有文件大小。

    2.2.2 Linux文件操作

    1. 显示文件内容
      (1) cat命令
      一次性显示文件所有内容。
      -n参数表示显示行号。
      (2) less命令
      分页显示文件内容。
      显示内容之后的快捷键如下:
      q-中止读取文件 ② 空格-读取下一屏内容 ③ 回车-读取下一行
      d - 前进半个页面 ⑤ u-后退半页 ⑥ b或者-后退一页
      y或者-后退一行 ⑧ =-显示你在文件中的位置 ⑨ h - 显示帮助文档
      / - 进入搜索模式。n -跳转到下一个搜索结果。N-跳转到上一个搜索结果。
    root@ecs-x-large-2-linux-20200315202744:/var/log# less syslog
    root@ecs-x-large-2-linux-20200315202744:/var/log# cat syslog
    Aug  1 06:25:01 ecs-x-large-2-linux-20200315202744 rsyslogd:  [origin software="rsyslogd" swVersion="8.32.0" x-pid="685" x-info="http://www.rsyslog.com"] rsyslogd was HUPed 
    ...
    
    1. 显示文件的首位
      (1) head命令
      显示文件的开头几行
      -n - 显示几行,默认显示10行。
      (2) tail命令
      显示文件的结尾几行
      -n - 显示几行,默认显示10行。
      -f - 实时追踪文件的更新。
      默认每过1s检查一次文件是否有更新。
      可以用-s参数指定间隔检查的秒数,例如:tail -f -s 4 syslog
      Ctrl + c终止查看。
    root@ecs-x-large-2-linux-20200315202744:/var/log# head -n 1 syslog
    Aug  1 06:25:01 ecs-x-large-2-linux-20200315202744 rsyslogd:  [origin software="rsyslogd" swVersion="8.32.0" x-pid="685" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
    root@ecs-x-large-2-linux-20200315202744:/var/log# tail -n 2 syslog
    Aug  1 09:42:54 ecs-x-large-2-linux-20200315202744 systemd[1]: Started Session 26 of user root.
    Aug  1 09:47:00 ecs-x-large-2-linux-20200315202744 systemd[1]: Started Session 27 of user root.
    root@ecs-x-large-2-linux-20200315202744:/var/log# tail -f syslog
    Aug  1 09:05:10 ecs-x-large-2-linux-20200315202744 org.freedesktop.thumbnails.Cache1[1764]: Registered thumbailer /usr/bin/gdk-pixbuf-thumbnailer -s %s %u %o
    Aug  1 09:05:10 ecs-x-large-2-linux-20200315202744 org.freedesktop.thumbnails.Cache1[1764]: Registered thumbailer /usr/bin/gdk-pixbuf-thumbnailer -s %s %u %o
    Aug  1 09:05:10 ecs-x-large-2-linux-20200315202744 dbus-daemon[1764]: [session uid=0 pid=1764] Successfully activated service 'org.freedesktop.thumbnails.Cache1'
    ...
    ^C
    

    注意:Ctrl + c可以终止大部分终端命令。

    1. touch命令
      创建一个空白文件。
      该命令的设计初衷是修改文件的时间戳。如果文件不存在,就会新建一个新的。
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
    root@ecs-x-large-2-linux-20200315202744:~# touch new_file
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop    Downloads  Pictures  Templates  new_file
    Documents  Music      Public    Videos
    root@ecs-x-large-2-linux-20200315202744:~# ls -l
    total 32
    drwxr-xr-x 2 root root 4096 Jul 30 09:49 Public
    drwxr-xr-x 2 root root 4096 Jul 30 09:49 Templates
    drwxr-xr-x 2 root root 4096 Jul 30 09:49 Videos
    -rw-r--r-- 1 root root    0 Aug  1 10:00 new_file
    ...
    root@ecs-x-large-2-linux-20200315202744:~# touch new_file2 new_file3
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop    Downloads  Pictures  Templates  new_file   new_file3
    Documents  Music      Public    Videos     new_file2
    
    1. mkdir命令
      创建一个目录。
      (1) 创建单层目录
      mkdir 目录
      (2) 创建多层目录
      mkdir -p 目录1/目录2/目录3
    root@ecs-x-large-2-linux-20200315202744:~# mkdir new_folder
    root@ecs-x-large-2-linux-20200315202744:~# mkdir new_folder2 new_folder3
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop    Downloads  Pictures  Templates  new_file   new_file3   new_folder2
    Documents  Music      Public    Videos     new_file2  new_folder  new_folder3
    root@ecs-x-large-2-linux-20200315202744:~# mkdir -p dir1/dir2/dir3
    root@ecs-x-large-2-linux-20200315202744:~# cd dir1/dir2
    root@ecs-x-large-2-linux-20200315202744:~/dir1/dir2# ls
    dir3
    
    1. cp命令
      拷贝文件或目录。
      (1) 拷贝文件
      cp 文件 备份文件:拷贝文件到当前目录为一个新的文件名。
      cp 文件 目录:拷贝文件到其他目录。
      cp 文件 目录/备份文件:拷贝文件到其他目录为一个新的文件名。
    root@ecs-x-large-2-linux-20200315202744:~# cp new_file new_file_copy
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop    Music     Templates  new_file   new_file_copy  new_folder3
    Documents  Pictures  Videos     new_file2  new_folder
    Downloads  Public    dir1       new_file3  new_folder2
    root@ecs-x-large-2-linux-20200315202744:~# cp new_file new_folder
    root@ecs-x-large-2-linux-20200315202744:~# cd new_folder
    root@ecs-x-large-2-linux-20200315202744:~/new_folder# ls
    new_file
    root@ecs-x-large-2-linux-20200315202744:~/new_folder# cd ..
    root@ecs-x-large-2-linux-20200315202744:~# cp new_file new_folder/new_file_copy
    root@ecs-x-large-2-linux-20200315202744:~# cd new_folder
    root@ecs-x-large-2-linux-20200315202744:~/new_folder# ls
    new_file  new_file_copy
    

    (2) 拷贝目录
    添加-r参数,表示recursive递归拷贝。
    目录中的所有内容(子目录和文件)都会被拷贝。

    root@ecs-x-large-2-linux-20200315202744:~# cp -r new_folder new_folder_copy
    root@ecs-x-large-2-linux-20200315202744:~# cd new_folder_copy
    root@ecs-x-large-2-linux-20200315202744:~/new_folder_copy# ls
    new_file  new_file_copy
    root@ecs-x-large-2-linux-20200315202744:~/new_folder_copy# 
    
    1. 使用通配符*
      例如:cp *.txt folder 把当前目录下所有txt文件拷贝到folder目录中。
      cp ha* folder:把当前目录以ha开头的文件都拷贝到folder目录中。
    root@ecs-x-large-2-linux-20200315202744:~# cp new_file* new_folder2
    root@ecs-x-large-2-linux-20200315202744:~# cd new_folder2
    root@ecs-x-large-2-linux-20200315202744:~/new_folder2# ls
    new_file  new_file2  new_file3  new_file_copy
    
    1. mv命令
      mv表示move移动。mv命令有两个功能。
      (1) 移动文件/目录
      移动目录也不需要添加新的参数(-r)。
    root@ecs-x-large-2-linux-20200315202744:~# mv new_file2 new_folder3 new_folder
    root@ecs-x-large-2-linux-20200315202744:~# cd new_folder
    root@ecs-x-large-2-linux-20200315202744:~/new_folder# ls
    new_file  new_file2  new_folder3  new_file_copy
    

    (2) 重命名文件/目录
    移动到当前目录则相当于重命名。

    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop    Music     Templates  new_file       new_folder2
    Documents  Pictures  Videos     new_file_copy  new_folder_copy
    Downloads  Public    dir1       new_folder
    root@ecs-x-large-2-linux-20200315202744:~# mv new_folder2 new_folder2_rename
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop    Music     Templates  new_file       new_folder2_rename
    Documents  Pictures  Videos     new_file_copy  new_folder_copy
    Downloads  Public    dir1       new_folder
    root@ecs-x-large-2-linux-20200315202744:~# 
    

    注意:拷贝、移动等命令都可以使用通配符*

    1. rm命令
      删除文件和目录。
      -i:询问是否删除。
      -f:不询问强制删除。
      -r:递归删除,用来删除目录。
    root@ecs-x-large-2-linux-20200315202744:~# rm new_file_copy
    root@ecs-x-large-2-linux-20200315202744:~# rm -i  new_file
    rm: remove regular empty file 'new_file'? n
    root@ecs-x-large-2-linux-20200315202744:~# rm -r new_folder2_rename
    root@ecs-x-large-2-linux-20200315202744:~# ls
    Desktop    Downloads  Pictures  Templates  dir1      new_folder
    Documents  Music      Public    Videos     new_file  new_folder_copy
    

    注意:rm -rf的含义是强制递归删除文件夹,很危险。② 超级管理员运行rm -rf /*或者rm -rf /命令会删除你的整个Linux系统。

    1. rmdir
      只能用来删除一个空的目录,不常用。
    root@ecs-x-large-2-linux-20200315202744:~# mkdir aaa
    root@ecs-x-large-2-linux-20200315202744:~# rmdir aaa
    
    1. 文件的存储
      文件名、权限和文件内容。
      每个文件的文件内容被分配一个标识号码,即inode
      每个文件名都绑定到它的文件内容,用inode标识。
      ls -i - 查看文件的inode
    root@ecs-x-large-2-linux-20200315202744:~# ls -i
    1843494 Desktop    1843495 Downloads  1843500 Pictures  1843496 Templates
    1843498 Documents  1843499 Music      1843497 Public    1843501 Videos
    
    1. ln命令
      创建链接(快捷方式)。
      分类:Physical link物理链接/硬链接、Symbolic link符号链接/软链接
      硬链接只能够指向文件。软链接既能够指向文件,又能够指向目录。软链接应用更广泛。
      (1) Physical link物理链接/硬链接
      创建文件1的硬链接文件2
      命令:ln 文件1 文件2
      原理:文件1inode文件内容,文件2inode文件内容
      介绍:文件2文件1inode相同。修改文件1文件2,则修改的是同一块内容。文件1文件2都删除,文件内容才会删除。
    root@ecs-x-large-2-linux-20200315202744:~# mkdir test
    root@ecs-x-large-2-linux-20200315202744:~# cd test
    root@ecs-x-large-2-linux-20200315202744:~/test# touch f1
    root@ecs-x-large-2-linux-20200315202744:~/test# ln f1 f2
    root@ecs-x-large-2-linux-20200315202744:~/test# ls -l
    total 0
    -rw-r--r-- 2 root root 0 Aug  1 12:02 f1
    -rw-r--r-- 2 root root 0 Aug  1 12:02 f2
    root@ecs-x-large-2-linux-20200315202744:~/test# ls -i
    1843520 f1  1843520 f2
    root@ecs-x-large-2-linux-20200315202744:~/test# 
    

    注意:2表示指向该文件内容的文件数为2f1f2指向的文件内容inode相同(1843520)。
    (2) Symbolic link符号链接/软链接
    创建文件1的软链接文件2
    命令:ln -s 文件1 文件2 。其中,ssymbolic符号的缩写。
    原理:文件1inode文件内容,文件2文件1
    介绍:文件2文件1inode不同。如果删除文件1,则文件2会变成死链接。

    root@ecs-x-large-2-linux-20200315202744:~/test# touch f1
    root@ecs-x-large-2-linux-20200315202744:~/test# ls
    f1
    root@ecs-x-large-2-linux-20200315202744:~/test# ln -s f1 f2
    root@ecs-x-large-2-linux-20200315202744:~/test# ls
    f1  f2
    root@ecs-x-large-2-linux-20200315202744:~/test# ls -l
    total 0
    -rw-r--r-- 1 root root 0 Aug  1 12:15 f1
    lrwxrwxrwx 1 root root 2 Aug  1 12:16 f2 -> f1
    root@ecs-x-large-2-linux-20200315202744:~/test# ls -i
    1843520 f1  1843521 f2
    

    注意:第一个字符-表示普通文件,l表示软链接。 1表示指向该文件内容的文件数为1f1f2指向的文件内容inode不同。

    2.3 Linux下的权限管理

    2.3.1 用户权限

    1. Linux中的用户组织
      Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
      用户 账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
    2. sudosu相关命令
      sudo:暂时切换到超级用户模式以执行超级用户权限,需要输入当前用户密码。有时间限制,Ubuntu默认为一次时长15分钟。
      su:切换到某某用户模式,需要输入切换后账户的密码。如果不加账户默认为root账户。没有时间限制。
      sudo su:运行sudo命令给su命令提权,运行su命令,切换到root模式。
      注意:普通用户切换到root用户模式有两种方式。一种是su命令,需要输入root密码,一种是sudo su命令,需要输入当前用户密码。
    3. 创建用户
      adduser nmw
    root@ecs-x-large-2-linux-20200315202744:~# adduser nmw
    Adding user `nmw' ...
    Adding new group `nmw' (1000) ...
    Adding new user `nmw' (1000) with group `nmw' ...
    Creating home directory `/home/nmw' ...
    Copying files from `/etc/skel' ...
    Enter new UNIX password: 
    Retype new UNIX password: 
    passwd: password updated successfully
    Changing the user information for nmw
    Enter the new value, or press ENTER for the default
        Full Name []: nimengwei
        Room Number []: 
        Work Phone []: 17626186618
        Home Phone []: 
        Other []: 
    Is the information correct? [Y/n] y
    

    创建用户后会默认在/home目录中添加nmw用户的家目录。

    root@ecs-x-large-2-linux-20200315202744:~# cd /home
    root@ecs-x-large-2-linux-20200315202744:/home# ls
    nmw
    
    1. 修改密码
      passwd nmw
    2. 删除用户
      删除用户:deluser nmw
      删除用户及对应家目录:deluser --remove-home nmw
      注意:adduserdeluser只是Debian一族(包括Ubuntu)才有的命令。其他Linux发行版,添加用户和删除用户一般用useradduserdel
    3. 用户群组管理
      (1) 创建用户如果不设置群组,则会创建一个和用户名相同的群组,并将用户划归到这个群组。
      (2) 查看家目录
    root@ecs-x-large-2-linux-20200315202744:~# ls -l /home
    total 4
    drwxr-xr-x 2 nmw nmw 4096 Aug  1 17:39 nmw
    

    其中,第三列nmw表示文件/目录的所有者,第四列nmw表示文件或/目录所在的群组。
    (3) 创建群组
    addgroup friends

    root@ecs-x-large-2-linux-20200315202744:~# addgroup friends
    Adding group `friends' (GID 1001) ...
    Done.
    

    (4) 删除群组
    delgroup happy

    root@ecs-x-large-2-linux-20200315202744:~# delgroup happy
    Removing group `happy' ...
    Done.
    
    1. 修改用户群组
      (1) usermod 用户名
      -l对用户重命名。/home中的家目录名不变,需要手动修改。
      -g修改用户所在群组。原群组剔除此用户。
      -G将用户添加到多个群组。原群组剔除此用户。
      -aG追加到新的群组。原群组不剔除此用户。
      注意:使用usermod命令修改用户组时,很容易被剔除原有组,因此尽量不要使用。可以使用gpasswd命令。
      (2) gpasswd -a 用户名 组名
      一次从一个组中添加(或删除)一个用户。
      (3) groups 用户名
      可以查看该用户所在的群组
    root@ecs-x-large-2-linux-20200315202744:~# usermod -g friends nmw
    root@ecs-x-large-2-linux-20200315202744:~# usermod -G friends,happy nmw
    root@ecs-x-large-2-linux-20200315202744:~# usermod -aG friends,happy nmw
    root@ecs-x-large-2-linux-20200315202744:~# groups nmw
    nmw : friends happy
    root@ecs-x-large-2-linux-20200315202744:~# groups root
    root : root
    root@ecs-x-large-2-linux-20200315202744:~# gpasswd -a nmw sudo
    Adding user nmw to group sudo
    

    2.3.2 文件权限

    1. 文件访问权限符
      -:如果在第一个字符,表示普通文件;否则,表示没有权限。
      d:目录;
      l:链接;
      r:读;
      w:写
      x:执行/运行
    2. 三种基本权限
      (1) r 读 数值表示为4
      (2) w 写 数值表示为2
      (3) x 可执行 数值表示为1
    3. 文件权限介绍
      例如:drwxrwxr-x
      一共十个字符,分成四段。
      (1) 第1个字符d表示目录,-表示普通文件,l表示链接。
      (2) 第2-4个字符rwx表示当前所属用户的权限,用数值表示为4+2+1=7
      (3) 第5-7个字符rwx表示当前所属组的权限,用数值表示为4+2+1=7
      (4) 第8-10个字符r-x表示其他用户权限,用数值表示为4+1=5
      此文件的权限用数值表示为775
    4. 使用数字分配权限
      chmod 765 filename
      参数:-R 递归修改文件访问权限。
      chmodchangemode的缩写。
      只要你是此文件的所有者,就可以用chmod来修改文件的访问权限。
    root@ecs-x-large-2-linux-20200315202744:/home/nmw# touch 1.txt
    root@ecs-x-large-2-linux-20200315202744:/home/nmw# ls -l
    total 0
    -rw-r--r-- 1 root root 0 Aug  1 20:06 1.txt
    root@ecs-x-large-2-linux-20200315202744:/home/nmw# chmod 600 1.txt
    root@ecs-x-large-2-linux-20200315202744:/home/nmw# ls -l
    total 0
    -rw------- 1 root root 0 Aug  1 20:06 1.txt
    
    1. 使用字母分配权限
      范围:u用户、g群组、o其他、a所有
      分配:+添加权限、-移除权限、=分配权限。
      chmod u+rx file:所属用户添加读和运行的权限。
      chmod g+r file:群组其他用户增加读的权限。
      chmod o-r file:其他用户移除读的权限。
      chmod g+r o-r file:群组其他用户增加读的权限,其他用户移除读的权限。
      chmod go-r file:群组其他用户和其他用户移除读的权限。
      chmod a+x file:所属用户增加运行的权限。
      chmod u=rwx,g=r,o=- file:所属用户分配读写和执行权限,群组其他用户分配读的权限,其他用户分配无权限。
      注意:使用字母分配权限不需要一次设置三组。

    3. Linux中的文本编辑和软件安装

    3.1 Nano文本编辑器

    1. Linux终端文本编辑器
      NanoVimEmacs
    2. nano介绍
      nano:毫微、十亿分之一。
      功能强大,适合入门。
      UbuntumacOS系统都默认安装了NanoVim
      注释:pico的含义是万亿分之一。
    3. nano组合快捷键
      Ctrl + G显示帮助文档、Ctrl + O保存文件、Ctrl + R打开其他文件
      Ctrl + Y上一个屏幕、Ctrl + V下一个屏幕、Ctrl + K剪切当前一行
      Ctrl + U粘贴剪切的内容、Ctrl + X退出、Ctrl + W查找
      Ctrl + \替换、Ctrl + F向前移动一格光标、Ctrl + B向后移动一格光标
      Ctrl + P向上移动一行、Ctrl + N向下移动一行
    4. nano的参数
      nano 文件:如果有文件且有写的权限,则打开。如果没有文件,则创建文件。
      (1) -m
      激活鼠标控制光标位置。
      (2) -i
      激活自动缩进的功能。
      (3) -A
      激活智能Home键的功能。
    nano -miA file_nano
    
    1. 单个用户配置.nanorc
      每个Linux用户都可以在自己的家目录创建.nanorc文件。
      每次nano启动前,都会读取此配置文件。
      语法:通过setunset进行配置。
      例如:set mouse激活鼠标,set autoindent激活自动缩进,set smarthome激活只能Home键。
    root@ecs-x-large-2-linux-20200315202744:/home/nmw# nano .nanorc
    root@ecs-x-large-2-linux-20200315202744:/home/nmw# cat .nanorc
    set mouse
    set autoindent
    set smarthome
    

    注释:vim的配置文件是.vimrcbash shell的配置文件是.bashrc。可以通过nano ~/.nanorc进行单用户nano配置。

    1. 配置全局nanorc
      全局nano配置文件只能被root用户修改。
      位置:/etc/nanorc
      命令:sudo nano /etc/nanorc
      优先级:家目录下的.nanorc配置优先级更高。
      总结:单用户配置文件在~/,全局配置文件在/etc/。单用户配置文件起始为点.,全局配置文件没有。
    2. bash配置
      shell是用户和操作系统之间的命令解释器。Ubuntu和大部分常见的Linux发行版默认的shell程序就是bash
      单个用户配置文件:nano ~/.bashrc
      全局配置文件:nano /etc/bash.bashrc
      优先级:家目录下.bashrc配置优先级更高。
      配置别名: 配置文件中添加alias 别名='命令'
    3. profile配置
      单个用户配置文件:nano ~/.profile
      全局配置文件:nano /etc/profile
      .bashrc.profile对比如下:
      (1) 登录的shell:用户名/密码 → 使用.profile配置的shell→调用.bashrc
      (2) 不登录的shell:使用.bashrc配置的shell
    4. 使配置文件立即生效
      修改.bashrc.profile文件后,默认在用户下次登录系统时才生效。
      可使用source命令使改动立即生效:
      source .bashrc

    3.2 Ubuntu中的软件安装

    1. 本章节软件安装相关知识点是基于DebianLinux发行版。不是Debian一族的Linux发行版软件安装方式稍有不同,例如:FedoraRedhatCentOS
    2. 软件包
      包的后缀:.deb
      软件仓库:repository 全球有很多软件仓库。
      软件仓库列表文件:nano /etc/apt/sources.list
    3. 软件仓库列表信息
      deb http://archive.ubuntu.com/ubuntu/ bionic universe
      debDebian
      http://archive.ubuntu.com/ubuntu/:仓库地址
      bionicUbuntu 18.04代号
      universe:软件仓库的区域
      如果要切换到其他软件仓库,只需要修改仓库地址。
    4. 包管理工具
      apt-get:常用。
      aptitude:卸载软件时可以卸载不同的依赖。默认没有安装。
    5. 常用命令介绍
      以下命令都需要root权限,非root用户需要加sudo
      更新可安装的软件列表:apt-get update
      升级所有已安装软件:apt-get upgrade
      在软件列表里搜索可用软件:apt-cache search
      安装软件:apt-get install XXX
      卸载软件:apt-get autoremove XXX
    6. dpkg命令
      dpkgapt-getaptitude两个命令的基础命令。
      dpkg可以安装本地的.deb软件包。
      安装:dpkg -i XXX.deb
      卸载:dpkg -r XXX

    3.3 RTFM阅读那该死的手册

    1. Read The Fucking Manual
      可执行程序或shell命令
      系统调用(Linux内核提供的函数)
      库调用(程序库中的函数)
      特殊文件(通常在/dev下)
      文件格式和惯例(例如/etc/passwd)
      游戏
      杂项(包括宏包和惯例,比例man(7)groff(7))
      系统管理命令(通常只能被root用户使用)
      内核子程序
    2. man命令
      查看相关命令或函数:man 数字 命令/函数
      如果不加数字,man默认从数字较小的手册中寻找相关命令和函数。
      实现上一行和下一行跳转,空格键实现下一页跳转,/斜杠实现搜索,q退出。
    root@ecs-x-large-2-linux-20200315202744:~# man ls
    NAME
           ls - list directory contents
    SYNOPSIS
           ls [OPTION]... [FILE]...
    DESCRIPTION
           -a, --all
                  do not ignore entries starting with .
           -A, --almost-all
                  do not list implied . and ..
           ...
    

    注释:NAME名字,SYNOPSIS摘要,DESCRIPTION描述,AUTHOR作者,REPORTING BUGS报告故障,COPYRIGHT版权,SEE ALSO另见。

    1. SYNOPSIS区域介绍
      示例1
    root@ecs-x-large-2-linux-20200315202744:~# man mkdir
    SYNOPSIS
           mkdir [OPTION]... DIRECTORY...
    

    (1) 字段介绍
    [OPTION]:可选,添加参数,例如:-m-p-v等。
    DIRECTORY:必选,目录。
    ...:表示可以指定多个参数和多个目录
    (2) 字体介绍
    粗体:表示要原封不动的输入。例如:mkdir
    下划线:表示要用实际内容替换。例如:[OPTION]DIRECTORY
    示例2

    root@ecs-x-large-2-linux-20200315202744:~# man cp
    SYNOPSIS
           cp [OPTION]... [-T] SOURCE DEST
           cp [OPTION]... SOURCE... DIRECTORY
           cp [OPTION]... -t DIRECTORY SOURCE...
    

    (1) 拷贝一个源文件到目标文件
    cp [OPTION]... [-T] SOURCE DEST
    例如:cp file.txt file_copy.txt
    (2) 拷贝一个或多个源文件到目录
    cp [OPTION]... SOURCE... DIRECTORY
    例如:cp file.txt file_copy.txt photo/
    (3) 拷贝一个或多个源文件到目录
    cp [OPTION]... -t DIRECTORY SOURCE...
    不常用。与(2)效果相同,但是把目录名放在了前面。-t必须加。
    示例3

    root@ecs-x-large-2-linux-20200315202744:~# man apt-get
    SYNOPSIS
           apt-get [-asqdyfmubV] [-o=config_string] [-c=config_file]
                   [-t=target_release] [-a=architecture] {update | upgrade |
                   dselect-upgrade | dist-upgrade |
                   install pkg [{=pkg_version_number | /target_release}]...  |
                   remove pkg...  | purge pkg...  |
                   source pkg [{=pkg_version_number | /target_release}]...  |
                   build-dep pkg [{=pkg_version_number | /target_release}]...  |
                   download pkg [{=pkg_version_number | /target_release}]...  |
                   check | clean | autoclean | autoremove | {-v | --version} |
                   {-h | --help}}
    

    该命令区域只有一行,只是显示在了多行。
    (1) [-asqdyfmubV]
    可以使用-a-s-q-d等参数中的一个或多个。
    (2) [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture]
    这几个参数如果使用,必须加上参数值。
    (3) {update | upgrade | ... | {-v | --version} | {-h | --help}}
    必须且只能使用|(或)隔开的某一项。
    例如:apt-get install XXXapt-get updateapt-get autoclean
    错误用法:apt-get update install XXX

    1. 查找命令
      语法:apropos 关键字
      在手册中查找所有含有此关键字的相关命令。
    root@ecs-x-large-2-linux-20200315202744:~# apropos sound
    default.pa (5)       - PulseAudio Sound Server Startup Script
    pacat (1)            - Play back or record raw or encoded audio streams on a PulseA...
    pacmd (1)            - Reconfigure a PulseAudio sound server during runtime
    pactl (1)            - Control a running PulseAudio sound server
    pamon (1)            - Play back or record raw or encoded audio streams on a PulseA...
    paplay (1)           - Play back or record raw or encoded audio streams on a PulseA...
    parec (1)            - Play back or record raw or encoded audio streams on a PulseA...
    parecord (1)         - Play back or record raw or encoded audio streams on a PulseA...
    pavucontrol (1)      - A volume control for the PulseAudio sound server
    pulseaudio (1)       - The PulseAudio Sound System
    start-pulseaudio-x11 (1) - PulseAudio Sound Server X11 Startup Script
    
    1. -h--help参数
      显示命令的帮助文档。
    root@ecs-x-large-2-linux-20200315202744:~# apt-get -h
    apt 1.6.12 (amd64)
    Usage: apt-get [options] command
           apt-get [options] install|remove pkg1 [pkg2 ...]
           apt-get [options] source pkg1 [pkg2 ...]
    ...
    Most used commands:
      update - Retrieve new lists of packages
      upgrade - Perform an upgrade
      install - Install new packages (pkg is libc6 not libc6.deb)
    ...
    

    注释:-h没有man命令详细,但比man命令可读性更强。

    1. whatis命令
      whatis命令是man命令的精简版。只会显示man命令显示手册的开头部分。
    root@ecs-x-large-2-linux-20200315202744:~# whatis ls
    ls (1)               - list directory contents
    
    1. locate命令
      搜索包含关键字的所有文件和目录。
      语法:locate 文件/目录
      特点:从文件数据库中查找,速度快。对于刚创建的文件,还没有被收录到文件数据库,因此locate目录就查不到。模糊查询。
      文件数据库更新:Linux系统一般每天会更新一次文件数据库。我们可以使用updatedb命令强制系统立即更新文件数据库。
    root@ecs-x-large-2-linux-20200315202744:~# locate nmw
    /home/nmw
    /home/nmw/.bash_logout
    /home/nmw/.bashrc
    root@ecs-x-large-2-linux-20200315202744:~# touch new_file
    root@ecs-x-large-2-linux-20200315202744:~# locate new_file
    root@ecs-x-large-2-linux-20200315202744:~# updatedb
    root@ecs-x-large-2-linux-20200315202744:~# locate new_file
    /root/new_file
    root@ecs-x-large-2-linux-20200315202744:~# 
    
    1. find命令
      搜索包含关键字的所有文件和目录。
      语法:find [path] what [do]
      含义: path指定在哪个目录内查找,默认从当前目录开始查找。what要查找的文件名、大小、最近访问时间等。do对查找到的文件做后续操作。
      what参数:-name文件名,-size文件大小,-atime最近访问时间,-type文件类型
      特点:与locate命令不同,find命令不会在文件数据库中查找文件记录,而是实际遍历你的硬盘。因此可以查找到刚创建的文件。精准查询,可以使用*通配符实现模糊查询。
    2. find命令参数
      (1) -name根据文件名查找
    root@ecs-x-large-2-linux-20200315202744:~# find -name new_file
    ./new_file
    root@ecs-x-large-2-linux-20200315202744:~# find -name syslog
    root@ecs-x-large-2-linux-20200315202744:~# find /var/log -name syslog
    /var/log/syslog
    /var/log/installer/syslog
    root@ecs-x-large-2-linux-20200315202744:~# find /var/log -name syslog*  
    /var/log/syslog.1
    /var/log/syslog.2.gz
    /var/log/syslog
    /var/log/syslog.4.gz
    /var/log/syslog.3.gz
    /var/log/installer/syslog
    

    (2) -size根据文件大小查找

    root@ecs-x-large-2-linux-20200315202744:~# find /var -size +50M
    /var/cache/apt/srcpkgcache.bin
    /var/cache/apt/pkgcache.bin
    root@ecs-x-large-2-linux-20200315202744:~# find -size 2k
    ./.ICEauthority
    ./.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml
    root@ecs-x-large-2-linux-20200315202744:~# find -size 10k
    ./.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
    

    (3) -atime根据文件最近访问时间查找

    root@ecs-x-large-2-linux-20200315202744:~# find / -name *.log -atime -7
    /root/.vnc/ecs-x-large-2-linux-20200315202744:1.log
    /usr/local/hostguard/log/daemon.log
    /usr/local/hostguard/log/hostguard.log
    ...
    

    注释:-atime -7表示最近7天访问过。
    (4) -type根据类型查找
    -type d只查找目录,-type f只查找文件。

    root@ecs-x-large-2-linux-20200315202744:~# find -name file1
    ./file1
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -type d
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -type f
    ./file1
    

    10.find命令操作查找结果
    (1) -printf格式化打印
    %p文件名,%u文件所有者、\n换行。
    (2) -delete删除
    (3) -exec 无提示操作
    {} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
    (4) -ok 提示操作
    -exec参数作用相同,但会对每一个文件操作做确认提示。

    root@ecs-x-large-2-linux-20200315202744:~# find -name file1
    ./file1
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -print
    ./file1
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -printf "%p - %u\n"
    ./file1 - root
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -exec chmod 600 {} \;
    root@ecs-x-large-2-linux-20200315202744:~# ls -l file1
    -rw------- 1 root root 0 Aug  4 21:04 file1
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -ok chmod 600 {} \;
    < chmod ... ./file1 > ? y
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -ok chmod 600 {} \;
    < chmod ... ./file1 > ? y
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1 -delete
    root@ecs-x-large-2-linux-20200315202744:~# find -name file1
    

    注释:find -name file1等价于find -name file1 -print
    资料:find命令

    相关文章

      网友评论

          本文标题:Python爬虫 - 入门Linux基础

          本文链接:https://www.haomeiwen.com/subject/nqshxktx.html