前言

前三节内容传送门:

夯实基础系列一:Java 基础总结

夯实基础系列二:网络知识总结

夯实基础系列三:数据库知识总结

现在很多公司项目部署都使用的是 Linux 服务器,互联网公司更是如此。对于大一些的互联网公司,系统可能会非常复杂,本地无法启动,一般都会采用专门的开发机给开发人员开发测试使用。我实习期间接触的项目没一个可以在本地启动的,都需要写好代码,把代码更新到开发机上,然后编译部署,并查看部署过程中是否有错误或是查看访问这台机器的日志。而这些操作,都需要对基本的 Linux 命令熟悉。

今天总结下 Linux 的相关概念和基本操作,如果想了解更多,可以去看看《鸟哥的私房菜》。同时希望大家多动手实践,这样理解得更深刻。

概要

Linux 知识总结以下部分内容:Linux 常见概念、Linux 常用命令、vi 操作和一个最简单的 shell 脚本。

细节

1. Linux 常见概念

1.1 Linux 与 Windows 的不同
  • Linux 严格区分大小写
  • Linux 中所有内容以文件形式保存,包括硬件。一切内容皆文件。
  • Linux 不靠扩展名区分文件类型,靠权限区分文件类型。带后缀的文件名是约定俗成,方便管理
  • Windows下的程序不能在Linux中安装和运行
1.2 Linux 采用字符界面有什么优势
  • 字符界面占用的系统资源更少
  • 字符界面减少了出错、被攻击的可能性
1.3 分区类型
  • 主分区:最多只能有 4 个。
  • 扩展分区
    • 最多只能有 1 个
    • 主分区加扩展分区最多有 4 个
    • 不能写入数据,只能包含逻辑分区
  • 逻辑分区
1.4 挂载
  • 必须分区

    • / (根分区)
    • swap 分区(交换分区,内存 2 倍,不超过 2GB)
  • 推荐分区
    • /boot(启动分区,200 MB)
1.5 常见目录的作用
  • / 根目录
  • /bin 命令保存目录(普通用户就可以读取的命令)
  • /boot 启动目录,启动相关文件
  • /dev 设备文件保存目录
  • /etc 配置文件保存目录
  • /home 普通用户的家目录
  • /lib 系统库保存目录
  • /mnt 系统挂载目录
  • /media 挂载目录
  • /root 超级用户的家目录
  • /tmp 临时目录
  • /sbin 命令保存目录(超级用户才能使用的目录)
  • /proc 直接写入内存的
  • /sys
  • /usr 系统软件资源目录
    • /usr/bin/ 系统命令(普通用户)
    • /usr/sbin/ 系统命令(超级用户)
  • /var 系统相关文档内容

根目录下的 bin 和 sbin,usr 目录下的bin 和 sbin,这四个目录都是用来保存系统命令的。

proc 和 sys 目录不能直接操作,这两个目录保存的是内存的过载点。

2. Linux 常用命令

2.1 命令基本格式

命令 [选项][参数]

2.2 查询目录中内容

ls [选项][文件或目录]

选项:

  • -a:显示所有文件,包括隐藏文件
  • -l:显示详细信息
  • -d:查看目录属性
  • -h:人性化显示文件大小
  • -i:显示 inode
2.3 目录处理命令

mkdir -p [目录名]

-p 递归创建

命令英文原意:make directories

cd [目录]

命令英文原意:change directory

  • 简化操作

cd ~ 进入当前用户的家目录

cd

cd - 进入上次目录

cd .. 进入上一级目录

cd . 进入当前目录

查询所在目录位置:pwd

命令英文原意:print working directory

2.4 删除文件或目录

rm -rf [文件或目录]

选项:

  • -r:删除目录
  • -f:强制
2.5 复制命令

cp [选项][源文件或目录] [目标目录]

选项:

  • -r:复制目录
  • -p:连带文件属性复制
  • -d:若源文件是链接文件,则复制链接属性
  • -a:相当于 -pdr
2.6 剪切或改名命令

mv [原文件或目录][目标目录]

2.7 链接命令

ln -s [原文件][目标文件]

生成链接文件

选项:-s 创建软链接

