1. 1. 通配符
  2. 2. linux 的文件目录
    1. 2.1. 目录结构
  3. 3. 终端中不同颜色的含义
  4. 4. 终端中的快捷键
    1. 4.1. 终端中 ctrl 类
    2. 4.2. 终端中 tab
  5. 5. 文件权限
  6. 6. 命令
    1. 6.1. 一般类
      1. 6.1.1. man
        1. 6.1.1.1. 常用参数
        2. 6.1.1.2. 例子
        3. 6.1.1.3. 快捷用法
      2. 6.1.2. info
        1. 6.1.2.1. 常见参数
        2. 6.1.2.2. 常用操作
      3. 6.1.3. whatis
      4. 6.1.4. touch
        1. 6.1.4.1. 作用
        2. 6.1.4.2. 参数
      5. 6.1.5. mkdir
        1. 6.1.5.1. 参数
        2. 6.1.5.2. 例子
      6. 6.1.6. rm
        1. 6.1.6.1. 参数
        2. 6.1.6.2. 例子
      7. 6.1.7. rmdir
        1. 6.1.7.1. 参数
        2. 6.1.7.2. 例子
      8. 6.1.8. mv
        1. 6.1.8.1. 参数
        2. 6.1.8.2. 例子
      9. 6.1.9. cp
        1. 6.1.9.1. 参数
        2. 6.1.9.2. 例子
      10. 6.1.10. cd
        1. 6.1.10.1. 特殊目录
        2. 6.1.10.2. 绝对路径和相对路径
        3. 6.1.10.3. 例子
      11. 6.1.11. pwd
        1. 6.1.11.1. 例子
      12. 6.1.12. ls
        1. 6.1.12.1. 参数
        2. 6.1.12.2. 例子
      13. 6.1.13. tree
        1. 6.1.13.1. 参数
        2. 6.1.13.2. 例子
      14. 6.1.14. stat
        1. 6.1.14.1. 参数
        2. 6.1.14.2. 三种时间
    2. 6.2. 文件操作/工具类
      1. 6.2.1. rename
        1. 6.2.1.1. 语法
        2. 6.2.1.2. 通配符
        3. 6.2.1.3. 参数
        4. 6.2.1.4. 例子
      2. 6.2.2. chattr
        1. 6.2.2.1. 参数
        2. 6.2.2.2. 属性
        3. 6.2.2.3. 例子
      3. 6.2.3. file
        1. 6.2.3.1. 参数
      4. 6.2.4. md5sum
        1. 6.2.4.1. 参数
        2. 6.2.4.2. 例子
      5. 6.2.5. find
        1. 6.2.5.1. 例子
      6. 6.2.6. which
        1. 6.2.6.1. 例子
      7. 6.2.7. whereis
        1. 6.2.7.1. 例子
      8. 6.2.8. locate
        1. 6.2.8.1. 例子
      9. 6.2.9. chown
        1. 6.2.9.1. 参数
        2. 6.2.9.2. 例子
      10. 6.2.10. chgrp
      11. 6.2.11. chmod
        1. 6.2.11.1. 模式
        2. 6.2.11.2. 参数
        3. 6.2.11.3. 例子
      12. 6.2.12. grep
        1. 6.2.12.1. 参数
        2. 6.2.12.2. 例子
      13. 6.2.13. egrep
        1. 6.2.13.1. 例子
      14. 6.2.14. cat
        1. 6.2.14.1. 参数
        2. 6.2.14.2. 例子
      15. 6.2.15. more
        1. 6.2.15.1. 操作
        2. 6.2.15.2. 例子
      16. 6.2.16. less
        1. 6.2.16.1. 操作
        2. 6.2.16.2. 例子
      17. 6.2.17. nl
        1. 6.2.17.1. 例子
      18. 6.2.18. split
        1. 6.2.18.1. 例子
      19. 6.2.19. diff
        1. 6.2.19.1. 参数
        2. 6.2.19.2. 显示提示
        3. 6.2.19.3. 例子
      20. 6.2.20. tr
        1. 6.2.20.1. 参数
        2. 6.2.20.2. 例子
      21. 6.2.21. du
        1. 6.2.21.1. 参数
      22. 6.2.22. df
        1. 6.2.22.1. 参数
      23. 6.2.23. sync
      24. 6.2.24. mount
        1. 6.2.24.1. 参数
        2. 6.2.24.2. 例子
      25. 6.2.25. umount
        1. 6.2.25.1. 例子
      26. 6.2.26. tar
        1. 6.2.26.1. 参数
        2. 6.2.26.2. 例子
      27. 6.2.27. zip
        1. 6.2.27.1. 参数
        2. 6.2.27.2. 例子
      28. 6.2.28. unzip
        1. 6.2.28.1. 参数
        2. 6.2.28.2. 例子
      29. 6.2.29. gzip/gunzip
        1. 6.2.29.1. 参数
    3. 6.3. 系统类
      1. 6.3.1. uname
        1. 6.3.1.1. 参数
      2. 6.3.2. hostname
      3. 6.3.3. uptime
        1. 6.3.3.1. 参数
      4. 6.3.4. free
        1. 6.3.4.1. 参数
      5. 6.3.5. ulimit
      6. 6.3.6. init
      7. 6.3.7. service
      8. 6.3.8. vmstat
      9. 6.3.9. iostat
      10. 6.3.10. ipcs
    4. 6.4. 网络类
      1. 6.4.1. route
        1. 6.4.1.1. 例子
      2. 6.4.2. ping
        1. 6.4.2.1. 参数
      3. 6.4.3. traceroute
        1. 6.4.3.1. 参数
      4. 6.4.4. ifconfig
        1. 6.4.4.1. 参数
      5. 6.4.5. ifup/ifdown
      6. 6.4.6. netstat
        1. 6.4.6.1. 参数
      7. 6.4.7. ss
        1. 6.4.7.1. 例子
      8. 6.4.8. telnet
      9. 6.4.9. ssh
        1. 6.4.9.1. 参数
      10. 6.4.10. ftp
      11. 6.4.11. sftp
        1. 6.4.11.1. 参数
        2. 6.4.11.2. 例子
      12. 6.4.12. lftp
        1. 6.4.12.1. 例子
      13. 6.4.13. wget
        1. 6.4.13.1. 参数
        2. 6.4.13.2. 例子
      14. 6.4.14. scp
        1. 6.4.14.1. 参数
        2. 6.4.14.2. 例子
      15. 6.4.15. curl
        1. 6.4.15.1. 参数
        2. 6.4.15.2. 例子
      16. 6.4.16. host
        1. 6.4.16.1. 参数
      17. 6.4.17. tcpdump
        1. 6.4.17.1. 例子
      18. 6.4.18. nc
        1. 6.4.18.1. 参数
        2. 6.4.18.2. 例子
    5. 6.5. 用户管理
      1. 6.5.1. useradd
        1. 6.5.1.1. 参数
        2. 6.5.1.2. 例子
      2. 6.5.2. passwd
        1. 6.5.2.1. 参数
        2. 6.5.2.2. 例子
      3. 6.5.3. userdel
        1. 6.5.3.1. 例子
      4. 6.5.4. su
        1. 6.5.4.1. 例子
      5. 6.5.5. sudo
        1. 6.5.5.1. 例子
      6. 6.5.6. id
        1. 6.5.6.1. 例子
      7. 6.5.7. usermod
        1. 6.5.7.1. 例子
      8. 6.5.8. groups groupadd groupdel
      9. 6.5.9. whoami
      10. 6.5.10. who
        1. 6.5.10.1. 参数
      11. 6.5.11. w
        1. 6.5.11.1. 参数
      12. 6.5.12. last
        1. 6.5.12.1. 例子
      13. 6.5.13. user
    6. 6.6. 进程查看
      1. 6.6.1. top
        1. 6.6.1.1. 参数
        2. 6.6.1.2. 快捷键
      2. 6.6.2. ps
        1. 6.6.2.1. 参数
        2. 6.6.2.2. 例子
      3. 6.6.3. pstree
        1. 6.6.3.1. 参数
      4. 6.6.4. pgrep
        1. 6.6.4.1. 参数
      5. 6.6.5. lsof
        1. 6.6.5.1. 例子
    7. 6.7. 进程操作
      1. 6.7.1. jobs/bg/fg
        1. 6.7.1.1. 例子
      2. 6.7.2. kill
        1. 6.7.2.1. 常用信号
        2. 6.7.2.2. 例子
      3. 6.7.3. killall
        1. 6.7.3.1. 参数
        2. 6.7.3.2. 例子
      4. 6.7.4. nice/renice
        1. 6.7.4.1. 参数
        2. 6.7.4.2. 例子
      5. 6.7.5. nohup
    8. 6.8. 包管理
      1. 6.8.1. apt
        1. 6.8.1.1. 例子
      2. 6.8.2. apt-get
    9. 6.9. 环境变量
      1. 6.9.1. export
        1. 6.9.1.1. 例子
        2. 6.9.1.2. 配置文件
      2. 6.9.2. source
        1. 6.9.2.1. 例子
    10. 6.10. 终端操作
      1. 6.10.1. echo
        1. 6.10.1.1. 例子
      2. 6.10.2. clear
      3. 6.10.3. history
        1. 6.10.3.1. 参数
        2. 6.10.3.2. 例子
      4. 6.10.4. login/logout
      5. 6.10.5. exit

