Linux入门基础

Shell:是一个壳,把内核封装在里面,把命令传给操作系统。分为CLI、GUI

CLI:Command Line Interface,命令行界面 Bash
GUI:Graphical User Interface,图形界面

命令行Bash基本操作

这几个平时不常用,主要写脚本时用

  • history 查看历史命令信息
  • !! 重复前一个命令
  • !字符 重复前一个以“字符”开头的命令
  • !num 按照历史记录的序号执行命令
  • !?abc 重复之前包含“abc”的命令行
  • !-n 重复n个命令之前的命令

搜索历史命令

  • Ctrl + r 在历史记录中搜索命令
  • esc 然后再按 . 调用上一个命令

命令行通配符 其实就是正则表达式中的规则

    • 匹配零个或多个
  • ? 匹配任意一个字符
  • [0-9] 匹配一个数字范围
  • [abc] 匹配列表里任何字符
  • [^abc] 匹配列表以为字符

切换用户

  • su - "用户名" 切换用户,不写参数,切到root用户,不加-,就在原来窗口
  • sudo 使用管理员用户身份来运行命令
  • id 显示当前用户信息
  • passwd 修改当前用户密码
  • exit 退出当前用户

Bash作业管理

  • 在后台运行进程,在命令后添加一个 &
  • 暂停某个程序,通过Ctrl + z 或者发送信号7
  • 终止某个程序 : Ctrl + c
  • jobs 查看当前在后台运行的所有程序
  • bg + 命令编号 控制一个程序继续在后台运行
  • fg + 命令编号 把一个程序拉到前台
  • sleep 30 暂停30秒

Linux 文件系统结构

  • 根目录为"/"

  • 文件系统严格区分大小写(window中不区分)

  • 路径使用“/”分割(window中使用“\”)

  • pwd print work directory当前工作目录

  • ls list 当前目录下的内容 -a:显示隐藏文件 -l:显示详细信息 -R:递归的显示子目录 -ld:显示目录和链接的信息cd

  • touch/mkdir 创建文件/文件夹,touch可以更新已有文件时间

  • rm/rm -r (remove)删除文件/文件夹 -i 交互式(需要yes/no) -f 强制删除,没有警告

  • rmdir 删除空目录

查看文件类型

  • file 查看文件类型

绝对路径和相对路径

  • cd ~ 家目录
  • cd .. 上一级目录
  • cd . 当前目录
  • cd - 上一个工作目录

复制、移动、重命名文件、目录

  • cp 源文件 目标文件 -r:递归复制整个目录树 -v:显示详细信息
  • mv 文件 目标目录 如果指定文件名,则可以重命名文件

Linux 系统目录架构

  • bin (binary)保存可执行的二进制命令,也就是保存的命令
  • boot 各系统的引导文件
  • dev (device)抽象成文件的系统的硬件设备
  • etc 操作系统的配置文件
  • home 家目录
  • root 管理员用户目录,有❌,说明没有权限看
  • lib 库文件
  • proc 当前操作系统实时信息,只存在内存汇总
  • sbin 可执行的二进制文件,只有超级用户才能执行,bin中都可以操作
  • system 底层硬件信息
  • tmp 临时目录,会定期自动清除
  • usr 默认保存安装的应用软件的位置
  • opt 默认大型软件保存的位置
  • var 保存经常变化的信息。如系统的日志信息、邮件

常用命令

日期命令

  • date 查看当前系统时间
  • date -u 格林尼治时间
  • date + %Y - %m - %d 自定义输入格式
  • cal 查看日历
  • uptime 查看系统运行时

输出命令

  • echo 显示输入的内容
  • cat 显示文件内容
  • more 翻页形式显示文件内容(只能向下翻页)
  • less 翻页显示文件(带上下翻页)
  • head 显示文件头几行(默认10行)-n 指定显示的行数
  • tail 显示文件末尾几行(默认10行) -n 指定显示的行数 -f 追踪显示文件的更新(一般用于查看日志)

查看硬件信息

  • lspci 查看pci设备 -v 详细信息
  • lsubs 查看USB设备
  • lsmod 查看加载的模块(驱动)

关机、重启

  • shutdown 用以关闭、重启计算机 -h 关机 -r 重新启动

  • 立即关机 shutdown -h now

  • 10分钟后关机 shutdown -h +10

  • 23:30关机 shutdown -h 23:30

  • 立即重启 shutdown -r now

  • poweroff 立即关闭计算机

  • reboot 立即重启计算机

