〇、什么是Linux操作系统

Linux 是一种自由和开放源码的类 UNIX 操作系统。

Linux 是在 1991 由林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时编写的(真屌啊,人和人的差距怎么这么大!),主要受到 Minix 和 Unix 思想的启发。

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。这里可以下载到常见的发行版:Download Linux | Linux.org

一、Linux的文件系统结构

在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。

文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。

在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 来表示。

  • . :代表当前的目录,也可以使用 ./ 来表示;
  • .. :代表上一层目录,也可以 …/ 来代表。

如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。

Linux下的文件分隔标志是/,Windows下是\

系统启动必须:

  • /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。

  • /etc:存放所有的系统需要的配置文件和**子目录列表,**更改目录下的文件可能会导致系统不能启动。

    /etc/passwd —>存储所有用户信息

    /etc/group ---->存储所有组的信息

    /etc/shadow —>存储密码

  • /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:

  • /bin:存放着最常用的程序和指令

  • /sbin:只有系统管理员能使用的程序和指令。

外部文件管理:

  • **/dev **:Device(设备)的缩写, 存放的是Linux的外部设备。**注意:**在Linux中访问设备和访问文件的方式是相同的。

  • /media:windows的**其他设备,**例如U盘、光驱等等,识别后linux会把设备放到这个目录下。

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

临时文件:

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

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

  • /tmp:这个目录是用来存放一些临时文件的。

账户:

  • /root:系统管理员的用户主目录。

  • /home:用户的主目录,以用户的账号命名的。

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

  • /usr/bin:系统用户使用的应用程序与指令。

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

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

运行过程中要用:

  • /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。

  • /proc:管理**内存空间!**虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

扩展用的:

  • /opt:默认是空的,我们安装额外软件可以放在这个里面。

  • /srv:存放服务启动后需要提取的数据 (不用服务器就是空)

二、Linux常用命令

Linux 命令大全 | 菜鸟教程 (runoob.com)

查看手册页->man

man命令是Linux和Unix系统中非常重要的命令之一,可以帮助用户查找和理解系统命令和函数的使用。

手册页是有关系统命令、函数和文件格式的详细文档,提供了有关它们如何工作、如何使用以及相关选项的信息。

语法

1
man [选项] [命令/函数/文件...]

用法示例

  1. 查看命令的手册页:

    1
    man ls

    这会显示与 ls 命令相关的手册页,其中包含了关于 ls 命令的详细说明、选项以及使用方法。

  2. 查看系统调用函数的手册页:

    1
    man open

    这会显示有关 open 系统调用函数的手册页,其中包含了有关该函数的详细信息。

选项

  • -k:按关键字搜索手册页。
  • -f:显示与给定函数相关的手册页。
  • -section:指定手册页的特定部分。例如,man 3 printf 将显示与 printf 函数相关的手册页(第 3 部分,通常是库函数)。

使用技巧

  1. 使用 / 进行关键字搜索:在 man 页面中,按 / 键,然后输入要查找的关键字,按回车键进行搜索。
  2. 使用 q 键退出手册页查看。
  3. 手册页分为不同的部分,例如 1(用户命令),2(系统调用),3(C库函数),等等。可以使用 man 命令的 -section 选项来指定要查看的手册页的特定部分。

命令提示符

1
2
3
4
5
6
linus@ubuntu:~$ 

- linus:当前登录用户名
- ubuntu:当前主机名
- ~:当前所在目录,不带路径,~在Linux中代表用户的家(home)目录
- #:#表示管理员,$表示普通用户

切换用户->su

1
2
su [用户名]
su 直接回车:默认切换到超级用户

修改密码->passwd

1
2
3
passwd 用户名
sudo passwd root ----->可以更改超级用户的密码
sudo -----> 用超级用户的权限执行后面的指令

创建文件->touch

1
2
3
4
touch 文件名1 文件名2 文件名3
(touch可以同时创建多个文件,多个文件中间以空格作为分隔)
1、如果文件存在,更新文件的时间戳
2、如果文件不存在,表示创建文件

删除文件->rm

1
2
3
4
5
6
rm 文件名1  文件名2  文件名3 ···
可以同时删除多个文件,文件名中间以空格做分隔

rm -rv 要删除的目录名 ---->删除非空目录
-r参数的作用:删除目录
-v参数的作用:显示指令的删除过程

创建目录文件->mkdir

