Linux安装及学习

安装部分

由于是第一次接触虚拟机知识,之前也没什么了解,我选择完全按照老师教程里的安装vbox虚拟机。
虚拟机安装的过程很顺利,不做详细讲解。

出现的问题

  • 在启动我新建的虚拟电脑时出现了问题。问题显示如下

我在百度以后得到了学姐的帮助。进入BIOS,选择Configuration中的Intel Uirtual Technology,将Disabled改为Enabled 后保存。

  • 我在安装增强功能时显示安装失败。问题显示如下

在查找资料挣扎了很久之后...好吧,发现是我一开始新建虚拟电脑时粗心,将版本选成了32bit,我的主机系统是64bit,这造成了冲突。重新建立虚拟电脑就顺利解决了。

收获

第一次独立安装虚拟机和系统,在一开始知识照着老师的教程一步一步做,在遇到问题后,我努力自己尝试解决,并没有急于立刻求助别人,在思考过程中,我逐渐理解了虚拟机和系统之间的关系(在此之前真的是一只电脑小白)除此之外,和win不同的系统操作方法也让我感到新颖,Linux不像win好上手易于理解,相对更直观地把每一步操作都显示出代码,清楚地展现在我眼前。假期间我还根据百度自己调出了win里的终端,修改了不知道为啥自己跳脱的无线网设置。

学习部分

一、学习别出心裁的Linux命令学习法

  • Linux的构架:硬件、内核、系统调用、壳(shell)、库函数、应用。
  • Ubuntu快捷键
    Ctrl+Alt+T:打开终端;
    Ctrl+Shift+T:新建标签页;
    Alt+数字+N:跳转标签页;
    Tab:补全终端命令,在C语言编程中也常用;
    上键:切换历史命令;
    Ctrl+C:中断程序;
  • Linux命令
    命令格式:command [options] [arguments]
  • man命令
    manual(手册、指南),可以使用man man命令查看帮助,其中man -k用于搜索关键字,根据相匹配数字来查找所需内容。接着可以用man -f查看命令基本功能。
  • cheat命令
    看起来就很有趣,但是...好吧,看了老师的讲解一头雾水,还是老实安装动手实操。
    安装的时候提示我无法获得锁/var/lib/dpkg/lock-open(11:资源暂时不可用),大概是我瞎玩耍的时候什么命令执行了一半?orz..输入指令sudo rm/var/lib/dpkg/lock强行终止就可以了,希望不要留下什么后遗症。
  • 其他核心命令
    find查找文件路径
    locate神速版本find
    grep对文件全文检索
    whereis,which查找命令工具装在什么地方.

二、Linux系统简介

  • 构成部分(见上部分)、历史简介、主要人物
  • Linux为开源自由软件,部分软件质量和体验欠缺。安全性比Windows更高。操作入门难,但效率极高。
  • 关于学习Linux:现阶段还处在一个新鲜的尝试和接触阶段,尚不清楚自己要用它来做什么。不过我非常认同老师说的打好基础的重要性,把概念结合实际操作理解透彻了再想应用,我认为更稳妥。

三、基本概念和操作

  • 终端的概念:本质上是对应着 Linux 上的 /dev/tty 设备,默认提供了 6 个纯命令行界面的终端,在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换,通过按下[Ctrl]+[Alt]+[F7]来切换回图形界面。
  • shell壳:他是我们与系统交流的中间程序,也是控制系统的脚本语言。
  • 命令行操作touch创建文件、cd进入一个目录、pwd查看当前所在目录,其他命令可参看Linux命令大全
  • 重要快捷键
    Ctrl+d:键盘输入结束或输出终端
    Ctrl+s:暂停当前程序,按任意键恢复运行
    Ctrl+z:将当前程序放在后台运行
    fg:后台运行程序恢复前台
    Ctrl+a:光标移至输入行头,相当于HomeCtrl+e:光标移至输入行末,相当于EndCtrl+k:删除从光标所在位置到行末
    Alt+Backspace:向前删除一个单词
    Shift+PgUp:将终端显示向上滚动
    Shift+PgDn:将终端显示向下滚动
  • 通配符:通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。
  • shell通配符
    *:匹配0或多个字符
    ?:匹配任意一个字符
    [list]:匹配list中的任意单一字符
    [!list]:匹配除 list中的任意单一字符 以外的字符
    [c1-c2]:匹配c1-c2中的任意单一字符
    {string1,string2...}:匹配string1或string2(...)其一字符串
    {c1,c2,...}:匹配c1-c2中的全部字符

