Linux 必知必会

news2024/10/2 10:31:17

一、Linux 简介

在这里插入图片描述

Linux 与 Windows 和 Mac OS 等系统一样,它也是一个操作系统,并且是一个开源的类 unix 操作系统。凭借着其免费、安全、高稳定性等特点,被广泛应用于服务器、嵌入式开发等领域,并且在服务器领域一枝独秀!我们熟知的安卓操作系也是基于 Linux 操作系统开发出来的。

1.1 Unix 与 Linux 和 Mac OS 的关系

Uinx 是20世纪70年代初出现的一个操作系统,现如今用的很少了,但却是上面三个操作系统的“老大哥”。三者身上都或多或少地拥有 Unix 的影子。windows系统借鉴过 unix 的一些理念,而 Linux 和 Mac OS更是在 unix 的基础之上开发而来,所以它们二者被称为“类 Unix 操作系统”,在很多方面都是相似的。

1.2 Linux 操作系统

1991年,荷兰在校大学生 Linus Torvalds(林纳斯·托瓦兹,被称为 linux 之父)从 Minix(mini-nuix)得到灵感,开发出了一个操作系统内核,取名为 Linux (linus‘s unix 的简写),并将源代码公开到了网上。

我们注意到,linus 只是完成了一个内核,相对于一个真正的操作系统,它还缺少很多东西。而真正使 Linux 系统走向一个完整操作系统的,是另一帮人——GNU的成员。

GNU 是一个操作系统项目,该项目主要是为了建立免费的开源的类 UNIX 系统,Emacs 编辑器、GCC 编译器都是由该计划开发出的。虽然 GNU 致力于开发一个操作系统,开发出了很多应用,但始终没有一个让他们满意的内核,于是就看上了 Linux 内核,两家“喜结连理”。从此,Linux 内核便有了 GNU 计划中各种软件的加持,成为了一个真正意义上的操作系统。因此,现在的 linux 操作系统,全称为 GNU/Linux 操作系统。

1.3 Linux 发行版

因为 linux 是一个开源的操作系统,所以有很多公司、开发者在 Linux 内核基础上开发出了自己的操作系统,这些操作系统被统称为 linux 发行版。它们主要是在桌面环境和包管理器上做了大刀阔斧的修改,其他方面修改的不多,所以使用起来是大同小异的。

目前主流的 Linux 发行版有:

Linux 主流发行版

  • Debian及其派生版本:Ubuntu、Linux Mint。
  • Fedora及其相关版本:Red Hat Enterprise Linux、CentOS。
  • openSUSE
  • 其他不太流行的版本……

其中,Ubuntu 是大部分人入门 linux 系统的选择,我们这里也选择 Ubuntu 。到 Ubuntu 官网下载安装镜像,使用 Vmware Workstation 等虚拟机软件安装即可。安装教程十分简单,网上也有大量的教程,大家自行搜索。

Ubuntu 的桌面:

在这里插入图片描述

二、Shell 的使用

2.1 什么是 Bash Shell

shell 是一个命令解释器,用来执行各种命令。它有点类似于 python 的解释器,也可以编写程序,所以也被称为 shell 语言。但shell 存在的意义并不是为了像 python 那样开发各种各样的软件,而是在于执行用户的命令。

shell 的意思是外壳,我们可以把它看作是操作系统的“外壳”,我们要想和操作系统打交道,就借助于这层“外壳”。

shell 的版本有很多,如 sh、zsh、bash,而 Ubuntu 自带的是 bash,这些 shell 都是差不多的,我们就用默认的 bash shell 就好。

在 Ubuntu 中 找到一个名字叫做“终端”的应用程序,打开后就直接进入了 bash 的操作界面:除了一些字母外,没有任何东西,一切操作都是通过键盘输入命令来完成。

退出 sehll 可以点击右上角的关闭按钮,但更符合规范的做法是输入exit然后回车,这是我们学到的第一条 shell 命令。

2.2 shell 提示符

进入 bash 后,会显示一个 shell 提示符,就是类似下面的一些字母:

hugh@hugh-vm:~$ 

它的含义是用户名@主机名称:当前所在的路径和用户类型

  • 用户名称和主机名称:安装时,输入的是什么就显示什么。

  • 当前所在路径:它可以是一个形如/xxx/xxx的路径,也可以是一个~

    ~:代表用户家目录,即/home/用户名/,我的用户名是“hugh”,那么家目录就是/home/hugh~是 shell 启动时的默认目录。

  • 用户类型默认是普通用户,用$指示。还有一种超级用户,用#指示。它们二者的区别就是权限的不同,会在后面讲解。