1
2
3
4
mkdir 目录的路径     ---->在指定路径下创建目录
mkdir -pv dir1/dir2/dir3
-p参数的作用:嵌套创建具有层级关系的目录
-v参数:显示指令执行的过程

修改文件的权限 ->chmod

Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

语法

1
2
chmod [-cfvR] [--help] [--version] mode file...
- [ugoa...][[+-=][rwxX]...][,...]

绝对路径->pwd

用于显示当前工作目录(Present Working Directory)的路径。这个命令可以帮助你确定当前所在的目录位置。

  • -L:显示逻辑路径,即软链接所指向的路径。
  • -P:显示物理路径,即不使用软链接。

在实际使用中,pwd 常常与其他命令和脚本一起使用,以便在执行脚本或命令时确定当前工作目录的位置。

关机->shutdown

shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。

1
2
3
# shutdown -p now  ### 关闭机器
# shutdown -H now ### 停止机器
# shutdown -r 09:35 ### 在 09:35am 重启机器

要取消即将进行的关机,只要输入下面的命令:

1
# shutdown -c

halt 命令通知硬件来停止所有的 CPU 功能,但是仍然保持通电。你可以用它使系统处于低层维护状态。注意在有些情况会它会完全关闭系统。

1
2
3
# halt             ### 停止机器
# halt -p ### 关闭机器、关闭电源
# halt --reboot ### 重启机器

poweroff 会发送一个 ACPI 信号来通知系统关机。

1
2
3
# poweroff           ### 关闭机器、关闭电源
# poweroff --halt ### 停止机器
# poweroff --reboot ### 重启机器

reboot 命令 reboot 通知系统重启。

1
2
3
# reboot           ### 重启机器
# reboot --halt ### 停止机器
# reboot -p ### 关闭机器

三、vim/vi 编辑器

vim 是一个程序开发工具而不是文字处理软件

vim 键盘图

vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)

命令模式

  • i – 切换到输入模式,在光标当前位置开始输入文本。
  • x – 删除当前光标所在处的字符。
  • : – 切换到底线命令模式,以在最底一行输入命令。
  • a – 进入插入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入插入模式。
  • O – 在当前行的上方插入一个新行,并进入插入模式。
  • dd – 删除当前行。
  • yy – 复制当前行。
  • p(小写) – 粘贴剪贴板内容到光标下方。
  • P(大写)-- 粘贴剪贴板内容到光标上方。
  • u – 撤销上一次操作。
  • Ctrl + r – 重做上一次撤销的操作。
  • :w – 保存文件。
  • :q – 退出 Vim 编辑器。
  • :q! – 强制退出Vim 编辑器,不保存修改。
  • nyy --从光标所在行开始复制向下n行

行间跳转:

  • gg 跳转到文件的首行
  • G 跳转到文件的最后一行
  • ngg 跳转到文件的第n行
  • nG 跳转到文件的第n行
  • gg=G 整个文本的格式化操作
  • ngg=mgg n-m行的文本格式化
  • nG=mG n-m行的格式化 ngg=mG n-m行的格式化
  • $ 跳转到光标所在行的行尾
  • 0 跳转到光标所在行的行首

输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • :w:保存文件。
  • :q:退出 Vim 编辑器。
  • :wq:保存文件并退出 Vim 编辑器。
  • :q!:强制退出Vim编辑器,不保存修改。
  • :set ts=4 设置tab为4个空格
  • :noh取消高亮
  • :set nu/nonu 显示/取消行号

ESC 键可随时退出底线命令模式。

修改vim配置