归档、压缩

  • zip 用以压缩文件 zip + 压缩后文件+ 要压缩的文件
  • unzip 解压缩文件
  • gzip 也可以压缩文件
  • tar 归档文件(不是压缩,是归档,把文件放一块)
  • tar -cvf out.tar 文件 : 把文件归档
  • tar -xvf 文件 : 把归档文件打开
  • tar -cvzf backup.tar 文件: -z 参数:归档并压缩

查找

  • locate 用以快速查找文件、文件夹 (此命令需要预先建立数据库,数据库默认每天更新一天,可用update命令手工建立、更新数据库)
  • find 用以高级查找文件、文件夹 find 查找位置 查找参数 如:find / *md
  • find支持很多的查找条件,常用如下:-name -prem -user -group -ctime(修改时间) -type -size

Vim

  • vim 打开vim编辑器
  • vi + 文件 文件存在,就打开,不存在就新建并打开
  • vim 三种模式:1)命令模式:按ESC 进入命令模式,可以完成粘贴、复制、撤销等操作
    2)插入模式:i 可以进入插入模式
    3)ex模式:按 : 进入ex模式,光标会移动到底部,可以保存、修改或者退出
  • 命令模式下:
    i 在光标前插入文本
    o 在当前行的下一行插入新行
    dd 删除整行
    yy 复制当前行
    n + yy 将n行的内容复制
    p 粘贴
    u 撤销上一个操作
    r 替换当前字符
    / 查找关键字
  • EX 模式:
    :w 保存当前修改 (write)
    :q 退出 (quit)
    :q! 强制退出,不保存修改
    :x 保存并退出,相当于 :wq shift+ zz
    :set number 显示行号
    :!系统命令 执行一个系统命令并显示结果,按enter又回到vim界面
    :sh 切换到命令行,使用ctrl+d 切换回vim

磁盘基本概念

  • mount 将格式化好的磁盘挂载到一个目录上
  • umount 卸载已挂载的文件系统

没必要记住所有东西

  • 养成查帮助文档的好习惯
  • 几乎所有命令都可以使用-h 或者--help参数获取使用方法、参数信息等
  • man Linux最常用的帮助命令,可以获得相应文档 man ls
  • man -k 查看包含关键字的文档
  • info 与man类似,但是提供的信息更为详细深入 info ls
  • doc 详尽的文档

用户基础

  • 每个用户都拥有一个UserID,操作系统实际使用的是用户ID,而非用户名字
  • 每个用户属于一个主组,属于一个或多个附属组;每个组拥有一个GroupID;每个进程以一个用户身份运行,并受该用户可访问的资源限制;每个可登陆用户拥有一个指定的shell
  • 用户分三种类型:
    root用户:ID为0的用户为root用户,超级用户
    系统用户:(ID为1~499)特点是没有shell。专门为某些服务创建的,不需要登录shell
    普通用户:(500以上)
  • id 可以显示当前用户的信息
  • passwd 修改当前用户密码
  • /etc/passwd 保存用户信息
  • /etc/shadow 保存用户密码(加密的)
  • /etc/group 保存组信息

命令越短,显示的信息越多。linux的文化

  • whoami 显示当前用户
  • who 显示有哪些用户已经登录系统
  • w 显示有哪些用户已经登录并且在干什么

创建一个用户

  • useradd 创建一个新用户 支持参数:-d 家目录
    -s 登录shell
    -u userid
    -g 主组
    -G 附属组
    修改用户信息
  • usermod 参数 username 支持参数:-l 新用户名: usermod -l newUser oldUser
    -u 新userid
    -L 锁定用户使其不能登录
    -U 解锁
    删除用户
  • userdel 保留用户家目录
  • userdel -r 同时删除用户的家目录

创建、修改、删除组

  • groupadd
  • groupmod
  • groupdel

权限机制

  • chown 改变文件的所属用户 -R 参数,递归的修改目录下的所有文件的所属用户

  • chgrp 改变文件的所属组 -R 参数,递归的修改目录下的所有文件的所属组

  • chmod 修改文件的权限: chmod 模式 文件
    模式为如下格式:1. u 、g 、o 分别代表用户、组、其他
    2. a 可以代指ugo
    3. + 、- 代表加入或者删除对应权限
    4. r 、w 、x 代表三种权限,read、write、执行权限
    模式示例:chmod u+rw linux 为这个文件linux所属用户加入读写权限
    chmod g-x linux 为这个文件所属组减去执行权限

  • chmod 也支持以数字方式修改权限,三个权限分别由3个数字表示:
    -r = 4 (2^2) -w = 2 (2^1) -x = 1 (2^0)
    rw = 4 + 2 = 6
    rwx = 4 + 2 + 1 = 7
    r-x = 4 + 1 = 5

  • 使用数字表示ugo权限必须三个都选
    chmod 660 linux == rw-rw----
    chmod 775 linux == rwxrwxr-x

  • ls -ld 文件 可以查看当前的文件的权限信息

  • 所有文件夹必须有x权限,不然没法查看文件
    默认权限

  • 每一个终端都拥有一个umask属性,来确定新建文件、文件夹的默认权限
    umask使用数字权限方式表示,如:022
    目录默认权限是:777-umask (减去)
    文件默认权限是:666-umask
    一般,普通用户的默认umask是002,root用户默认umask是022
    也就是说,对于普通用户来讲:新建文件权限是:666-002=664;新建目录权限是:777-002=775
    umask :可以查看默认umask的值