linux命令学习

通配符

  • * 匹配 0 个或者多个字符
  • ? 匹配一个字符
  • [abcd] 匹配 abcd 中任意一个字符
  • [a-z] 匹配 a-z 任意一个字符
  • [!abc] 不匹配括号内任意一个字符,或者用 ^ 代替 !

linux 的文件目录

[!note]

  • 磁盘结构——树状,与 Windows 不同
  • ls / 把根的目录显示出
  • sudo apt-get install openssh -server安装 ssh 服务
  • sudo service ssh start启动 ssh 命令
  • /etc/init.d/ssh restart重启 ssh 服务

目录结构

  • bin
    • 存放命令
    • binary 的缩写
  • boot
    • 系统启动所需的目录
  • dev
    • 设备文件,把设备抽象成文件
    • device 缩写
  • etc
    • 系统所需的配置文件
  • home
    • 存放用户文件的目录,可以是不同用户的
  • lib
    • 动态库,给应用程序使用
    • library 缩写
  • lost+found
    • 异常关机产生的
  • media
    • 自动挂载的设备
  • mnt
    • 手动挂载的目录
    • 一般是空的,需要手动创建目录
  • opt
    • 安装的文件的目录
    • 类似 usr 目录
  • proc
    • 放进程有关的信息
    • process
  • root
    • root 用户的文件
  • sbin
    • super usr
    • 系统管理员会用的命令
  • usr
    • 用户程序的资源
    • 类似 program files
      • bin 用户所用的程序
      • sbin 超级用户使用的高级程序
      • src 内核源码
  • var
    • 存放经常修改的文件 如日志
  • srv
    • 系统服务启动后用到的数据