2.3 shell 命令基础

linux 的命令很多,我们会在后面分类学习,在此先通过几个命令来了解一下 shell 的使用:

shell 命令由三部分组成:命令、选项和参数。同一个命令搭配不同的选项会有不同的效果,而参数通常是被执行命令的对象。

另外,选项通常都是以--开头,但大多数时候用简写形式-,比如--all可以简写为-a。在命令的帮助信息中,可以获取到各种选项及其简写形式。

  • 获取帮助:

    任何命令 --help
    
  • 获取命令的完整说明:

    man 任何命令
    
  • 立刻关机、重启:

    poweroff  # 关机
    reboot    # 重启
    
  • 查看网卡信息(主要是IP地址):

    ip addr
    
  • 列出当前目录下的内容:

    ls
    

    选项:

    • -a:显示隐藏文件和目录(.开头的文件和目录)。
    • -l:列出文件类型、大小等更加详细的内容。
    • -F:在列出的文件名称后加一个标识符;例如可执行档则加 “*”, 目录则加 “/”。

    命令ls -alF使用很频繁,为了方便,linux 提前为其起了个别名:ll,使用llls -alF是一样的。

  • 显示执行命令的历史记录:

    history
    

    要执行某一条历史记录,就执行:! 数字,这个数字就是历史记录中,命令前面的数字。

    选项:

    • -c:清空历史记录。
  • 查找命令(可执行文件及别名 )的所在位置:

    which 命令
    
  • 打印指定内容:

    echo "阿巴阿巴"
    # 输出:阿巴阿巴
    

    该命令通常配合重定向一起使用,单独使用的话,没什么用。

2.4 配置环境变量

在 linux 中,有一些文件和目录是以.开头的,这表示它们是隐藏的。不过,这种隐藏只是显示的时候默认不显示,其他方面和普通文件没有区别。

在用户加目录下,有一个隐藏文件.bashrc。它是 bash 的配置文件,主要保存用户对 bash 的一些设置,比如命令别名,环境变量等。这里说一下环境变量的配置:

通过文件管理器,双击打开~/.bashrc文件,在最后一行写入以下内容:

export PATH=这里写路径:$PATH

配置完成后,还需要加载一下:

source ~/.bashrc

注意:每次修改完.bashrc文件,都需要重启 shell ,或者执行上面的加载命令。

2.5 命令别名

别名是指给一个复杂的命令起一个简单的名称,然后用别名代替原来复杂的命令。比如,之前提到过的ll命令,就是命令ls -alF的一个别名。

  • 查看所有别名:alias

  • 设置别名:

    • 仅当前会话有效:

      alias 别名='命令'
      
    • 永久有效:将上述命令写入~/.bashrc文件中,或者执行:

      echo "alias 别名='命令'" >> ~/.bashrc  # 注意引号
      
  • 取消别名:

    • 暂时取消:

      unalias 别名
      
    • 永久取消:从~/.bashrc文件中,删除设置别名的那一行命令。

2.6 快捷键

快捷键说明
上下键快速输入最近执行过的命令
tab输入不完整的命令,按tab键,系统会提示可能的命令。
ctrl + a将光标移至行首
ctrl + e将光标移至行末
ctrl + c终止正在执行的程序
ctrl + z暂停正在执行的程序,并挂到后台。jobs命令列出当前任务,fg 任务号恢复到前台。bg 任务号挂到后台。
ctrl + d等同于exit,退出当前 shell 会话
ctrl + l等同于clear,清屏
ctrl + k删除从光标到行末的所有字符
ctrl + u删除从光标到行首的所有字符
ctrl + r搜索命令历史记录,tab键选中
ctrl + w按照单词或空格向前删除
ctrl + 左右键按照单词或空格左右移动光标

三、Linux 系统目录结构

在这里插入图片描述