通过配置 ~/.vimrc 文件,可以定制化 Vim 的行为以适应个人需求。

  1. 基本设置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    set nocompatible " 禁用 Vi 兼容模式
    set number " 显示行号
    set relativenumber " 使用相对行号
    set nowrap " 禁用自动换行
    set autoindent " 自动缩进
    set smartindent " 智能缩进
    set tabstop=4 " Tab 键宽度为 4 个空格
    set shiftwidth=4 " 设置自动缩进的宽度为 4 个空格
    set expandtab " 将 Tab 转换为空格
  2. 颜色主题

    1
    2
    " 在 ~/.vim/colors/ 目录中放置主题文件
    colorscheme desert " 使用 desert 主题
  3. 插件管理器

    使用插件管理器可以更方便地安装和管理插件。例如,使用 Vundle:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    " 安装 Vundle
    set nocompatible
    filetype off
    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()

    " 在这里添加插件,例如:
    " Plugin 'VundleVim/Vundle.vim'
    " Plugin 'tpope/vim-fugitive'

    call vundle#end()
    filetype plugin indent on

    然后,在命令模式下执行 :PluginInstall 安装配置文件中列出的插件。

  4. 快捷键映射

    1
    2
    3
    4
    5
    6
    7
    8
    " 映射 <Leader> 为逗号
    let mapleader=","

    " 在 normal 模式下按 ,w 保存文件
    nnoremap <Leader>w :w<CR>

    " 在 normal 模式下按 ,q 退出 Vim
    nnoremap <Leader>q :q<CR>
  5. 搜索和替换

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    " 搜索时忽略大小写
    set ignorecase

    " 搜索时大小写敏感
    set smartcase

    " 启用增强搜索
    set incsearch

    " 高亮搜索结果
    set hlsearch
  6. 其他常用设置

    1
    2
    3
    4
    5
    6
    " 启用行尾空格高亮显示
    highlight ExtraWhitespace ctermbg=red guibg=red
    match ExtraWhitespace /\s\+$/

    " 在文件末尾自动添加换行符
    set endofline
    我使用的配置文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    " .vimrc - Vim configuration file.
    "
    " Copyright (c) 2010 Jeffy Du. All Rights Reserved.
    "
    " Maintainer: Jeffy Du <jeffy.du@gmail.com>
    " Created: 2010-01-01
    " LastChange: 2010-04-22

    " GENERAL SETTINGS: {{{1
    " To use VIM settings, out of VI compatible mode.
    set nocompatible
    " Enable file type detection.
    filetype plugin indent on
    " Syntax highlighting.
    syntax on
    " Setting colorscheme
    color mycolor
    " Other settings.
    set autoindent
    set autoread
    set autowrite
    set background=dark
    set backspace=indent,eol,start
    set nobackup
    set cindent
    set cinoptions=:0
    set cursorline
    set completeopt=longest,menuone
    set noexpandtab
    set fileencodings=utf-8,gb2312,gbk,gb18030
    set fileformat=unix
    set foldenable
    set foldmethod=marker
    set guioptions-=T
    set guioptions-=m
    set guioptions-=r
    set guioptions-=l
    set helpheight=10
    set helplang=cn
    set hidden
    set history=100
    set hlsearch
    set ignorecase
    set incsearch
    set laststatus=2
    set mouse=a
    set number
    set pumheight=10
    set ruler
    set scrolloff=5
    set shiftwidth=4
    set showcmd
    set smartindent
    set smartcase
    set tabstop=4
    set termencoding=utf-8
    set textwidth=80
    set whichwrap=h,l
    set wildignore=*.bak,*.o,*.e,*~
    set wildmenu
    set wildmode=list:longest,full
    set nowrap

    " AUTO COMMANDS: {{{1
    " auto expand tab to blanks
    "autocmd FileType c,cpp set expandtab
    " Restore the last quit position when open file.
    autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \ exe "normal g'\"" |
    \ endif

    " SHORTCUT SETTINGS: {{{1
    " Set mapleader
    let mapleader=","
    " Space to command mode.
    nnoremap <space> :
    vnoremap <space> :
    " Switching between buffers.
    nnoremap <C-h> <C-W>h
    nnoremap <C-j> <C-W>j
    nnoremap <C-k> <C-W>k
    nnoremap <C-l> <C-W>l
    inoremap <C-h> <Esc><C-W>h
    inoremap <C-j> <Esc><C-W>j
    inoremap <C-k> <Esc><C-W>k
    inoremap <C-l> <Esc><C-W>l
    " "cd" to change to open directory.
    let OpenDir=system("pwd")
    nmap <silent> <leader>cd :exe 'cd ' . OpenDir<cr>:pwd<cr>

    " PLUGIN SETTINGS: {{{1
    " taglist.vim
    let g:Tlist_Auto_Update=1
    let g:Tlist_Process_File_Always=1
    let g:Tlist_Exit_OnlyWindow=1
    let g:Tlist_Show_One_File=1
    let g:Tlist_WinWidth=25
    let g:Tlist_Enable_Fold_Column=0
    let g:Tlist_Auto_Highlight_Tag=1
    " NERDTree.vim
    let g:NERDTreeWinPos="right"
    let g:NERDTreeWinSize=25
    let g:NERDTreeShowLineNumbers=1
    let g:NERDTreeQuitOnOpen=1
    " cscope.vim
    if has("cscope")
    set csto=1
    set cst
    set nocsverb
    if filereadable("cscope.out")
    cs add cscope.out
    endif
    set csverb
    endif
    " OmniCppComplete.vim
    "set nocp
    "filetype plugin on
    let g:OmniCpp_DefaultNamespaces=["std"]
    let g:OmniCpp_MayCompleteScope=1
    let g:OmniCpp_SelectFirstItem=2

    " VimGDB.vim
    if has("gdb")
    set asm=0
    let g:vimgdb_debug_file=""
    run macros/gdb_mappings.vim
    endif
    " LookupFile setting
    let g:LookupFile_TagExpr='"./tags.filename"'
    let g:LookupFile_MinPatLength=2
    let g:LookupFile_PreserveLastPattern=0
    let g:LookupFile_PreservePatternHistory=1
    let g:LookupFile_AlwaysAcceptFirst=1
    let g:LookupFile_AllowNewFiles=0
    " Man.vim
    source $VIMRUNTIME/ftplugin/man.vim
    " snipMate
    let g:snips_author="Du Jianfeng"
    let g:snips_email="cmdxiaoha@163.com"
    let g:snips_copyright="SicMicro, Inc"
    " plugin shortcuts
    function! RunShell(Msg, Shell)
    echo a:Msg . '...'
    call system(a:Shell)
    echon 'done'
    endfunction
    nmap <F2> :TlistToggle<cr>
    nmap <F3> :NERDTreeToggle<cr>
    nmap <F4> :MRU<cr>
    nmap <F5> <Plug>LookupFile<cr>
    nmap <F6> :vimgrep /<C-R>=expand("<cword>")<cr>/ **/*.c **/*.h<cr><C-o>:cw<cr>
    nmap <F9> :call RunShell("Generate tags", "ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .")<cr>
    nmap <F10> :call HLUDSync()<cr>
    nmap <F11> :call RunShell("Generate filename tags", "~/.vim/shell/genfiletags.sh")<cr>
    nmap <F12> :call RunShell("Generate cscope", "cscope -Rb")<cr>:cs add cscope.out<cr>
    nmap <leader>sa :cs add cscope.out<cr>
    nmap <leader>ss :cs find s <C-R>=expand("<cword>")<cr><cr>
    nmap <leader>sg :cs find g <C-R>=expand("<cword>")<cr><cr>
    nmap <leader>sc :cs find c <C-R>=expand("<cword>")<cr><cr>
    nmap <leader>st :cs find t <C-R>=expand("<cword>")<cr><cr>
    nmap <leader>se :cs find e <C-R>=expand("<cword>")<cr><cr>
    nmap <leader>sf :cs find f <C-R>=expand("<cfile>")<cr><cr>
    nmap <leader>si :cs find i <C-R>=expand("<cfile>")<cr><cr>
    nmap <leader>sd :cs find d <C-R>=expand("<cword>")<cr><cr>
    nmap <leader>zz <C-w>o
    nmap <leader>gs :GetScripts<cr>

    let Tlist_Show_One_File=0
    set noswapfile
    set tags+=/usr/include/tags
    set tags+=./tags
    map ta :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

    let g:UltiSnipsJumpForwardTrigger = "<tab>"
    let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"


    " 获取当前用户名
    let s:current_user = $USER
    " 设定默认版本号
    let s:default_version = "1.0"

    function! ReplaceTemplateVariables(timer_id)
    let l:current_date = strftime("%Y-%m-%d")
    let l:current_filename = expand('%:t')

    " 替换对应的占位符
    execute "%s/%DATE%/" . l:current_date . "/g"
    execute "%s/%FILENAME%/" . l:current_filename . "/g"
    execute "%s/%AUTHOR%/" . s:current_user . "/g"
    execute "%s/%VERSION%/" . s:default_version . "/g"
    " 设置光标位置
    call cursor(13, 1)
    endfunction

    " 安装 Timer 插件(如果尚未安装)
    if !exists('g:loaded_timer') && !exists('g:did_timer_plugin')
    silent! timer defer timer_start 1
    let g:did_timer_plugin = 1
    endif
    autocmd BufNewFile *.c 0r ~/.vim/templates/skeleton.c | call timer_start(100, 'ReplaceTemplateVariables')

