Skip to content

目录结构

👉/bin: Binary的缩写。存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行。

👉/boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

👉/dev: Device的缩写。该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

👉/etc: Etcetera的缩写。这个目录用来存放所有的系统管理所需要的配置文件和子目录。

👉/home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

👉/lib: Library的缩写。这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

👉/lib64: 64位相关的库会放在这。

👉/media: linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

👉/mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

👉/opt: optional的缩写。这是给主机额外安装软件所摆放的目录。

👉/proc: Processes的缩写。/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存

👉/root: 该目录为系统管理员,也称作超级权限者的用户主目录

👉/run: 运行目录

👉/sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序

👉/srv: 该目录存放一些服务启动之后需要提取的数据。

👉/sys: 虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息

👉/tmp: temporary的缩写这个目录是用来存放一些临时文件的。

👉/usr: unix system resources缩写。用于存储系统软件资源

👉/var: 用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等

vim

基本命令

以下是一些基本的Vim命令:

  • i:在当前光标位置插入文本。
  • x:删除当前光标所在位置的字符。
  • :w:保存文件。
  • :q:退出Vim编辑器。
  • :q!:强制退出Vim编辑器,不保存文件。
  • :wq:保存文件并退出Vim编辑器。

光标移动命令

在编辑文本时,移动光标是一个常见的操作。以下是一些常用的光标移动命令:

  • w:将光标移动到下一个单词的开头。
  • e:将光标移动到当前单词的末尾。
  • b:将光标移动到上一个单词的开头。
  • 0:将光标移动到当前行的开头。
  • $:将光标移动到当前行的末尾。
  • G:将光标移动到文件的末尾。
  • gg:将光标移动到文件的开头。
  • /<pattern>:向下搜索<pattern>

文本编辑命令

Vim具有丰富的文本编辑命令,以下是一些常用的命令:

  • dd:删除当前行。
  • yy:复制当前行。
  • p:粘贴已复制或删除的文本。
  • u:撤销上一次操作。
  • Ctrl-r:重做上一次操作。
  • r:替换当前光标所在位置的字符。
  • c:删除从当前光标位置到指定位置的文本并进入插入模式。
  • v:进入可视模式,选择文本。
  • :s/<old>/<new>/g:将当前行中的<old>替换为<new>
  • :%s/<old>/<new>/g:将整个文件中的<old>替换为<new>

插入模式命令

在插入模式中,您可以输入文本。以下是一些插入模式中的常用命令:

  • Esc:退出插入模式。
  • Ctrl-h:删除光标左侧的字符。
  • Ctrl-w:删除光标左侧的单词。
  • Ctrl-u:删除当前行的所有文本。
  • Ctrl-a:插入文本到行首。
  • Ctrl-e:插入文本到行尾。
  • Ctrl-t:插入一个制表符。

宏命令

宏是一种将多个操作序列记录并重复执行的方法。以下是一些宏命令:

  • qa:开始录制宏并将其存储在寄存器a中。
  • q:停止录制宏。
  • @a:执行存储在寄存器a中的宏。
  • @@:重复上一次执行的宏。

分屏命令

Vim可以在窗口中分屏显示文件。以下是一些分屏命令:

  • :sp:水平分屏当前窗口。
  • :vsp:垂直分屏当前窗口。
  • Ctrl-w h:将光标移到左侧窗口。
  • Ctrl-w j:将光标移到下方窗口。
  • Ctrl-w k:将光标移到上方窗口。
  • Ctrl-w l:将光标移到右侧窗口。
  • Ctrl-w +:增加当前窗口的高度。
  • Ctrl-w -:减小当前窗口的高度。

多文件编辑命令

在Vim中,您可以编辑多个文件。以下是一些多文件编辑命令:

  • :e <filename>:打开指定的文件。
  • :tabnew <filename>:在新选项卡中打开指定的文件。
  • :tabnext:切换到下一个选项卡。
  • :tabprev:切换到上一个选项卡。
  • :tabclose:关闭当前选项卡。

其他命令

