Command Line

这是关于 Linux 和 Command Line 的笔记

1. 操作系统

Linux 操作系统自底向上分为 3 层:硬件系统(Hardware System),内核(Kernel),用户进程(User Process)

操作系统

  • 硬件:内核和进程运行在内存中
  • 内核:内核管理进程和硬件系统
  • 进程:用户和用户进程交互

数据与存储

  • Linux 的存储层次:磁盘 → 分区 → 文件系统
  • /dev 代表硬件设备,/dev/vda 代表第一块磁盘,/dev/vda1 代表第一块分区
  • 查看当前挂载的文件系统的容量和使用量:$ df

用户与权限

  • 文件类型:常用类型有普通文件(-)和目录文件(d
  • 权限属性:针对所有者(u)所在组(g)其他人(o),分为可读(r)可写(w)可执行(x
  • 文件模式:常用模式有 7(rwx)6(rw-)5(r-x)4(r--)0(---
  • 以超级用户身份运行命令:$ sudo [command]

任务与进程

  • 杀死进程:kill [-signal] PID(给进程发送默认的 TERM 信号)
  • 常用信号:HUP(挂起)INT(中断)KILL(杀死)TERM(终止)CONT(继续)STOP(暂停)QUIT(退出)TSTP(终端暂停)

2. 常用命令

Unix 进程是运行在内存中的程序,使用 I/O 流来读写数据

终端窗口

  • shell 即命令行界面(CLI, Command Line Interface),它是运行命令行的应用程序,Linux 的默认 shell 为 bash
  • shell 的 GUI 称为 terminal, 其提示符为 [name@host path]$, root 用户提示符为 [root@host path]#

显示命令

  • 拼接文件并显示内容:$ cat [file1] [file2] ...
  • 详细(-l)显示指定目录的全部(-a)内容:$ ls -al
  • 显示参数到标准输出:$ echo [message]

文件命令

  • 拷贝文件到文件(复制内容):$ cp [file1] [file2]; 拷贝文件到目录:$ cp [file] [dir]
  • 移动文件到文件(重新命名):$ mv [file1] [file2]; 移动文件到目录:$ mv [file] [dir]
  • 创建文件:$ touch [file], 若文件已存在,则只更新时间戳
  • 删除文件:$ rm [file]

目录命令

  • 设置当前工作目录:$ cd [dir], 返回个人主目录:$ cd
  • 创建新目录:$ mkdir [dir], 使用扩展:$ mkdir L0{1..9} L1{0,1,2}
  • 删除空目录:$ rmdir [dir]

其他命令

  • pwd 输出当前工作目录;diff 对比两个文件;file 查看文件格式;find 查找指定文件;clear 清屏

环境变量

  • 环境变量是所有进程都可以访问的变量,PATH 是定义了命令路径的环境变量
  • 查看环境变量:$ printenv, 查看命令路径:$ echo $PATH

控制 I/O

  • 将标准输出重定向:$ [command] > [file]
  • 将标准输入重定向:$ [command] < [file]
  • 将前一个命令的输出作为后一个命令的输入:$ [command1] | [command2]

3. 文本编辑

vi 是命令行界面的文本编辑器,尽管很难用,但是很有用

启动与退出

  • 启动 vi:$ vi
  • 退出 vi:输入 :q
  • 强制退出 vi:输入 :q!
  • 返回初始状态:按两次 Esc

编辑与保存

  • 打开文件:$ vi [file]
  • 保存文件:输入 :w
  • 保存并退出 vi:输入 :wq
  • 进入插入模式:按 I
  • 返回命令模式:按 Esc

4. 网络应用

网络可以实现计算机之间的连接和数据收发,网络应用是运行在用户空间的应用层的客户端与服务器

底层

  • 网络栈:物理层 → 网络层 → 传输层 → 应用层
  • 查看本机的 IP:$ ifconfig
  • 查看域名的 IP:$ host [hostname]
  • 内核的网络接口:将物理层的硬件标识和网络层的 IP 地址对应起来

顶层

  • 建立 TCP 连接:应用在本地端口和远程端口之间建立连接,并以 IP + Port 的形式标识连接
  • 请求进程:被称为客户端,端口是动态的暂时端口
  • 监听进程:被称为服务器,端口是静态的公认端口

无线网络

  • 无线网络通过 SSID 进行标识,通过 AP 进行管理
  • 无线网络通过密码认证限制连接,通过加密传输保证安全

常见的公认端口

  • 21: FTP
  • 22: SSH
  • 23: Telnet
  • 80: HTTP
  • 443: HTTPS
  • 8008 or 8080: HTTP-ALT

网络服务器

  • 服务器类似于守护进程,但它与网络端口进行交互
  • 服务器通常是多进程的,其中至少有一个进程监听网络端口;当它接收到一个新连接时,会 fork() 一个新的子进程,负责那个新的连接
  • 子进程也叫辅助进程,会随着连接的终止而终止;而监听进程会继续接收连接

参考

  1. How Linux Works(精通 Linux)
  2. The Linux Command Line(Linux 命令行大全)

results matching ""

    No results matching ""