avatar

Ebit

编程爱好者
欢迎交流!

全部文章总字数:434.8k


⣿⣿⣿⣿⣿⣿⡿⢛⠝⣠⡾⠋⠁⢀⣴⡶⣎⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣮⣭⣙⡻⠿⠋⣠⡞⠟⠃⠀⢀⡌⠻⢿⣿⣿
⣿⣿⣿⣿⣿⡿⠁⢀⣼⠟⠀⠀⣀⣽⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡍⢀⣴⡏⠁⠀⠀⢠⣿⣿⣷⣦⡹⣿
⣿⣿⣿⣿⣿⢣⣄⠈⠁⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠾⠏⡇⠀⡄⣠⡿⣿⣿⣿⣿⣿⣾
⣿⣿⣿⣿⣏⣿⣿⡦⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠐⢿⣿⡼⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⡟⣱⣿⣿⣿⣿⣿⣿⠃⣿⡿⣿⣿⣿⣿⣿⡟⠈⢿⣿⣿⣿⣿⢿⣻⣿⣿⣿⣿⡄⠀⠀⠀⠘⣮⣿⠝⢻⣿⣿⣿⣿
⣿⣿⣿⣿⣿⢏⣼⡿⣻⣿⣿⣿⣿⠃⢀⢹⡇⣿⣿⣿⣿⣿⣷⠀⡈⢻⣿⣿⣿⣎⢿⣏⢿⣿⣿⣷⡀⠀⠀⠀⠘⣿⡇⠘⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣞⡝⣴⣿⣿⣿⣿⠃⢠⣿⠸⡇⢹⣿⣿⣿⢻⣿⡀⣿⡌⢻⣿⣿⣿⡌⣿⡌⣿⣿⣿⣷⠀⠀⠀⠀⠈⠧⢠⣿⣿⣿⣿
⣿⣿⣿⣿⣿⡿⣸⣿⣿⣿⣿⠇⢀⡛⣛⣇⢇⠈⣿⣿⣿⡎⣿⠁⢛⣛⡀⢛⡿⢿⣿⡘⣧⢹⣿⣿⣿⡇⢠⣄⡀⣠⠀⠈⢻⣿⣿⣿
⣿⣿⣿⣿⣿⢡⣿⣿⣿⣿⡏⢀⡟⣸⣿⣿⡌⠀⡸⣿⣿⣷⢸⠀⢸⣿⣿⣄⠻⣿⣿⣧⢹⢸⣿⣿⣿⣿⠸⡿⢰⣿⠀⢀⠻⣿⣿⣿
⣿⣿⣿⣿⡏⣾⣿⣿⣿⣿⠀⣾⠻⠿⠿⢿⣷⡀⢣⢻⣿⣿⡆⠀⢸⣯⡻⠿⣧⡘⢿⣿⣆⠀⣿⣿⣿⣿⡇⠀⠈⠉⠀⢸⡆⢸⣿⣿
⣿⣿⣿⣿⣁⣿⣿⣿⣿⡇⠘⠁⣠⡶⠂⠀⠙⣷⡈⢧⠹⣿⣇⢠⠈⠉⣠⣤⡄⠈⠙⠿⣿⡄⣿⣿⣿⣿⡇⠰⠖⠃⠀⢸⣷⠈⣿⣿
⣿⣿⣿⣼⣿⣿⣿⣿⣿⠀⢀⣾⣿⠟⠁⠀⠀⣿⣷⡀⣅⢹⣿⠘⡇⣿⣿⡿⠆⠀⠀⠀⠈⠃⠛⣿⣿⣿⡇⠀⠀⠀⠀⣿⣿⠀⣿⣿
⣿⣿⠟⣻⠿⣿⣿⣿⡟⠀⢸⣿⣿⡄⡄⠠⡀⣿⣿⣷⣜⣷⣬⣁⣿⣿⣿⠀⠀⡀⠀⠀⣧⢸⢡⣿⣿⡟⠁⠀⠀⠀⢰⣿⣿⡆⣿⣿
⣿⣿⣤⣿⠀⣿⣿⣿⡇⠀⠀⢿⣿⣷⣼⣯⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠻⠯⠟⣰⡟⠀⣾⣿⣿⡇⠀⠀⠀⠀⣿⣿⣿⡇⣿⣿
⣿⣿⣿⣿⡆⢹⣏⢿⡇⢠⣖⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⣼⣿⣿⣿⡇⠀⠀⠀⣠⣿⣿⣿⣧⣿⣿
⣿⣿⣿⣿⡱⠀⢿⡎⡡⠾⠿⢀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣡⢰⢃⣿⣿⣿⠁⠀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣷⣀⣄⢸⣿⣿⣭⣝⡊⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠂⣾⣿⣿⡟⢀⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⢿⣿⣿⣿⣿⣿⣿⢠⠙⢿⣿⣿⣿⣷⣬⡻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⡀⢸⣿⣿⢻⠇⠸⠃⠿⠿⠿⣿⣿⣿⣿⣿⣿
⢿⣿⣿⣿⣿⣿⡏⣸⠀⡇⠙⢿⣿⣿⣿⣿⣷⣍⠻⢿⣿⣿⣿⣿⣿⠿⢛⣭⡶⢋⣼⠇⣿⣿⡏⠀⠀⠀⣼⢛⣵⣾⣶⣮⡻⣿⣿⣿
⢸⣿⣿⣿⣿⣿⡇⣿⠀⠁⠀⡀⣍⠻⣿⣿⣿⣿⣧⣠⠙⠛⠋⢭⣶⡿⢟⣩⣶⣿⠟⣼⣿⠟⠀⠀⢀⣾⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⡇⣿⠀⣤⡀⣷⡝⣰⣿⣿⣿⣿⣿⠏⠰⠿⠀⣨⣵⣾⣿⣿⠟⠁⣼⡿⢋⣀⣤⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⡇⡿⣸⣿⣷⡟⣼⣿⣿⣿⣿⣿⡏⣠⣾⣿⡆⡸⣿⠿⣋⣵⢎⣚⣫⣴⣿⣿⡏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⡇⢠⣿⡿⢋⣾⣿⣿⣿⣿⣿⡟⢠⣿⣿⠏⡀⢧⠁⢺⣿⣿⣿⣿⡿⣻⣿⡟⣰⡿⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⡇⣿⠏⠀⣿⣿⣿⣿⣿⣿⡟⠀⣼⡿⢁⢸⣧⣄⢀⡈⢿⣿⣿⣭⣾⣿⡟⣰⡿⣰⠇⣼⡄⣰⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⠘⠁⠆⠀⣿⣿⣿⣿⣿⡟⣰⡶⣿⢡⠏⢸⣿⠋⠚⣡⡈⣿⣿⣿⣿⠟⣱⣿⣇⠉⣴⠟⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿

2024-01-09T00:00:00.000Z

101's answer

這麼多的積累,在學完101之後我必須要做一個博客了. 這個小地方不是我的歸宿, 時代時代等一等我, 我會盡自己最大的努力最訓導自由和平和希望. 趁我還年輕, 趁一切都還來得及.

我最關心的是同步和穩定環境.顯然下載是其中重要的一環,而文件操作也緊隨着下載(增刪查改文件)成爲必須要解決的問題,這裏給出一些根據101文件總結的文件操作和下載辦法及二者的注意事項

如何下載文件?

使用應用商店

ubuntu系統肯定有自帶應用商店, 帶gui界面, 雖然我認爲是不需要的(應該被清除), 並且不符合cli精神, 提供的信息太少, 換源複雜和選擇唯一, 並且已經在安裝vscode時展現出它的閹割並非虛傳.因此我建議直接通過命令行刪除掉, 順帶清除其寄生的snap系統.迴歸純淨簡潔系統

使用包管理系統從默認源安裝:apt/dnf/yum/pacman

這才是linux的安裝應用辦法,這才是真正的應用商店 以ubuntu爲例,apt=="advance advance tool",適用於所有debian系

指令如何使用? 使用man <指令>/<指令> -h/<指令> --help查詢完整用法, tldr=="too long don't read"查詢常用例, 這裏給出tldr對apt的常用例說明:

yibotian@Nicolette86132:~/Fanta-sea$ tldr apt
apt
Package management utility for Debian based distributions.Recommended replacement for apt-get when used interactively in Ubuntu versions 16.04 and later.For equivalent commands in other package managers, see https://wiki.archlinux.org/title/Pacman/Rosetta.More information: https://manpages.debian.org/latest/apt/apt.8.html.

 - Update the list of available packages and versions (it's recommended to run this before other apt commands):
   sudo apt update

 - Search for a given package:
   apt search {{package}}

 - Show information for a package:
   apt show {{package}}

 - Install a package, or update it to the latest available version:
   sudo apt install {{package}}

 - Remove a package (using purge instead also removes its configuration files):
   sudo apt remove {{package}}

 - Upgrade all installed packages to their newest available versions:
   sudo apt upgrade

 - List all packages:
   apt list

 - List installed packages:
   apt list --installed

從第三方源安裝(摘錄101以docker爲例,同時可以參考之前我對vscode安裝換源的說明)

  1. 安装需要的的软件包(一般已經有安裝)
  2. 下载 Docker 软件源的 GPG Key 例如:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 添加 Docker 软件源到 /etc/apt/sources.list.d/ 中:
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 使用 apt 安装 Docker
    • 首先需要从第三方源更新软件列表。
    • 之后便可以直接安装 docker-ce 以及相关的软件包。
  2. 检查安装情况并确认启动

用發行版對應可執行文件包安裝(例如之前的apache_open_office)

  1. 下載提供的tar.gz/tar.bz/...
  2. 解壓得到一堆文件夾,cd進入一堆deb包的地方(可能會有README.md/install.md之類的, 優先參考他們給出的步驟)
  3. 使用apt install *.deb安裝.deb文件

用二進制編譯安裝(任意發行版)(以101提出的Nginx爲例)

  1. 下載壓縮文件,解壓,cd進入
  2. ./configure配置編譯選項:例如
#使用 \ 符号将一行长命令分解为多行书写,便于阅读。
$ ./configure \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-stream \
--with-pcre=../pcre2-10.42 \
--with-zlib=../zlib-1.2.13 \
--without-http_empty_gif_module
  1. 执行 make 命令。
  2. 执行 (sudo) make install 命令。

文件操作的部分

所用命令都支持參數疊加,支持正則表達以定位文件(根據不同的shell支持的範圍不同,bash支持的範圍比較小,但是基本常用的都有)

支持的正則式: .當前文件夾 ..父級文件夾 *任意字符 +<num>大於(後跟數字) e.g.:find / -size +1G ?單字符 [<char1><char2>...]指定範圍單字符集 e.g.:*.[ch]以 .c 或 .h 结尾的文件

  • 查看: 目錄: ls tree 文件: statistic:stat用於統計文件信息,會顯示一些包括size,at(access time)/bt(birth time)/ct(create time)/mt(modify time)之類的信息(原來vscode/git中的'm' stand for modify) concatenate:cat less vim(編輯器)
  • 複製: copy:cp
  • 剪切: move:mv(也可用於重命名) 實際上,mv命令就是通過重命名文件夾/文件的元信息(像一個結構體)實現的(用vim可以查看文件夾元信息),就是只改了鏈接/指針,而數據不動; 也即是說, 只是變更了從屬關係,也因此, mv操作包含其他文件或者文件夾的文件夾不需要-r(recursive)操作, 而cp則是要真的創建新的文件, 那麼就要對文件夾下每個文件都進行操作,因此同樣狀況的cp命令就需要-r參數.但是cp命令也可以加參數實現這種數據不動只複製指針的辦法,分爲硬鏈接和軟(符號)連接,兩硬鏈接指向同一數據, 符號連接就像指向指針的指針, 內容是指向數據的指針的地址.ln是更專業的操作鏈接工具
  • 刪除: remove:rm
  • 新建: make directory:mkdir touch(原本是修改文件元信息之change time:ct>modification time:mt, access time:at, 但文件不存在的話時候就會創建)
  • 查找(支持一定程度的正則): find
  • 壓縮: tape archive:tar 7z zip rar

進程,前後臺, 服務與例行性任務

怎樣明白htop輸出的內容? 可能涉及到計算機架構的知識,有提到nice和priority兩個不同的關於優先級的權值,提到了用戶層,進程,調度策略之類的東西.爲什麼需要他們?他們是怎樣起作用的?101只提及了一下,並無系統和深入的講解.

manual isn't always right(以kill爲例):对于不同的 shell,kill 可能有不同的来源,如 zsh 和 bash 的 kill 命令均为内建命令。行为与直接运行 man 命令得到的文档不一定相同(比如 /bin/kill %1 会报错,而 kill 内建命令不会),需要小心此类命令的行为。 man builtins 可以查看 bash 中的内建命令文档。使用 type <命令名> 可以查看实际运行的命令是否为内建命令。

自動使用less:当我们在终端中使用 systemd 组件时,如果输出内容较多,systemd 会使用 less 作为翻页器(Pager),方便我们阅读。如:systemctl status

有什麼不懂得問tldr就好了,我們的工作一定是越做越輕鬆的嘛