以下是一些其他常用的Vim命令:

  • :set number:显示行号。
  • :set nonumber:隐藏行号。
  • :set expandtab:使用空格代替制表符。
  • :set tabstop=4:设置制表符宽度为4个字符。
  • :set hlsearch:高亮显示搜索结果。
  • :set nohlsearch:取消高亮显示搜索结果。
  • :set background=dark:将背景设置为暗色。
  • :set background=light:将背景设置为亮色。

网络相关

  • ifconfig:查看网络信息

网络文件:/etc/sysconfig/network-scripts/文件名

BOOTPROTO="static"

IPADDR=192.168.202.100
GATEWAY=192.168.202.2
DNS1=192.168.202.2
  • hostnamectl set-hostname [name]
  • service network restart
  • 主机名:vim /etc/hostname
  • 路由表:vim /etc/hosts

系统管理

进程(process):正在执行的程序或命令

服务/守护进程(service):常驻内存的进程

命令

语法:systemctl start|stop|restart|status 服务名

查看服务:/usr/lib/systemd

systemctl stop network

systemctl restart NetworkManager

setup

开机自启:systemctl enable/disable 服务名

关机:shutdown [now]

取消:shutdown -c

内存->硬盘:sync

停机:halt/shutdown -H

重启:reboot/shutdown -r

文件目录类

  • pwd:查看当前绝对路径

    • -P:查看真实路径(不是软链接)
  • cd:切换目录

    • -:切换到上一次路径
  • ls:列出目录

    • -a:全部文件,包括隐藏文件(以.开头)
    • -l:长数据列出,报告文件属性,权限等 (相当于ll)
  • mkdir [path]:创建目录

    • -p:创建不存在的目录(mkdir -p a/b/c)
  • rmdir [path]:删除目录

    • -p:删除非空目录(rmdir -p a/b/c)
  • touch [name]:新建文件

  • cp [source] [dest]:复制文件

    • \cp [source] [dest]:复制并直接覆盖
    • -r:递归复制整个文件夹
  • rm [path]:删除文件

    • -r:递归删除整个文件夹
    • -f:强制删除
    • -v:显示详细过程
  • mv [source] [dest]:移动文件

  • cat:查看文件

    • -n:显示行号
  • more/less:查看分页文件

    • 空格/f:下一页
    • b:上一页
    • =:查看当前行信息
    • G:到末尾
    • g:到开头
    • /字串:搜索字串,n向下,N向上
  • echo:输出内容到控制台(echo $hostname)

  • >:输出重定向(echo $hostname > a.txt)

  • >>:追加(ls -l >> a.txt)

  • tail -f [path]:实时追踪文件的更新(可用于log日志)

  • ln -s [原文件或目录] [软链接名]:创建快捷方式

    • rm -rf 软链接名:删除快捷方式
    • rm -rf 软链接名/:删除快捷方式及真实目录的文件
  • history [命令数]:历史命令

    • -c:删除历史命令

时间日期类

  • date:显示当前时间
    • +%Y:当前年份
    • +%m:当前月份
    • +%d:当前天数
    • "+%Y-%m-%d %H:%M:%S":当前时间
    • +%s:当前时间戳
    • -d "n days ago":显示n天前的日期
    • -s "2017-06-19 20:00:00":设置当前时间
  • cal:显示日历
    • -n:前后n个月的日历

用户权限类

命令

  • useradd [user_name]:添加新用户

    • -g [group_name] [user_name]:添加新用户到某个组
    • -d 用户文件夹 [user_name]:添加新用户并指定文件夹
  • passwd [user_name]:设置密码

  • id [user_name]:查看用户相关信息

  • su [user_name]:切换用户

  • whoami:查看当前用户

  • userdel [user_name]:删除用户

    • -r:同时删除用户文件
  • groupadd 用户组:添加用户组

  • usermod -g [group_name] [user_name]:将用户添加到组名

  • groupmod -n [group_name]:修改组名

  • groupdel [group_name]:删除组名

配置文件

  • /etc/passwd:所有用户信息
  • /etc/sudoers:配置用户sudo权限 user_name/%group_name ALL=(ALL) NOPASSWD:ALL

