1 Linux背景

Linux是一种操作系统内核,类似于Unix;源于GNU(GNU’sNot Unix)项目也可称协议,并遵循POSIX标准。

  • GUN提供了编译器、调试器、文本编辑器、shell等。
  • Linux内核提供了进程管理、内存管理、块设备驱动、文件系统接口等功能。
  • POSIX有利于应用程序的移植性,并为Linux开发者提供了一致的接口。

Linux/Unix框架图

2 Linux/Unix基本命令

  • ls:列出目录内容
    • la -a:列出目录内容,包括隐藏文件
    • la -li:列出目录中文件的节点引索信息。
    • 更多参见:Linux文件权限管理chmod
  • pwd:显示当前目录
  • cd:切换目录
    • cd..:返回上级目录
    • cd /:切换到根目录
    • cd ~:切换到用户主目录
    • cd : 切换到用户目录
    • cd -:切换到上一次所在目录
  • mkdir:创建目录
    • mkdir -p [dirname1/dirname2/…/dirnameN]:创建多级目录
  • mkfifo:创建命名管道文件,其中 FIFO 是 “First In First Out” 的缩写。
  • rmdir:删除空目录
    • rmdir -p [dirname1/dirname2/…/dirnameN]:删除多级空目录(不可删除非空目录)
  • touch:创建文件
    • touch [filename] [filename2]…:创建多个空文件
    • touch [filename] 更新文件时间戳
    • touch -t 202101010101.00 [filename]:创建指定日期的空文件
  • rm:删除文件或目录
    • rm -r [dirname]:递归删除目录及其内容
    • rm -f [filename]:强制删除文件,无需确认
    • rm -i [filename]:删除文件前提示确认
  • mv:移动或重命名文件或目录
    • mv [source] [target]:移动或重命名文件或目录
    • mv [source] [target] -b:用于在覆盖目标文件之前备份目标文件。
  • cp:复制文件或目录
  • cat:查看文件内容,CAT命令是concatenate的缩写。CAT命令可以将多个文件的内容合并到一个文件中,也可以将多个文件的内容追加到一个文件中。
    • cat [filename]:查看文件内容
    • cat [filename1] [filename2]… > [targetfile]:将多个文件内容合并到一个文件中,这样操作会覆盖源文件内容。
    • cat [filename1] [filename2]… >> [targetfile]:将多个文件内容追加到一个文件中
    • cat -n [filename]:显示行号
    • cat -b [filename]:显示空行不计行数
  • ln :创建链接文件
    • ln -s [source] [target]:创建软链接,指向源文件,删除源文件不会影响链接文件。
    • ln [source] [target]:创建硬链接,指向源文件,删除源文件会影响链接文件。
      详情参见:软链接与硬链接

2.1 Linux/Unix检索命令

  • man:查看命令帮助
    • man [command]:查看命令帮助也可查找相关函数。man命令对应的是man手册,man手册包含的主要章节为:1系统命令、2系统调用、3C库函数等的详细说明。
    • man -k [keyword]:搜索帮助文档关键字
  • find:搜索文件
    • find / -name [filename]:搜索指定文件
    • find / -name [filename] -type f:搜索指定文件,仅列出文件。其它类型同理。
    • find “[filename]” | grep [pattern]:搜索指定文件,并过滤出包含pattern的行。find结合管道命令时要加上引号。
  • grep:搜索文件内容,一般结合管道命令使用。

    • grep [pattern] [filename]:搜索filename文件中包含pattern的行。
    • grep -i [pattern] [filename]:搜索filename文件中包含pattern的行,忽略大小写。
    • grep -R [pattern] [dirname]:递归搜索dirname目录下所有文件中包含pattern的行。
    • grep ‘^[]’ 查找以某个字符串或字符串开头的行。
    • grep -F [pattern] [filename]:搜索内容不执行转义等处理。
    • grep -n [pattern] [filename]:搜索filename文件中包含pattern的行,并显示行号。
  • head:显示文件开头内容

    • head -n [number] [filename]:显示文件开头的number行内容。
  • tail:显示文件末尾内容
    • tail -n [number] [filename]:显示文件末尾的number行内容。
  • more:分页显示文件内容
    • more [filename]:分页显示文件内容,按空格翻页,按q退出。
  • less:分页显示文件内容
    • less [filename]:分页显示文件内容,按空格翻页,按q退出。
  • wc:统计文件行数、字数、字节数。统计文件行数、字数(单词个数即使是中文也需要用空格分隔才计算) 、字节数。

    • wc -l [filename]:统计文件行数。
    • wc -w [filename]:统计文件字数。
    • wc -c [filename]:统计文件字节数。
  • sort:对文件内容排序

    • sort [filename]:对文件内容排序。
  • whatis:显示命令的简单介绍。

  • whereis:显示命令的详细位置。
  • which:显示命令的主目录位置
  • uname:显示系统信息,如内核版本、主机名、操作系统名称等。
    • uname -a:显示全部信息
  • history:显示历史命令。

