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安裝換源的說明)
- 安装需要的的软件包(一般已經有安裝)
- 下载 Docker 软件源的 GPG Key 例如:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加 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
- 使用 apt 安装 Docker
- 首先需要从第三方源更新软件列表。
- 之后便可以直接安装 docker-ce 以及相关的软件包。
- 检查安装情况并确认启动
用發行版對應可執行文件包安裝(例如之前的apache_open_office)
- 下載提供的tar.gz/tar.bz/...
- 解壓得到一堆文件夾,cd進入一堆deb包的地方(可能會有README.md/install.md之類的, 優先參考他們給出的步驟)
- 使用
apt install *.deb
安裝.deb文件
用二進制編譯安裝(任意發行版)(以101提出的Nginx爲例)
- 下載壓縮文件,解壓,cd進入
- 用
./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
- 执行 make 命令。
- 执行
(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就好了,我們的工作一定是越做越輕鬆的嘛