硬链接特征:

  • 拥有相同的i节点和存储block块,可以看做是同一个文件
  • 可通过i节点识别
  • 不能跨分区
  • 不能针对目录使用

软链接特征:

  • 类似 Windows 快捷方式
  • 软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
  • lrwxrwxrwx表示软链接,软链接文件权限都为rwxrwxrwx
  • 修改任意文件,另一个都改变
  • 删除原文件,软链接不能使用
  • 软链接如果目标文件和源文件不在同一目录下,源文件必须写绝对路径
2.8 文件搜索命令

locate 文件名

在后台数据库中按文件名搜索,搜索速度更快

/var/lib/mlocate

locate 命令所搜索的后台数据库

updatedb

更新数据库。默认一天一更新。快。缺点:只能按文件名来搜索

find [搜索范围][搜索条件]

搜索文件

find / -name install.log

避免大范围搜索,会非常耗费系统资源

find 是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配。

*	匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符

find /root -iname install.log

不区分大小写

find /root -user root

按照所有者搜索

find /root -nouser

查找没有所有者的文件

find /var/log -mtime +10

查找10天前修改的文件

find . -size 25k

查找文件大小是 25KB 的文件

find . -inum 262422

查找i结点是 262422 的文件

2.9 搜索命令的命令

whereis 命令名

搜索命令所在路径及帮助文档所在位置

选项:

  • -b:只查找可执行文件
  • -m:只查找帮助文件

which 命令能看到目录和别名

2.10 搜索字符串命令

grep [选项] 字符串 文件名

在文件当中匹配符合条件的字符串

选项:

  • -i:忽略大小写
  • -v:排除指定字符串
2.11 帮助命令

man 命令

命令 --help

help shell内部命令

info 命令

2.12 压缩命令

zip 格式压缩

zip 压缩文件名 源文件

压缩文件

zip -r 压缩文件名 源目录

压缩目录

zip格式解压缩

unzip 压缩文件

gz 格式压缩

gzip 源文件

压缩为.gz 格式的压缩文件,源文件会消失

gzip -c 源文件 > 压缩文件

压缩为.gz 格式,源文件保留

gzip -r 目录

压缩目录下所有的子文件,但是不能压缩目录

gz 格式解压缩

gzip -d 压缩文件

解压缩文件

gunzip 压缩文件

解压缩文件

bz2 格式压缩

bzip2 源文件

压缩为.bz2格式,不保留源文件

bzip2 -k 源文件

压缩之后保留源文件

bzip2命令不能压缩目录

打包命令tar

tar -cvf 打包文件名 源文件

解打包命令

tar -xvf 打包文件名

.tar.gz压缩格式

其实.tar.gz 格式是先打包为.tar格式,再压缩为.gz格式

tar -zcvf 压缩包名.tar.gz 源文件

.tar.gz 解压缩

tar -zxvf 压缩包名.tar.gz

.tar.bz2压缩格式

tar -jcvf 压缩包名.tar.bz2 源文件

.tar.bz2 解压缩

tar -jxvf 压缩包名.tar.bz2

2.13 关机命令

shutdown [选项] 时间

选项:

  • -c:取消前一个关机命令
  • -h:关机
  • -r:重启

halt

poweroff

init 0

2.14 重启

reboot

init 6

2.15 系统运行级别
  • 0:关机
  • 1:单用户
  • 2:不完全多用户,不含NFS服务
  • 3:完全多用户
  • 4:未分配
  • 5:图形界面
  • 6:重启

cat /etc/inittab

修改系统默认运行级别

runlevel

查询系统运行级别

logout

退出登录

2.16 挂载命令
  • 查询与自动挂载

mount

查询系统中已经挂载的设备

mount -a

依据配置文件/etc/fstab 的内容,自动挂载

  • 挂载命令格式

mount [-t 文件系统][-o 特殊选项] 设备文件名 挂载点

  • 挂载光盘

mkdir /mnt/cdrom

建立挂载点

mount -t iso9660 /dev/cdrom /mnt/cdrom/

挂载光盘

  • 卸载命令

umount 设备文件名或挂载点

umount /mnt/cdrom

2.17 查看登录用户信息

w 用户名

