Linux 使用
Linux 使用
介绍
WIP…
参考资料
Bash 速查表:bash cheatsheet
在线的 Unix 和 Linux 手册页(man 页):Linux Man Pages Online
Shell 基础及 CLI 工具推荐:lec1.md
中科大 Linux 教程:欢迎 - Linux 101
GitHub - dunwu/linux-tutorial: :penguin: Linux教程,主要内容:Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本
Linux 设置:Setting up Linux • Linux tutorial
GitHub - dibingfa/flash-linux0.11-talk: 你管这破玩意叫操作系统源码 — 像小说一样品读 Linux 0.11 核心代码
Linux 内核与发行版之间的关系与区别:Linux的发行版 描述不同发行版之间的区别与联系 - 法月将臣 - 博客园
Linux 教程 - Note/wiki/linux_teach.md at master · Kicamon/Note · GitHub
direnv:Shell 扩展,可根据当前目录加载和卸载环境变量
单行 Shell 命令:Shell One Liner - GitHub - trimstray/the-book-of-secret-knowledge
使用
工具
在线试用各种 Linux 发行版,它会分配一个虚拟机,浏览器里连接桌面:Test Linux distros online - DistroSea
用纯 Bash 命令实现众多功能:GitHub - dylanaraps/pure-bash-bible: 📖 A collection of pure bash alternatives to external processes.
命令行艺术:GitHub - jlevy/the-art-of-command-line: Master the command line, in one page
Linux 配置文件:
- GitHub - skwp/dotfiles
- GitHub - yutkat/dotfiles(内含一键安装脚本,可参考写法)
- Linux 配置文件(还行):GitHub - LintaoAmons/CoolStuffes: 我的分享放这里了,大家随便拿去用啊,记得给个星星就行啦~
- 备份 dotfiles:GitHub - deadc0de6/dotdrop: Save your dotfiles once, deploy them everywhere
生成 Markdown 表格(Bash 脚本):Pure bash markdown table generator — josh.fail
基本使用
- 系统信息查看
1 | hostnamectl # 显示系统信息,包括主机名、操作系统、内核等 |
- 系统资源查看
1 | lscpu # 查看 CPU 信息 |
图片查看:
eog
或display
Linux 系统文件颜色
- 白色:一般性文件,如文本文件,配置文件,代码文件等
- 蓝色:目录
- 绿色: 可执行文件
- 红色:压缩文件
- 浅蓝色:链接文件
SSH 配置
- 用户配置:
~/.ssh/config
- 系统配置:
/etc/ssh/ssh_config
- 用户配置:
用户切换
- 切换到用户:
su username
- 切换到 root:
sudo -i
或sudo su
只需输入当前用户密码su
需输入 root 用户的密码,Ubuntu 默认没有设置,通过sudo passwd root
给 root 创建密码
- 切换到用户:
创建新用户
1 | # 方式 1 |
Session
profile、bash_profile、bashrc 之间的区别:profile、bash_profile、bashrc的用途与区别 - 简书
用户每次使用 Shell,都会开启一个与 Shell 的 Session(对话)。
Session 有两种类型:登录 Session 和非登录 Session。
登录 Session 是用户登录系统以后,系统为用户开启的原始 Session,通常需要用户输入用户名和密码进行登录。
登录 Session 一般进行整个系统环境的初始化,启动的初始化脚本依次如下:
/etc/profile
:所有用户的全局配置脚本/etc/profile.d
目录里面所有.sh
文件~/.bash_profile
、~/.bash_login
、~/.profile
:用户的个人配置脚本(执行顺序同书写顺序)
Linux 发行版更新的时候,会更新 /etc
里面的文件,比如 /etc/profile
,因此不要直接修改这个文件。如果想修改所有用户的登陆环境,就在 /etc/profile.d
目录里面新建 .sh
脚本。
修改个人的登录环境,一般是写在 ~/.bash_profile
里面。
1 | bash --login # 强制执行登录 Session 会执行的脚本 |
非登录 Session 是用户进入系统以后,手动新建的 Session,这时不会进行环境初始化。如执行 bash
命令,就会新建一个非登录 Session。
非登录 Session 的初始化脚本依次如下:
/etc/bash.bashrc
:对全体用户有效~/.bashrc
:仅对当前用户有效
~/.bashrc
通常是最重要的脚本。非登录 Session 默认会执行它,而登录 Session 一般也会通过调用执行它。每次新建一个 Bash 窗口,就相当于新建一个非登录 Session,所以 ~/.bashrc
每次都会执行。注意,执行脚本相当于新建一个非互动的 Bash 环境,但是这种情况不会调用 ~/.bashrc
。
1 | bash --norc # 禁止在非登录 Session 执行 ~/.bashrc 脚本 |
常用命令
常用基本命令
- 常用基本命令
1 | man # 查看命令帮助 |
- 常用基本命令进阶用法
1 | man man # 查看如何使用 man 命令 |
tar
打包命令,非压缩/解压缩命令(和其他程序如 gzip、bzip2 等一起实现压缩/解压缩功能)
不同压缩格式的文件体积大小:
tar.gz
>tar.bz2
>tar.xz
1 | # 常用参数 |
ln
- 给文件/目录设置符号(软)链接(建议绝对路径)
1 | ln -s SRC DEST |
curl
- 利用 URL 规则在命令行下工作的文件传输工具
1 | # 常用参数 |
wget
- 从网络下载文件
1 | # 参数 |
find
- 查找文件
1 | # find 与另外两个命令对比 |
sed
文本处理工具
注意事项:
- macOS 中需在使用
i\
a\
、c\
命令时,需在\
后换行 - macOS 在使用
-i
选项时,需在后面添加''
- macOS 中需在使用
1 | # 命令格式 |
- 示例
1 | # 替换指定字符串 |
grep
- 文本搜索工具
1 | # 常用参数 |
awk
文本处理工具
将输入数据视为记录,每个记录又被进一步划分为字段
默认分隔符为空格(可以为多个空格),指定分隔符(
-F:
)awk 程序由模式和动作组成(可以没有模式)
-v var=
定义变量
1 | # awk 中的变量 |
- 常用功能 awk 命令实现
1 | awk '{ print NR, $0 }' file # 输出文件内容并显示行号 |
其他命令
- cat
1 | cat - # 读取标准输入 |
- du:查看文件/目录大小
1 | du -sh file/folder |
- dirs:显示目录堆栈,按照最近访问的目录排序
1 | # 常用参数 |
- xargs:参数转化器,将输入数据转换为命令行参数并执行命令。常用于将管道或标准输入 (stdin) 的数据转换为命令的参数
1 | # 将 find 找到的文件删除 |
- tee:从标准输入读取数据并重定向到标准输出和文件(即输出到屏幕上,也保存到文件中,可以多个文件)
1 | command | tee file |
- nohup:全称 no hang up;允许在用户注销或者断开终端连接之后,仍然运行后台的程序(或直接在命令后添加
&
,使程序进入后台运行)
1 | nohup command & |
- paste: 可以用来进行多个(csv)文件之间的列合并
1 | paste -d' ' file1 file2 # 以空格为间隔符来进行列合并文件 |
- kill:杀死进程
1 | kill -9 PID # 发送强制终止信号给进程 |
- column:将文本输入格式化成多列输出
1 | column -s, -t data.csv # 指定分隔符格式化(表格形式)输出 |
- nl:显示行号
1 | nl file # 显示行号 |
- type:判断命令的类型/来源(内置命令,外部程序)
1 | # 参数 |
1 | date # Sun Mar 12 00:32:26 CST 2023 |
- hostname:输出主机名
1 | /etc/hostname # 配置文件路径 |
- ldconfig: 用于创建、更新和维护动态链接器运行时绑定的缓存;常在系统启动时运行
1 | ldconfig -p # 查看库文件路径和实际缓存的库 |
- ps:显示进程信息
1 | -e / -A # 显示所有进程 |
- top:显示系统资源使用情况的实时工具;运行时是交互式的
1 | # 常用交互操作快捷键 |
- wc:统计文件的行数、字数和字节数(或字符数)
1 | wc file # 基本使用 |
strace:Linux 系统中诊断、调试和指令跟踪工具。它主要用于跟踪系统调用:程序与操作系统内核之间的交互
其他
1 | ldd # 列出可执行文件在运行时所需要的共享库 |
文件系统层次结构
- 注意事项:
/usr/bin
:系统预装的可执行程序,会随着系统升级而改变/usr/local/bin
:用户放置本地可执行程序的目录,不会被系统升级而覆盖同名文件
1 | /bin # 基本二进制程序;对所有用户可用 |
其他
命令提示符:环境变量
PS1
ETA(Estimated Time of Arrival,预计到达时间)是 Linux 系统中一个常见的术语,用于估计正在运行的进程或任务剩余执行时间。
终端 Tab 补全忽略大小写:linux下,按tab补全时,忽略大小写的配置_linux命令行终端设置tab补全文件名或路径不区分大小写-CSDN博客
在
.bashrc
中定义函数
1 | # 详细列出给定目录及其子目录的文件信息 |
- zsh 与 bash 之间的一些区别:
- zsh 数组索引从 1 开始, bash 从 0 开始