Linux 常用命令总结(笔记)

一些基础Linux命令学习笔记

系统常用命令

命令基本格式

命令 [选项] [参数]

  • ls [选项] [文件或目录]
    • 选项
      • -a 所有文件(包括隐藏)
      • -l 详细信息
      • -d 目录属性
      • -h 人性化显示文件大小
      • -i 显示innode
  • llls -l 的别名

文件处理命令

目录或文件处理命令

  • 建立目录 mkdir -p [目录名]
  • 切换目录 cd [目录]
  • 查询所在目录位置 pwd
  • 删除空目录(一般不用) rmdir [目录名]
  • 删除文件或目录 rm [选项] [文件或目录]
    • 选项
      • -r 删除目录
      • -f 强制
  • 复制文件或目录 cp [选项] [源文件或目录] [目标目录]
    • 选项
      • -r 复制目录
      • -p 连带文件属性复制
      • -d 若源文件是链接文件,则复制链接属性
      • -a 相当于-pdr
  • 剪切或改密命令 mv [原文件或目录] [目标目录]
常用类型目录
  • / 根目录
  • /bin 命令保存目录
  • /boot 启动目录
  • /dev 设备文件
  • /etc 配置文件
  • /home 普通用户家目录
  • /lib 系统库
  • /mnt 挂载目录
  • /root 超级用户的家目录
  • /tmp 临时目录
  • /sbin 命令保存目录(超级用户)
  • /proc 内存的过载点
  • /sys 内存的过载点
  • /usr 系统软件资源
  • /var 系统相关文档内容

链接命令

  • 生成链接文件 ln [选项] [目标文件]
    • 选项
      • -s 创建软链接
    • 注意:不在同一目录创建软链接时,目标文件需要写绝对路径
硬链接特征
  • 拥有相同的i节点和存储block块
  • 可通过i节点识别
  • 不能跨分区
  • 不能针对目录是用
软链接特征
  • 类似windows快捷方式
  • 拥有自己的i节点和block块,但数据块种只保存原文件的文件名和i节点好,并没有时机的文件数据
  • lrwxrwxrwx
  • 修改任意文件,另一个都改变
  • 删除原文件,软链接不能使用

文件搜索命令

文件名搜索命令locate

  • locate 文件名
    • 在后台数据库种进行搜索,数据库大概每天自动更新一次,也可以手动用 updatedb 更新
    • locate的配置文件 /etc/updatedb.conf
      • PRUNE_BIND_MOUNTS 是否开启搜索限制
      • PRUNEFS 搜索时,不搜索的文件系统
      • PRUNENAMES 搜索时,不搜索的文件类型
      • PRUNEPATHS 搜索时,不搜索的路径

命令搜索命令whereis/which

  • whereis 命令名
    • 搜索命令所在路径及帮助文档所在地址
    • 选项:
      • -b 只查找可执行文件
      • -m 只查找帮助文件
  • which 命令名
    • 搜索命令所在的路径及别名

文件搜索命令find

  • find [搜索范围] [搜索条件]
    • 搜索范围
    • 搜索条件:选项+条件
      • 选项:
        • 搜索选项:
          • -name 按照文件名搜索
          • -iname 不区分大小写
          • -user 按照所有者搜索
          • -nouser 按照没有所有者的文件
          • -mtime 按照修改文件内容的时间搜索
          • -atime 按照文件访问时间搜索
          • -ctime 按照改变文件属性时间搜索
          • -size 按照文件大小查找
          • -inum 按照i节点查找
        • 其他:
          • -a 逻辑与 and
          • -o 逻辑或 or
          • -exec 命令 {} \; 对搜索结果执行操作

字符串搜索命令grep

  • grep [选项] 字符串 文件名
    • 在文件当中匹配符合条件的字符串
    • 选项:
      • -i 忽略大小写
      • -v 排除指定字符串

find命令与grep命令的区别

  • find命令:在系统中搜索符合条件的文件,使用通配符,完全匹配
  • grep命令:在文件中搜索符合条件的字符串,使用正则表达式,包含匹配

帮助命令

  • man 命令
    • 获取指定命令的帮助
    • man的级别
      • 1 查看命令的帮助
      • 2 查看可被内核调用的函数的帮助
      • 3 查看函数和函数库的帮助
      • 4 查看特殊文件的帮助(主要是/dev目录下的文件)
      • 5 查看配置文件的帮助
      • 6 查看游戏的帮助
      • 7 查看其他杂项的帮助
      • 8 查看系统管理员可用的帮助
      • 9 查看和内核相关文件的帮助
    • man -级别 命令
      • 查看该级别命令的帮助
    • man -f 命令
      • 查看命令拥有哪个级别的帮助
      • 相当于 whatis 命令
    • man -k 命令
      • 查看和命令相关的所有帮助
      • 相当于 apropos 命令
  • 其他帮助命令
    • 选项帮助
      • 命令 --help 获取命令选项的帮助
    • shell内部命令帮助
      • help shell内部命令 获取shell内部命令的帮助
      • 可以用 whereis 命令 确定是否是shell内部命令
    • 详细命令帮助info
      • info 命令
        • -回车 进入子帮助页面(带有*号标记)
        • -u 进入上层页面
        • -n 进入下一个帮助小节
        • -p 进入上一个帮助小节
        • -q 退出