命令输出:

  • USER:登录的用户名
  • TTY:登录终端
  • FROM:从哪个IP地址登录
  • LOGIN@:登录时间
  • IDLE:用户闲置时间
  • JCPU:和该终端连接的所有进程占用的时间
  • PCPU:当前进程所占用的时间
  • WHAT:当前正在运行的命令

who 用户名

  • 查询当前登录和过去登录的用户信息

last

  • 查看所有用户的最后一次登录时间

lastlog

2.18 历史命令

history [选项][历史命令保存文件]

选项

  • -c:清空历史命令
  • -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

历史命令默认会保存 1000 条,可以在环境变量配置文件 /etc/profile 中进行修改

2.19 统计

wc [选项][文件名]

选项

  • -c:统计字节数
  • -w:统计单词数
  • -l:统计行数
2.20 管道符

分页查看输出内容

ls -l /etc | more

netstat -an | grep ESTABLISHED

2.21 用户和用户组
  • 用户:使用操作系统的人
  • 用户组:具有相同系统权限的一组用户
  • /etc/group:存储当前系统中所有用户组信息
    • 组名称
    • 组密码占位符
    • 组编号
    • 组中用户名列表
  • /etc/gshadow:存储当前系统中用户组的密码信息
    • 组名称
    • 组密码
    • 组管理者
    • 组中用户名列表
  • /etc/passwd:存储当前系统中所有用户的信息
    • 用户名
    • 密码占位符
    • 用户编号
    • 用户组编号
    • 用户注释信息
    • 用户主目录
    • shell 类型
  • /etc/shadow 存储当前系统中所有用户的密码信息
    • 用户名
    • 密码

3. vi 操作

3.1 操作模式
  • Command Mode:命令模式
  • Insert Mode:输入模式
  • Last Line Mode:底行模式
3.2 常用指令

vim + abc

打开文件并把光标定位到最后一行

vim +2 abc

第二行

vim +/xxx abc

跳到指定字符串第一次出现的地方

同时打开多个文件 可用n N prev来切换

3.3 底行模式常用指令
  • :w

    • 保存文件,但不退出vi
  • :q
    • 退出vi
  • :!
    • 强制执行
  • /xxx
    • 向下查找, 按n查找下一个, N查找上一个,这个跟less命令的查找使用方式是一样的
  • ?xxx
    • 往前查找, 按n查找下一个, N查找上一个
3.4 命令模式常用指令
  • h:光标左移
  • j:光标下移
  • k:光标上移
  • l:光标右移
  • ctrl+f:向下翻页
  • ctrl+b:向上翻页
  • ctrl+d:向下翻半页
  • ctrl+f:向上翻半页
  • dd:删除光标所在行
  • o:在光标所在处的下方插入一行并切换到输入模式
  • yy:复制光标所在的行
  • p:在光标所在行的下方粘贴
  • P:在光标所在行的上方粘贴

3. Shell 基础

3.1 Shell 是什么
  • 命令行解释器,可启动、挂起、停止或编写程序
  • 编程语言,可直接调用Linux 系统命令
3.2 输出命令

echo [选项][输出内容]

3.3 脚本编写

首行

#!/bin/bash

echo "hello world"

赋予执行权限,直接运行

chmod 755 hello.sh

./hello.sh

通过bash 执行脚本

bash hello.sh