主函数的自动补全

1
2
3
4
5
cd ~
ls -a
cd .vim
cd snippets
vim c.snippets

c.snippets:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# file header
snippet hdr
/*******************************************************************************
* `expand('%:t')` ${1}
*
* @fcopyright Copyright `strftime("%Y")` SIC Microelectronics CO. Ltd.
* @fauthor [`g:snips_author`] [`g:snips_email`]
* @fversion 1.0
*
* @fhistory [`strftime("%Y-%m-%d")`] Create file.
******************************************************************************/
${2}
# function header
snippet funh
/*
* function: ${1}
* @param [ in] ${2}
* @param [out] ${3}
* @return ${4}
*/${5}
# include file
snippet Inc
#include <${1:stdio}.h>${2}
snippet inc
#include "${1:`Filename("$1")`}.h"${2}
# macro defines
snippet def
#define
snippet ifd
#ifdef ${1}
#endif
snippet ifn
#ifndef ${1}
#endif
snippet once
#ifndef ${1:`toupper(Filename('', 'UNTITLED').'_H')`}
#define $1

${2}

#endif /* $1 */
# condition
snippet if
if (${1:/* condition */}){
${2:/* code */}
}
snippet else
else{
${1:/* code */}
}
# loop
snippet do
do{
${2:/* code */}
} while (${1:/* condition */});
snippet while
while(${1:/* condition */}){
${2:/* code */}
}
snippet for
for (int ${1:i} = $2; $1 < $3; $1++ ){
${4}
}
# main()
snippet main
#include <stdio.h>
${1}
int main(int argc, const char *argv[]){
${2}
return 0;
}