四、用户及文件权限管理

  • 查看用户:输入whoami回车,输出第一列为当前伪终端用户名,第二列的pts/数字表示打开的伪终端序号,第三列则表示当前伪终端的启动时间。
  • who命令
    -a:打印能打印的全部
    -d:打印死掉的进程
    -m:和am i,mom likes相同
    -q:打印当前登录用户数和用户名
    -u:打印当前登录用户登录信息
    -r:打印运行等级
  • 创建用户

在 Linux 系统里, root 账户拥有整个系统至高无上的权利,比如 新建/添加 用户。

  • 这时就需要sudo这个命令。
    新建一个用户:$ sudo adduser 用户名 添加用户到系统并默认为新用户创建 home 目录:
    $ ls /home 切换新建用户:$ su -l 用户名 之后输入密码...退出用户和退出终端方法一致。
  • 用户组
    使用groups命令,显示为用户名:用户组或者使用cat命令,直接查看/etc/group文件。用户需要加入sudo组才能获得root权限,操作如下:
    $ su shiyanlou # 此处需要输入shiyanlou用户密码 $ groups lilei $ sudo usermod -G sudo lilei $ groups lilei
  • 删除用户$ sudo deluser 用户--remove-home
  • 查看文件权限
    文件类型:Linux 里面一切皆文件。
    文件权限:一个目录同时具有读权限执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。
  • ls命令的常用用法:
    ls:列出并显示当前目录下的文件
    -A:显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。
    -Al:查看某一个目录的完整属性
    -dl<目录名>:显示所有文件大小
    -AsSh:其中小s为显示文件大小,大 S 为按文件大小排序,可用man知道如何按其它方式排序
  • 变更文件所有者$sudo chown <新所有者> <文件名>
  • 修改文件权限
  • 方式一:二进制数字表示
  • Linux支持bios安装吗 安装linux bios_操作系统

  • rwx对应拥有者,所属用户组,其他用户
    $ chmod 数字 文件名
  • 方式二:加减赋值操作
    go 还有 u 分别表示 group、others 和 user,+-分别表示增加和去掉相应的权限
    $ chmod go-rw 文件名
  • adduseruseradd区别

useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。

五、Linux 目录结构及文件基本操作

  • FHS标准
  • Linux支持bios安装吗 安装linux bios_运维_02

  • 目录的四种交互作用的形态
  • Linux支持bios安装吗 安装linux bios_Linux支持bios安装吗_03

  • 目标路径
    windows里磁盘、文件夹也有路径。在Linux中,使用 cd 命令可以切换目录。- 表示上一次所在目录, 通常表示当前用户的 home 目录。
  • 绝对路径
    以根" / "目录为起点的完整路径,以你所要到的目录为终点。这与windows我们下载软件时选择路径类似。
  • 相对路径
    以当前目录 . 为起点,以你所要到的目录为终点.使用 pwd 命令可以获取当前所在路径(绝对路径)。
  • 新建文件
    新建空白文件,因为在其它目录没有权限,所以需要先 cd ~ 切换回用户的 /home/用户名 目录
  • 新建目录
    使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用)。效果为$ mkdir -p father/son/grandson
  • 复制文件:
    使用 cp(copy)命令复制一个文件到指定目录。$ cp test(文件名) father/son/grandson(路径)
  • 复制目录
    要成功复制目录需要加上 -r 或者 -R 参数,表示递归复制。$ cp -r father family
  • 删除文件:
    使用 rm命令删除一个文件,用 -f可以强制删除参数。
  • 删除目录:
    要成功删除目录需要加上 -r 或者 -R 参数。
  • 移动文件:
    使用mv命令移动文件(剪切)。mv 源目录文件 目的目录
  • 重命名文件:
    mv 旧的文件名 新的文件名rename批量重命名
  • 查看文件:
    cat:正序显示打印文件内容到标准输出(终端),加上 -n 参数显示行号
    tac:倒序打印文件内容到标准输出(终端)
    nl:添加行号并打印,比cat -n 更专业的行号打印命令
  • 使用 moreless 命令分页查看文件
    用于阅读文件。打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用 Enter 键向下滚动一行,使用 Space 键向下滚动一屏,按下 h 显示帮助,q 退出。
  • 使用 headtail 命令查看文件
    只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。
  • 查看文件类型:使用 file 命令查看文件的类型