压缩与解压缩命令

  • 常用压缩格式
    • .zip
    • .gz
    • .bz2
    • .tar.gz
    • .tar.bz2
  • .zip格式
    • zip 压缩文件名 源文件 压缩文件
    • zip -r 压缩文件名 源目录 压缩目录
    • unzip 压缩文件 解压缩
  • .gz格式
    • gzip 源文件 压缩为.gz格式,源文件会消失
    • gzip -c 源文件 > 压缩文件 压缩为.gz格式,源文件保留
    • gzip -r 目录 压缩目录下所有的子文件,但是不能压缩目录
    • gzip -d 压缩文件 解压缩
    • gunzip 压缩文件 解压缩
  • .bz2格式
    • bzip2 源文件 压缩为.bz2格式,不保留源文件
    • bzip2 -k 源文件 压缩为.bz2格式,保留源文件
    • bzip2命令不能压缩目录
    • bzip2 -d 压缩文件 解压缩,-k保留压缩文件
    • bunzip2 压缩文件 解压缩,-k保留压缩文件
  • .tar.gz格式和.tar.bz2格式
    • tar命令
      • tar -cvf 打包文件名 源文件 打包命令
        • 选项
          • -c 打包
          • -v 显示过程
          • -f 指定打包后的文件名
      • tar -xvf 打包文件名 解打包命令
        • 选项
          • -x 解打包
    • 打包压缩
      • tar -zcvf 压缩包名.tar.gz 源文件
        • 选项
          • -z 压缩为.tar.gz格式
      • tar -jcvf 压缩包名.tar.gz 源文件
        • 选项
          • -j 压缩为.tar.bz2格式
    • 解压缩打包文件
      • tar -zxvf 压缩包名.tar.gz 后面可以跟 -C 指定解压缩位置
        • 选项
          • -zx 解压缩.tar.gz格式
      • tar -jxvf 压缩包名.tar.gz 后面可以跟 -C 指定解压缩位置
        • 选项
          • -jx 压缩为.tar.bz2格式

关机和重启命令

  • shutdown [选项] 时间 比较安全,推荐使用
    • 选项:
      • -c 取消前一个关机命令
      • -h 关机
      • -r 重启
  • 其他关机命令
    • halt
    • poweroff
    • init 0
  • 其他重启命令
    • reboot
    • init 6
  • 系统运行级别
    • 级别
      • 0 关机
      • 1 单用户
      • 2 不完全多用户,不含NFS服务
      • 3 完全多用户
      • 4 未分配
      • 5 图形界面
      • 6 重启
    • cat /etc/inittab 修改系统默认运行级别
    • runlevel 查询系统运行级别
  • logout 退出登录

其他常用命令

挂载命令

  • mount 查询系统中已经挂载的设备
  • mount -a 依据配置文件/etc/fstab的内容,自动挂载
  • mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
    • -t 文件系统 加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
    • -o 特殊选项 可以指定挂载的额外选项
      • atime/noatime 更新访问时间/不更新访问时间
      • async/sync 异步/同步
      • auto/noauto 自动/手动
      • defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
      • exec/noexec 执行/不执行
      • remount 重新花在已经挂载的文件系统,一般用于指定修改特殊权限
      • rw/ro 读写/只读
      • suid/nosuid 具有SUID权限/不具有SUID权限
      • user/nouser 允许普通用户挂载/不允许普通用户挂载
      • userquota 写入代表文件系统支持用户磁盘配额,默认不支持
      • grpquota 写入代表文件系统支持组磁盘配额,默认不支持
  • umount 设备文件名或挂载点 卸载命令
  • 光盘挂载
    • mkdir /mnt/cdrom 建立挂载点
    • mount [-t iso9660] /dev/sr0 /mnt/cdrom 挂载光盘
    • umount /mnt/cdrom 卸载光盘
  • U盘挂载
    • fdisk -l 查看U盘设备文件名
    • mount -t vfat /dev/sdb1 /mnt/usb/ 挂载U盘(注意:Linux默认不支持NTFS文件系统)

用户登录查看和用户交互命令

  • w [用户名] 查看登录用户信息
  • who [用户名] 查看登录用户(少量)信息
  • last 查看当前登录和过去登录的用户信息
  • lastlog 查看所有用户的最后一次登录时间

