【学习笔记】兄弟连Linux教程摘要

最近在看兄弟连2014年录制的Linux教学视频,沈超和李明这两个活宝讲得确实是精彩,顺着教学视频讲解的逻辑顺序做了一些笔记,教学视频链接https://www.bilibili.com/video/BV1mW411i7Qf,学的人挺多,每次看都有几十个人陪着一起在学。

笔者是用markdown做的笔记,不过水平太差,不是很会写markdown,格式很flat,有些地方markdown语法写得可能还有问题。管它呢,笔者能看懂就行了[汗]

兄弟连的视频教程主要是基于运维的需求进行的讲授,本文将更新至该视频教程完整16章的内容,争取一周之内更完,留作备份查询。


第一章 Linux系统简介

  1. Linux与Unix的关系是son与father的关系, 学会Linux可以很容易的上手Unix

  2. Linux内核官网: www.kernel.org

  3. 主流的Linux发行版本

  • redhat系列
    • redhat: 企业版(稳定版,维护需付费)
    • CentOS: 本教程使用的版本(社区维护版本,完全免费,包括后期维护,国内互联网公司使用的最广泛的分支)
    • SuSE
    • fedora: 个人版(测试版,维护需付费)
    • gentoo linux
    • 红旗 linux
    • Mandriva
    • turbolinux
  • debian系列
    • debian
    • ubuntu: GUI界面很好
    • KNOPPIX: 无需安装, 只需要光盘或镜像就可以直接使用
  1. www.netcraft.com 好像需要翻墙
  • 可以输入域名得到该域名的网络情况和主机历史: 算是一个很好用的踩点网站
  • 发现腾讯门户和淘宝服务器都是用Linux
  • 事实上Microsoft也全部用的是Linux作为服务器, 没有用Windows
  • Linux的性能要远远优于Windows
  • andriod平台也是基于Linux的顶层设计
    • 可以在andriod手机上下载QuickSSHd, 连接到远程服务器
    • 服务器上使用SecureCRT就可以远程操控手机
  • 包括智能电器, 智能卡系统, 航空系统, 银行系统等都是用Linux完成
  1. Linux如果安装GUI会占用很大资源, 而且会增加出错的可能性

第二章 Linux系统安装

1. VMware虚拟机安装与使用

  1. 不建议装双系统, 因为容易造成数据丢失, 而且双系统实践中几乎不会涉及
  2. 很多安装教程里的截图就是在虚拟机中截屏实现的
  3. 在一台计算机上面模拟多个操作系统, 并且这些系统都可以与本机系统进行通信
  4. 安装VMware是很简单的: 安装包已经下载好在D盘了
  5. 打开VMware.exe点击新建虚拟机:
  • 进入VMware.exe后新建虚拟机选择标准
  • 选择以后安装操作系统(不要用安装盘或镜像文件)
  • 选择Linux: 选择2.6.x内核的任意一个版本都可以
    • 最好选择CentOS
  • 虚拟机名称: CentOS 6 test
  • 虚拟机位置: 准备放在F盘, 用于放置虚拟机文件
  • 虚拟机最大磁盘空间: 一般20G左右就足够了
  • 虚拟磁盘拆分成多个文件
  1. 新建虚拟机后在起始页后面出现一个新的标签页CentOS 6 test, 虚拟机新建
  2. 单击菜单中的虚拟机–>设置:
  • 内存不能超过真实内存的一半: 一般来说为了GUI不能少于628M, 一般来说1~2G基本足够
  • 虚拟机的处理机数量和核数都可以跟主机同样的配置: 当然1+1也可以
  • 硬盘: 可以继续添加硬盘
  • 光驱: ISO镜像, 注意勾上右上的"打开电源时连接"(相当于给光驱通电源), 然后选择ISO镜像
    • 然后去读取光驱就可以了
    • CenOS-6.3有两张DVD盘, 只要第一个盘就可以了, 相当于将光盘放入
  • 网络适配器: 后期再设置
  1. 到目前为止相当于分配个硬盘内存再把光盘放入光驱, 目前结束
  2. 小技巧:
  • 点击工具栏中的小钟表, 就可以将虚拟机快照保存下来, 下次直接读取快照就可以到启动后的状态, 相当于恢复备份
  • 点击工具栏中的小扳手, 就可以恢复快照, 但是真正的服务器是没有快照的功能的
  • 真正的Linux仍然需要备份, 而非快照;
  • 点击菜单中的虚拟机–>快照
  • 虚拟机–>管理–>克隆, 实际上克隆机并不会跟原始机有同样的大小, 会比原始机小很多
    • 如果删除了原始机, 克隆机就没用了, 克隆机只是原始机的一个镜像
  • 开始里可以挂起, 相当于睡眠的效果