2.2 Linux/Unix权限管理命令

  • chmod:修改文件权限
    • 详情参见:Linux文件权限管理chmod
  • su:切换用户
    • su - [username]:切换到指定用户
  • who : 显示当前登录用户信息和对应的控制台tty。
  • sudo:以超级用户权限运行命令
  • chown:修改文件所有者
    • chown [owner] [filename]:修改文件所有者为owner。
    • chowm [owner]:[group] [filename]:同时修改文件所有者和群组。
    • chown -R [owner]:[group] [dirname]:递归修改目录所有者为owner。注意是大写的R。
  • umask:设置文件权限掩码也即默认权限。普通用户的默认权限
    • umask [mask]:设置文件权限掩码为mask。

2.3 Linux/Unix网络管理命令

  • netstat:显示网络连接信息,如端口、协议、状态等。
    • netstat -anp:显示所有网络连接信息,包括PID、进程名、协议、本地地址、远端地址、状态等。
  • ifconfig:查看网络接口信息,如IP地址、子网掩码、MAC地址等。部分Linux发行版中,ifconfig命令可能不直接包含如OpenWRT等嵌入式系统的网络接口信息。可以通过opkg install net-tools安装net-tools包,然后使用ifconfig -a命令查看网络接口信息。
    • ifconfig [interface]:查看指定网络接口信息。
    • ifconfig [interface] up/down:临时启用或禁用指定网络接口。也可用于临时设置ip地址。临时指系统重启后失效。
  • route:查看路由信息,如路由表、默认网关等。
  • ping:测试网络连接
    • ping [hostname]:测试指定主机的网络连接,其中hostname可以是IP地址或域名。
  • nmcli networking off:关闭网络连接
  • nmcli networking on:开启网络连接
  • service network-manager restart:重启网络管理服务

2.4 Linux/Unix进程管理命令

  • ps: 显示当前进程状态,输出分别是进程号、控制台、时间和进程名
    • ps aux:显示所有进程信息,包括命令、用户、PID、CPU占用率、内存占用率等。
  • kill:杀死进程

    • kill -9 [PID]:强制杀死进程,信号不可被捕获、阻塞、忽略。Kill SIGKILL [PID]同效果。
    • kill -15 [PID]:杀死进程,但可被捕获、阻塞、忽略。Kill SIGTERM信号。
    • kill -19 [PID]:停止进程,SIGSTOP信号。
    • kill -1 [PID]:挂起进程,SIGHUP信号。
    • kill -2 [PID]:中断(停止)进程,SIGINT信号。
  • top:实时显示系统资源信息,包括CPU、内存、进程、IO等。top命令与ps命令相似,但top命令可以实时刷新显示,并提供更直观的图形化界面。ps适合用脚本分析,top适合用人工查看。

    • top -u [username]:显示指定用户的进程信息。
  • free:显示系统内存使用情况。