shell命令

shell概述

  • vi /etc/shells Linux支持的shell

脚本执行方式

输出命令

echo [选项] [输出内容]

  • 选项:
    • -e 支持反斜线控制的字符转换

编写脚本

1
2
3
4
5
6
7
8
9
10
11
$ vim hello.sh

# 进入编辑界面
# --------------------

#!/bin/Bash
# The Frist Program

echo -c "\e[1;34m Hello World \e[0m"

:wq

脚本执行方法

  • 赋予执行权限,直接运行
    1. chmod 755 hello.sh 赋予权限
    2. ./hello.sh 运行
  • 通过Bash调用执行脚本
    • bash hello.sh

Bash的基本功能

命令别名与快捷键

  • 别名
    • alias 查看默认已经生效的别名
    • alias 别名='原命令' (临时)设置别名
    • vi ~/.bashrc 写入环境变量配置文件使别名永久生效
    • unalias 别名 (临时)删除别名
  • 命令生效顺序
    1. 执行用绝对路径或相对路径执行的命令
    2. 执行别名
    3. 执行Bash的内部命令
    4. 执行按照$PATH幻境变量定义的目录查找顺序找到的第一个命令
  • 常用快捷键
    • ctrl+c 强行终止当前命令
    • ctrl+l 清屏
    • ctrl+a 光标移动到命令行首
    • ctrl+e 光标移动到命令行尾
    • ctrl+u 从光标所在的位置删除到行首
    • ctrl+z 把命令放入后台
    • ctrl+r 在历史命令中搜索

历史命令

  • history [选项] [历史命令保存文件] 历史命令
    • 选项
      • -c 清空历史命令
      • -w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
  • 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
  • 历史命令的调用
    • 使用上下箭头调用以前的历史命令
    • 使用 !n 重复执行第n条历史命令
    • 使用 !! 重复执行上一条命令
    • 使用 !字符串 重复执行最后一条以该字符串开头的命令
  • 命令和文件补全
    • 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按tab键就会自动进行补全

输出(输入)重定向

标准输入输出
设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出
输出重定向
类型符号作用
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
标准输出重定向命令 >> 文件以追加的方式,把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向错误命令 2>文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
标准错误输出重定向错误命令 2>>文件以追加的方式,把命令的错误输出输出到指定的文件或设备当中
正确和错误输出同时保存命令 > 文件 2>&1以覆盖的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令 >> 文件 2>&1以追加的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令 &>文件以覆盖的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令 &>>文件以追加的方式,把正确和错误输出都保存到同一个文件当中
正确和错误输出同时保存命令>>文件1 2>>文件2把正确输出追加到文件1中,把错误输出追加到文件2中

输入重定向

  • wc [选项] [文件名] 统计
    • 选项
      • -c 统计字节数
      • -w 统计单词数
      • -l 统计行数
  • 命令 < 文件把文件作为命令的输入
  • 命令 << 标识符
    • 把到标识符为止的内容作为命令的输出

多命令顺序执行

多命令执行符
  • 命令1; 命令2
    • 多个命令顺序执行,命令之间没有任何逻辑联系
  • 命令1 && 命令2
    • 逻辑与
    • 当命令1正确执行,则命令2才会执行
    • 当命令1执行不正确,则命令2不会执行
  • 命令1 || 命令2
    • 逻辑或
    • 当命令1执行不正确,则命令2才会执行
    • 当命令1正确执行,则命令2不会执行
管道符
  • 命令1 | 命令2
    • 命令1的正确输出作为命令2的操作对象

Shell中特殊符号

通配符
  • ?
    • 匹配一个任意字符
  • *
    • 匹配0个或任意多个任意字符,也就是可以匹配任何内容
  • []
    • 匹配中括号中任意一个字符(例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c)
  • [-]
    • 匹配中括号中任意一个字符,-代表一个范围(例如:[a-z]代表匹配一个小写字母)
  • [^]
    • 逻辑非,表示匹配不是中括号内的一个字符(例如:[^0-9]代表匹配一个不是数字的字符)
其他特殊符号
  • '' 单引号
    • 单引号中所有的特殊符号都没有特殊含义
  • "" 双引号
    • 在双引号中特殊字符没有特殊含义
    • 例外:
      • "$" 调用变量的值
      • "`" 引用命令
      • "\" 转义符
  • `` 反引号
    • 反引号括起来的内容是系统命令,在bash中会先执行它。和$()作用一样。推荐使用$(),因为反引号非常容易看错
  • $()
    • 和反引号作用一样,用来引用系统命令
  • #
    • 在shell脚本中,#开头的行代表注释
  • $
    • 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式
  • \ 转义符
    • 跟在\后面的特殊符号将失去特殊含义,变为普通字符