zoukankan      html  css  js  c++  java
  • 20165211 预备作业3 Linux安装与学习

    20165211 预备作业3 Linux安装与学习

    1. Linux安装

    涉及软件:VirtualBox,Ubuntu
    参考教程:基于VirtualBox安装Ubuntu图文教程
    安装过程的问题
    1. 在安装VirtualBox之后,创建虚拟机的过程中,类型为Linux,但在版本里找不到64-bit的Ubuntu。

      在网上查找了一些资料之后,我发现是自己的电脑没有开启虚拟化,应该要进入BIOS打开虚拟化。这里真的要吐槽一下win10,我找了很多的方法教程,才终于找到了进入BIOS的方法。这应该也和各个电脑的设置有关系吧。

      打开虚拟化之后,就可以顺利的设置为64位的Ubuntu了。

    2. 在安装Ubuntu时,按照教程中的链接,结果,这个下载链接是错误的,只要在百度里找到正确的官网链接就可以了。

    Linux学习

    第一章 Linux简介

    主要介绍了操作系统的基本概念, Linux 的历史,Linux 与 Windows 的区别等入门知识。
    image
    在这一章,我看到Linux的整个发展过程是无数电脑天才们的不断努力来推动的,具有很多的优势。

    对比Windows,它的优势也是明显的

    免费使用

    安全性高

    效率高

    可定制性

    应用范畴广

    春节期间,我正好也去看了一部电影——唐人街探案2,其中一个片段更是将Linux系统吹得神乎其神,能够学习Linux也是很开心。


    第二章 基本概念及操作

    以下整理的一些知识:

    通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的。

    Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。

    Ubuntu 终端默认使用的是 bash。

    创建文件touch file

    进入目录cd /etc/

    查看当前目录pwd

    常用快捷键

    按键 作用
    Tab 命令补全
    Ctrl+c 强行终止当前程序
    Ctrl+d 键盘输入结束或退出终端
    Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
    Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
    Ctrl+a 将光标移至输入行头,相当于Home键
    Ctrl+e 将光标移至输入行末,相当于End键
    Ctrl+k 删除从光标所在位置到行末
    Alt+Backspace 向前删除一个单词
    Shift+PgUp 将终端显示向上滚动
    Shift+PgDn 将终端显示向下滚动
    历史输入命令

    shell常用通配符

    字符 含义
    * 匹配 0 或多个字符
    ? 匹配任意一个字符
    [list] 匹配 list 中的任意单一字符
    [!list] 匹配 除list 中的任意单一字符以外的字符
    [c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]

    {string1,string2,...} 匹配 string1 或 string2 (或更多)其一字符串
    {c1..c2}| 匹配 c1-c2 中全部字符 如{1..10}

    banner主要程序

    安装

    $ sudo apt-get update
    $ sudo apt-get install sysvbanner
    
    

    打印

    $ banner shiyanlou
    
    

    字体改变

    $ printerbanner -w 50 A
    
    

    本章作业:


    第三章 用户及文件权限管理

    • 查看用户
      $ who am i
      $ who mom likes
    • who命令
    参数 说明
    -a 打印能打印的全部
    -d 打印死掉的进程
    -m 同am i,mom likes
    -q 打印当前登录用户数及用户名
    -u 打印当前登录用户登录信息
    -r 打印运行等级
    • 新建用户$ sudo adduser lilei

    • 切换登录用户$ su -l lilei

    • 退出 exitCtrl+d

    • 查看自己属于哪些用户组

      1.groups命令$ groups shiyanlou

      2.查看/etc/group/文件$ cat /etc/group | sort
      过滤信息$ cat /etc/group | grep -E "shiyanlou"

    • 将其他用户加入sudo用户组

    $ su shiyanlou 
    $ groups lilei
    $ sudo usermod -G sudo lilei
    $ groups lilei
    
    • 删除用户 $ sudo deluser lilei --remove-home
    • 变更文件所有者
    $ cd /home/lilei
    $ ls iphone6
    $ sudo chown shiyanlou iphone6
    
    • 修改文件权限
      $ chmod 700 iphone6
      $ chmod go-rw iphone6

    本章作业


    第四章 Linux目录结构及文件基本操作

    • Linux目录与Windows目录的区别
      1. Linux以目录为主,Windows以存储介质为主
    • FHS标准
      image
    • 目录路径
      1. 进入上一级目录 $ cd ..
      2. 进入你的home目录 $ cd ~
      3. 使用pwd获取当前目录 $ pwd
    • 绝对路径:以根" / "目录为起点的完整路径,以你所要到的目录为终点
    • 相对路径:以当前目录 . 为起点,以你所要到的目录为终点
    • Linux文件的基本操作
      1. 新建空白文档 touch命令
      2. 新建目录 mkdir命令,使用-p同时创建父目录,例$ mkdir -p father/son/grandson
      3. 复制文件 cp命令,例$ cp test father/son/grandson
      4. 复制目录,cp加上-r-R,例$ cp -r father family
      5. 删除文件:rm,强制删除-f
      6. 删除目录:rm命令加上-r-R
      7. 移动文件:mv,例
    $ mkdir Documents
    $ mv file1 Documents
    
    1. 重命名文件:$ mv file1 myfile
    2. 批量重命名:
    # 使用通配符批量创建 5 个文件:
    $ touch file{1..5}.txt
    
    # 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
    $ rename 's/.txt/.c/' *.txt
    
    # 批量将这 5 个文件,文件名改为大写:
    $ rename 'y/a-z/A-Z/' *.c
    
    1. 查看文件cat,tac,nl
    2. 分页查看文件more,less
    3. 查看文件类型,例$ file /bin/ls
    4. 编辑文件,例$ vimtutor

    本章作业


    第五章 环境变量与文件查找

    • 创建变量$ declare tmp
    • 给变量赋值 $ tmp=shiyanlou
    • 读取变量的值 $ echo $tmp
    • 环境变量

    image

    与环境变量相关的命令:setenvexport

    命 令 说 明
    set 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
    env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
    export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

    image

    • 永久生效

      Linux变量分为,永久的和临时的。
      /etc/bashrc 存放shell变量

      /etc/profile 环境变量,永久生效

    • 命令的查找路径和顺序

      1. 查看path环境变量 $ echo $PATH
      2. 创建一个shell脚本文件$ gedit hello_shell.sh
      3. 为文件添加可执行权限$ chmod 755 hello_shell.sh
      4. 执行脚本$ ./hello_shell.sh
      5. 创建一个C语言“hello world”程序$ gedit hello_world.c
      6. 保存后使用 gcc 生成可执行文件$ gcc -o hello_world hello_world.c
      7. 创建目录并移动文件至其中,例:
    $ mkdir mybin
    $ mv hello_shell.sh hello_world mybin/
    
    • 添加自定义路径到'PATH'环境变量

      添加自定义路径$ PATH=$PATH:/home/shiyanlou/mybin
      添加内容 $ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc

    • 修改和删除已有变量

      1. 变量修改
      变量设置方式 说明
      ${变量名#匹配字串} 从头向后开始匹配,删除符合匹配字串的最短数据
      ${变量名##匹配字串} 从头向后开始匹配,删除符合匹配字串的最长数据
      ${变量名%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最短数据
      ${变量名%%匹配字串} 从尾向前开始匹配,删除符合匹配字串的最长数据
      ${变量名/旧的字串/新的字串} 将符合旧字串的第一个字串替换为新的字串
      ${变量名//旧的字串/新的字串} 将符合旧字串的全部字串替换为新的字串
      1. 变量删除 $ unset temp
    • 如何让环境变量立即生效

      1. source命令,例 $ source .zshrc
      2. source命令的别名.,例 $ source .zshrc
    • 搜索文件

      1. whereis简单快捷,例 $ whereis who
      2. locate快而全,例 $ locate /etc/sh$ locate /usr/share/*.jpg
      3. which小而精,例 $ which man
      4. find精而细,例 $ sudo find /etc/ -name interfaces
      5. 与时间相关的命令参数
      参数 说明
      -atime 最后访问时间
      -ctime 最后修改文件内容的时间
      -mtime 最后修改文件属性的时间

    本章作业


    第六章 文件打包和压缩

    • 常用压缩包文件格式
    文件后缀名 说明
    *.zip zip 程序打包压缩的文件
    *.rar rar 程序压缩的文件
    *.7z 7zip 程序压缩的文件
    *.tar tar 程序打包,未压缩的文件
    *.gz gzip 程序(GNU zip)压缩的文件
    *.xz xz 程序压缩的文件
    *.bz2 bzip2 程序压缩的文件
    *.tar.gz tar 打包,gzip 程序压缩的文件
    *.tar.xz tar 打包,xz 程序压缩的文件
    *tar.bz2 tar 打包,bzip2 程序压缩的文件
    *.tar.7z tar 打包,7z 程序压缩的文件
    • zip
    1. 使用zip打包文件夹,例:
    $ zip -r -q -o shiyanlou.zip /home/shiyanlou
    $ du -h shiyanlou.zip
    $ file shiyanlou.zip
    
    1. 设置压缩级别打包,例:
    $ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip
    $ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/*.zip
    

    查看压缩文件信息$ du -h -d 0 *.zip ~ | sort
    3. 创建加密zip包

    $ zip -r -l -e -o shiyanlou_encryption.zip /home/shiyanlou
    
    1. 解压缩文件$ unzip shiyanlou.zip

    2. 安静模式解压缩$ unzip -q shiyanlou.zip -d ziptest

    3. 不解压查看压缩包内容$ unzip -l shiyanlou.zi

      指定编码类型unzip -O GBK 中文压缩文件.zip

    • rar
    1. 安装工具
    $ sudo apt-get update
    $ sudo apt-get install rar unrar
    
    1. 从指定文件或目录创建压缩包或添加文件到压缩包
    $ rm *.rar
    $ rar a shiyanlou.rar .
    
    1. 删除文件
    $ rar d shiyanlou.rar .zshrc
    
    1. 查看不解压文件
    $ rar l shiyanlou.rar
    
    1. 全路径解压
    $ unrar x shiyanlou.rar
    
    1. 去路径解压
    $ mkdir tmp
    $ unrar e shiyanlou.rar tmp/
    
    • tar(最常用)
    1. 创建tar包
    $ tar -cf shiyanlou.tar ~
    
    1. 解包一个文件到指定目录
    $ mkdir tardir
    $ tar -xf shiyanlou.tar -C tardir
    
    1. 只查看不解包文件
    $ tar -tf shiyanlou.tar
    
    1. 保留文件属性和跟随链接
    $ tar -cphf etc.tar /etc
    
    1. gzip压缩文件
    $ tar -czf shiyanlou.tar.gz ~
    
    1. 解压*.tar.gz文件
    $ tar -xzf shiyanlou.tar.gz
    
    1. 其他格式
    压缩文件格式 参数
    *.tar.gz -z
    *.tar.xz -J
    *tar.bz2 -j

    第七章 文件系统操作和磁盘管理

    • 查看磁盘和目录的容量df命令,加上-h更易读
    • du命令查看目录容量
    参数 作用
    du -h 同--human-readable 以K,M,G为单位,提高信息的可读性。
    $ du -h -d 指定查看目录的深度
    du -a 同--all 显示目录中所有文件的大小。
    du -s 同--summarize 仅显示总计,只列出最后加总的值。
    • 创建虚拟磁盘

    • 创建虚拟镜像文件

    $ dd if=/dev/zero of=virtual.img bs=1M count=256
    $ du -h virtual.img
    
    • 格式化磁盘
    $ sudo mkfs.ext4 virtual.img
    
    • 挂在磁盘到目录树
    1. 查看已经挂载的文件系统$ sudo mount
    2. 挂载真正的磁盘到目录树mount [options] [source] [directory]
    3. 常用操作mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
    4. 例:
    $ mount -o loop -t ext4 virtual.img /mnt 
    # 也可以省略挂载类型,很多时候 mount 会自动识别
    
    # 以只读方式挂载
    $ mount -o loop --ro virtual.img /mnt
    # 或者mount -o loop,ro virtual.img /mnt
    
    • 卸载已挂载磁盘$ sudo umount /mnt
    • 为磁盘分区
      1. 查看硬盘分区表信息$ sudo fdisk -l
      2. 进入磁盘分区模式$ sudo fdisk virtual.img
        image
      3. p查看结果
    • 建立镜像与回环设备的关联losetop命令
      步骤如下:
    1. 参看所有回环设备$ sudo losetup /dev/loop0 virtual.img
    2. 解除设备关联$ sudo losetup -d /dev/loop0
    3. 安装kpartx工具
    $ sudo apt-get install kpartx
    $ sudo kpartx -av /dev/loop0
    # 取消映射
    $ sudo kpartx -dv /dev/loop0
    
    1. 格式化
    2. 新建四个空目录用于挂载虚拟磁盘:
    $ mkdir -p /media/virtualdisk_{1..3}
    # 挂载磁盘分区
    $ sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1
    $ sudo mount /dev/mapper/loop0p5 /media/virtualdisk_2
    $ sudo mount /dev/mapper/loop0p6 /media/virtualdisk_3
    # 卸载磁盘分区
    $ sudo umount /dev/mapper/loop0p1
    $ sudo umount /dev/mapper/loop0p5
    $ sudo umount /dev/mapper/loop0p6
    
    1. $ df -h命令检查结果

    本章作业


    第八章 Linux下的帮助命令

    • 内建命令与外部命令

      1. 内建命令:shell程序的一部分,包含一些简单的Linux系统命令,不需要创建子进程,执行速度比外部命令快
      2. 外部命令:Linux系统中的实用程序部分,包含的程序量很大,命令执行过程由shell程序控制
      3. type命令区分内建命令和外部命令
      type exit
      type service
      

      image

    • help命令

      1. bash中内置有该命令
        准备:image
      2. 内建命令help ls
      3. 外部命令ls --help
    • man命令(没有内建与外部命令的区分)——man ls

      章节数 说明
      1 Standard commands (标准命令)
      2 System calls (系统调用)
      3 Library functions (库函数)
      4 Special devices (设备说明)
      5 File formats (文件格式)
      6 Games and toys (游戏和娱乐)
      7 Miscellaneous (杂项)
      8 Administrative Commands (管理员命令)
      9 其他(Linux特定的), 用来存放内核例行程序的文档。
    • info命令(更为全面)——info ls

  • 相关阅读:
    register based 和 stack based虚拟机的区别
    Java in a Nutshell学习笔记
    Java中interface和abstract class的区别和联系
    Java中final的作用
    Android 源码下载
    Android Fragment 你应该知道的一切
    Android Fragment 真正的完全解析(下)
    Android Fragment 真正的完全解析(上)
    IntelliJ IDEA 使用总结
    Linux在目录中查找某个函数
  • 原文地址:https://www.cnblogs.com/akashi/p/8468552.html
Copyright © 2011-2022 走看看