3个特殊权限

  • suid 以文件的所属用户身份执行,而非执行文件的用户;对目录无影响
  • sgid 以文件的所属组身份执行;在该目录中创建的任意新文件的所属组与该目录所属组相同
  • sticky 对文件无影响;对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件

网络配置

  • linux 中,以太网接口被命名为:eth0、eth1等,0、1代表网卡编号
  • lspci 查看网卡硬件信息 lsusb 查看usb网卡
  • ifconfig 查看接口信息 -a 查看所有接口 eth0 查看特定接口
  • ifup eth0 / ifdown eth0 启用、禁用一个接口
  • hostname 查看主机名

网络测试命令

  • ping 192.168.1.1/baidu.com 测试网络连通性,后面可以加IP地址或者域名
  • host/dig baidu.com 测试dns解析,dig命令出来的数据更多
  • ip route 显示路由表
  • traceroute baidu.com 追踪到达目标地址的网络路径
  • mtr baidu.com (结合了my traceroute 和ping) 进行网络质量测试
  • hostname 名字 实时修改主机名字
  • /etc/sysconfig/network 永久性修改主机名

故障排查

  • 从底层到高层、从自身到外部的流程进行
  • 先查看网络配置信息是否正确:ip地址、子网掩码、网关、dns
  • 查看到达网管是否连通:ping 网关ip地址
  • 查看dns解析是否正常

管道和重定向

  • linux中,几乎所有的命令的返回数据都是纯文本的,而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作成为可能。
  • linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。
  • 命令行shell的数据流定义:STDIN:标准输入,编号0,默认键盘;
    STDOUT:标准输出,1,终端
    STDERR:标准错误,2,终端
  • 通过管道和重定向我们可以控制CU的数据流:
    重定向: > 将STDOUT重定向到文件,覆盖形式
    >> 将STDOUT重定向到文件,追加形式 (这2个只适用用标准输出)
    2> 将STDERR重定义到文件,覆盖形式
    2>&1 将STDOUT和STDERR结合
    < 重定义SDTIN
    管道: | 将一个命令的标准输出(STDOUT)作为另一个命令的STDIN ls | grep test*

文本处理

  • 基于关键字搜索: 命令grep用于关键字搜索文本
    -i 搜索时忽略大小写
    -n 显示结果所在行数
    -v 输出不带关键字的行
    -Ax 在输出的时候包含结果所在行之后的指定行数
    -Bx 在输出的时候包含结果所在行之前的指定行数

  • 基于列处理文本: 命令cut用于列处理文本
    -d 指定分割字符(默认是TAB)
    -f 指定输出的列号
    -c 基于字符进行切割

  • 文本统计: 命令wc用于统计文本信息
    -l 只统计行数
    -w 只统计单词
    -c 只统计字节数
    -m 只统计字符数

  • 文本排序: 命令sort用于对文本内容进行排序(基于英文)
    -r 倒序排列
    -n 基于数字进行排列
    -f 忽略大小写
    -u 删除重复行 uniq 用以删除重复的相邻行
    -t c 使用c作为分隔符分割为列进行排序
    -k x 当进行基于指定字符分割为列的排序时,指定你基于那个列排序

  • 文本比较: 命令diff用于比较两个文件的区别
    -i 忽略大小写
    -b 忽略空格数量的改变
    -u 统一显示比较信息(一般用以生成patch文件)

  • 处理文本内容: 命令tr(translate)用于处理文本内容,要用重定向方式
    -d 删除关键字 tr -d 'TMD' < test.txt
    转换大小写: tr 'a~z' 'A~Z' < test.txt

  • 搜索替换: 命令sed 用以搜索并替换文本,中间用的正则表达式
    sed + 正则 + 文件: 如: sed ‘s/linux/unix/g’ linuxcast 、sed '1,50s/linux/unix/g' linuxcast

你可能感兴趣的:(Linux入门基础)