Linux 的文件系统是树结构,没有 C、D 盘一说,所有的目录都是放在根目录/下:

  • /bin:存放着普通用户使用的命令。

    在 linux 系统中,不管什么软件,只要看到 bin 目录,那么里面存放着的就是一些可执行文件。

  • /boot:存放的是启动 Linux 时使用的一些核心文件。

  • /dev:存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc:存放系统管理所需要的配置文件和子目录。

  • /home:存放普通用户的主目录(或者叫家目录)。

    在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve,并用~表示当前用户的家目录。

  • /lib:存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media:linux 系统会自动识别一些设备,例如U盘、光驱等等挂载到这个目录下。

  • /mnt:该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

  • /opt:给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc:存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内核的映射,我们可以通过直接访问这个目录来获取系统信息。

  • /root:存放超级用户的家目录。

  • /sbin:存放的是超级用户使用的命令。

  • /srv:该目录存放一些服务启动之后需要提取的数据。

  • /sys:跟/proc非常类似,也是一个虚拟的目录,存放着进程信息、设备信息等的映射。

  • /tmp:存放一些临时文件的。

  • /usr:用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

  • /usr/bin:普通用户使用的应用程序。

  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。

    上面两个目录在根目录下都有同名的目录,根下的两个目录是上面两个目录的软链接,软链接类似于 windows 中的快捷方式。所以图片中才会画了两个箭头。

  • /usr/src:内核源代码默认的放置目录。

  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。

四、管道与重定向

4.1 管道

管道是将一个命令的输出作为另一个命令的输入,它的格式为命令1 | 命令2 | ……,其中|叫做管道符,是我们的主角。

比如,我们可以通过管道将 列出所有进程的命令 和 过滤命令 结合起来,这样就能找到想要的进程(以 python 进程为例):

ps aux | grep "python"  # ps aux 会列出所有进程,grep 从列出的所有进程中过滤出 python 进程

4.2 重定向

重定向是指:将一个命令的输出或输入目标(文件或设备)改为另一个(文件或设备)。最常见的用法,就是将默认输出到屏幕上的信息改为输出到某个文件中。

比如,下面的命令,会将本该被输出到屏幕上的“hello,world”,改为输出到到 a.txt 文件中:

echo "hello,world" > a.txt  # hello,world 会被保存在 a.txt 中

重定向符号:

  • >:输出重定向到一个文件或设备,覆盖原来的文件;
  • >! :输出重定向到一个文件或设备,强制覆盖原来的文件;
  • >>:输出重定向到一个文件或设备,追加原来的文件;
  • <:输入重定向到一个程序,它和输出重定向类似。

五、目录和文件

5.1 绝对路径和相对路径

  • 绝对路径:

    从根目录/开始表示的路径叫做绝对路径,比如,表示桌面目录的路径:

    /home/你的用户名/桌面
    
  • 相对路径:

    在使用ll命令查看时,目录下会有两个特殊的子目录 ...,前者代表的是当前目录本身,后者表示当前目录的上一级目录

    从上面两个目录开始表示的路径就叫做相对路径,即相对于当前目录来表示的路径。

    比如,通过相对路径表示当前目录下foo/bar目录:

    ./foo/bar
    

    再比如,表示当前目录的上一级目录的上一级目录下的foo目录:

    ../../foo
    
  • 运行可执行文件:

    Linux 运行可执行文件需要通过./来运行,比如,当前目录下有一个start可执行文件,执行的话:

    ./start    # 真确
    start      # 错误
    