推荐使用visudo配置

  • /etc/group:所有用户组信息

文件权限类

查看文件权限

ll可查看文件权限

image-20230917193333788
  • 第0位:表示文件类型

    • -:文件
    • d:目录
    • l:软链接
  • 第1-3位:属主(文件的所有者)的权限 –User

  • 第4-6位:属组(所有者的同组用户)的权限 –Group

  • 第7-9位:其他用户的权限 –Other

  • rwx作用到文件

    • r:可读
    • w:可写,但删除文件的前提是对该文件所在的目录有写权限
    • x:可被系统执行
  • rwx作用到目录

    • r:可读,ls查看
    • w:可修改,目录内创建,删除,重命名目录
    • x:可执行:可进入该目录
  • -:表示无权限

修改文件权限

image-20230918220813901
  • chomd [{ugoa}{+-=}{rwx}] 文件或目录
    • u:所有者,g:所有组,o:其他人,a:所有人
    • +:增加权限,-:撤销权限
    • -R:递归修改子目录
  • chmod [777 ] 文件或目录
    • r=4,w=2,x=1 rwx=4+2+1=7 (二进制编码)
  • chown [修改所有者] [文件或目录]
  • chgrp [修改用户组] [文件或目录]

搜索查找类

  • find [搜索范围] [选项]

    • -name <查询方式>:按照指定的文件名查找模式查找
    • -user <用户名>:查找属于指定用户名的所有文件
    • -size +<文件大小>:查找指定文件大小的文件
  • locate [文件名]:根据数据库快速定位文件

  • updatedb:更新数据库

  • which/whereis [命令]:查找命令在哪

  • |:表示将前一个命令的处理结果输出传递给后面的命令

  • grep 选项 查找内容 源文件:过滤查找

    • -n:显示匹配行及行号
  • wc [文件]:统计单词(行数,单词数,字母数)

压缩解压类

  • gzip 文件:压缩为.gz文件,只能压缩单个文件且原文件消失
  • gunzip 文件:解压.gz文件
  • zip [选项] xxx.zip 压缩文件:压缩为.zip文件
    • -r:递归压缩目录
  • unzip [选项] 文件:解压.zip文件
    • -d 目录:指定解压的目录
  • tar [选项] xxx.tar.gz 打包文件:打包为.tar.gz文件
    • -c:产生.tar打包文件
    • -v:显示详细信息
    • -f:指定压缩后的文件名
    • -z:打包同时压缩
    • -x:解压.tar文件
    • -C:解压到指定目录
shell
tar -zcvf test.tar.gz Document Music
tar -zxvf test.tar.gz -C /tmp

磁盘管理类

  • ls:查看当前文件夹文件
  • ll:查看当前文件夹详细信息
  • tree [文件目录]:yum install tree 查看文件树
  • du [选项] 目录/文件:查看目录磁盘使用情况
    • -h:单位显示
    • -a:查看目录 + 文件
    • -c:显示目录和文件大小后,显示总和
    • -s:只显示总和大小
    • --max-depth=n:查看n级目录
  • df [选项]:查看空余磁盘大小
  • free [选项]:查看内存使用情况
  • lsblk:查看设备挂载情况
    • -f:查看详细信息
  • mount device dir:把device挂载到dir目录
  • unmount:卸载设备
  • vim /etc/fstab:挂载文件配置
  • fdisk -l:查看磁盘分区详情
  • fdisk 磁盘设备名:对新增硬盘进行分区

进程管理类

