常见Linux指令
Linux
基础知识
1.常见Linux系统的文件结构
/etc 大多数配置文件的存放目录
/home 普通用户的家目录
/root 超级管理员的家目录
/var 数据(经常变化的文件)
/tmp 临时文件
/usr 用户相关设定
2.Linux系统命令行的含义
示例:[root@ck-server ~]#
root //用户名,root为超级用户
@ //分隔符
ck-server//主机名称(当前连接的虚拟机)
~ //当前所在目录,默认用户目录为~,会随着目录切换而变化。~:一般是指'root/普通用户'的家目录
//例如:[root@ck-server ~/test] ,当前位置在test目录下
#/$ //表示用户类型,#表示超级用户,$表示普通用户
//例如:[root@ck-server /]# ---root超级管理员访问
[ck@ck-server /]$ ---ck普通用户访问
3.图形化看文件类型
d开头是文件夹 , - 是文件

基础操作
1.用户切换
su 用户名称 //普通用户切换到超级管理员需要输入密码,超级管理员切换到普通用户不需要输入密码
2.查看ip地址
ifconfig //linux下的查看
ipconfig //window下查看
面试题 : 怎么修改linux系统的ip地址 : ifconfig+网卡名称+新的ip

3.其它基本操作
1)history :查看历史指令
2)ping xxx : 查看网路是否畅通
/*
退出:ctrl+c
挂起:ctrl+z
查看最新挂起 fg
查看具体挂起 fg 数字
*/
3)man + 命令 : 可以查看当前命令后面可加的参数 (空格翻页,q退出)
// 例如:man ls : 查看ls命令后面可以接什么参数,以及接的参数有什么作用
目录操作
1.查看目录&切换目录
pwd:查看当前绝对路径,查看当前所在的 // /-->根目录
cd 目录名称 : 切换目录 //可以通过绝对路径也可通过相对路径切换
/*
例子:
cd / 进入根目录
cd dir 进入指定目录
cd 进入当前目录下
cd .. 进入上一级目录
cd ~ 进入家目录
*/
2.查看目录下文件/目录
ls : 查看当前目录底下所有文件和目录
ls -l : 查看当前目录底下所有文件和目录 及 详细信息
ll : 和ls -l一样,查看当前目录底下所有文件和目录 及 详细信息
ls -rtl : 查看当前目录底下的文件和文件夹的名称 及 详细信息 , 并按照时间进行倒叙排列 (r默认是字母倒序,现在是时间)
ll -rt : 查看当前目录底下的文件和文件夹的名称 及 详细信息 , 并按照时间进行倒叙排列
ls -a : 可以查看当前目录底下所有文件和目录,包含上级目录和本目录
3.查看某文件目录(路径)
find命令 查找命令
- find / -name '关键字/文件名' : 查找根目录(包括底下子目录)所有对应'关键字/文件名'的文件和目录,得出'关键字'的文件和目录的绝对路径
- find -name '关键字/文件名' :查找当前目录 通过'关键字/文件名'名查询 得出文件/目录的相对路径
- *匹配0个或者多个字符 , ?匹配1个字符
- find -name 'file*' : 查找当前目录及子目录下所有开头file的文件和目录
- find -name 'file?' : 查找当前目录及子目录下所有开头file且后面接一个字符的文件和目录
- find -type f : 查找当前目录下所有类型为文件的路径
- find -type d : 查找当前目录下所有类型为目录的路径
文件操作 (增删改查,复制,移动)
//重要参数 -f :强制操作参数 -r :操作目录参数 * : 模糊查询
1.vim操作
vim xx文件名 :创建/打开文件,并进入编辑模式 //无则创建,有则打开
/*
vim界面具体操作
1,vim +新的文件名
2,进入空白的界面
3,按键盘的 ‘i’键,可以进入编辑模式,界面底下显示‘--INSERT--’,这时可以插入一些数据
4,退出编辑模式(1)按键盘'Esc'键;(2)按Ctrl+c
5,保存并退出(1)输入‘:wq’(2)大写ZZ
6,vim编辑命令,可以查看文件的内容,‘:q’可以退出,‘:w’代表保存,‘:wq’代表保存并退出,‘:q!’强制退出,接‘!’代表强制执行
7,进入vim模式之后,不要用鼠标进行操作,不要用鼠标进行操作,不要用鼠标进行操作
8,目录不能用vim进行编辑,只能用cd来进入
9,文件不能用cd进入
10,vim命令创建文件时,不输入数据退出则不会生成文件
*/
2.复制拷贝文件
cp 原文件 目标文件 : 复制 (目标文件不存在则新建一个文件,目标文件存在则源文件覆盖目标文件)
cp -r : 原目录 目标目录 : 如果目标目录存在,则复制原目录到目标目录下.
cp 文件 目标目录 : 把文件复制到某个目录
cp 文件 目标目录/文件重命名(不能是已经存在的文件名) : 把文件复制到目标目录,并将文件重命名
---------------------------------------------------------------------------------------------------
cat 文件A > 文件B : 复制文件A到文件B, 文件B被文件A文件覆盖
cat 文件A >> 文件B : 把文件A复制追加在文件B后面
3.移动/重命名文件
mv 文件 目标目录 : 移动文件到指定目录 (如果目录不存在,就是文件的重命名)
mv 文件 目标目录/文件重命名(不能是已经存在的文件名) : 把文件移动到目标目录,并将文件重命名;如果文件名已经存在,会覆盖
4.增加文件/目录
mkdir 文件夹:创建文件夹 make directory
mkdir 文件夹1 文件夹2 : 创建多个文件夹
mkdir -p aa/bb/cc(多层目录) : 创建层级目录
touch 文件 : 创建文件
touch 文件1 文件2 : 创建多个文件
touch xx{01..10} : 连续创建多个文件
5.删除文件
rm 文件名
rm -f 文件名
rm -r 目录名 :对该目录进行删除,删除前询问
rm -rf 目录名 :对该目录进行强制删除
rm -rf * :删除该目录下所有文件及目录
rm -rf a* :模糊匹配, 匹配到的目录和文件都会删除
rm -rf a? :模糊匹配一个字符, 匹配到的目录和文件都会删除
6.查看读取文件(面试题)
vim + 文件名 : 通过编辑模式去打开一个文件进行查看内容
cat + 文件名 : 完整打开一个文件的内容,但是不能编辑
cat 文件名 | grep ' 关键字 '
管道符----第一个命令的输出是第二个命令的输入
grep : 文本搜索工具命令
grep '关键字' 可以查看文件里面 '关键字' 所在行的所有信息
- grep '关键字' -A N数字 : 看到关键字所在行,以及它后面 [N数字行]
- grep '关键字' -B N数字 : 看到关键字所在行,以及它前面 [N数字行]
- grep '关键字' -C N数字 : 看到关键字所在行,以及它前后面 [N数字行]
关键字要用两个引号引着,否则会出现 > (重定向符),导致输入的命令不会被识别,要给它补回引号.或者ctrl+c退出
cat 文件A > 文件B : 文件B被文件A文件覆盖
cat 文件A >> 文件B : 把文件A追加在文件B后面
> 是重定向符
> xx文件 : 清除xx文件的内容
>> : 追加
面试题:怎么清空一个日志文件
> xx文件 : 清除xx文件的内容
面试题: 如何造一个大文件
cat 文件A >> 文件B
cat 文件B >> 文件A
.....
less 文件名 :以翻页的形式查看文件,
- 按q退出 , **不能ctrl+c退出 **(区别more)
- ctrl+z : 挂起 ,fg退出最近的挂起
- 空格向下翻页 , B键向上翻页 ;
- 回车键: 一行一行往下翻 (上下键也可行上下操作)
- /关键字: 往下搜索关键字
- ?关键字: 往上搜索关键字
- 100%显示完不会自动退出 (区别more)
more + 文件名 : 以百分比的方式查看文件
- 按q退出 , ctrl+c退出 (区别less)
- ctrl+z : 挂起 ,fg退出最近的挂起
- 按B向上翻页,空格往下翻页,
- 回车键可以一行往下 (不能用上下键对行操作)
- **显示完100%后自动退出 **(区别less)
nl + 文件名 : 显示行号和行的内容
head + 文件名 : 默认显示文件头部的10行
- head -n 需要查看的行数N数字 文件名 : 从头部开始看N行
tail + 文件名 : 默认显示文件的尾部10行 (查看实时动态日志)
- tail -n 需要查看的行数N数字 文件名 : 从尾部开始看
- tail -n +N数字 文件名 : 查看文件的第N行到末尾
- tail -f 日志文件 : -f动态刷新文件的内容 (查看实时动态日志)
sed -n '前行号数字,后行号数字p' 文件名 : 按行号查找
面试题:使用head和tail命令取文件的第15行-22行
cat head_tail.txt |head -n 22 |tail -n 8
cat head_tail.txt |head -n 22 |tail -n +15
cat head_tail.txt |tail -n +15 |head -n 8
cat head_tail.txt |tail -n 16 |head -n 8
sed -n '前行号数字,后行号数字p' 文件名 :按行号查找
权限操作
r--->read 4
w --->write 2
x--->execute 执行权限 1