夯实基础系列四:Linux 知识总结的更多相关文章

  1. 【C++自我精讲】基础系列四 static

    [C++自我精讲]基础系列四 static 0 前言 变量的存储类型:存储类型按变量的生存期划分,分动态存储方式和静态存储方式. 1)动态存储方式的变量,生存期为变量所在的作用域.即程序运行到此变量时 ...

  2. JavaScript夯实基础系列(四):原型

      在JavaScript中有六种数据类型:number.string.boolean.null.undefined以及对象,ES6加入了一种新的数据类型symbol.其中对象称为引用类型,其他数据类 ...

  3. 【夯实PHP基础系列】linux下yum安装PHP APC

    Alternative PHP Cache(可选PHP缓存),依赖于 PECL扩展库 用源码方式安装,直接yum就行了:首先要安装apc的依赖包:yum install php-pear php-de ...

  4. 夯实基础系列一:Java 基础总结

    前言 大学期间接触 Java 的时间也不短了,不论学习还是实习,都让我发觉基础的重要性.互联网发展太快了,各种框架各种技术更新迭代的速度非常快,可能你刚好掌握了一门技术的应用,它却已经走在淘汰的边缘了 ...

  5. Netty基础系列(1) --linux网路I/O模型

    引言 我一直认为对于java的学习,掌握基础的性价比要远远高于使用框架,而基础知识中对于网络相关知识的掌握也是重中之重.对于一个java程序来说,无论是工作中还是面试,对于Netty的掌握都是及其重要 ...

  6. JavaScript夯实基础系列(三):this

      在JavaScript中,函数的每次调用都会拥有一个执行上下文,通过this关键字指向该上下文.函数中的代码在函数定义时不会执行,只有在函数被调用时才执行.函数调用的方式有四种:作为函数调用.作为 ...

  7. JavaScript夯实基础系列(二):闭包

      在JavaScript中函数是一等公民.所谓一等公民是指函数跟其他对象一样,很普通,可以进行把函数存在数组中.作为参数传递.赋值给变量等操作.当函数作为另一个函数的返回值在外部调用时,跟该函数在函 ...

  8. C#夯实基础系列之字符串

    string作为我们在编程当中用的最多的数据类型,同时又由于它的特殊性,怎么强调它的重要性都不为过,理解string的一些类型和存储机制,有助于我们写出正确且高效的代码. 一.string类型 1.s ...

  9. C#夯实基础系列之const与readonly

    一.const与readonly的争议       你一定写过const,也一定用过readonly,但说起两者的区别,并说出何时用const,何时用readonly,你是否能清晰有条理地说出个一二三 ...

随机推荐

  1. Java详细指南

    Java 基础 并发 JVM Java8 新特性 代码优化 网络 操作系统 数据结构与算法 数据库 系统设计 设计模式 常用框架 网站架构 软件底层 其他 Java 基础 <Head First ...

  2. 小白数据分析——Python职位全链路分析

    最近在做Python职位分析的项目,做这件事的背景是因为接触Python这么久,还没有对Python职位有一个全貌的了解.所以想通过本次分析了解Python相关的职位有哪些.在不同城市的需求量有何差异 ...

  3. openstack高可用集群17-openstack集成Ceph准备

    Openstack集成Ceph准备 Openstack环境中,数据存储可分为临时性存储与永久性存储. 临时性存储:主要由本地文件系统提供,并主要用于nova虚拟机的本地系统与临时数据盘,以及存储gla ...

  4. Adnroid 源码学习笔记:Handler 线程间通讯

    常见的使用Handler线程间通讯: 主线程: Handler handler = new Handler() { @Override public void handleMessage(Messag ...

  5. Log4j日志的级别

    log4j规定了默认的几个级别:ALL < trace < debug < info < warn < error < fatal  < OFF 1)级别之间 ...

  6. SpringBoot 获取微信小程序openid

    最近做一个项目用到小程序,为了简化用户啊登录,通过获取小程序用户的openid来唯一标示用户. 1.官方教程 2.具体步骤 3.具体实现 4.可能出现的错误 5.代码下载 1.官方教程 先来看看官方怎 ...

  7. 【Go】四舍五入在go语言中为何如此困难

    四舍五入是一个非常常见的功能,在流行语言标准库中往往存在 Round 的功能,它最少支持常用的 Round half up 算法. 而在 Go 语言中这似乎成为了难题,在 stackoverflow ...

  8. mysql事务_事务隔离级别详解

    使用事务语法 1. 开启事务start transaction,可以简写为 begin 2. 然后记录之后需要执行的一组sql 3. 提交commit 4. 如果所有的sql都执行成功,则提交,将sq ...

  9. WebService的开发手段

    一.WebService的开发手段 目前有关webService的开发手段有2种 1.JDK开发(jdk必须是1.6及以上版本,因为jdk是在1.6版本中引入并支持webservice开发的); 2. ...

  10. 如何使用Pycharm在网页上展示诗歌。(HTML)

    !DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g ...