*d.service:守护进程

  • ps:查看进程

    • a:查看带有终端的所有用户的进程
    • x:查看当前用户的所有进程
    • u:面向用户友好的显示风格
    • -e:列出所有进程
    • -u:列出某个用户关联的所有进程
    • -f:显示完整格式的进程列表
    • ps aux | less:查看系统中的所有进程
    • ps -ef:可以查看子父进程之间的关系
  • 含义:

    • PID:当前进程id
    • PPID:父进程id
    • %CPU:该进程占用CPU资源的百分比
    • %MEM:该进程占用物理内存的百分比
    • VSZ:该进程占用虚拟内存的大小
    • RSS:该进程占用实际物理内存的大小
    • TTY:该进程在哪个终端运行的,对于centos来说,tty是图形化终端,tty2-tty6是本地的字符界面终端,pts/0-255代表虚拟终端
    • STAT:进程状态,R:运行状态,S:睡眠状态,T:暂停状态,Z:僵尸状态,s:包含子线程,l:多线程,+:前台显示
    • START:该进程的启动时间
    • TIME:该进程占用CPU的运算时间,不是系统时间
    • COMMAND:产生此线程的命令名
  • kill [选项] 进程号:通过进程号杀死进程

  • killall 进程名称:通过进程名称杀死进程,支持通配符

    • -9:强制删除
  • pstree:查看进程树

    • -p:显示进程PID
    • -u:显示所属用户
  • top:实时监控系统进程状态

    • -d:刷新秒数
    • -i:不显示闲置或僵死进程
    • -p:指定监控进程
    • u [user]:进入界面后过滤user
    • k [PID]:结束进程
  • netstat -anp | grep 进程号:查看该进程的网络信息

  • netstat -lnp | grep 进程号:查看进程号端口占用情况

    • -a:查看所有,监听和未监听的套接字
    • -l:查看监听的套接字
    • -n:显示数字
    • -p:显示端口
  • crontab [选项]:定时任务

    • -e:编辑定时任务
    • -l:查询定时任务
    • -r:删除当前用户所有定时任务
  • 指定命令:*****(第几分钟,小时,日,月,星期)

    • */n:每个n时间执行一次
    • , -

软件包管理

rpm

  • rpm [选项] [软件名]:
    • -qa:查询所有安装的rpm软件包
    • -qi:查询软件信息
    • -e :卸载软件
    • --nodeps:不检查依赖
  • rpm -ivh rpm包全名:安装
    • -i:安装
    • -v:显示详细信息
    • -h:进度条

yum

  • yum [选项] [参数] 软件名
    • -y:对提问回答"yes"
    • install:安装
    • update:更新
    • check-update:检查是否可更新
    • remove:删除
    • list:显示信息
    • clean:清理缓存
    • deplist:显示依赖关系
  • /etc/yum.repos.d/CentOS-Base.repo:配置文件

Shell

入门

  • 一般以 #!bin/bash开头,指定shell解析器
  • 拓展名:.sh
  • 执行方式
    • sh/bash 路径
    • 直接输入路径(需要有权限+x)
    • source 路径
    • . 路径
    • 前两种使用子shell,后两种使用当前shell,子shell修改的环境变量对于父shell不可见

变量

  • 常用系统变量:$HOME,$PWD,$SHELL,$USER等
  • env查看系统全局变量,set查看所有变量
  • 自定义局部变量:变量=xx,局部变量对于子shell不可见
  • 将变量声明为全局变量:export 变量
  • 子shell无法修改父shell的全局变量
  • 定义常量:readonly 变量=xx,不能unset
  • 撤销变量:unset 变量
  • 特殊变量:$n表示第n个参数,$#表示参数的个数,$*表示把所有参数看成一个整体,$@表示把所有参数区别对待(相当于数组),$?表示最后一次命令的返回状态,0表示正常,其他异常

运算符

语法:$((express)),$[express]

条件判断

语法:

  • test condition
  • [ condition ]:condition前后需要有空格
  • 执行 echo $?正确返回0,错误返回1
  • 判断条件:
    • -lt:小于,-le:小于等于,-gt:大于,ge:大于等于
    • -r:有读的权限,-w:写,-x:可执行 -r 文件名
    • -e:是否存在,-f:存在且为常规文件,-e:存在且为目录
    • &&:前面命令成功了才会继续执行,||:前面成功了后面命令不执行

流程控制

shell
if [ condition ];then
	程序
elif [condition]
then
	程序
else
	程序
fi
shell
case $变量名 in
"值1")
	程序1
;;
"值2")
	程序2
;;
	...
*)
	其他值程序
;;
esac
shell
for (( 初始值;循环控制条件;变量变化 ))
do
	程序
done