2.5 linux/unix文件操作命令

  • diff:比较文件内容
    • diff [filename1] [filename2]:比较两个文件内容。
    • diff -b [filename1] [filename2]:比较两个文件内容,忽略尾行空格。
    • diff -r [dir1] [dir2]:递归比较两个目录内容。
    • diff -c [filename1] [filename2]:比较两个文件内容,并显示差异,带原文输出。
  • cmp :比较文件内容并显示不同的行号

    • cmp [filename1] [filename2]:比较两个文件内容,显示不同的行号。
  • od :以特定的数据格式输出文件内容,默认以8进制显示。

    • od -c [filename]:以字符格式显示文件内容。
    • od [-t[type]] [filename]:以指定格式显示文件内容,如od -tx [filename]以16进制显示文件内容。
  • file :显示文件类型
  • ehco:输出内容到屏幕或文件

2.6 软件包管理命令

  1. dpkg:本地软件包管理
    • dpkg -i 安装软件包
    • dpkg -r 删除软件包
    • dpkg -l 列出已安装软件包
    • dpkg -s 查询软件包信息
  2. tar:打包和压缩文件,注意tar自身仅提供打包功能,使用-j等参数是调用其他压缩工具实现的压缩功能。
    • tar -cvf 打包文件名.tar 源文件,cvf:create, verbose, file
    • tar -xvf 解压文件名.tar xvf:extract, verbose, file
    • tar -zcvf 打包文件名.tar.gz 源文件 -C 压缩目录,C指定压缩目录
    • tar -jcvf [filename ].tar.gz.bz2 -C [目录名] 压缩目录并压缩成.tar.gz格式
    • sudo tar -cf /ufile/t1.tar.gz -C ~/ufile/ t1.t 意义为将~/ufile/下的t1.t压缩为/ufile/t1.tar.gz
  3. gzip:压缩文件
    • gzip [filename]:压缩文件
    • gzip -d [filename.gz]:解压文件
  4. zip:压缩文件
    • zip -r archive.zip /path/to/directory 压缩
    • unzip -d archive.zip /path/to/directory 解压
  5. apt: 基于Debian的软件包管理器
    • apt-get -h 帮助信息
    • apt-get update 更新软件包列表
    • apt-get install 安装软件包

2.7 Linux/Unix用户管理命令

  1. 切换用户:su 用户名

    • 对于新系统无法切换root用户

      新系统需要先创建root用户的密码。

      1
      2
      3
      4
      5
      6
      serenitatis@shumeipai:/ $ sudo apt install git
      Reading package lists... Done
      Building dependency tree... Done
      Reading state information... Done
      git is already the newest version (1:2.39.5-0+deb12u1).
      0 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.
  1. 查看当前用户:whoami

  2. 查看所有用户:cat /etc/passwd

  3. 添加用户:

    • useradd 用户名
    • useradd -m 用户名 创建用户同时创建主目录
    • useradd -G 将用户并加入指定组
    • adduser 用户名 创建用户同时创建主目录
  4. 删除用户:(若没有删除用户目录,利用rm -rf /home/用户名即可)

    • userdel -r 用户名 删除用户同时删除主目录
    • userdel 用户名 只删除用户,不删除主目录
  5. 修改用户密码:passwd 用户名

  6. 切换到root用户:su root

  7. 查看当前用户:whoami

  8. 查看所有用户:cat /etc/passwd

  9. 为新用户设置sudo权限:

    • vim 编辑/etc/sudoers文件
  10. 禁用用户登录:

    • vim编辑/etc/passwd文件,注销或在路径后任意添加即可。

      图中用户为serenitatis

2.8 Linux/Unix磁盘管理命令

  1. 查看磁盘分区(设备):fdisk -l
  2. 查看磁盘使用情况:df
    • df -i:显示inode信息
    • df -h:以可读方式显示磁盘使用情况
  3. 查看挂载点:mount
    • mount -t [fstype] [device] [mount_point]; 参数-t用于指定文件系统类型,一般选择auto。
  4. ls查看 ls -l /dev/sd* sd为采用SCSI 接口的磁盘,hd为采用 IDE 接口的磁盘较新的系统中也采用sd标记,fd为采用 Floppy 接口的软盘。

    • /dev/sda1:第一个硬盘第一个分区,/dev/sda2:第一个硬盘的第二个分区
    • /dev/sdb1:第二个硬盘第一个分区,/dev/sdb2:第二个硬盘的第二个分区
    • 以此类推,可查看所有硬盘和分区。
  5. 挂载磁盘:mount /dev/sda1 /mnt

  6. 卸载磁盘:umount /mnt