六、环境变量与文件查找

  • 变量
    declare:创建一个变量
    =:赋值运算符
    echo&$:读取变量的值,$ 符号用于表示引用一个变量的值
    变量名:并不是任何形式的变量名都是可用的,变量名只能是英文字母、数字或者下划线,且不能以数字作为开头
  • 环境变量
  • 判定环境变量:在当前进程的子进程有效则为环境变量,否则不是。
  • 三种环境变量相关的命令:
    set:显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
    env:显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
    export:显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。
  • 环境变量永久生效
    /etc/bashrc/etc/profile ,它们分别存放的是 shell 变量和环境变量。如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。
  • 添加自定义路径到“ PATH ”环境变量
    一定要使用绝对路径添加自定义路径到 PATH 环境变量:$PATH=$PATH:/home/shiyanlou/mybin>>: 表示将标准输出以追加的方式重定向到一个文件中
    > : 是以覆盖的方式重定向到一个文件中
  • 变量修改
  • Linux支持bios安装吗 安装linux bios_操作系统_04

  • 变量删除:使用 unset 命令删除一个环境变量
  • 让环境变量立即生效:
  • $ source .zshrc(配置文件)
  • $ . ./.zshrc(后面的文件必须指定完整的绝对或相对路径名)
  • 搜索文件
    whereis简单快速: 直接从数据库中查询,只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)。
    locate快而全: 手动执行一次 updatedb 命令,用于更新它的查找对象——“ /var/lib/mlocate/mlocate.db ”数据库,它可以用来查找指定目录下的不同文件类型。
    which小而精: 通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令
    find精而细: 它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。find 的第一个参数是要搜索的地方:$ sudo find /etc/ -name 文件或目录

注意 find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action] 。

  • 与时间相关的命令参数:
    -atime:最后访问时间
    -ctime:最后修改文件内容的时间
    -mtime:最后修改文件属性的时间
  • 与这些参数相关的天数命令(以 -mtime 参数举例)
    -mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
    -mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
    -mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
    -newer file:file 为一个已存在的文件,列出比 file 还要新的文件名
  • 列出 home 目录中,当天(24 小时之内)有改动的文件:
    $ find ~ -mtime 0
  • 列出用户家目录下比 Code 文件夹新的文件:
    $ find ~ -newer /home/shiyanlou/Code

