• Linux教程


    目录

    1. Linux简介

    • Window属于单用户操作操作系统
    • Unix和Linux属于多用户操作系统
      • Linux中没有盘符的概念,只有一个根目录/

    image-20220227211501629

    Linux目录

    • /根目录:一般根目录只存放目录,linux中只有一个跟目录
    • /bin,/usr/bin:可执行二进制文件的目录,如常见的命令ls,tar,mv,cat
    • /boot:放置linux系统启动时用到的一些文件
    • /dev:存放linux系统下的设备文件
    • /etc:系统配置文件的存放目录,不建议再此目录下存放可执行文件,重要的配置文件有
      • /etc/inittab
      • /etc/fstab
      • /etc/init.d
      • /etc/X11
      • /etc/sysconfig
      • /etc/xinetd.d
    • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下

    2. Linux命令

    2.1. 常用linux命令

    命令 英文 含义
    ls list 查看当前文件夹的内容
    pwd print work directory 查看当前所在文件夹
    cd [目录名] change directory 切换文件夹
    touch [文件名] touch 如果文件夹不存在就创建
    mkdir [目录名] make directory 创建目录
    rm [文件名] remove 删除指定的文件名
    clear clear 清屏

    2.2. Linux的格式

    command [-option] [parameter]
    
    • [-option]:选项,可以对命令进行控制,也可以省略
    • parameter:传给命令的参数,可以是0,1,或者多个

    2.3. 查询命令帮助信息

    (1)--help

    command --hep
    

    (2) man

    man command
    

    操作中的说明

    操作键 功能
    空格 显示手册的 下一屏
    Enter 一次滚动手册页的一行
    b 回滚一屏
    f 前滚一屏
    q 退出
    /word 搜索word字符串

    3. 命令讲解

    3.1. 文件目录相关命令

    (1) 查看目录内容:ls

    参数 含义
    -a 显示指定目录下的所有子目录与文件,包括隐藏文件
    -l 以列表方式显示文件的详细信息
    -h 配合-l以人性化的方式显示文件大小

    ls通配符

    通配符 含义
    * 代表任意个数的字符
    ? 代表任意一个字符
    [] 表示可以匹配字符组中的任意一个
    [abc] 匹配a,b,c中的任意一个
    [a-f] 匹配a到f范围内的任意字符

    image-20220228152653538

    (2) 切换目录:cd

    命令 含义
    cd 切换到当前用户的主目录
    cd ~ 切换到当前用户的主目录
    cd . 保持在当前目录不变
    cd .. 切换到上级目录
    cd - 可以在最近两次工作目录之间来回切换

    (3) 创建和删除操作:touch, rm, mkdir

    touch 创建文件

    • 如果文件不存在,可以创建一个空白文件
    • 如果文件已经存在,可以修改文件的最后一次修改日期

    mkdir 创建一个新目录

    选项 含义
    -p 可以递归创建目录

    image-20220228153840109

    rm 删除文件或目录

    使用rm命令会直接从磁盘中删除,无法恢复

    参数 含义
    -f 强制删除,忽略不存在的文件,无需提示
    -r 递归删除目录下的内容,删除文件夹事必须加入这个参数

    image-20220228154129244

    (4) 拷贝和移动文件tree,cp,mv

    命令 作用
    tree [目录名] 以树状图列出文件目录结构
    cp 源文件 目标文件 复制文件或者目录
    mv 源文件 目标文件 移动文件或者目录/文件或者目录重命名

    tree 树状图列出文件目录

    选项 含义
    -d 只显示目录

    image-20220228155255311

    cp 复制

    选项 含义
    -i 覆盖文件提示
    -r 若给出的源文件是目录文件,则cp
    将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录

    image-20220228160147409

    mv 移动+重命名

    选项 含义
    -i 忽略文件提示

    (5) 查看文件内容: cat, more, grep

    命令 作用
    cat 文件名 查看文件内容、创建文件、文件合并、追加文件内容等功能
    more 文件名 分屏显示文件内容
    grep 搜索文本文件名 搜索文本文件内容

    cat 查看文件内容,创建文件,文件合并,追加文件内容

    • 一次性显示所有内容,适合内容较少的文本
    选项 含义
    -b 对非空输出行编号
    -n 对输出的所有航编号

    more分屏显示内容

    操作键 含义
    空格 显示手册的下一屏
    Enter键 一次滚动手册页的一行
    b 回滚一屏
    f 前滚一屏
    q 退出

    grep 搜索文本

    选项 含义
    -n 显示匹配行和行号
    -v 显示不包含匹配文本的所有行
    -i 忽略大小写

    常有的两种模式查找

    参数 含义
    ^a 行首,搜找以a开头的行
    ke$ 行尾,搜以ke结尾的行

    image-20220228210821442

    (6) 其他:echo, 重定向>/>>, 管道|

    echo 在终端中显示传递给的参数,类似print (一般和重定向一起使用)

    重定向:将本应该输出到终端的内容输出到指定文本中

    • >表示输出,会覆盖原内容
    • >>表示追加,会追加

    image-20220228211337712

    管道|:将一个命令的输出通过通道当做另一个命令的输入

    常用的管道命令

    • more
    • grep

    image-20220228211839373

    image-20220228211905341

    3.2 远程管理命令

    (1)关机、重启

    命令 作用
    shutdown 关机
    # 重新启动操作系统,其中now表示现在
    shutdown -r now
    
    # 立刻关机
    shutdown now
    
    # 系统会在20:00 关机
    shutdown 20:00
    
    # 系统在10分钟后关机
    shutdown +10
    
    # 取消关机
    shutdown -c
    

    (2)查看或配置网卡信息

    命令 作用
    ifconfig 查看/配置计算机当前的网卡配置信息
    ping ip 地址 检测到目标ip地址的连接是否正常

    网卡:

    • 负责网络通讯的硬件设备
    • IP地址就是设置在网卡上的地址信息

    image-20220228215628019

    (3)远程登录ssh和复制文件

    ssh是linux中非常常用的工具,通过ssh客户端我们可以连接到运行了ssh服务器的远程机器上面去

    image-20220228222322413

    • SSH客户端是一种使用Secure sheel (SSH)协议链接到远程计算机的软件程序
    • SSH是目前比较可靠,专门为远程登录会话和其他网络服务提供安全性的协议
      • 通过SSH协议,可以游戏防止远程管理过程中的信息泄露
      • 通过SSH协议,可以对所有传输的数据进行加密

    域名和端口号

    域名

    • 由一串用点分隔的名字组成www.baidu.com
    • IP地址的别名

    端口号

    • IP地址:通过IP地址找到网络上的计算机
    • 端口号:通过端口号可以找到计算机上运行的应用程序
      • SSH服务器的默认端口号是22
    • 常见的服务端口号列表
    服务 端口号
    SSH服务器 22
    Web服务器 80
    HTTPS 443
    FTP服务器 21

    ssh客户端的简单使用

    ssh [-p port] user@remote
    
    • user是在远程机器的用户名
    • remote是远程机器的地址,可以是IP或者域名,或者别名
    • port是SSH server监听的端口,如果不指定,默认22

    提示

    • 使用exit退出当前用户的登录
    • Window系统中,可以安装XShell来使用shell

    XShell连接到ubuntu

    1. 首先在ubuntu中查看是否安装和开启ssh服务
    # 查看是否安装ssh
    ssh localhost
    
    # 安装ssh-server
    sudo apt-get install openssh-server
    
    # 启动服务
    sudo /etc/init.d/ssh start
    
    # 检查是否启动成功
    ps -e|grep ssh
    

    (4) scp 远程拷贝文件

    • scp用于远程拷贝文件
    • 它的地址格式和ssh基本相同,但是指定端口时是大写的P而不是小写的

    image-20220228225553265

    # 本地->远程:将本地当前目录下得01.py 复制到 远程家目录下得Desktop/01.py
    scp -P port 01.py user@remote: Desktop/01.py
    
    # 远程->本地:把远程家目录下得Desktop/01.py 复制到 本地当前目录下得01.py
    scp -P port user@remote:Desktop/01.py 01.py
    
    # 加上-r可以传输文件夹
    # 将当前目录下得demo文件夹 复制到 远程家目录下得Desktop
    scp -r demo user@remote:Desktop
    
    # 将远程家目录下得Desktop文件夹 复制到 当前目录下得demo文件夹
    scp -r user@remote:Desktop demo
    
    选项 含义
    -r 将递归复制该目录下的所有子目录和文件
    -P 若远程SSH的端口不是22,需要使用大写字母-P选项指定端口

    image-20220228230529980

    FileZilla: 传输文件

    image-20220228232909430

    3.3. 用户权限命令

    基本概念

    • 用户是linux系统的重要部分,包括用户和组的管理
    • Linux中,可以指定每一个用户针对不同的文件或者目录的不同权限
    • 对于文件/目录的权限包括
    权限 缩写 数字代码
    r 4
    w 2
    执行 x 1

    • 为了方便用户管理,提出了组的概念
    • 在实际应用中,可以预先对组设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每个用户设置权限

    (1)ls -l扩展:查看目录详细信息

    image-20220228234103349

    • 权限:第一个字符如果是d表示目录
    • 硬链接数:有多少种方式可以访问到当前目录/文件
    • 拥有者:家目录下 文件/目录 的拥有者通常是当前用户
    • 组,在linux中,很多时候会出现组名和用户名相同的情况
    • 大小
    • 时间
    • 名称

    image-20220228234252594

    (2)chmod 修改用户/组 对文件/目录的权限

    chmod +/- rwx 文件名|目录名
    

    image-20220301101533435

    对于目录的修改

    image-20220301101950104

    (3)root超级用户

    • Linux系统的root账号通常用于系统的维护和管理,对于操作系统的所有资源具有访问权限
    • 大多数linux中,都不推荐直接使用root账号登录系统

    sudo

    • su是substitute user的缩写,表示使用另外一个用户的身份
    • sudo命令用来以其他身份来执行命令,预设为root
    • 用户使用sudo时,需要输入密码

    3.4 组管理sudo-based

    创建组/删除组都需要用sudo执行

    命令 作用
    groupadd 组名 添加组
    groupdet 组名 删除组
    cat /etc/group 确认组的信息
    chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组

    image-20220301102912353

    image-20220301105532889

    3.5 用户管理sudo-based

    创建用户/删除用户/修改其他用户密码需要通过sudo

    (1) 创建用户/设置密码/删除用户useradd, passwd, userdel

    命令 作用 说明
    useradd -m -g 组 新建用户名 添加用户名 -m自动建立用户家目录
    -g:指定用户所在的组,否则会建立一个和同名的组
    passwd 用户名 设置用户名 如果是普通用户,直接用passwd
    userdel -r 用户名

    创建用户

    image-20220301110228926

    • 用户信息保存在/etc/passwd文件中

    (2)查看用户信息id, who, whoami

    命令 说明
    id [用户名] 查看用户UID和GID信息
    who 查看当前所有登录的用户列表
    whoami 查看当前登录用户的账户名

    id: 用户代号和组代号

    image-20220301111148268

    passwd文件

    /etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是:

    • 用户名
    • 密码(x,表示加密的密码)
    • UID:用户识别
    • GID:组识别
    • 用户全面或本地账号
    • 家目录

    who/whoami

    image-20220301111652955

    (3)usermod:设置用户的主组/附加组和登录shell: sudo-based

    • 主组:通常在新建用户时指定,在etc/passwd的第四列GID对应的组
    • 附加组:在etc/group中的最后一列表示该组的用户列表,用于指定用户的附加权限
    # 修改用户的主组
    usermod -g 组 用户名
    
    # 修改用户的附加组
    usermod -G 组 用户名
    
    # 修改用户登录shell
    usermod -s /bin/bash 用户名
    
    # 添加用户到sudo
    usermod -G sudo 用户名
    

    设置用户的主/附加组

    image-20220301112622257

    • 添加到sudo后,需要退出并重新登录

    设置登录shell

    • 登录使用的是shell,就是登录后,使用的终端命令,ubuntu默认的是dash,需要改成shell的bash,更好

    (4) which:查看命令所在位置

    • /etc/passwd:是用于保存用户信息的文件,只是文本文件无法执行
    • /usr/bin/passwd:是用于修改用户密码的程序,可执行

    which可以查看执行命令所在位置

    which ls
    

    bin和sbin

    • 在linux中,绝大多数可执行文件都是在保存在/bin,/sbin,/usr/bin,/usr/sbin
      • /bn: 二进制执行文件目录,主要用于具体应用
      • /sbin:是系统管理员专用的二进制代码存放目录,主要用于系统管理
      • /usr/bin:后期安装的一些软件
      • /usr/sbin:超级用户的一些管理程序

    (5)su 切换用户

    命令 作用
    su -用户名 切换用户,并且切换到目标用户得家目录
    exit 退出当前登录账号

    image-20220301114110114

    (6)修改文件权限chown, chgrp, chmod

    命令 作用
    chown 修改拥有者
    chgrp 修改组
    chmod 修改权限

    image-20220301115043518

    # 修改文件|目录的拥有者
    chown 用户名 文件名|目录名
    
    # 递归修改文件|目录的组
    chgrp -R 组名 文件名|目录名
    
    # 递归修改文件权限
    chmod -R 755 文件名|目录名
    

    chmod的数字表示

    chmod设置权限时,可以简单的使用三个数字分别对应拥有者/组合其他用户的权限

    # 直接修改文件|目录的 读写执行权限,但是不能精确到 拥有者|组|其他
    chmod +/1 rwx 文件名|目录名
    

    image-20220301115701964

    image-20220301115914995

    3.6. 系统信息

    • 本节主要为方便远程终端维护服务器,查看服务器上当前的系统日期和时间/磁盘情况等情况

    (1) 时间和日期

    命令 作用
    date 系统时间
    cal 查看日历,-y可以查看一年的日历

    (2)磁盘信息

    命令 作用
    df -h disk free 显示磁盘剩余空间
    du -h [目录名] disk usage显示目录下的文件大小
    • -h用人性化的显示文件大小

    image-20220301120518390

    (3) 进程信息

    • 所谓进程,就是当前正在进行的程序
    命令 作用
    ps aux process status 查看进程的详细情况
    top 动态显示运行中的进程并排序
    kill [-9] 进程代号 终止指定代号的进程,-9表示强制终止

    ps: 全部显示

    • ps默认只会显示当前用户通过终端启动的应用程序
    • ps的选项
    选项 含义
    a 显示终端上所有的进程,包含其他用户的进程
    u 显示进程的详细状态
    x 显示没有控制中终端的进程
    • 使用kill命令时,最好只终止当前用户开启的进程,而不要终止root身份开启的进程,不然系统会崩溃

    top: 动态显示并排序

    • 退出top按q

    3.7 其他命令

    (1)查找文件find

    命令 作用
    find [路径] -name "*.py" 查找指定路径下扩展名为.py的文件,包括子目录
    • 如果省略路径,就会在当前文件夹下查找
    • 之前学习的通配符,可以在这里使用

    (2)软链接: 类似快捷方式

    命令 作用
    ln -s 被链接的源文件 链接问价 建立文件的软链接,类似快捷方式
    • 没有-s选项建立的是一个硬链接
      • 两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
    • 源文件要使用绝对路径,不能使用相对路径,可以方便移动链接文件后,仍然能正常使用

    image-20220301123947063

    软链接和硬链接区分

    image-20220301124238946

    • Linux中,文件名和文件的数据是否分开存储的

    (3)打包和压缩

    打包/解包 tar

    • tar是linu常用的备份工具,此命令将一系列文件打包成一个大的文件中,也可以将一个大的文件包恢复成一系列文件
    # 打包文件
    tar -cvf 打包文件.tar 被打包的文件/路径
    
    # 解包文件
    tar -xvf 打包文件.tar
    

    打包操作

    image-20220301125132471

    解包操作

    image-20220301125217553

    压缩/解压缩 gzip

    • tar和gzip命令结合可以实现文件打包压缩
      • tar负责打包,不压缩
      • gzip压缩tar打包后的文件为xxx.tar.gz
    • tar命令中有一个选项-z可以调用gzip,从而实现压缩和解压缩的功能
    # 压缩文件
    tar -zcvf 打包文件.tar.gz 被压缩的文件/路径
    
    # 解压缩文件
    tar -zxvf 打包文件.tar.gz
    
    # 解压缩到指定路径
    tar -zxvf 打包文件.tar.gz -C 目标路径
    

    (4)软件安装 apt

    通过apt安装/卸载软件

    • apt是Advanced packaging tool,是linux下得一款安装包管理工具
    • 可以再终端中方便的安装/卸载/更新软件包
    # 安装软件
    sudo apt install 软件包
    
    # 卸载软件
    sudo apt remove 软件名
    
    # 更新软件
    sudo apt upgrade
    

    配置软件源

    • 如果希望linu中安装软件,更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器来提供软件下载/安装服务
    • 镜像源:就是所有服务器的内容都是相同的,但是根据所在位置不同,国内服务器通常速度更快一些

    image-20220301130050380

    4. Vim编辑器

    • 在无图形界面的环境下,进行编辑

    • 让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作

    • VI的特点:

      • 没有图形界面的编辑器
      • 只能编辑文本内容,不能对子图,段落进行排版
      • 不支持鼠标哦擦做
      • 没有菜单
      • 只有命令

    4.1. 打开文件

    (1)打开

    vi 文件名
    
    • 如果文件存在,直接打开
    • 如果文件不存在,新建并打开

    (2)打开文件并定位行

    vi 文件名+行数
    
    • 如果只带上+号,没有行数,就会定位到末尾

    (3)异常处理

    • 如果vi异常退出,在磁盘上可能保存有交换文件
    • 下次再使用vi的时候,会看到如下信息,按下字母d可以删除交换文件即可

    image-20220301144121092

    4.2. 工作模式

    vi有三种工作模式:

    • 命令模式
      • 打开文件首先进入命令模型,是使用vi的入口
      • 通过命令对文件进行常规编辑操作,例如:定位、翻页、复制粘贴、删除......
      • 在其他图形编辑器下,通过快捷键或者鼠标实现的操作,都能在命令模式下实现
    • 末行模式: 执行保存、退出等操作
      • 要退出vi,需要在末行模式下输入命令
      • 末行模式是vi的出口
    • 编辑模式: 正常的编辑文字

    image-20220301144441730

    末行模式命令

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

    4.3. vi常用命令

    命令线路图

    1. 重复次数
      1. 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数
    2. 移动和选择
      1. vi之所以快,关键在于能够快速定位到要编辑的行
      2. 移动命令能够和编辑操作命令结合使用
    3. 编辑操作
      1. 删除、复制、粘贴、替换、缩π
    4. 撤销和重复
    5. 查找替换
    6. 编辑

    4.3. 移动选中命令

    (1)上、下、左、右

    命令 功能
    h 向左
    j 向下
    k 向上
    l 香油

    image-20220301145256811

    (2)行内移动

    命令 功能
    w 向后移动一个单词
    b 向前移动一个单词
    数字0 行首
    ^ 行首,第一个不是空白字符的未知
    $ 行尾

    (3)行数移动

    命令 功能
    gg 文件顶部
    G 文件底部
    数字gg 移动到数字对应行数
    数字G 移动到数字对应行数
    :数字 移动到数字对应行数

    (4)屏幕移动

    命令 功能
    Ctrl + b 向上翻页
    Ctrl + f 向下翻页
    H 屏幕顶部
    M 屏幕中间
    L 屏幕底部

    (5)移动命令

    段落移动

    • 在vi中使用空行来区分段落
    • 在程序开发时,通常一段功能相关的代码会写在一起--之间没有空行
    命令 功能
    { 上一段
    } 下一段

    括号切换

    • 在程序世界中,{},(),[]使用特别频繁
    命令 功能
    % 括号匹配以及切换

    标记

    • 在开发时,某一块代码可能需要稍后处理
    • 此时先使用m增加一个标记,这样可以在需要时快速的跳转回来或者执行其他编辑操作
    • 标记名称可以是a-z或者A-Z的任意一个字母
    • 添加了标记的行如果被删除,标记也会被删除
    • 如果在其他行添加了相同名称的标记,之前添加的标记会被替换
    命令 功能
    mx 添加标记x,x是a-z或者A-Z的任意一个字母
    'x 直接定位到标记x所在位置

    (6)选中文本

    • 学习复制命令前,应该先学会如何选中代码
    • 在vi中要选择文本,需要现在visual命令切换到可视模式
    • vi提供三种可视模式,可以方便程序员选择选中文本的方式
    • ESC可以放弃选中,返回到命令模式
    命令 模式 功能
    v 可视模式 从光标位置开始按照正常模式选中文本
    V 可视行模式 选中光标经过的完整行
    Ctrl + v 可视块模式 垂直方向选中文本

    4.4. 撤销删除命令

    (1)撤销命令 u

    命令 说明
    u 撤销上次命令
    Ctrl + r 回复撤销的命令

    (2)删除命令x,d

    命令 说明
    [数字]x 删除光标所在字符,或者选中文字
    d 删除移动命令对应的内容
    [数字]dd 删除光标所在行,可以ndd复制多行
    D 删除至行尾
    • 如果使用可视模型中已经选中了一段文本,那么无论使用d还是x,都可以删除
    • 删除命令和移动命令可以结合使用:
    dw  # 从光标位置删除到单词末尾
    d0  # 从光标位置删除一行的起始位置
    d}  # 从光标位置删除到段落结尾
    ndd # 从光标位置连续向下删除n行
    d代码行G # 从光标所在行,删除到指定代码行,之间的代码
    d'a     # 从光标所在行,删除到标记a,之间的代码
    

    4.5. 复制、粘贴:y / yy / p

    命令 说明
    y(移动命令) 复制
    yy 复制,nyy可以复制多行
    p 粘贴

    提示:

    • 命令d,x类似剪切操作
    • 命令y类似复制操作
    • 命令p类似粘贴操作

    4.6. 替换命令

    命令 说明
    r 替换当前字母
    R 替换当前行光标后的字符
    • R命令可以进入替换模式,替换完成后,按下ESC就可以回到命令行模型

    4.7. 缩排和重复命令

    • 一次性在选中代码前增加4个空格:增加缩进
    • 一次性在选中代码前删除4个代码:减少缩进
    命令 功能
    >> 向右增加缩进
    << 向左增加缩进
    . 重复上次命令

    4.7. 查找和替换命令

    (1)查找

    命令 功能
    /str 查找str
    • 查找到指定内容后,使用Next查找下一个出现的位置:
      • n:查找下一个
      • N: 查找上一个

    单词快速匹配

    命令 功能
    * 向后查找当前光标所在单词
    # 向前查找当前光标所在单词

    (2)查找并替换

    • vi中查找和替换命令需要在末行模式下执行
    :%s///g
    

    全局替换

    • 一次性替换文件中的所有出现的旧文本
    :%s/旧文本/新文本/g
    

    替换可视区域范围

    • 先选中要替换文字的范围
    • 命令格式如下
    :s/旧文本/新文本/g
    

    image-20220301165920817

    确认替换

    • 如果把末尾的g改成gc,替换的时候就会有提示
    :%s/旧文本/新文本/gc
    
    1. y-yes替换
    2. n-no不替换
    3. a-all替换所有
    4. q-quit退出替换
    5. l-last最后一个
    6. ^E向下滚屏
    7. ^r向上滚屏

    4.8 进入编辑模式的6个命令

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

    image-20220301170722323

    image-20220301171045790

  • 相关阅读:
    centos8上安装中文字符集
    python使用p12个人证书发送S/MIME加密,签名邮件
    linux 下如何获取 cpu 温度
    [官网]Apache Log4j2 最新版安全提示 2.17.0
    电子书下载:Beginning Windows Phone 7 Development
    沙发的含义
    电子书下载:Windows Phone 7 Developer Guide: Building connected mobile applications with Microsoft Silverlight
    电子书下载:The Rails 3 Way, 2nd Edition
    Enfocus Pitstop 7.52 汉化破解版安装
    电子书下载:Professional Flash Mobile Development: Creating Android and iPhone Applications
  • 原文地址:https://www.cnblogs.com/haochen273/p/15951362.html
Copyright © 2020-2023  润新知