5.2 目录和文件操作

  • 切换目录:

    cd 路径  # 切换到某一路径
    cd ~    # 切换到用户家目录
    cd -    # 切换到上一次使用的目录
    cd ..   # 切换到上级目录
    
  • 查看目录或文件的大小:

    du -sh 路径
    
  • 移动文件或目录:

    mv 源路径 目标路径    # 移动文件
    mv a.txt  b.txt    # 起到重命名的效果,a.txt 重命名为 b.txt
    
  • 拷贝文件或目录:

    cp 源文件路径 目标路径
    cp -p 源文件路径 目标路径  # 保持原来的文件属性
    cp -r 源目录路径 目标路径  # 拷贝目录
    
    cp a.txt  b.txt    # 起到重命名的效果,a.txt 重命名为 b.txt
    
  • 创建目录:

    mkdir 目录路径
    mkdir 目录路径1 目录路径2 ……    # 创建多个
    mkdir -v 目录路径    # 显示详细信息
    mkdir ./{dir1, dir2,……}    # 在同一路径下创建多个
    
    
    # 假设当前目录下,没有 ./a/b/c 这个多级目录
    # 如果要创建这个多级目录,则创建时必须加 -r 选项
    # 这样会自动递归的创建这三个目录,否则无法创建
    mkdir -r ./a/b/c  # 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
    
  • 创建文件:

    touch 文件路径    # 文件已存在则更新创建时间
    touch 文件路径1 文件路径2  # 创建多个
    touch file{1,2,3}    # 创建file1,file2,file3 这三个文件
    touch file{1..100}    # 创建file1到file100,共100个文件
    touch file{a..z}     # 同上
    
  • 删除文件或目录:

    rm 文件名称
    rm -v 文件名称  # 显示详细信息
    rm -r 目录    # 删除目录必须加 -r 选项
    rm -f 文件    # -f 表示强制删除,对于目录也是如此
    rm *.log     # 删除当前目录下所有名称以 .log 结尾的文件, * 代表匹配任意字符
    

    还有一个及其危险的命令:rm -rf /*,这表示删除根目录下的所有一切,有的程序员会拿这个命令开玩笑,大家千万不要用!!!

  • 查看文件内容:

    cat 文件路径
    
    less 文件路径    # 分页查看内容,按上下键移动内容,q 键退出
    
    head 文件路径    # 查看文件前面一部分,默认为前10行
    head -n5 文件路径   # 查看前5行
    
    tail 文件路径    # 查看文件后面一部分,默认为后10行
    tail -20 文件路径    # 查看后20行
    tail -f 文件路径     # 动态查看内容的变化
    
  • 计算文件的Byte数、字数、或行数:

    wc 文件路径    # 会显示三个数字,分别是:行数、单词数、字节数
    
  • 查找文件里符合条件的字符串:

    grep "匹配模式" 文件路径   # 会返回所有包含匹配内容的行
    grep -i "匹配模式" 文件路径    # 忽略大小写
    

5.3 文件的属性

使用ll查看目录内容时,会列出一大堆东西,我们现在看看这些东西到底是什么,也许有些概念还没听说过,但没关系,后面会详细讲解。

下面是一些ll命令的输出:

drwxr-xr-x  2 hugh hugh 4096  1月 20 12:20 桌面/
-rw-------  1 hugh hugh 3399  1月 20 11:13 .bash_history
-rw-r--r--  1 hugh hugh  220  1月 13 16:52 .bash_logout
-rw-r--r--  1 hugh hugh 3771  1月 18 18:39 .bashrc

这些内容就是文件的属性,它们各自的含义如下:

文件类型权限硬链接数量所属用户所属用户组最近修改时间文件或目录名称
drwxr-xr-x2hughhugh1月 20 12:20桌面/

文件类型有以下几种:

  • -:普通文件,如文本文件、图片、压缩包等;
  • d:目录文件,没错,linux 将目录也视为文件;
  • b:块设备文件,如硬盘等;
  • c:字符设备文件,例如键盘、鼠标等;
  • s:套接字文件,通常用在网络连接、进程间通信;
  • p:管道文件;
  • l:链接文件;

如果要查看文件的具体信息:

file 文件路径
  • 1

六、硬链接和软链接

硬链接和软链接的功能是基本一样的,都是为了让一个文件在多个不同的路径中能被访问。在学习它们的不同之前,需要先了解一下 Linux 文件系统的原理:

在 Linux 中,文件被分成两部分:

  • Block:记录数据;
  • Inode(i 节点):记录文件的属性信息,但不记录文件名。

文件名被单独保存,指向 inode,再由 inode 指向真正的数据。

6.1 硬链接(Hard Link)

硬链接就是给同一个 inode 分配多个文件名,我们注意到,当一个文件被创建后,它的硬链接数量默认为1,也就是说,硬链接数量为0时,文件就不存在了。另外,Linux 是不允许给目录创建硬链接的。

创建硬链接:

ln 目标文件路径 链接的路径
  • 1

6.2 软连接(符号链接,Symbolic Link)

软链接就是新建了一个 inode,它有点类似于 Windows 的快捷方式,也用的更多。另外,Linux 是允许给目录创建软链接的。

创建软链接:

ln -s 目标文件路径 链接的路径
  • 1

最后,不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

七、用户和用户组

7.1 用户

Linux 系统是一个多用户操作系统,任何一个要使用系统资源的人,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户机制的作用在于:

  • 系统中每一个进程都依赖于一个用户来运行;
  • 不同的用户会有不同的权限,以保证系统的安全;
  • 每一个用户都有一个家目录,都有一个属于自己的系统环境。

每一个用户都有一个唯一标识 UID:

  • 0:超级用户,拥有最高的权限。
  • 1~200:系统用户,用来运行系统自带的进程。
  • 201~999:系统用户,用来运行用户安装的程序。
  • 1000+:普通用户,正常登录使用系统的用户,权限比较小。

7.1.1 用户相关文件

Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有/etc/passwd/etc/shadow/etc/group这几个。

  • 用户信息文件:

    /etc/passwd中保存着所有用户的详细信息,每一行代表一个用户,用冒号分割,分割为7段:

    hughx10001000hugh,/home/hugh/bin/bash
    用户名密码占位符用户UID用户组ID注释信息用户家目录的路径登录 shell
  • 影子文件:

    /etc/passwd类似,每一行也是用冒号分割,一共9段:

    hugh6 66YusQ6WaOC……190050999997一般为空一般为空保留字段
    用户名密码的密文密码的最后一次修改时间(时间戳)两次密码修改间隔的最小时间密码的有效期:273年到期之前的提醒天数口令过期多少天后,该账号被禁用。账号失效时间未使用

7.1.2 用户相关的命令

  • 输出指定用户的用户和用户组信息:

    id 用户名    # 当没有指定用户时,使用当前用户信息
    
    • 1
  • 新建用户:

    useradd 用户名
    useradd -u 3000 用户名   # 指定用户 UID
    useradd -g 组名 用户名    # 指定用户所属基本用户组
    useradd -G 组名1,组名2…… 用户名    # 指定用户所属扩展用户组
    useradd -d 路径 用户名    # 指定用户家目录的路径
    useradd -M 用户名    # 不建立用户家目录
    useradd -s      # 不允许该用户登录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意:一个用户只能属于一个基本用户组,但可以属于多个扩展用户组。

  • 删除用户:

    userdel 用户名
    userdel -r 用户名    # 同时删除用户家目录
    
    • 1
    • 2
  • 修改用户:

    usermod 选项 用户名    # 选项与 useradd 中的相同
    
    # 将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer
    usermod -s /bin/ksh -d /home/z –g developer sam
    
    • 1
    • 2
    • 3
    • 4
  • 修改密码:

    passwd 用户名   # 设置或修改密码,随后会有提示,按照提示输入即可
    passwd -d 用户名   # 删除密码
    passwd -l 用户名   # 锁定账户,用户会无法登录
    passwd -u 用户名   # 解锁账户
    passwd -S 用户名    # 显示密码信息
    
    • 1
    • 2
    • 3
    • 4
    • 5

7.2 用户组

为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以通过组来快速分配权限。

7.2.1 用户组相关的文件

  • 组信息文件:

    依旧是冒号分割,共4段:

    hughx100我的为空
    组名组密码占位符组GID组中附加用户

7.2.2 用户组相关的命令

  • 新建用户组:

    groupadd 组名
    groupadd -g 用户组GID 组名  # 指定新用户组的 GID
    groupadd -o 组名    # 允许GID重复,通常与-g 连用
    
    • 1
    • 2
    • 3
  • 删除用户组:

    groupdel 组名   # 组内不能有用户
    
    • 1
  • 修改用户组:

    groupmod -g 用户组GID 组名  # 修改 GID
    groupmod -n 新组名 旧组名  # 修改组名
    groupmod -o 组名    # 允许GID重复,通常与-g 连用
    
    • 1
    • 2
    • 3

7.3 切换当前用户和提升权限

su命令用于切换当前用户为其他用户,需要输入目标用户的密码,root 用户切换到其他用户则不需要密码。

su 用户名    # 切换用户,会加载目标用户的环境变量
su - 用户名    # 切换用户并打开新的 shell,会加载目标用户的环境变量
  • 1
  • 2

sudo命令可以使普通用户以超级用户的身份允许命令,也就是说,通过sudo执行的命令,就如同是 root 亲自在执行。

sudo 命令     # 需要输入当前用户的密码
  • 1

八、文件权限

还记得文件属性一节中,提到过的权限属性吗?使用ll命令查看目录内容,就能看到每个文件最前面的权限属性,它看起来是这样子的:

rwxrwxr-x    # 注意,这里将第一个字母去掉了,那是文件类型
  • 1

将其三位一组地分开:

rwxrwxr-x
文件所属用户的权限文件所属用户组的权限其他用户的权限

这四个符号代表了四种权限:

符号表示对应权限数字表示
r读取权限4
w写入权限2
x执行权限1
-没有对应的权限0

符号表示一般供给用户查询使用,而数字表示一般是修改权限使用。

8.1 修改权限

chmod 用户身份(u、g、o)授予方式(+、-、=)权限 文件路径
# u、g、o代表用户、用户组、其他用户
# +、-、=代表添加某一权限、取消某一权限、直接设定权限

chmod u+w 文件路径    # 给用户添加写权限
chmod g-r 文件路径    # 给用户组取消读取权限
chmod o=rw 文件路径    # 给其他用户直接设定读写权限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

通过数字表示修改权限,需要对文件所属用户、文件所属用户组、其他用户的权限分别进行计算,然后按照对应顺序授予权限,比如:

# 文件所属用户、文件所属用户组、其他用户都只有写权限
chmod 222 文件路径

# 文件所属用户、文件所属用户组、其他用户都有完整的权限
chmod 777 文件路径    # 因为,读、写和执行=4+2+1=7

# 文件所属用户有读、写、执行权限,用户组和其他用户有读和执行权限
chmod 755 文件路径    # 注意三个数字的对应顺序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

8.2 文件特殊属性

改变文件属性:

chattr -+= 属性 文件路径
  • 1

常用属性有以下几种:

  • a:让文件或目录只能追加内容;
  • b:不更新文件或目录的最后存取时间;
  • i:不能任意更动文件或目录。

九、软件管理

9.1 更换软件源

由于 Ubuntu 的官方软件源速度很慢,所以我们需要更换为国内第三方的软件源。

这里以清华大学开源软件镜像站为例:

  1. 打开镜像站官网,搜索 Ubuntu,然后打开。

  2. 选择对应的 Ubuntu 版本。

  3. 复制软件源配置信息内容。

  4. 备份原有软件源配置文件(可选):

    sudo cp /etc/apt/sources.list  /etc/apt/sources.list.bak
    
    • 1
  5. 使用熟悉的编辑器打开/etc/apt/sources.list文件,比如 vim 。

  6. 清空原有内容,将复制的内容粘贴进去,保存。

  7. 更新存储库引索(软件源):

    sudo apt-get update
    
    • 1

9.2 通过 deb 文件安装

.deb文件类似于 windows 的.exe文件,它是 Debian 系 Linux 系统的软件安装包。

使用 deb 文件安装软件,要先到软件官网下载 deb 文件,然后用下面的命令安装:

sudo dpkg -i deb文件的路径
  • 1

如果提示有依赖问题,就通过下面的命令安装依赖:

sudo apt-get install -f
  • 1

9.3 通过 apt 包管理器管理软件

apt 是 Debian 系 Linux 系统的安装包管理工具,它使用起来很简单,但功能却很强大:

sudo apt install 软件包名称    # 安装软件


sudo apt upgrade    # 升级已安装软件
apt list --upgradeable    # 列出可更新的软件包及版本信息

sudo apt search 软件包名称    # 搜索软件包信息

sudo apt remove 软件包名称    # 卸载软件
sudo apt purge  软件包名称    # 卸载并移除配置文件

sudo apt autoremove    # 清理不再使用的依赖和库文件
sudo apt autoclean     # 清理安装过程中产生的文件

9.4 通过源码安装

有些软件没有被收录进软件镜像源,或者说我们需要使用最新的版本,这时候就要自己去他们的官网或者是代码托管平台下载最新的软件源码,自己来编译安装。

编译安装,会需要一些工具,这些工具一般需要我们自己安装:

sudo apt install build-essential
  • 1

以 redis 的安装为例:

# 获取源码压缩包,wget 是下载文件用的,第十二章有讲解
wget https://download.redis.io/releases/redis-6.2.6.tar.gz

# 解压缩,后面第十一节有讲解
tar -xzf redis-6.2.6.tar.gz

cd redis-6.2.6
make

这种方式比较麻烦,最好的办法是按照软件的官方文档一步一步来。

**注意:使用源码安装的软件,需要进行配置(制作系统服务)后,才能通过 systemctl 来管理!**systemctl 的用法和系统服务的制作方法,在下一篇文章讲解。

十、压缩和解压

Linux 下常见的压缩包格式有 zip、tar.gz 等,可以很方便的用命令解压。

  • .gz格式:

    gzip 文件路径    # 压缩
    
    gzip -d 压缩包路径    # 解压
    

    只能压缩文件,不能压缩文件夹,且压缩后会将原文件删除。

  • .zip格式:

    zip 压缩包名称 文件路径    # 压缩文件
    zip 压缩包名称 -r 目录路径    # 压缩目录
    
    unzip 压缩包路径    # 解压
    unzip 压缩包路径 -d 目标路径    # 解压到指定路径
    unzip -l 压缩包路径    # 不解压,只查看内容
    

    可能需要手动安装:sudo apt install zip

  • .tar格式:

    tar -czf 压缩包名称 文件路径1 文件路径2 ……    # 压缩文件,.tar.gz格式
    
    tar -xf 压缩包路径    # 自动识别格式并解压
    tar -xf 压缩包路径 -C 目标路径    # 解压到指定路径
    

十一、下载和上传文件

11.1 下载文件

通过 shell 下载文件,需要借助于 wget、curl 等下载工具。大部分系统默认自带 wget,不用下载,如果显示命令找不到,则需要安装一下。

  • 安装 wget 或 curl :

    运行下面的命令之一:

    sudo apt install wget
    sudo apt install curl
    
  • 使用 wget 或 curl 下载文件:

    wget 下载链接    # 下载到当前目录下
    wget -O 路径 下载链接    # 选项是大写的欧,下载到指定目录下
    
    # curl 用法与 wget 类似
    

11.2 上传文件

如果需要将文件上传到虚拟机或是远程服务器,需要使用基于 ssh 的 scp 命令。

我们这里使用的是虚拟机,但也要配置 SSH 才能正常使用 scp 命令。

关于 SSH 远程连接的配置、免密码登录等,都十分简单且网上有很多教程,请大家自行搜索配置。

在文件所在的机器上,执行以下命令(windows也支持此命令):

scp 需要上传的文件的路径 目标主机用户名@目标主机IP:上传的目标路径
scp -r 路径 用户名@IP:路径     # 递归复制目录及其内容
scp -C 路径 用户名@IP:路径     # 在复制过程中压缩文件或目录

Linux 必知必会_花_城的博客-CSDN博客_linux必知必会

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker-compose Install Prometheus

前言 Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上…

蒙代尔-弗莱明模型

蒙代尔-弗莱明模型 – 潘登的宏观经济学笔记 文章目录蒙代尔-弗莱明模型 -- 潘登的宏观经济学笔记IS-LM-BP蒙代尔-弗莱明模型资本完全流动固定汇率制度浮动汇率制资本完全不流动固定汇率制浮动汇率制资本不完全流动(KA主导&#xff0c;BP斜率小)固定汇率制浮动汇率制资本不完全…

代码随想录刷题|买卖股票问题的总结

目录 总结 121.买卖股票的最佳时机 问题描述 特点分析 动态规划思路 122.买卖股票的最佳时机Ⅱ 问题描述 特点分析 动态规划思路 123.买卖股票的最佳时机III 问题描述 特点分析 动态规划思路 188.买卖股票的最佳时机IV 问题描述 特点分析 动态规划思路 309.最…

tictoc例子理解 16-18

tictoc16-18tictoc 16 全局信号signaltictoc 17 在仿真界面幕布上显示总条数信息tictoc 18tictoc 16 全局信号signal 前一步的主要问题是&#xff0c;如果我们想要更改所收集的统计信息&#xff0c;就必须修改模型的代码。统计计算深入到模型代码中&#xff0c;很难修改和理解…

大型扫码点餐小程序系统源码

1. 开发语言&#xff1a;JAVA 2. 数据库&#xff1a;MySQL 3. 原生小程序 4. Sass 模式 5. 带调试视频 6. 可付费调试服务 扫码点餐小程序管理端&#xff1a; 数据统计&#xff1a;今日订单、堂食、预约、外卖、储值 堂食订单&#xff1a;订单号、商家、门店、类型、会员、桌位…

Spring进阶(二十)之事件处理

目录 为什么需要使用事件这种模式 事件模式中的几个概念 使用事件模式实现上面用户注册的业务 事件对象 事件监听器 事件广播器 事件广播默认实现 自定义用户注册成功事件类 用户注册服务 下面我们使用spring来将上面的对象组装起来 测试用例模拟用户注册 添加注册…

第四十篇 Vue封装swiper组件(v-swiper指令) 3.0

在前面讲到 Vue组件的封装不知道还记不记得&#xff0c;这里就不在过多的赘述&#xff0c;这里附上链接跳转可以进行回顾翻阅&#xff0c;上一篇内容​​​​​​​讲到这个自定义的指令&#xff0c;也就是为这篇封装swiper组件使用指令做铺垫的&#xff0c;那么也一同附在这里…

电子电气架构设计之三电系统设计

文中缩略词参考 SSTS&#xff1a;Sub System Technical Specification&#xff0c;子系统功能规范 CTS&#xff1a;Component Technical Specification&#xff0c;部件功能规范 DCDC&#xff1a;Direct Current Direct Current Converter&#xff0c;直流转直流变换器 BMS&…

Postgresql源码(92)深入分析HOT更新

0 概述与总结 hot更新已经有几篇分析了&#xff0c;这里是最后一篇&#xff08;总结性的&#xff0c;前面的可以忽略&#xff09;。前面在看update代码时&#xff0c;大部分集中在heap_update上&#xff0c;没有涉及寻找HOT链的逻辑。本篇重点看HOT链是如何使用的。 &#xf…

[附源码]计算机毕业设计JAVA鑫地酒店酒水库存管理系统论文

[附源码]计算机毕业设计JAVA鑫地酒店酒水库存管理系统论文 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; …

搜索技术——群智能

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 一&#xff1a;初识群智能 1.1&#xff1a;粒子群算法 粒子群算法&#xff0c;也称粒子群优化算法或鸟群觅食算法&#xff08;Particle Swarm Optimization&#xff09;&#xff0c;缩写…

语音特征:spectrogram、Fbank(fiterbank)、MFCC

1.各种语音特征 语音特征用于语音识别和语音合成等。 语音特征有声谱图spectrogram、Fbank(fiterbank)、MFCC(Mel-frequency cepstral coefficients)等。 Fbank 特征提取方法就是相当 于 MFCC 去掉最后一步的离散余弦变换&#xff08;有损变换&#xff09;. 在深度学习之前…

git学习笔记

1、安装及配置git 1、到官网下载git安装包&#xff1a;https://git-scm.com/download/win 2、安装完成后&#xff0c;菜单栏有如下工具 3、配置账户和邮件信息 $ git config --global user.name "xxx"$ git config --global user.email "xxxmegvii.com"4…

十大排序算法(C++)

十大排序算法Sorting algorithm(C) 百度百科&#xff1a; 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。排序算法&#xff0c;就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地…

高通平台开发系列讲解(AI篇)如何让yolov5运行在SNPE

文章目录 一、模型下载二、模型转换三、模型量化四、后处理加速沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍高通平台SNPE SDK运行yolov5。 一、模型下载 首先去git上下载yolov5s的代码和模型https://github.com/ultralytics/yolov5 二、模型转换 采…

Python爬虫实战,requests+xlwings模块,Python实现制作天气预报表!

前言 今天为大家介绍PythonExcel的实战项目&#xff0c;非常有趣&#xff0c;废话不多说。 Let’s start happily 开发工具 Python版本&#xff1a; 3.6.4 相关模块&#xff1a; xlwings模块 requests模块 pathlib模块 xlwings模块 json模块 环境搭建 安装Python并…

RAR压缩包,去除密码?

压缩包设置了加密&#xff0c;需要输入压缩包密码才能够顺利解压文件出来。但是有些时候&#xff0c;一些文件只需要一段时间内要加密&#xff0c;之后文件不需要加密了&#xff0c;每次解压文件的时候还是需要输入压缩包密码才行&#xff0c;就很麻烦&#xff0c;那么RAR压缩包…

SAP 接口主动推送企业微信异常消息

"推送企业微信格式lv_json { "msgtype": "markdown", "markdown": &&{ "content": "### 异常JOB通知\n >JOB名称&#xff1a; && gt_alv-jobname && \n 程序名称&#xff1a; && gt_…

戟星安全实验室|五分钟教你挖掘小程序漏洞

戟星安全实验室 忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等。 本文约1252字&#xff0c;阅读约需5分钟。 前言 现在大多小程序反编译教程所使用的都是node.js&#xff0c;操作过程较为麻烦…

第一周练习——认识复杂度和简单排序算法

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;《数据结构与算法》 &#x1f4e7;如果文章知识点有错误的地方&a…