2. 系统分区: 理论知识

  1. 磁盘分区:
  • 主分区最多4个
  • 扩展分区只能有1个
    • 不能写入分区, 只能包含逻辑分区(即这个分区只能用于包含很多子分区)
    • 主分区+扩展分区一共最多4个
  1. 格式化: (高级格式化, 逻辑格式化)
  • 指根据用户选定的文件系统(FAT16 FAT32 NTFS EXT2 EXT3 EXT4)在分区中写入固定的数据(如文件分配表等)
  1. 硬件设备文件名:
  • WINDOWS: 分区–>格式化–>分配盘符就可以使用了
  • LINUX: 多一步分配设备文件名, 即每个外接设备都用以文件形式管理
  • IDE硬盘: /dev/hd[a-d]
  • SCSI/SATA/USB硬盘: /dev/sd[a-p]
  • 光驱: /dev/cdrom或者sr0
  • 软盘: /dev/fd[0-1]
  • 打印机(25针): /dev/lp[0-2]
  • 打印机(USB): /dev/usb/lp[0-15]
  • 鼠标: /dev/mouse
  1. 分区设备文件名: 在硬盘后直接加分区号
  • /dev/hda[1-9]: IDE硬盘: 133MB/s
  • /dev/sda[1-9]: SCSI/SATA硬盘接口: 200~500MB/s
  • 注意逻辑分区永远从5开始标起, 即便主分区没有到4个, 因此是sda5是第一个逻辑分区
  1. 挂载: 理论上任何一个空的文件名都可以当作盘符, 给每个分区分配挂载点, 挂载点必须是一个空目录
  • 必须分区: 一定要存在的分区
    • / 根分区
    • swap分区: 交换分区, 内存2倍, 不超过2GB(这个好像是虚拟内存)
  • 推荐分区: 最好有的分区
    • /boot 启动分区, 200MB, 保存启动时需要使用的文件, 防止系统存储不够而无法启动

3. Linux系统安装

  1. 虚拟机设置:
  • CD/DVD(IDE)–>使用ISO镜像文件–>浏览(去CENTOS官网下载镜像,6.3的镜像有两个,4G+1G,装4G就可以了)
  • 此时相当于给导入光盘
  • 启动后按F2进入BIOS: 将硬盘启动改成光盘启动
    • 鼠标点进VMware界面就进去了, Ctrl+Alt就切换出到主机界面
    • 进入BOOT菜单里将CD-ROM按’+'号把它搞到最上面
    • 注意退出Exit时选择leave without change
      • 但是真实服务器不会有这种功能, 只能第一次安装时选择leave save
      • 第二次再来BIOS修改为硬盘启动
  1. 安装欢迎界面
  • Ctrl+Alt+回车
  • 安装语言: 简体中文/English
  • 键盘: 美国英语式键盘
  • 勾选’基本存储设备’, 而非’指定存储设备’
  • 主机名: 使用默认的主机名(localhost.localdomain)
    • Linux无所谓主机名, Windows在局域网内不能使用同样的主机名进行通讯
  • 时区: 亚洲/上海
  • 设置密码:
    • 复杂性: 八位字符以上, 大小写字母, 数字, 符号, 不能是英文单词, 不能是和用户相关的内容
    • 易记忆性
    • 时效性
  • 勾选’创建自定义布局’: 出于学习目的
    • 生成分区–>标准分区
    • 挂载点: /123也可以
      • sda1 ext4–>/boot–>固定大小(200MB): boot分区一定是sd1分区, 因为与启动相关的一定在硬盘的头部
      • sda2 swap–>没有盘符–>固定大小(1GB): swap分区对系统影响很小
      • sda3 ext4–>/home–>固定大小(2GB): 非必要分区, 一般用于下载的存储
      • ext4–> / -->自动计算根分区大小:
  • 下一步: 跳出格式化对话框, 确认
  • 下一步: 引导程序默认
  1. 软件包选择:
  • Desktop 桌面(个人用户)
  • Minimal Desktop 最小化桌面
  • Minimal 最小化安装(服务器一般都选择这个)
  • Basic Server 基本服务器
  • Database Server 数据库服务器
  • Web Server 网页服务器
  • Virtual Host 虚拟主机
  • software Development Workstation 软件开发模式
  • 学习时按照’Basic Server 基本服务器’安装
    • 很熟悉linux的可以用minimal安装
  • 可以自定义安装, 很难, 需要很熟悉, 勾选’以后自定义’
  • 下一步就安装好了, 点击重新引导(重启)
    • 如果是真实机需要F2进入BIOS改成硬盘启动而非CDROM光盘启动
  • root + 密码登录
  1. 安装日志: 根目录下的初始文件
  • /root/install.log 安装系统中的软件包及其版本信息
  • /root/install.log.syslog 安装过程中的事件记录
  • /root/anaconda-ks.cfg 以Kickstart配置文件的格式记录安装过程中设置的选项信息
    • 无人监管安装, 用这个文件可以实现自动安装