chmod + 权限数字1权限数字2权限数字3 文件: 改变用户对文件的权限
chmod + -R 权限数字1权限数字2权限数字3 目录 : 改变对目录的权限(使用-R参数才可以对目录里面的所有文件和子目录进行赋权) -R(以递归的方式执行赋权)
chmod u-r 文件/目录 u---user---对属主改变权限 (文件的创建者)
chmod g-r 文件/目录 g---group---对属组改变权限 (和文件创建者同一个组的其它用户)
chmod o-r 文件/目录 o---对其它用户改变权限 (既不是文件的创建者,也不和文件创建者同一个组的其它用户)
chmod u+r 文件/目录 u---对属主改变权限
chmod g+r 文件/目录 g---对属组改变权限
chmod o+r 文件/目录 o---对其它用户改变权限
....
//修改目录的权限时候要加 -R参数 ,否则子文件/子目录权限不会改变.
//对超级管理员下的文件修改权限后,可能权限被修改了,但是不起作用. 因为超级管理员本身就拥有最高权限777,什么操作都可
----------------------------------------------------------------------------
chown 新属主 文件: 改变文件的属主 (假如新属主不存在则报错)
chown 新属主:新属组 文件: 同时改变文件的属主和属组
--------------------------------------------------------------------------------
chgrp 新属组 文件: 改变文件的属组
用户/组操作
查看当前linux系统下的用户/组
cat /etc/passwd : 查看当前linux系统下的所有用户
//看用户编号,可以区分用户类型
cat /etc/group : 查看linux系统下用户组信息,可以看到linux用户组及用户组编号
//每新建一个用户,默认会生成一个用户组,而且用户会默认在自己组里面
groups 用户名 : 查看用户在哪个组里面
查看Linux所有用户:
查看用户在那个组:
查看用户在那个组:
创建用户并设置密码
useradd 新用户名 : 添加用户
//(创建用户会自动在/home目录下创建新目录)
//创建用户时,会默认创建在自己组
passwd 用户密码 : 修改用户密码
----------------------------------------------------------------
useradd 新用户名 -g 具体现存的组 : 新建用户并把该用户添加进一个现存组
//具体的组一定要存在:否则会报 group 'xx组' does not exist
创建一个用户并设置密码:
创建用户并把该用户添加进一个现存组:
创建用户并移入某个具体的组(不存在情况):

