前言

前三节内容传送门:

夯实基础系列一: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. CVE-2019-0708——RDP漏洞利用

    影响系统:windows2003.windows2008.windows2008 R2.windows xp .win7环境:攻击机:kali ip:192.168.40.128靶机:windows ...

  2. 实验题目:python面向对象程序设计

    1.定义并实现一个矩形类Rectangle,其私有实例成员为矩形的左下角与右上角两个点的坐标,能设置左下角和右上角两个点的位置,能根据左下角与右上角两个点的坐标计算矩形的长.宽.周长和面积,另外根据需 ...

  3. Unity使用小剧场—创建的按钮On Click()只有MonoScript怎么办

    前言: 在游戏开发过程中遇到了一些小问题,以后都放到小剧场里,今天介绍怎么给按钮赋予方法并解决标题所述问题. 步骤: 1. 不管怎么说,先新建一个按钮 右键场景-[UI]-[Button] 这里会自动 ...

  4. asp.net webapi关闭https配置

    将s去掉就行

  5. 如何使用阿里云云解析API实现动态域名解析,搭建私有服务器

    原文地址:http://www.yxxrui.cn/article/116.shtml 未经许可请勿转载,如有疑问,请联系作者:yxxrui@163.com 公司的网络没有固定的公网IP地址,但是能够 ...

  6. Hive Hooks介绍

    Hive作为SQL on Hadoop最稳定.应用最广泛的查询引擎被大家所熟知.但是由于基于MapReduce,查询执行速度太慢而逐步引入其他的近实时查询引擎如Presto等.值得关注的是Hive目前 ...

  7. Flowable—多实例任务:会签

    多实例任务 会签 什么是会签? 举个例子:比如我们有一个任务 可能需要多人审批,审批通过的条件可能比较多样,比如五个人审批.3个人审批过了就算过了,再或者有一个人权限比较高,拥有一票否决权. 即是其余 ...

  8. python对离散数据进行编码

    机器学习中会遇到一些离散型数据,无法带入模型进行训练,所以要对其进行编码,常用的编码方式有两种: 1.特征不具备大小意义的直接独热编码(one-hot encoding) 2.特征有大小意义的采用映射 ...

  9. 使用Modbus4J进行RTU模式串口通信

    Modus协议是由MODICON(现为施耐德电气公司的一个品牌)在1979年开发的,是全球第一个真正用于工业现场的总线协议,应用非常广泛,可谓大名鼎鼎. 理论性的东西就不多介绍了,推荐一本书<M ...

  10. android基本组件 Button

    android中提供了普通按钮Buttton和图片按钮ImageButton两种按钮组件,ImageButton按钮中主要有一个android:src属性,用于设置按钮的背景图片.可以在Button的 ...