4. 远程登录管理工具

  1. 虚拟机设置–>网络适配器
  • 设备状态: 已连接+打开电源时连接
  • 网络连接:
    • 桥接: 使用真实网卡与主机进行通讯连接, 非常简单, 但是需要占用IP
    • NAT或HOST only: 虚拟网卡, 只能和主机通信, 但是NAT是可以连接互联网的
  • 没有联网的情况下用NAT或HOST only
    • ifconfig配置: 默认会有一块网卡lo, 网卡的命名是 eth0 eth1 以此类推
      • ifconfig 查看网络配置信息
      • ifconfig eth0 192.168.110.2
    • cmd --> ping 192.168.118.2
  • 在有网线的情况下一般都是用桥接: 不勾选复制到…
    • ifconfig eth0 192.168.1.156
    • cmd --> ping 192.168.1.156
  • ifconfig是临时修改, 永久修改要到配置文件中改
  • 注意桥接时是默认桥接, 如果你是有线有可能会桥接到无线上
    • 修改虚拟网络编辑器
  • ifconfig改IP地址后当然会在远程连接时断开连接
  1. SecureCRT远程连接管理工具: 应该putty也可以
  2. Winscp文件拷贝工具: 应该filezilla也可以

第三章 Linux初学者手册

1. 学习Linux的注意事项

  1. Linux命令与文件名称都是区分大小写的
  2. Linux系统中所有内容都是以文件形式存储, 包括硬件
  • 硬盘文件是/dev/sd[a-p]
  • 光盘文件是/dev/sr0等
  • 一切永久保存的配置都是用文件而非修改内存中的变量
  1. Linux系统中的文件一般都没有扩展名
  • 不靠扩展名区分文件类型, 而是权限
  • 一些约定俗成的扩展名:
    • 压缩包: .gz .bz2 .tar.bz2 .tgz
    • 二进制软件包: .rpm
    • 网页文件: .html .php
    • 脚本文件: .sh
    • 配置文件: .conf
  • 因此很多windows的病毒无法在linux中运行
    • 因为识别不出来用什么程序运行
  1. Linux所有的存储设备都必须挂载后用户才能使用, 包括硬盘, U盘, 光盘
  • Windows在分配盘符时就是挂载
  • Windows下的程序不能直接在Linux中安装和运行

2. 服务器管理和维护建议

  1. Linux各目录的作用:
  • /bin/: 存放系统命令的目录, 普通用户和超级用户都可以执行, 在单用户模式(类似WIN的安全模式)下也可以执行
  • /sbin/: 保护和系统环境设置相关的命令, 只有超级用户可以使用使用这些命令修改环境设置, 有些命令可以允许普通用户查看
  • /usr/bin/: 存放系统命令的目录, 普通用户和超级用户都可以执行, 在单用户模式下不可以执行
  • /usr/sbin/: 存放根目录系统不必要的系统管理命令, 例如多数服务程序, 只有超级用户可以使用
  • /boot/: 系统启动目录, 保存系统启动相关的文件, 如内核文件和启动引导程序(grub)文件
  • /dev/: 设备文件保存位置
  • /etc/: 配置文件保存位置, 如用户账户密码, 默认安装方式等
  • /home/: 普通用户的家目录, /home/user1类似
  • /lib/: 系统调用的函数库保存位置
  • /lost+found/: 系统意外崩溃关机而产生一些文件碎片放在此处, 系统启动时fsck工具会检查这里, 并修复已经损坏的文件系统, 每个分区中都会有一个这个目录如/boot/lost+found/
  • /media/: 挂载目录, 一般挂载媒体设备, 例如软盘和光盘
  • /mnt/: 挂载目录, 早期只有这一个, 可以/mnt/usb/ /mnt/media/ /mnt/cdrom/这样多挂载
  • /misc/: 挂载目录, 用于挂载NFS服务和共享目录
  • /opt/: 第三方安装的软件保存位置, 也可以安装在/usr/local中
  • /proc/: 虚拟文件系统, 此处的文件只保存在内存中而非硬盘
  • /sys/: 虚拟文件系统, 此处的文件只保存在内存中而非硬盘
  • /root/: 超级用户家目录
  • /srv/: 服务数据目录
  • /tmp/: 临时目录, 每次开机最好清空
  • /usr/: 系统软件资源目录(Unix Software Resource)
  • /var/: 动态数据保存位置, 一般保存缓存日志以及软件运行产生的文件
  1. 服务器注意事项
  • 远程服务器不允许关机(因为服务器可能离你很远), 只能重启
  • 重启时应该关闭服务
  • 不要在服务器访问高峰运行高负载命令
    • 如大数据的拷贝压缩以及全盘扫描查找等
  • 远程配置防火墙时不要把自己提踢出服务器
  • 指定合理的密码规范并定期更新
  • 合理分配权限: 越少越好, 够用就行
  • 定期备份重要数据和日志

第四章 Linux常用指令

1. 文件处理命令