终端中不同颜色的含义

  • 白色 普通文件
  • 蓝色 目录
  • 绿色 可执行文件
  • 青色 链接文件 ln 文件
  • 红色 压缩文件
  • 黄色 设备文件
  • 灰色 其他文件

终端中的快捷键

终端中 ctrl 类

  • ctrl f 向前光标
  • ctrl b 向后光标
  • ctrl a 行首
  • ctrl e 行尾
  • ctrl p 上翻页(感觉和上下键的一样)
  • ctrl n 下翻页
  • ctrl h 删除前一个字符(就是 bcak 键)
  • ctrl d 删除光标的字符,就是对应的,不同上面的
  • ctrl u 删除光标前所有内容(不包括光标的字符)
  • ctrl k 删除光标至末尾的内容(包括光标的字符)
  • ctrl w 删除光标前单词(空格隔开)
  • ctrl y 快速恢复擦除的文本

终端中 tab

  • 补全输入的命令/路径(唯一的时候会补全,否则会下面)
  • 提示可能要输入的命令/路径

文件权限

  • 对于 drwxrwxrw-
    • 所有者 用户组 其他人
  • 权限类型
    • r 可读
    • w 可写
    • x 可执行/可切换目录
      • 无权限

命令

[!tip]
十分重要,但不局限于这些

一般类

man

  • 查看帮助手册,比如查看命令的使用方法,或者应用程序
常用参数
  • -f 显示简短描述信息(先使用这个,这样可以知道这个名字下是不是有同名的函数/命令)
  • -k 根据关键词搜索手册,和这个相关的都会出来
  • -w 显示手册文件所在位置
例子

[!note]
先打参数 再打需要操作的 word

  • man -f sleep
  • man 3 sleep 看第三个章节的 sleep (因为使用-f 查看时发现有多个 sleep,默认看的是 1)
快捷用法
  • /word 在帮助文档中搜索 word 关键词
    • n 下一个
    • shift n 上一个

info

  • 比 man 更复杂,有多页,有超链接
常见参数
  • -w 显示物理位置
  • -f 指定要访问的 info
  • -n 在首个浏览过的 info 文件中指定节点
  • -O 跳转至命令行选项节点
常用操作
  • n 显示下一节点的内容
  • p 显示上一节点的内容
  • l 返回上一个访问节点的内容
  • 空格 向前一页
  • back 向后一页
  • b/e 一个节点内容的开始/结束
  • h 打开 info 教程
  • d 回到 info 的初始节点
  • 回车 跳转到链接文本
  • q 退出

whatis

  • 查询命令执行的功能是什么
  • 相当于把 man -f 的结果打印出来

touch

作用
  • 改变已有文件的时间戳属性
  • 创建新的空文件
参数
  • -a 改变读取时间的记录(access change)
  • -m 改变修改时间的记录(modify change)
  • -c 不创建新文件
  • -t 设置文件时间记录,格式和 date 命令相同 touch -t 2201011030.55 file 2022 年 1 月 1 日 10 点 30 分 55 秒
  • -r 使用参考文件的时间记录 touch file -r ref_file
  • -d 使用指定字符串表示时间式 touch -d "tomorrow" file

mkdir

  • 创建目录 makedir,使用很多
参数
  • -p 递归创建多级目录
  • -m 建立目录同时设置权限
  • -v 显示目录创建过程
例子
  • 多个目录
    • mkdir dir1 dir2 dir3 创建多个笔记
    • mkdir dir{5..7} 创建 5 到 7 的目录
    • mkdir -p dir7/dir8/dir9 文件夹里面又有文件夹
  • mkdir -m 700 dir1/dir10 700 权限的递归目录

rm

  • 删除文件,remove
参数
  • -r 递归删除,把子目录的文件也删除
  • -f 忽略不存在的文件,不会出现警告信息
  • -v 显示执行的过程
  • -i 删除前会问是否进行操作
例子
  • rm -rf * 删除该目录下所有文件
  • rm -r dir 删除这个目录
  • rm file.txt 删掉这个文件

rmdir

  • 删除空目录
参数
  • -p 递归方式删除所有父级目录
  • -v 显示过程
例子
  • rmdr -p dir1/dir2/dir3 递归删除多重目录

mv

  • 移动文件
  • 重命名文件