删除用户
userdel 用户名: 删除用户
//再去查看时,会报'No such user'
//不能删除正在登陆的用户,会报'user xx is currently logged in',删除失败
userdel -rf 用户名: 强制删除
//会报 ''user xx is currently logged in'' , 但是还是删除成功
删除用户:
删除登录中的用户:
创建组
groupadd 新组名 : 创建一个空组,里面没有用户
删除组
groupdel 组名 : 删除一个组名
//(先要删除组里面的用户。如果组里面还有用户,就不能删除用户组)
//里面还有用户时会报 : " groupdel: cannot remove the primary group of user 'xxx组名' "
删除组:
删除组(里面有用户):
把用户移入移出一个组
gpasswd -a ck1用户 ck2组 : 把现存的用户添加到某个组
//(假设ck1原来只属于ck1组,此操作后ck1用户同时属于ck1和ck2组)
gpasswd -d ck1用户 ck2组 : 把现存用户移除出某个组
把用户移入移出一个组:

把现存用户并移入某个具体的组:(某个具体的组一定要存在)
把现存用户并移出某个具体的组:
磁盘操作
查看磁盘使用情况
df :查看磁盘的使用空间
df -h : 带单位显示磁盘使用情况
查看对应文件/目录磁盘使用情况大小
du -sh :查看当前路径使用占用磁盘空间的大小
du -sh 某目录/某文件 : 查看对应文件/目录使用占用磁盘空间的大小
内存操作
查看内存使用情况
free :查看linux系统的内存使用情况
free -m : 以m(兆)为单位查看内存的情况
查看性能情况
top指令
top: 动态显示当前内存/cpu使用较高的服务进程 //查看linux系统性能情况
//如果系统出现反应缓慢,死机等情况.可以通过top指令查找当前系统占用内存和cpu比较高的服务进程对应的PID(进程id)
//一般CPU要控制在80%-85%一下,高于这个值必须进行优化
top -p pid进程号: 只监控该服务进程的性能情况
top -d 数字N : 需N秒刷新进程 (注意不能小于3)
top -d 数字N|grep pid进程号 : 需要N秒刷新具体进程情况 (时间不能小于3秒)
------------------------------------------------------------------
top 内部命令
N:以pid进程号的大小顺序进行排序
P:以cpu大小进行排列
M:以内存使用率大小进行排序
进程操作
查看服务进程和端口
ps : 查看进程
ps aux : 查看所有用户进程
ps -ef :查找服务进程号
---------------------------------------
ps -ef |grep 服务名 :找对应服务的进程号
查找服务进程号:
面试题:怎么查看服务是否已经启动? 以及如何查看端口是否被占用? 不知道端口号的情况怎么去查
ps -ef |grep 服务名 :找对应服务的进程号 :查看服务有没有开启
netstat -nltp : 查看当前所有已经使用的端口号 以及 对应的pid和服务名称
netstat -anp |grep 'xxx' : 查看端口号使用情况
lsof -i :'端口号' : 查看端口号的使用情况
杀进程
kill
kill -9 进程号 : 强制杀掉对应服务进程
常见查看命令
查看登陆用户,操作用户,显示主机,系统名,系统位数
who : 查看当前登录的用户
whoami: 查看当前操作用户
hostname:查看显示主机名称
uname:查看系统名称
getconf LONG_BIT: 查看Linux系统的位数
// 32位的系统最多支持4G内存,64位的操作系统支持4G-256G内存
// 理论上64位的系统比32位的系统快2倍
查看登陆用户,操作用户,显示主机,系统名
查看系统时间
面试题:怎么修改时间
date : 查看当前服务器时间
date -s 2021-4-18 :修改服务器日期
date -s 16:10:00 :修改服务器时间 //要先改日期,再改时间
网卡/防火墙/重命名/连接/重置清空屏幕/关机/重启
重启网卡:service network restart
关闭网卡:service network stop
启动网卡:service network start
查看网卡运行状态:sevice network status
关闭防火墙: service iptables stop
防火墙状态查询:service iptables status
启动防火墙:service iptables start
重启防火墙:service iptables restart
alias 指令重命名后命令='xxxx指令'
//如果出现路径,要用绝对路径
unalias 自己重命名的命令 :取消重命名命令
//使用alias命令 不能定义linux原有的,内置的命令
reset:重置屏幕
clear : 清除屏幕
nl:带行号查看文件
ln链接命令:
ln -s 原文件/目录绝对路径 现在存放的位置(可以重命名):
//软链接:相当于快捷方式
ln -d 原文件的绝对路径 存放链接的路径和赢链接名称 :硬链接 (相当于备份)
//当原文件或者俩姐文件改变,对应的文件也会改变
reboot :重启linux系统
shutdown now 关机
init 0 关机
软链接:
打包
常见包:tar 、tar.gz、zip、gzip、war、jar
tar包&tar.gz包
tar -cvf aa.tar(包名称) aa(原文件/目录) : 打包aa目录为aa.tar包
//打包后的文件会变大
//c-->打包 v-->打包进度 f-->打包的文件
tar -xvf aa.tar(包名称) : 解压aa.tar包的内容
//x-->解压
---------------------------------------------
tar -zcvf aa.tar.gz(包名称) aa(原文件/目录) : 打包aa文件/目录为aa.tar.gz包
//打包的同时会有压缩
tar -zxvf aa.tar.gz(包名称) : 解压aa.tar.gz包的内容
zip包&gzip包
zip aa.zip(包名称) aa(原文件): 打包aa文件为aa.zip包
zip -r aa.zip(包名称) aa(原目录): 打包aa目录为aa.zip包
//直接对目录进行打zip包只会对那层目录打包,不会对里面的内容进行打包
//加 -r参数 :才会对其子文件/子目录进行打包
unzip aa.zip(包名称): 解压zip包
//不用加-r参数
---------------------------------------------------------------
gzip包:只能对文件进行打包
gzip aa(原文件) :对aa文件打包为aa.gzip包
//使用gzip进行打包,打包完会对原文件进行删除
//gzip aa(原目录)-------gzip包:只能对文件进行打包,打gzip包会出错
gunzip aa.gz(包名称) :对b2.gp包进行解压
//解压完以后,aa.gz包会被删除
打包注意点:
**1. tar打包会变大,没有压缩。tar.gz打包才会压缩 **
2. tar包,tar.gz包,zip包都可以对多层目录或者文件进行打包,但是对目录打成zip包,需要加参数-r.
3.gzip只能对文件打包, 并且打包完以后会将文件删除
解压注意点:
1.解压都不用加-r
2.gzip解压会将包文件删除
两台服务器之间传输文件
scp命令
前提:
- 知道对方的服务器的IP,用户名,密码,对方文件的绝对路径
- 两台服务器要在同一个局域网
- 虚拟机要采用桥接模式
scp下载文件:
-
从本地服务器A到远程服务器B取文件---下载文件
scp 远程B用户名@远程B服务器ip:远程文件绝对路径 本地存放的目录路径scp -r B用户名@B服务器ip:远程目录绝对路径 本地存放的目录路径对目录操作要加参数 -r
-
确认连接
-
输入对方密码
下载远程文件到本地指定目录:
下载远程目录到本地指定目录
scp上传文件:
scp 本地文件路径 B用户名@B服务器ip:存放在B服务器的文件绝对路径
scp -r 本地目录路径 B用户名@B服务器ip:存放在远程B服务器的目录绝对路径
sftp工具
ftp 文件传输协议(目前没用了)
sftp 安全文件传输协议
-
sftp B服务器ip------------------- sftp工具登录远程服务器 -
输入远程服务器root用户密码
-
在sftp工具里面进行相关的操作
此时不能操作linux指令
-
get命令:下载命令,从远程服务器拿文件到本地服务器
get B远程服务器文件路径 本地服务器存放的路径------下载文件 -
put命令:上传命令,向远程服务器放文件
put 本地服务器存放路径 B远程服务器存放路径--------上传文件 -
退出sftp工具命令
quit/exit -
pwd / cd
-
sftp工具登录远程服务器:
sftp指令:
ftp工具和xftp软件区别
- ftp工具时Linux内置的工具
- xftp是一个程序
rpm&yum命令
yum命令
在线下载安装 yum install +应用名
安装lrzsz
在线安装:yum install lrzsz 在线安装“lrzsz”的工具
卸载:yum remove xxxx
lrzsz
lrzsz : 是一个文件上传和下载的工具,可以把windows系统的文件和linux的文件进行上传下载
rz : 把window文件传送到linux (拖拽也可以传输) -----会弹出文件选择框,选择文件
sz : 把linux文件传送到window
lrzsz工具有缺点:传输速度比较慢,如果文件比较大,失败率比较高
大文件,采用xftp传输
rpm命令
本地安装
//参数:
-i: 安装
-v: 可视化,可以更多的
-h: 显示安装进度
-e: 卸载
-qa: 查看当前安装的rpm包
ERROR:
- 假如连接不上虚拟机
- 打开CentOS没有ip地址
- 使用root用户重启Linux网卡:
service network restart - win+r-->输入services.msc-->名称排序-->V-->vm开头的东西右击重启-->回到linux重启xshell
service network restart
- 使用root用户重启Linux网卡:
vim操作
vim内置的命令不当做linux命令
编辑模式
必须要进入编辑模式才可以对文件的内容进行编辑
i:按‘i’进入编辑模式,在光标所在位置的前面进行输入
I:按大写‘I’进入编辑模式,会跳转到光标所在行的行首(那一行的最前面)并进入编辑模式
a:按‘a’在光标所在位置后移一位进入编辑模式
A:按大写‘A’跳转到光标所在行的行末(那一行的最后面)并进入编辑模式
o:按‘o’在光标所在行,往下插入一行并进入编辑模式
O:按大写‘O’在光标所在行,往上面插入一行并进入编辑模式
正常模式
删除
x:按‘x’删除光标所在位置的一个字符
X:按大写的‘X’删除光标所在位置的前面一个字符,相当于不能退行的‘退格键’
dd:删除光标所在行的所有内容
D:删除光标所在位置至行尾的字符
撤销
u:撤销功能
替换
r:替换光标所在位置的一个字符,按‘r’之后再输入你要替换的字符
复制
yy:复制光标所在行的内容
p:把复制的内容粘贴到光标的下一行
P:大写的P,把复制的内容粘贴到光标的上一行
3yy:复制光标所在行起的3行内容
末行模式(命令模式)
高亮
:/+需要查找的字符:查找文件中‘需要查找的字符’,并高亮显示
:noh --》取消高亮
行号
:set nu --->显示行号
:set nonu --->取消行号
复制
:1,4w +新文件的路径(或者新的文件名),只能把文件写入一个新文件 ---把文件里的1到4行写入另外一个新文件
:1,4y --》复制1到4行
替换
:%s/123456/asd/g 把文件里所有的‘123456’替换为‘asd’
/代表分隔符
%s 代表替换
第一个 / 后面代表要查找替换的字符
第二个/ 后面代表要替换成的字符
/g代表全局替换,如果不加/g只会替换每一行匹配到的第一个
保存退出
:w 保存
:q 退出
:wq 保存并退出
:q!强制退出
:w! 强制保存 ,低权用户修改别人的文件是不能使用的,同一个用户组相同的修改权限用户在使用vim查看或者修改该文件时,才可以使用# Linux

浙公网安备 33010602011771号