1.1 命令格式与目录处理命令 ls

  1. 命令格式: 命令 [-选项] [参数]
  • ls -la /etc
  • 个别命令使用不遵循此格式
  • 当有多个选项时, 可以写在一起
  • 简化选项与完整选项
    • -a 等价于 --all
  1. ls: 列出路径下的内容
  • 路径: /bin/ls
  • 权限: 所有用户
  • 功能描述: 显示目录文件
  • 语法: ls [-ald] [文件或目录]
    • -a: 显示所有文件包括隐藏文件(以’.'开头的文件是隐藏文件,一般是系统文件不让碰)
    • -l: 显示详细信息, 包括引用次数计数, 所有者(初始为创建者,可转让,永远只有1个), 所属组, 文件大小(默认单位是bit), 最后修改时间, 文件名
    • -d: 查看当前目录详细属性而非目录下的信息
    • -h: 一般是-lh, 可以使得-l显示的详细信息中的文件大小是K/M/G的单位
    • -i: 查看目录下文件的id, 唯一标识符
  • 文件类型: ls -l输出的开头是 '-'是文件 'd’是文件夹 'l’是软链接
  • ugo: 所有者 所属组 其他人
    • rw- r-- r-- 是权限信息: r读w写x执行

1.2 目录处理命令: mkdir, cd, pwd

  1. mkdir
  • 路径: /bin/mkdir
  • 权限: 所有用户
  • 语法: mkdir [-p] [目录路径1] [目录路径2] [目录路径3]…
    • -p: 递归创建, 好像这个dos命令里没有这个
    • 同样dos是没有一次性生成多个目录的命令的
  1. cd: 切换目录
  • shell内置命令
  • 权限: 所有用户
  • cd … 回到上级目录
  • cd [路径] 切换到指定目录
  1. pwd: 显示当前目录
  • 路径: /bin/pwd
  • 权限: 所有用户
  • 无需参数
  1. rmdir: 删除空目录(基本无用的命令)
  • 路径: /bin/rmdir
  • 权限: 所有用户
  • 语法: rmdir [路径]
  1. cp: 复制目录/文件
  • 路径: /bin/cp
  • 权限: 所有用户
  • 语法: cp [-rp] [文件或目录1] [文件或目录2] … [文件或目录n] [目标目录]
    • -r: 复制目录
    • -p: 保留文件属性, 如保持文件最后修改时间等
  • 可以同时复制多个文件或目录
  1. mv: 剪切/重命名
  • 路径: /bin/mv
  • 权限: 所有用户
  • 语法: mv [文件或目录] [目标目录]
    • mv /tmp/japan/cangjing /root # 复制文件夹cangjing到/root下
    • mv /tmp/japan/cangjing /root/nvshen # 把cangjing复制到/root下改名成nvshen
    • mv cangjing canglaoshi 把cangjing文件夹的文件名改成canglaoshi
  • 与cp一样可以同时移动多个
  1. rm: 删除目录/文件
  • 路径: /bin/mv
  • 权限: 所有用户
  • 语法: rm [-rfm] [文件或目录]
    • -rf: 强制删除
    • -m: 删除目录
    • rm -rf / # 删库跑路
    • rm -rf /etc #

1.3 文件处理命令

  1. touch: 创建空文件
  • 路径: /bin/touch
  • 权限: 所有用户
  • 语法: touch [文件名1] [文件名2] … [文件名3]
    • 不建议带空格的文件名以及目录名, 否则需要用双引号(同dos)
  1. cat: 显示文件内容
  • 路径: /bin/cat
  • 权限: 所有用户
  • 语法: cat [-n] [文件名]
    • -n: 显示行号
    • 不适合查看长文件, 只能查看最后一页
  1. tac: 显示文件内容(倒序显示)
  • 路径: /bin/tac
  • 权限: 所有用户
  • 用法同cat
  1. more: 分页显示文件内容
  • 路径: /bin/more
  • 权限: 所有用户
  • 用法: more [文件名]
    • 空格/f: 翻页
    • Enter: 换行
    • q: 退出
  1. less: 分页显示文件内容(可以返回上一页)
  • 路径: /usr/bin/less
  • 权限: 所有用户
  • 用法: less [文件名]
    • 空格/f: 翻页
    • Enter: 换行
    • q: 退出
    • pageup: 返回上一页
    • 方向键↑: 返回上一行
    • 搜索: 输入 /<关键词> 即可
      • 按n可以获取下一处匹配
  • less应该可以完全取代more
  1. head: 显示文件开头几行
  • 路径: /usr/bin/head
  • 权限: 所有用户
  • 用法: head -n [行数] [文件名]
    • 显示文件的前20行: head -n 20 /etc/services
    • 默认10行
  1. tail: 显示文件最后几行
  • 路径: /usr/bin/tail
  • 权限: 所有用户
  • 用法: tail [-nf] [行数] [文件名]
    • 显示文件的末尾20行: tail -n 20 /etc/services
    • -f: 动态显示文件末尾内容, 如果修改了文件内容会动态更新
      • 如监控日志

1.4 链接命令

  1. ln: 生成链接文件
  • 路径: /bin/ln
  • 权限: 所有用户
  • 语法: ln [-s] [原文件] [目标文件]
    • -s: 生成软链接, 不加选项是硬链接
  • 软链接就是快捷方式
    • ls -l 显示的是lrwxrwxrwx, 这意味着所有用户对该软链接文件有所有信息
    • 软链接很小, 本质上打开原文件
  • 硬链接
    • ls -l 显示的结果与原文件基本没有差别
    • 硬链接与原文件会同步更新, 类似是一个备份
    • echo “www.lampbrother.net” >> /etc/issue # 更新一个文件
  • 硬链接与软链接的区别:
    • 如果删除原文件, 软链接当然无效, 硬链接永远有效
    • 使用ls -i查看标识符(i节点), 硬链接的i节点与原文件相同, 软链接则不同
    • 其实硬链接用的非常的少, 类似git
    • 硬链接不能跨分区目录: 如/tmp下的文件不能在/boot里创建硬链接, 软链接则可以
    • 软链接文件的ls -l的开头是l, 硬链接与原文件相同

2. 权限管理命令

2.1 权限管理命令chmod

  1. chmod: 更改文件权限/目录权限
  • 路径: /bin/chmod
  • 权限: 所有者和root
  • 语法1: chmod [{ugoa}{±=}{rwx}] [-R] [文件或目录]
    • chmod u+x Janpanlovestory.list # 给所有者增加执行权限
    • chmod g+w,o-r Janpanlovestory.list # 给所有组增加写入权限, 给其他人去除读取权限
    • chmod g=rwx Janpanlovestory.list # 给所有组读取, 写入, 执行权限
  • 语法2: chmod [mode=421] [-R] [文件或目录]
    • 用整型数表示rwx: r:4,w:2,x:1
    • rwx:7,rw:6, 即求和
    • rwx-rw-x: 用761表示, 532表示rx-wx-x
    • chmod 640 Janpanlovestory.list
    • -R表示是递归修改: 将目录下所有的子容器都修改权限
  • rwx权限深入理解:
    • r: 读取权限, 可以查看文件内容 | 可以列出目录中的内容
    • w: 写入权限, 可以修改文件内容 | 可以在目录中创建删除文件
    • x: 执行权限, 可以执行文件 | 可以进入目录

2.2 其他权限管理命令

  1. chown: 改变文件或目录的所有者
  • 路径: /bin/chown
  • 权限: root, 即便是所有者也没有权限
  • 语法: chown [用户] [文件或目录]
    • chown shenchao fengjie # 将fengjie文件夹的所有者改为shenchao
  1. chgrp: 改变文件或目录的所属组
  • 路径: /bin/chgrp
  • 权限: root, 即便是所有者也没有权限
  • 语法: chown [用户组] [文件或目录]
    • chown lampbrother fengjie # 将fengjie文件夹的所属组改为lampbrother
  1. umask: 显示, 设置文件的缺省权限
  • 路径: shell内置命令
  • 权限: 所有用户
  • 语法: umask [-S]
    • -S: 以rwx形式显示新建文件缺省权限, umask -S即可
    • umask 077 # 则新建的文件是
  • linux中默认新建文件对任何用户不会有执行权限, 因此即便用umask设置了执行权限实际也不会有的

3. 文件搜索命令

3.1 find命令

  1. find: 文件搜索
  • 路径: /bin/find
  • 权限: 所有用户
  • 语法: find [搜索范围] [匹配条件]
    • find /etc -name init # 在目录/etc中查找文件init(必须精确的是init, 而非包含init)
    • find /etc -name init # 在目录/etc中查找文件init(包含init即可,*为通配符匹配任意数量字符)
    • find /etc -name init* # 在目录/etc中查找文件init(以init开头)
    • find /etc -name init??? # 在目录/etc中查找文件init(以init开头且后面是3个字母, ?为通配符匹配单个字符)
    • find /etc -iname init # 不区分大小写的查找init
    • find /etc -size +204800 # 查找大于100MB的文件: 注意linux系统每个数据块是0.5k, 因此100MB等于204800个数据块
      • +n: 大于
      • -n: 小于
      • n: 等于, 极少使用
    • find /etc -user shenchao # 查找所有者为shenchao的文件
    • find /etc -cmin -5 # 在/etc下查找5分钟内被修改过属性的文件和目录
    • find /etc -amin -5 # 在/etc下查找5分钟内被访问过的文件和目录
    • find /etc -mmin -5 # 在/etc下查找5分钟内被修改过内容的文件和目录
      • +5 -5 5 同 -size的意思
    • find /etc -size +163840 -a -size -204800 # 80MB~100MB的文件
      • -a: 表示and
      • -o: 表示or
    • find /etc -name inittab -exec ls -l {} ; # 在/etc下查找inittab文件并显示详细信息
      • -exec/-ok [命令] {}; 对搜索结果执行操作, {}是把之前的结果放进来, \是转义符, ;是结束
    • find /etc -type f # 只查找文件
    • find /etc -type d # 只查找目录
    • find /etc -type l # 只查找软链接
    • find . -inum 31531 -exec rm {} ; # 在当前目录下查找i节点是31531的文件并删除
      • 用inum可以查找当前文件的所有硬链接

3.2 其他文件搜索命令

  1. locate: 在文件资料库ntfs中查找文件, 比find要快得多
  • 路径: /usr/bin/locate
  • 权限: 所有用户
  • 语法: locate [-i] [文件名]
    • locate inittab # 查找文件名中包含inittab的
    • -i: 不区分大小写查找
  • 但是新建的文件不在文件资料库中就查找不到
    • 使用updatedb命令来更新文件资料库
    • 但是/tmp目录下的文件是不在文件资料库中
  1. which: 搜索命令所在目录及别名信息, 比find高效
  • 路径: /usr/bin/which
  • 权限: 所有用户
  • 语法: which [命令名称]
    • which ls # 查找ls命令所在的绝对路径
    • which rm # rm的别名是"rm -i", -i是询问确认的选项
  1. whereis: 搜索命令所在目录及帮助文档路径, 一般都在/usr/share/man目录下
  • 路径: usr/bin/whereis
  • 权限: 所有用户
  • 语法: whereis [命令名称]
    • whereis ls
  1. grep: 在文件中搜寻字串匹配的行并输出
  • 路径: /bin/grep
  • 权限: 所有用户
  • 语法: grep [-iv] [指定字串] [文件]
    • -i: 不区分大小写
    • -v: 排除指定字串, 支持正则
    • grep mysql /root/install.log # 在安装日志里查找mysql相关的记录行
    • grep -i multiuser /etc/inittab # 不区分大小写
    • grep -v ^# /etc/inittab # 将inittab中带有#开头的行(即注释信息)都去掉然后显示

4. 帮助命令

  1. man: 获得帮助信息
  • 路径: /usr/bin/man
  • 权限: 所有用户
  • 语法: man [命令名称/配置文件名称(不需要绝对路径)]
    • man ls
    • man services # 查看配置文件services的帮助信息(网络配置)
      • 等价于more /etc/services
    • man passwd # passwd很特殊, 它既是一个命令, 而且还是一个配置文件名称, 因此man后既会输出配置信息,
      • 1: 命令的帮助
      • 5: 配置文件的帮助
      • man 1 passwd
      • man 5 passwd
  • 与more的用法差不多, 可以换行翻页, 且"/{}".format可以查找内容
  1. whatis: 获取命令的简短信息
  • 语法: whatis [命令名称]
    • whatis ls
  1. apropos: 获取配置文件简短信息
  • 语法: apropos [配置文件名称]
    • apropos services
  1. [命令名称] --help
  • ls --help 查看ls的帮助信息
  1. info: 基本等价于man的用法, 在显示上稍有区别, 早期UNIX没有info

  2. help: 获得shell内置命令的帮助信息

  • 路径: shell内置命令
  • 权限: 所有用户
  • 语法: help [shell内置命令名称]
    • help cd # cd是不可以用man来查看帮助的
    • help umask

5. 用户管理命令

  1. useradd: 添加新用户
  • 路径: /usr/sbin/useradd
  • 权限: root
  • 语法: useradd [用户名]
    • useradd yangmi
  1. passwd: 设置/更新用户密码
  • 路径: /usr/sbin/passwd
  • 权限: root
  • 语法: passwd [用户名]
  • 注意非root用户使用passwd直接进入修改自己密码的环境
  1. who: 查看当前所有登录用户信息(简洁)
  • 路径: /usr/bin/who
  • 权限: 所有用户
  • 语法: who
  • 输出内容:
    • tty: 本地登录
    • pts: 远程终端登录
  1. w: 查看当前所有登录用户信息(详细)
  • 路径: /usr/bin/w
  • 权限: 所有用户
  • 语法: w

6. 压缩解压命令: 只有zip是linux和windows通用的

  1. gzip: 压缩文件(.gz)
  • 路径: /bin/gzip
  • 权限: 所有用户
  • 语法: gzip [-d] [文件]
    • -d: 相当于gunzip, 解压文件
  • gzip无法压缩目录, 且压缩完不会保留原文件
  1. gunzip: 解压文件(.gz)
  • 路径: /bin/gunzip
  • 权限: 所有用户
  • 语法: gunzip [文件]
  1. tar: 打包目录, 顺带压缩(.tar)
  • 路径: /bin/tar
  • 权限: 所有用户
  • 压缩语法: tar [-zcvf] [压缩后文件名] [目录]
    • -c: 打包
    • -v: 显示详细信息
    • -f: 指定文件名
    • -z: 打包同时压缩, 也可以变成.tar后再gzip
      • tar -zcf Japan.tar.gz Japan
  • 解压语法: tar [-zxvf] [压缩包名称]
    • -x: 解包
    • -v: 显示详细信息
    • -f: 指定解压文件名
    • -z: 解压缩
      • tar -zxf Japan.tar.gz
  1. zip: 压缩文件或目录(win和linux通用, .zip)
  • 路径: /usr/bin/zip
  • 权限: 所有用户
  • 语法: zip [-r] [压缩后文件名] [文件或目录]
    • -r: 压缩目录
    • zip boduo.zip boduo
  • 没有gzip压缩得多
  1. unzip: 解压缩文件或目录
  • 路径: /usr/bin/unzip
  • 权限: 所有用户
  • 语法: unzip [压缩文件名]
  1. bzip2: 压缩文件(.bz2)
  • 路径: /usr/bin/bzip2
  • 权限: 所有用户
  • 语法: bzip2 [-k] [文件名]
    • -k: 产生压缩文件后保留原文件
    • bzip2 -k boduo
  • 解压用bunzip2: bynzip2 -k boduo.bz2
    • 可以用tar来解压缩打包后压缩成bz2: tar -cjf Japan.tar.bz2 Japan
  • bzip2不能压缩目录

7. 网络命令

  1. write: 给用户发信息(用户必须处于登陆状态), 输入完(Ctrl+Backspace或delete退回), 以Ctrl+D保存结束
  • 路径: /usr/bin/write
  • 权限: 所有用户
  • 语法: write <用户名>
    • write shenchao
    • Ctrl + D
  1. wall: 发广播信息
  • 路径: /usr/bin/wall
  • 权限: 所有用户
  • 语法: wall [信息内容]
  • 广播者自己也会收到信息
  1. ping: 测试网络连通性
  • 路径: /bin/ping
  • 权限: 所有用户
  • 语法: ping [-c] [IP地址]
    • -c: 指定ping的次数
      • ping -c 3 192.168.1.156 # ping 3次就停下, 不用-c会无限ping
  1. ifconfig: 查看/设置网络配置信息
  • 路径: /sbin/ifconfig
  • 权限: root
  • 语法: ifconfig [网卡名称] [IP地址]
    • ifconfig # 显示所有网卡信息
    • ifconfig eth0 192.168.8.250 # 临时生效的更改IP地址
  • linux有两个网卡eth0(默认网卡)和io
  1. mail: 查看/发送电子邮件(无需用户在线)
  • 路径: /bin/mail
  • 权限: 所有用户
  • 语法: mail [用户名]
    • mail # 查看邮件
      • 输入help查看如何查看
      • 1: 第一封邮件
      • d 1: 删除第一封邮件
    • mail shenchao # 给用户shenchao发送邮件, Ctrl+D保存
  • 系统一般会自动给root发送一些日志以及统计信息
  1. last: 列出目前与过去登入系统的用户信息(包括服务器重启)
  • 路径: /usr/bin/last
  • 权限: 所有用户
  • 语法: last
  1. lastlog: 只显示每个用户最后一次登录的记录
  • 路径: /usr/bin/lastlog
  • 权限: 所有用户
  • 语法: lastlog [-u] [UID]
    • lastlog # 显示全部用户
    • lastlog -u 502 # 502是uid
  1. traceroute: 显示数据包到主机间的路径
  • 路径: /bin/traceroute
  • 权限: 所有用户
  • 语法: traceroute www.lampbrother.net
  • 访问一个站点不可能是直接到的, 一般是一个个路由到的
  1. netstat: 显示网络相关信息(常用)
  • 路径: /bin/netstat
  • 权限: 所有用户
  • 语法: netstat [选项]
    • -a: 所有信息
    • -t: 查看TCP协议
    • -u: 查看UDP协议
    • -l: 监听
    • -r: 路由
    • -n: 显示IP地址和端口号
    • netstat -tlun # 查看本机监听得到端口, 很多端口号是固定的, 比如apache是80, ftp是22, 可以等价于查看开放的服务
    • netstat -an # 查看本机所有的网络连接, .state==established是正在连接的
    • netstat -rn # 查看本机路由表
  1. setup: 配置网络(永久生效), 红帽系列专有的命令, 其他版本的linux发行是没有的
  • 路径: /usr/bin/setup
  • 权限: root
  • 语法: setup 进入交互界面进行配置
    • 网络配置–>使用DHCP: 设置为’*'即为自动获取IP地址
  • 配置完后service network restart才能生效
  1. mount: 挂载
  • 路径: /bin/mount
  • 权限: 所有用户
  • 语法: mount [-t 文件系统] [设备文件名] [挂载点(可以理解为盘符,一般是cdrom)]
    • mount -t ios9660 /dev/sr0/mnt/cdrom
  • VMware相关操作: 见"02_系统安装.txt"
  • umount /dev/sr0 # 卸除挂载

8. 关机重启命令

  1. shutdown: 关机命令
  • 语法: shutdown [-chr] [时间]
    • -c: 取消前一个关机命令
    • -h: 关机
    • -r: 重启
  • shutdown -h now # 立即关机
  • shutdown -h 20:30 # 下一个20:30关机
  • shutdown -c # 取消关机
  • 推荐使用shutdown, 因为早期的linux系统中shutdown可以正确的保存服务器里的一些文件和状态, 有的命令写得不好, 可能会伤及物理硬盘
  1. halt: 关机
  2. poweroff: 关机(相当于直接断电,这个很坏)
  3. init 0: 关机
  4. init 6: 重启
  5. reboot: 重启
  6. init [系统运行级别]
  • 0: 关机
  • 1: 单用户(安全模式), 无GUI
  • 2: 不完全多用户, 不含NFS(网络服务系统,是一个文件共享的服务,存在安全问题)服务, 无GUI
  • 3: 完全多用户, 无GUI
  • 4: 未分配
  • 5: 图形界面
  • 6: 重启
  • 在/etc/inittab中有关于系统运行级别的记录, 且可以设置默认的系统运行级别, 比如改成0或6, 就永远起不来了, 事实上linux会保护不让设成0或6, 一般是默认3
  • cat /etc/inittab # 更改系统运行级别
    • id:3:initdefault;
  • runlevel # 查看当前系统运行级别
  1. logout: 退出登录

第五章 Linux文本编辑器Vim

1. Vim常用操作

  1. Vim没有菜单, 只有命令, 是Linux/UNIX最常用的文本编辑器, 可以建立编辑和显示文本文件
  2. 一般用于写一些小脚本
  3. Vim工作模式
  • vi或vm <文件名> # 进入文件(命令模式)
  • 输入: wq # 退出文件
  • 输入: i/a/o # 进入插入模式
    • 按ESC: 从插入模式转为命令模式
  • 输入: 冒号 # 进入编辑模式, 命令以回车结束运行
    • :set nu # 添加行号
  1. 插入命令: 插入模式下使用, 切换插入命令都需要先ESC进入命令模式
  • a: 在光标所在字符后插入
  • A: 在光标所在行尾插入
  • i: 在光标所在字符前插入
  • I: 在光标所在行首插入
  • o: 在光标下插入新行
  • O: 在光标上插入新行
  1. 定位命令: 在命令模式下使用
  • :set nu # 设置行号
  • :set nonu # 取消行号
  • gg # 到第一行
  • G # 到最后一行
  • :n # 到第n行
  • $ # 移动到行尾
  • 0 # 移动到行首
  1. 删除命令
  • x: 删除光标所在处字符
  • nx: 删除光标所在处后n个字符
  • dd: 删除光标所在行
  • ndd: 删除光标所在后n行
  • dG: 删除光标所在行到文件末尾内容
  • D: 删除光标所在处到行尾内容
  • :n1,n2d 删除n1到n2行
  1. 复制/剪切命令:
  • yy: 复制当前行
  • nyy: 复制当前行以下n行
  • dd: 剪切当前行
  • ndd: 剪切当前行以下n行
  • p或P: 粘贴在当前光标所在行下或行上
  1. 替换和取消命令:
  • r: 取代光标所在处字符
  • R: 从光标所在处开始替换字符, 按Esc结束
  • u: 取消上一步操作
  1. 搜索和搜索替换命令:
  • /string: 搜索指定字符串string, 搜索时忽略大小写 编辑模式下输入":set ic", 取消则":set nic"
  • n: 搜索指定字符串的写一个出现位置
  • :%s/old/new/g: 全文替换指定字符串(old->new)
    • :%s/ftp/sftp/g
  • :n1,n2s/old/new/g: 在第n1行到n2行替换(old->new)
    • n1,n2都是包括在内的
  1. 保存/退出命令
  • :w 保存修改
  • :w new_filename 另存为new_filename
  • :wq 保存求改并退出
  • ZZ 快捷键, 保存修改并退出
  • :q! 不保存修改退出
  • :wq! 保存修改并退出(root与文件所有者可用)

2. Vim使用技巧

  1. 导入命令执行结果: ":r!"命令
  • :r /etc/issue # 将/etc/issue文件内容导入到光标处
  • :! <系统命令> # 在不退出vim的情况下使用linux命令
  • :r !date # 将date的执行结果导入到光标处
  1. 定义快捷键: “:map” 快捷键出发命令
  • :map ^P I# # 注意这里的P是蓝色的(要按Ctrl+V+P才能输入出来), 给当前行首添加#号的快捷键P
  • :map ^B 0x # 删除行首第一个字符的快捷键B
  • :map ^H <字符串> # 插入<字符串>的快捷键
  1. 连续行注释:
  • :n1,n2s/^/#/g
    • :1,4s/^/#/g # 1~4行首添加字符"#"
  • :n1,n2s/^#//g
    • :1,4s/^#//g # 1~4行中存在"#“的行删除”#"
  • :n1,n2s/^/////g
    • :1,4s/^/////g # 1~4行首添加字符"//"
  1. 替换:
  1. 这些快捷键都是临时生效的, 重启就没有了, 除非写到/home下的配置文件中(编辑模式的命令不需要写:), 只要把"map ^P I#"写进去就行了

猜你喜欢

转载自blog.csdn.net/CY19980216/article/details/107764736
今日推荐