参数
  • -i 存在同名,询问覆盖
  • -f 直接覆盖,不询问
  • -b 存在同名,覆盖前创建备份
  • -u 当源文件比目标的新,或者目标文件不存在,才执行移动的操作
例子
  • mv file.txt newnew.txt 重命名
  • mv file.txt /dir 移动到 dir 目录
  • mv dir1 dir2 把 dir1 移动到 dir2 中,存在的时候才会移动,不存在就是重命名
  • mv -i file1.txt file2.txt 提示是否覆盖
  • mv * ../ 移动当前文件夹下所有文件到上一目录
  • mv dir3/* dir2 将当前目录的一个子目录文件移动到另外一个子目录里面

cp

  • 复制文件和目录
参数
  • -f 目标文件存在,直接覆盖,默认就是-f,不会提示
  • -i 目标文件存在,询问是否覆盖
  • -a 一般复制目录的时候用,保留链接,文件属性,并复制目录下的所有内容
  • -r 递归复制文件和目录
  • -b 覆盖已存在的文件目标前将目标文件备份
  • -v 详细显示操作的过程
例子
  • cp file1.txt file2.txt 复制文件
  • cp -r dir1 dir2 复制目录
  • cp -a dir1 dir2 保留所有属性复制

cd

  • 切换目录
特殊目录
  • ~ 用户家目录
  • . 当前目录
  • .. 当前目录的上一级目录
  • / 根目录
  • - 上一次所在的目录
绝对路径和相对路径
  • 起始路径为/的为绝对路径
  • 不是/的是相对路径
例子
  • cd dir 切换到当前的 dir 目录
  • cd ../../ 切换到上上级目录
  • cd 切换到家目录
  • cd ~ 切换到上一次的目录

pwd

  • 打印当前路径,打印的是绝对路径
  • print working directory
例子
  • pwd 直接显示

ls

  • 显示目录信息
  • list
参数
  • -a 显示所有文件和目录(包括隐藏文件)
  • -l 长格式列出文件和目录信息
  • -r 相反次序显示(默认按英文字母显示)
  • -t 根据修改时间排序
  • -h 以人类可读的格式显示数字大小,会有 kb/mb/gb,不然就是直接比特显示
  • -A 同 -a 但不列出. 和 ..这个是当前目录和父目录,-a 会列出
  • -S 根据文件大小排序
  • -R 递归列出所有子目录
  • -F 在列出的文件名称后加一符号;
    • 可执行文件多个*
    • 目录多个/
例子
  • ls -a 列出所有文件,包括隐藏文件
  • ls -l 显示详细信息
  • ls / 列出根目录/下的所有文件
  • ls -lR 列出当前目录所有文件,包括子目录
  • ls -l f* 列出带 f 开头的文件详细信息
  • ls -ltr 列出所有文件,时间的倒序显示
  • ls -AF 显示所有文件和目录,并且加上特定独好区分文件
  • ls -lh 列出详细信息并显示文件大小

tree

  • 以树状图列出目录内容
参数
  • -a 显示所有文件和目录(加上隐藏文件)
  • -L 层级限制
  • -t 根据更改时间排序
  • -r 更改时间倒叙
  • -f 在每个文件或目录之前,显示完整的相对路径名称
  • -d 显示目录名称而非内容
  • -p 显示权限信息
例子
  • tree -L 2 显示 n 层目录

stat

  • 显示文件或者文件系统的详细信息
参数
  • -L 支持符号链接
  • -f 显示文件系统的信息
  • -t 简洁方式输出
三种时间
  • acess time 访问时间
    • 读取(more/less/cat/tail),修改时(vim/nano)改变
  • modify time 修改时间
    • 修改时改变
  • change tiem 状态改变时间
    • 修改,文件属性变化的改变(chmod/chown)

文件操作/工具类

rename

  • 用字符串替换的方式批量改变文件名
语法
  • rename 's/oldname/newname/' files
    • files 是修改的文件,可以是多个,用通配符表示
通配符
  • ? 替代单个字符
  • * 替代多个字符
参数
  • -n 模拟运行
  • -v 输出每步的执行信息
  • -f 强制执行
例子
  • rename 's/.txt/.doc/ myfile.txt' 把.txt 改成了.doc
  • rename -n 's/file/file0/' file* 模拟把 file 开头的所有文件都改成 file0 开头

chattr

  • 更改文件属性
参数
  • -R 递归处理目录下所有文件
  • -v 设置文件或目录版本
  • -V 显示指令执行过程
    • 开启某个权限
    • 关闭某个权限(属性)
  • = 指定某个权限
属性
  • 略 太多了
例子
  • chattr +i file.txt 防止修改
  • chattr -i file.txt 解锁
  • chattr +a file.txt 只允许最佳内容
  • chattr -R +i dir 给一个目录所有文件添加限制
  • lsattr file.txt 查看文件属性

file

  • 识别文件类型
参数
  • -b 列出文件类型,不显示文件名称
  • -c 详细限制执行过程
  • -f 指定名称文件,显示多个文件类型信息
  • -L 直接显示符号连接指向的文件类型
  • -m 指定魔法数字文件
  • -z 尝试区解读压缩包的内容
  • -i 显示 MIME 类型

md5sum

  • 生成和校验文件的 md5 值
参数
  • -b 以二进制模式读取文件
  • -t 以文本模式读入文件内容
  • -c 根据已知的 md5,对现存的文件进行校验
例子
  • md5sum file.txt > file.md5 将生成的 md5 值重定向到指定文件(md5 文件)
  • md5sum -c file.md5 直接对 file 文件进行 md5 验证
  • md5sum -c --status file.md5 ech$? 校验但是不显示任何输出,echo 返回码表示成功与否

find

  • 搜索指定文件
例子
  • find / -name *.conf 全盘搜索以 conf 结尾的文件
  • find /etc -size +1k 搜索/etc 目录下大于 1k 大小的文件
  • find . -type f 搜索当前目录所有文件
  • find . -perm 664 -exec ls -l {} \; 搜索 664 权限文件并列出
  • find . 列出当前目录和文件
  • find . -iname "*.txt" 搜索后缀为 txt 的,有 i 就是包括大写的
  • find . ! -name "*.txt" 反过来
  • find . -mtime -7 -exec rm -i {} \; 搜索 7 天内被修改的文件,并询问删除

which

  • 查找命令文件所在位置
  • 搜索在 path 变量中
例子
  • which bash 找 bash 在哪

whereis

  • 查找命令二进制程序、源码和 man 手册相关文件的路径
例子
  • whereis ls 找出所有
  • whereis -b ls 只找二进制程序
  • whereis -m ls 只找 man 手册页路径

locate

  • 快速查找文件或者目录
例子
  • locate file.txt 找带 file.txt 的所有文件
  • locate /etc/sh
  • locate whereis
  • locate -i locate/f 查找该路径下 f 开头的文件,-i 不区分大小写

chown

  • Change owner
  • 改变用户和用户组
参数
  • -c 显示变更信息
  • -R 目录下所有都改变
例子
  • sudo chown alvin:alvin file.txt 把这个文件的用户组和用户改成 alvin
  • sudo chown :alvin file.txt 改用户组
  • sudo chown -R alvin:alvin dir 把指定目录和其他子文件都该了

chgrp

  • 改变用户组
  • 和 chown 很像

chmod

  • Change mod
  • 改变文件权限
模式
  • 符号模式
    • 对象
      • u user 文件所有者
      • g group 文件所有组所在组
      • o others 其他用户
      • A all 所有用户,相当于 ugo
    • 操作
        • 加权限
        • 去除权限
      • = 重新设置权限
    • 权限
      • r 读
      • w 写
      • x 执行
  • 数字模式
    • 类似二进制的代码,加起来,数字代表权限
参数
  • -R 递归处理所有文件
例子
  • chmod a+r file.txt 设置都可读
  • chmod -R a+r 全部设置可读取
  • chmod u+x file.txt 文件拥有者才能执行
  • chmod ug+w,0-w file.txt 所有者和同组可写,其他人不可写
  • chmod a+r,a+w,a+x file.txt chmod 777 file.txt 设置所有人都可读可写可执行
  • chmod 755 file.txt 拥有者可读可写可执行,其他人可读可执行
  • chmod 9=rw,go= file.txt 拥有者可读可写,其他人没有权限

grep

  • 文本搜索工具
参数
  • -i 忽略大小写
  • -c 输出匹配行的数量
  • -l 只列出符合的文件名,不输出匹配行
  • -n 列出所有匹配行,显示行号
  • -h 查询多文件时不显示文件名
  • -s 不显示不存在,不匹配的错误信息
  • -v 显示不包含匹配文本的所有行
  • -w 匹配整词
  • -x 匹配整行
  • -r 递归搜索
  • -q 禁止输出任何结果,退出状态标识是否成功
  • -b 打印距离文件头部偏移量,字节为单位
  • -o 于-b 结合使用
  • -F 匹配固定字符串的内容
  • -E 支持扩展的正则表达式
例子
  • grep -rl hello * 目录下及其子目录搜 hello
  • grep root /etc/passwd /etc/shadow 搜索多个文件中的内容 root

egrep

  • 性能更好且优化的 grep -E
  • 可使用正则表达式
例子
  • egrep 'a+' file.txt 找包含一个以上 a 的内容
  • egrep 'linux|666 file.txt' 包含 linux 或者 666
  • egrep '(linux)+' file.txt 包含多个 linux 整体的内容
  • egrep '^#' file.txt 查找 # 开头的内容
  • egrep 'linux$' file.txt 查找 linux 结尾的内容
  • egrep '(ab){3} file.txt' 查找连续出现三次 ab 的内容
  • egrep 'ab[cd]' file.txt 查找包括 abc 或者 abd 的内容

cat

  • 查看文件内容
参数
  • -n 显示行数
  • -s 去除重复的空行
  • -b 显示行数,空行不算
  • -E 每行结束显示$
  • -T 将 tab 显示为 ^I
例子
  • cat -b file.txt 显示行数
  • cat file.txt > file1.txt # 重定向内容
    • 若 file1 不存在则创建,内容被覆盖
    • 换成 >> 就变成追加到末尾,不会覆盖
  • cat file1.txt file2.txt > combine.txt 合并文件
  • cat > file.txt 创建文件,完成后 ctrl+d 保存

more

  • 分页显示内容,只能往下翻,不能往前
操作
  • 回车 下一行
  • 空格下一页
例子
  • more -c -10 ~/.bashrc 清屏操作,每次十行显示
  • more -s +10 ~/.bashrc 从第十行开始,连续两行空白,合并成一行空白显示

less

  • 分页显示,可以上下翻页
操作
  • 回车/j 下一行
  • k 上一行
  • 空格/f 下页
  • b 上一页
  • q 退出
  • /xx 搜索
    • n 下一个
    • Shift n 上一个
例子
  • less abc def 查看两个文件
    • :n 浏览下一个文件
    • :p 浏览前一个文件
  • history | less 以 less 命令分页查看 history 命令,用管道

nl

  • 添加行号显示
例子
  • nl -b t file.txt 空行没有行号,默认没有
  • nl -b a -n rz -w 3 file.txt 行号右边显示,加 0 填充,宽度为 3,空行有行号

split

  • 文件分割
例子
  • split -2 file2.txt 每两行分成一个文件
  • split -b 10k file2.txt 每 10kb 切割
  • split -b 10k -d -a 3 file2.txt 数字后缀,宽度为 3
  • split -b 10k -d -a 3 file2.txt split_file 指定前缀

diff

  • 比较文件的差异
参数
  • -y 并列方式显示
  • -c 显示全文,标出不同之处
  • -u 合并的方式显示不同
  • -W 设置宽度
显示提示
  • a -add
  • c -change
  • d -delete
  • | 前后两个文件内容不同
  • < 后面比前面少了一行
  • > 后面比前面多了一行
    • 后面比前面多了一行
    • 后面比前面少了一行
  • ! 有差别的行
例子
  • diff -y -W 50 file1.txt file2.txt 并排格式输出
  • diff -c file1.txt file2.txt 上下文格式输出
  • diff file1.txt file2.txt > file.patch 生成补丁
  • patch file1.txt file.patch 打补丁

tr

  • 转换或者删除文件中的字符
参数
  • -c 反选字符
  • -d 删除集合中的字符
  • -s 缩减连续字符成指定单个字符
例子
  • tr -d "[a-z]" 删除小写字母
  • tr -d 0-9 删除数字
  • tr -d -c '0-9 \n' 删除不在集合中的字符
  • tr -s '\n' 压缩重复空白行

du

  • 查看磁盘使用空间
参数
  • -a 显示目录中所有文件大小
  • -h 易读方式显示
  • -s 看目录占用大小

df

  • 查看磁盘空间使用情况
参数
  • -a 显示所有文件系统
  • -h 易读显示
  • -i 显示 inode 信息
  • -t<文件系统类型> 显示指定文件系统类型的文件系统
  • -T 输出时显示系统类型

sync

  • 强制将更改的内容立刻写入磁盘

mount

  • 挂载文件系统
参数
  • -o 挂载方式
    • loop 用来把一个文件当成硬盘分区挂载接上系统
    • ro 只读方式挂载
    • rw 读写方式挂载
    • iocharset 指定访问文件系统所用字符集
  • -t 指定挂载类型
例子
  • mount -t tmpfs 查看当前系统挂载的所有文件系统信息
  • sudo mount /dev/sdb /mnt/udisk 把 U 盘挂载
  • sudo mount -0 loop /home/xxiso /mnt/iso 把 ISO 镜像挂载

umount

  • 卸载文件系统
例子
  • umount -v /dev/sdb 设备名卸载
  • umount -v /media/chris/xxx 挂载点卸载

tar

  • 打包/解压工具
参数
  • -c 新建打包文件
  • -x 解压
  • -f 指定需要处理的文件
  • -z 通过 gzip 方式压缩 .tar.gz 为后缀
  • -v 显示过程
  • -t 查看打包文件内容
  • -C dir 指定压缩/解压目录
例子
  • tar -zcvf file.tar *.txt 所有 txt 打包压缩
  • tar -zxvf file.tar.gz 解压到当前目录

zip

  • 压缩
参数
  • -v 显示执行过程
  • -d 更新包内内容
  • -r 递归处理
例子
  • zip -r dir.zip dir
  • zip files.zip *.txt
  • zip -dv files.zip newfile.txt 添加新文件进去压缩包

unzip

  • 解压
参数
  • -l 显示压缩包包含文件
  • -v 显示过程
  • -d <目录> 解压到指定位置
例子
  • unzip -v file.zip 显示文件列表包含压缩比率
  • unzip files.zip -d udir/ 解压指定目录

gzip/gunzip

  • 对文本高效率压缩
参数
  • -d 解开压缩文件
  • -k 保留源文件
  • -l 列出压缩文件信息
  • -r 递归
  • -v 显示执行过程
  • -t 测试压缩包

系统类

uname

  • 显示系统信息
参数
  • -a 显示所有
  • -m 显示架构
  • -n 主机名称
  • -s 内核
  • -r 内核发行版本号
  • -v 内核版本
  • -p 处理器
  • -o 操作系统名称
  • -i 显示硬件平台

hostname

  • 设置系统主机名

uptime

  • 显示系统启动时间和负载信息
参数
  • -p 正常运行时间
  • -s 系统启动时间

free

  • 显示内存使用量
参数

ulimit

  • 控制 shell 程序的资源

init

  • 切换系统运行级别

service

  • 控制系统服务

vmstat

  • 显示虚拟内存状态

iostat

  • 监视出入输出设备和 CPU 使用情况

ipcs

  • 显示进程间通讯设备信息

网络类

route

  • 显示并设置路由
例子
  • route add -net 244.0.0.0 netmask 24.0.0.0 dev ens33 添加网关/设置网关
  • route -n 显示当前路由
  • route add -net 244.0.0.0 netmask 24.0.0.0 reject 屏蔽一条路由

ping

  • 测试网络连通性
参数
  • -c 指定发送报文数目
  • -i 指定发送间隔
  • -s 设置大小
  • -t 设置 TTL 大小

traceroute

  • 追踪数据包在网络上传输的全部路径
参数
  • -m <数量>设置检测数据包最大存活数值 ttl 的大小
  • -n 直接使用 ip
  • -p <端口> 指定 udp 端口
  • -q 探测包个数

ifconfig

  • 查询修改网络信息
  • Network interface configuring
  • 设置重启后失效
参数
  • Add 设置设备 ipv6
  • Del 上传
  • Down 关闭指定设备
  • Up 启动

ifup/ifdown

  • 激活/禁用网络接口

netstat

  • 查看网络状态
参数
  • -a 显示连线中所有 socket
  • -p 显示正在使用 socket 的程序识别码和程序名称
  • -l 仅列出监听的服务状态
  • -t 显示 tcp 的情况
  • -u udp
  • -i 显示网络界面信息表单
  • -r 显示路由表信息
  • -n 直接使用 ip 地址,不通过域名服务器
  • -x unix 端口
  • -s 所有端口

ss

  • 显示活动套接字信息
  • 很强大,东西太多了
例子
  • ss -at 显示 tcp 套接字
  • ss -s 显示套接字使用情况
  • ss -lp | grep 6010 找出端口/套接字应用程序
  • ss -tlr 解析 IP 和端口号

telnet

  • 远程登入服务器

ssh

  • 安全远程连接工具
参数
  • -l <登录名> 指定用户名
  • -p <端口> 指定端口

ftp

  • 文件传输协议客户端

sftp

  • 安全的 ftp
参数
  • -r 下载目录的时候使用,递归
例子
  • sftp -P 30 chris@192.168.2.34 可以不跟端口

lftp

  • 优秀的文件客户端
  • 支持各种协议
例子
  • get file.txt mget file*.txt mget -c *.txt 下载
  • mirror dir 下载整个目录
  • mirror -R dir 上传目录
  • mput new*.txt put file.txt 上传

wget

  • 下载文件
参数
  • -i 下载指定文件中列出的地址
  • -O 下载后重命名
  • -c 打开断点续传
  • -b 启动后转入后台执行
  • -P 只当保存路径
例子
  • wget --limit-rate=300k -O newname.zip https://xx/xx.zip
  • tail -f wget-log 查看下载进度

scp

  • 远程拷贝文件
参数
  • -r 递归复制目录
  • -p 保留源文件的时间,模式属性
  • -P 指定传输的端口号
例子
  • scp chris@ip:/home/file.txt /myhome/ 复制文件到指定目录

curl

  • 强大的文件传输工具
参数
  • -o 指定新的本地文件名
  • -O 保留远程文件的原始名
  • -u 通过服务端配置的用户名和密码授权访问
  • -A 设置用户代理标头信息
  • -b 设置 cookie 信息
  • -C 断点续传
  • -s 静默模式
  • -T 上传文件
例子
  • curl -T newfile.txt -u root:key ftp://xxxxx/xx/dir 上传
  • curl -o myname.zip https://xxx/xx.zip 下载并重命名

host

  • 查询域名
参数
  • -a 详细信息
  • -v 显示执行过程

tcpdump

  • 监听网络流量
  • 内容太多了
例子
  • tcpdump -i ens33 指定网络接口数据包
  • tcpdump -c 10 -q 精简显示 10 个包
  • tcpdump host www.xxxx.xx
  • tcpdump -i any port 22 -A 监听指定端口,并文本显示

nc

  • 设置路由器,建立连接, 端口扫描等等,很强大
  • 瑞士军刀,netcat
参数
  • -v 显示执行过程
  • -w<超时时间> 设置等待连线时间
  • -u udp 协议
例子
  • nc-v -z -w2 192xxxxip 1-100 扫描端口范围
  • nc ip port 连接端口

用户管理

useradd

  • 创建并设置信息
参数
  • -m 自动创建家目录
  • -M 不要创建家目录
  • -s 指定用户登录后使用的 shell
例子
  • useradd -m -s /bin/bash user2 常用创建方法
  • useradd -g group username 指定组 id

passwd

  • 修改密码
参数
  • -d 删除密码
  • -l 锁定用户密码值,不可改
  • -u 解锁,可以改
  • -e 下次登录强制修改密码
  • -k 到期还能用
  • -S 查询密码状态
例子
  • passwd -l chris 锁定密码

userdel

  • 删除用户
例子
  • userdel -r chris 把家目录和账号都删掉

su

  • 切换用户
例子
  • su -c whoami alivin 执行 whoami 之后退后原来的
  • su - chris 切换账号并改到 chris 的家目录

sudo

  • 管理员身份执行
例子
  • sudo -l 列出当前用户权限

id

  • 显示 id
例子
  • id -g chris 显示所属组的 id

usermod

  • 修改用户信息
例子
  • usermod -u 1234 chris 修改 uid
  • usermod -l harry chris 修改名字成 harry
  • usermod -L chris 锁定

groups groupadd groupdel

  • 组管理

whoami

  • 打印当前登录用户

who

  • 查看当前登录用户信息(所有人)
参数
  • -a 全面信息
  • -b 系统最近启动工商局
  • -l 系统登录进程
  • -H 带有标题打印用户名,终端,时间
  • -u 已登录用户列表
  • -q 列出所有用户数量和名称

w

  • 现在登录用户
参数
  • -h 不打印头信息
  • -u 显示当前进程和 cpu 时间时忽略用户名
  • -s 短输出
  • -f 从哪登录
  • -o 老式输出
  • -i 显示 ip 而不是主机名

last

  • 显示用户或终端的登录情况
例子
  • last -n 5 -a -i 最后一列显示 ip,显示 5 行

user

  • 显示当前登录的用户

进程查看

top

  • 实时显示进程动态
参数
  • -d 指定刷新间隔
  • -c 切换显示命令名称和完整命令行
  • -p 通过监控进程 id 看一个
  • -n 信息更新最大次数
快捷键
  • c 显示进程绝对路径
  • P cpu 排序
  • M 内存排序

ps

  • 显示进程状态
参数
  • -A 显示所有进程信息
例子
  • ps -aux 显示所有程序
  • ps -axf 树形显示进程
  • ps -u chris 指定用户
  • ps -aux | less 配合 less

pstree

  • 树状图显示进程
参数
  • -a 显示完整指令
  • -c 不使用精简表示法
  • -G 使用 VT100 终端机的列绘图字符
  • -h 特表指明正在执行的程序

pgrep

  • 检索进程
参数
  • -d 设置字符用于分割 id
  • -f 模式参数仅用于匹配进程名
  • -l 列出名字和 id
  • -u 匹配指定有效用户 id 进程

lsof

  • 查看进程打开的文件
例子
  • lsof +d /home 显示指定目录中被调用的文件信息
  • lsof -c bash 只当某个程序的信息
  • lsof +D /home 递归显示
  • lsof /bin/bash 查看谁在用这个文件

进程操作

jobs/bg/fg

  • 终端任务调度
例子
  • jobs -l 列出当前 shell 任务
  • fg 2 调至前台
  • ctrl+z 后台
  • bg 2 后台

kill

  • 发送信号到进程
常用信号
  • 9 终止
  • 3 退出 ctrl \
  • 2 终端 ctrl+c
  • 1 终端断线
  • 15 终止
  • 19 暂停
  • 18 继续
例子
  • kill -9 18889 杀死进程

killall

  • 杀死进程
  • 也能发送信号
参数
  • -l 打印所有信号
  • -u 杀死指定用户进程
例子
  • killall sleep 杀死所有 sleep 进程

nice/renice

  • 调整进程优先级
参数
  • -n 接数值
  • -g 指定进程组
  • -p 改变优先级等级
  • -u 指定开启进程的用户名
例子
  • nice -15 vim & nice -n 15 vim & 设置优先级
  • renice 6 -p 6666 把 6666 进程改优先值

nohup

  • 后台运行,不显示终端

包管理

apt

  • 包管理器
例子
  • sudo apt update upgrade
  • sudo apt upgrade vim
  • sudo apt install bat 安装
  • sudo apt remove bat 卸载
  • sudo apt show bat 展示软件包信息
  • sudo apt autoremove 自动清理依赖和库文件
  • sudo apt list --installed 列出已安装的软件包

apt-get

  • 类似的,用 apt

环境变量

export

  • 显示设置环境变量
  • 仅仅本次登录
例子
  • export -p 列出
  • export MYenv=7 定义环境变量
  • export PATH=$PATH:/usr/local/mysql/bin 修改变量
配置文件
  • /etc/porfile 所有用户
  • ~/.bashrc 当前用户

source

  • 更新环境变量
  • 可以用 . 来代替
例子
  • . ~/.bashrc 读取和执行 bashrc 文件

终端操作

echo

  • 输出字符串
例子
  • echo $PATH $把 path 提取出来打印
  • echo "hello" > file.txt 定向到文件
  • echo -e "a\nb\nc" 开启转义
  • Echo `date` 能执行命令,显示结果

clear

  • 清理屏幕

history

  • 管理命令记录
参数
  • -c 清空记录
  • -d 删除指定序号的记录
  • -n 读取命令记录
例子
  • !2039 重新执行 2039 命令
  • !! 执行上一条

login/logout

  • 登入登出

exit

  • 退出终端/ssh