七、文件打包与压缩

  • 常见常用的压缩包文件格式
    *.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 程序压缩的文件
  • 一些参数
    -r: 表示递归打包包含子目录的全部内容
    -q: 表示为安静模式
    -o: 表示输出文件,需在其后紧跟打包输出文件名
    -O: 解压时可以指定编码类型unzip -O GBK 中文压缩文件.zipdu: 分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小 $ du -h -d 0 *.zip ~ | sort(其中-h意为表达为人们可读的方式-d意为所查看文件的深度)
    -x:排除我们上一次创建的 zip 文件,否则又会被打包进这一次的压缩文件中。 $ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip设置压缩级别为 9 和 1(9 最大,1 最小)只能使用绝对路径
    -e: 创建加密压缩包
    -l: 将 LF 转换为 CR+LF,排除在 Windows 系统上打开看起来是没有换行的问题
  • zip压缩打包程序
    打包 :zip 打包输出文件名.zip 被打包目录 (目录请加 -r 参数)
  • zip解压缩
    解包:unzip something.zip(解压sth.到当前目录)
  • rar 打包压缩命令
  • rar 的命令参数没有 -,如果加上会报错
  • 从指定压缩包文件中删除某个文件:$ rar d shiyanlou.rar .zshrc
  • 查看不解压文件:$ rar l shiyanlou.rar
  • 使用 unrar 解压 rar 文件:$ unrar x shiyanlou.rar(全路径解压);$ mkdir tmp $ unrar e shiyanlou.rar tmp/(去掉路径解压)
  • tar 打包工具
  • 打包:tar -zcvf something.tar something
  • 解包:tar -zxvf something.tar
  • 指定路径:-C 参数
    压缩文件格式: 参数
    *.tar.gz : -z*.tar.xz : -J*tar.bz2 : -j
  • 一些参数:
    -c:创建一个 tar 包文件
    -f:用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后
    -p:保留绝对路径符
    解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):$ tar -xf shiyanlou.tar -C tardir 只查看不解包文件 -t 参数:$ tar -tf shiyanlou.tar

八、文件系统操作与磁盘管理

  • 查看磁盘的容量
  • df: 查看磁盘的容量
  • 增强可读性用参数-h: $ df -h
  • Linux支持bios安装吗 安装linux bios_Linux支持bios安装吗_05


  • 查看目录的容量
  • du: 查看目录的容量
  • 增强可读性用参数-h
  • 指定查看目录的深度-d:
  • Linux支持bios安装吗 安装linux bios_Linux支持bios安装吗_06

  • 常用参数:
    -a: 同--all 显示目录中所有文件的大小
    -s: 同--summarize 仅显示总计,只列出最后加总的值
  • 创建虚拟磁盘
  • dd命令:用于转换和复制文件,也可以读取文件或写入到这些文件。它的命令行选项格式为选项=值.可以用选项if(input file,输入文件)和of(output file,输出文件)改变标准输入和输出。
  • 使用 dd 命令创建虚拟镜像文件:
    从/dev/zero设备创建一个容量为 256M 的空文件:
    $ dd if=/dev/zero of=virtual.img bs=1M count=256
  • 使用 mkfs 命令格式化磁盘
    将我们的磁盘镜像格式化为ext4文件系统:
    $ sudo mkfs.ext4 virtual.img(磁盘)
    Linux支持的文件系统:
  • Linux支持bios安装吗 安装linux bios_操作系统_07

  • 使用 mount 命令挂载磁盘到目录树
    mount: mount 指令是告诉操作系统,对应的文件系统已经准备好,可以使用了,而该文件系统会对应到一个特定的点(称为挂载点)。挂载好的文件、目录、设备以及特殊文件即可提供用户使用。
    mount命令的一般格式如下:
    mount [options] [source] [directory] 一些常用操作:
    mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
  • 使用 umount 命令卸载已挂载磁盘
    $ sudo umount /mnt
  • 使用 fdisk 为磁盘分区
    进入磁盘分区模式:
    $ sudo fdisk virtual.img

九、Linux下的帮助命令

  • 内建命令与外部命令
  • 得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的.def中
    xxx is a shell builtin
  • 得到这样的结果说明是外部命令,正如上文所说,外部命令在/usr/bin or /usr/sbin等等中
    xxx is /usr/sbin/xxx
  • 若是得到alias的结果,说明该指令为命令别名所设定的名称
    xxx is an alias for xx --xxx
  • help命令
  • ubuntu 的环境base内置有help命令,可以直接使用
  • help 命令是用于显示 shell 内建命令的简要帮助信息,但是只能用于显示内建命令的帮助信息
  • ls --help:外部命令的话基本上都有一个参数--help
  • man命令
  • 通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性
  • 打开手册之后我们可以通过 pgup 与 pgdn 或者上下键来上下翻看,可以按 q 退出当前页面
  • man手册章节
  • info命令
    man 和 info 就像两个集合,它们有一个交集部分,但与 man 相比,info 工具可显示更完整的 GNU 工具信息。