目录结构
👉/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可查看文件权限
第0位:表示文件类型
- -:文件
- d:目录
- l:软链接
第1-3位:属主(文件的所有者)的权限 –User
第4-6位:属组(所有者的同组用户)的权限 –Group
第7-9位:其他用户的权限 –Other
rwx作用到文件
- r:可读
- w:可写,但删除文件的前提是对该文件所在的目录有写权限
- x:可被系统执行
rwx作用到目录
- r:可读,ls查看
- w:可修改,目录内创建,删除,重命名目录
- x:可执行:可进入该目录
-:表示无权限
修改文件权限
- 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:解压到指定目录
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:存在且为目录
&&
:前面命令成功了才会继续执行,||
:前面成功了后面命令不执行
流程控制
if [ condition ];then
程序
elif [condition]
then
程序
else
程序
fi
case $变量名 in
"值1")
程序1
;;
"值2")
程序2
;;
...
*)
其他值程序
;;
esac
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done