四、Ubuntu换源

1.备份原来的源,将以前的源备份一下,以防以后可以用的。

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2.打开/etc/apt/sources.list文件,在前面添加如下条目,并保存。

1
sudo vim /etc/apt/sources.list
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse

3.更新

更新源

1
sudo apt-get update

如出现依赖问题,解决方式如下:

1
sudo apt-get -f install

更新软件:

1
sudo apt-get upgrade
附上网上找的各种源的地址

1.企业源:
阿里云开源镜像站: http://mirrors.aliyun.com/
搜狐开源镜像站:http://mirrors.sohu.com/
网易开源镜像站:http://mirrors.163.com/

2.教育源:
重庆大学:http://mirrors.cqu.edu.cn/
北京理工大学:
http://mirror.bit.edu.cn (IPv4 only)
http://mirror.bit6.edu.cn (IPv6 only)
北京交通大学:
http://mirror.bjtu.edu.cn (IPv4 only)
http://mirror6.bjtu.edu.cn (IPv6 only)
http://debian.bjtu.edu.cn (IPv4+IPv6)
兰州大学:http://mirror.lzu.edu.cn/
厦门大学:http://mirrors.xmu.edu.cn/
上海交通大学:
http://ftp.sjtu.edu.cn/ (IPv4 only)
http://ftp6.sjtu.edu.cn (IPv6 only)
清华大学:
http://mirrors.tuna.tsinghua.edu.cn/ (IPv4+IPv6)
http://mirrors.6.tuna.tsinghua.edu.cn/ (IPv6 only)
http://mirrors.4.tuna.tsinghua.edu.cn/ (IPv4 only)
天津大学:http://mirror.tju.edu.cn/
中国科学技术大学:
http://mirrors.ustc.edu.cn/ (IPv4+IPv6)
http://mirrors4.ustc.edu.cn/
http://mirrors6.ustc.edu.cn/
西南大学:http://linux.swu.edu.cn/swudownload/Distributions/
东北大学:
http://mirror.neu.edu.cn/ (IPv4 only)
http://mirror.neu6.edu.cn/ (IPv6 only)
电子科技大学:http://ubuntu.uestc.edu.cn/
青岛大学:http://mirror.qdu.edu.cn/
开源中国社区 http://mirrors.oss.org.cn/
大连东软信息学院 http://mirrors.neusoft.edu.cn/
华中科技大学 http://mirrors.hust.edu.cn/
中山大学 http://mirrors.sysu.edu.cn/
清华大学学生网管会 http://mirrors.tuna.tsinghua.edu.cn/
浙江大学 http://mirrors.zju.edu.cn/web/

台湾淡江大学 http://ftp.tku.edu.tw/Linux/

Linux运维派开源镜像 http://mirrors.skyshe.cn/

各种源原始地址:中国Linux源镜像站大全 - starnight_cyber - 博客园 (cnblogs.com)