2.9 Linux/Unix命令通配符

  • :匹配任意字符串,如ls /home/user/,将列出/home/user目录下所有文件和目录。
    -?:匹配单个字符,如ls /home/user/f?o,将列出/home/user目录下所有以f开头,后跟o的文件和目录。
  • []:匹配指定范围内的字符,如ls /home/user/[0-9]*,将列出/home/user目录下所有以数字开头的文件和目录。
  • {}:匹配多选一的字符,如ls /home/user/{foo,bar},将列出/home/user目录下foo或bar的文件和目录。
  • !:排除指定字符,如ls /home/user/*[!0-9],将列出/home/user目录下所有非数字开头的文件和目录。

2.10 Linux/Unix管道命令

  • |:管道命令,将前一个命令的输出作为后一个命令的输入。如ls /home/user | grep foo,将列出/home/user目录下所有文件和目录,并过滤出包含foo的行。
  • :重定向命令,将命令的输出重定向到文件。如ls /home/user > file.txt,将列出/home/user目录下所有文件和目录,并将输出保存到file.txt文件中。

  • <:重定向命令,将文件内容作为命令的输入。如cat < file.txt,将读取file.txt文件的内容,并将内容作为cat命令的输入。
  • <<:将后续内容作为输入,如echo “hello” | tr a-z A-Z,将输出HELLO。

2.11 Linux/Unix快捷键

  • Ctrl + Alt +F1:切换到tty1,其它tty按同样的方式切换。默认共六个tty,分别是tty1、tty2、tty3、tty4、tty5、tty6。前两个为图形界面,后四个为字符界面。
  • Ctrl + C:中断正在运行的命令。
  • Ctrl + D:退出当前shell。
  • Ctrl + Z:将当前进程放到后台暂停运行。
  • Ctrl + W:删除光标前的单词。
  • Ctrl + U:删除光标前的命令。
  • Ctrl + L:清屏。
  • Ctrl + A:移动光标到行首。
  • Ctrl + E:移动光标到行尾。
  • Ctrl + P:上一条命令。
  • Ctrl + N:下一条命令。
  • Ctrl + R:搜索命令历史记录。
  • Ctrl + K:删除光标到行尾的内容。
  • Ctrl + Y:粘贴刚刚删除的内容。
  • Alt + F:移动光标到下一个单词的开头。
  • Alt + B:移动光标到上一个单词的开头。
  • Alt + D:删除光标处的单词。
  • Alt + T:交换光标处的两个字符。
  • Alt + L:将整行文字转为小写。
  • Alt + U:将整行文字转为大写。
  • Alt + C:将整行文字首字母大写。
  • Alt + /:注释当前行。
  • Alt + .:重复上一个命令。
  • Alt + 回车:重复上一个命令。
  • Shift + 方向键:选择文本块。
  • Shift + PageUp:向上翻页。
  • Shift + PageDown:向下翻页。
  • Shift + Insert:粘贴复制的内容到光标位置。
  • Shift + Delete:剪切光标位置到剪切板。
  • Shift + Home:移动光标到行首。
  • Shift + End:移动光标到行尾。
  • Shift + Tab:切换到上一个窗口。
  • F1:显示帮助信息。
  • F2:设置窗口标题。
  • F3:搜索文件。
  • F4:关闭当前窗口。
  • F5:刷新当前窗口。
  • F6:切换全屏模式。
  • F7:搜索命令历史记录。
  • F8:命令行编辑。
  • F9:命令行编辑。
  • F10:退出当前窗口。
  • F11:切换全屏模式。
  • F12:切换当前窗口。

待续……

  • top:实时显示进程信息
  • kill:杀死进程
  • free:显示内存使用情况
  • df:显示磁盘使用情况
  • mount:挂载文件系统
  • unmount:卸载文件系统
  • ssh:远程登录
  • wget:下载文件
  • curl:下载文件
  • tar:打包和压缩文件
  • unzip:解压文件