LINUX 基础
LINUX命令
-
pwd 打印当前的绝对路径
-
su -name 切换到name用户
-
ctrl + c 强制中断linux的操作
-
stat 文件路径 查看文件状态(访问时间、修改时间)
-
cat 文件路径 读取文件内容
-
mkdir 文件夹名 创建文件夹
- mkdir -p 文件路径 递归创建文件夹:mkdir -p ./123/23/1
-
rmdir 文件夹名 删除文件夹
-
touch
-
touch 文件名 创建普通文件;touch yunwei.txt
若当前目录存在该文件,则表示修改文件的访问时间属性
-
-
ls 文件路径 查看该文件路径下的详细信息
ls -l 文件路径 查看该路径下的文件的详细信息
ls -d 文件夹路径 查看该文件夹的详细信息
ls -a 文件路径 查看隐藏文件
ls -h 文件路径 查看文件容量单位
-
echo
echo ” “ 打印字符串
echo ${变量名} 打印变量名
echo 变{a/1…z/?}量 打印一堆变?量
-
TAB
命令补全和路径补全
-
history
- 查看历史命令 history -c 清除历史命令
-
who
- 查看当前存在几个终端:确定有几个人在连接服务器
Xshell连接LINUX服务器
-
WINDOWS模式的xshell终端下的服务器连接命令:ssh 用户名@ip
-
LINUX模式的xshell终端下的服务器连接命令:ssh -p 端口 用户名@ip
LINUX与引号的关系
- linux下的单引号,表示不做特殊符号的转义,仅仅是一个纯字符串
- linux下的双引号,也表示定义字符串,但是它能识别特殊符号。
vim操作
- vim 文件名 进入该文件执行命令模式
- 输入 i 进入写入模式
- 按 esc 退出写入模式,进入命令模式
- 输入 wq 保存并退出vim操作流程
linux 文件管理命令(一)
1.新建
- touch 文件
- mkdir 文件夹 (att:mkdir不能隔级创建,必需依目录创建)
- mkdir -p 依据提供的文件夹目录递归创建文件夹(./当前目录;…/上一级目录;pwd查看当前所在位置)
- mkdir dir1 dir2 … dir(一次性创建多个目录)
- vi,vim 文件
- echo 结合 重定向符号(>) 文件 ;echo “男儿当自强” > /opt/man.txt
2.删除
rmdir 删除空目录
rm -rf /home/lol/ 删除指定目录下的全部内容
3.更改
vim
4.查看
cat 读取文件
5.复制
copy → cp
1.cp /opt/lol/zhongdan/kuailefeng/yasuocai.txt /home/小丑.txt ;将/opt/下的yasuocai.txt文件复制到/home下并将文件名改为小丑.txt
2.cp ./lol/zhongdan/kuailefeng/yasuocai.txt / ; 将yasuocai.txt复制到/下
3.复制文件目录 : cp -r ./lol /home/ 将lol下的目录复制到/home/中
4.拷贝文件夹和递归拷贝文件夹
cp -r lol /home/yingxiaonglianmeng; 将lol拷贝到home并改名yingxionglianmeng
6.移动
move → mv 两个作用:1.剪切 2.重命名
1.从A目录移动到B目录,移动单个文件
mv caiwenji.txt /opt/lol/zhongdan ;将caiwenji.txt移动到zhongdan下
2.文件重命名 :mv 源文件 重命名后的文件
3.移动文件并重命名:mv 源文件 路径/重命名后的文件
7.压缩解压
- tar压缩
tar命令
-c 打包
-v 显示打包过程
-f 指定打包的文件名,该参数必须在最后一位加上
-u 更新原打包文件中的文件
-t 不解压,查看打包的文件内容
-x 解包,解压缩
-z 压缩,tar命令调用gzip的过程.压缩为.gz格式。解压缩:-xzvf
-j 压缩为.bz2格式。解压缩:-xjvf
1.用tar命令压缩的文件,一般后缀加
*.tar 只打包
*.tar.gz 打包+压缩
*.tgz 打包+压缩
2.打包
tar 参数 打包文件名 要打包的内容
tar -cvf all_robots.tar robot.txt robot.txt1 robot.txt2 robot.txt3
3.查看打包内容
-t 参数 切记无论解压还是打包 -f都必须加在参数后面
4.拆包
tar -xf all_robots.tar
5.追加
tar -uf 包文件 要加入的文件
tar -uf all_robots.tar test1.log
6.压缩文件
tar -czvf all_files.tar.gz ./* 将当前目录的所有文件压缩进all_files
7.解压缩
.gz格式:tar -xzvf all_files.tar.gz
.bz2格式:tar -xjvf all_files.tar.bz2
-
zip压缩
兼容类unix和windows,可以压缩多个文件或目录
语法:zip [参数] 压缩后的文件 需要压缩的文件(可以是多个文件)
zip压缩目录需要添加-r(递归压缩)
zip压缩命令自动给压缩文件添加后缀.zip
zip -r all_files.zip robot/ test1.log
-
zip解压缩
unzip 压缩文件 -d 要解压的目录
8.vim编辑器
1.安装
yum install vim -y
2.基本操作
- vim 文件名 进入该文件执行命令模式
- 输入 i 进入写入模式
- 按 esc 退出写入模式,进入命令模式
- 输入 wq 保存并退出vim操作流程(q!强制退出)
3.操作细节(以下操作都在vim命令行模式实现)
移动光标到文档的开头、结尾
gg:回到文档的开头;shift+g输入G:到文档末尾行的开头
移动光标到每一行的行首及行尾
输入数字0,进入行首;输入字符:(shift+4)$符,进入行尾
光标定位到指定行
:行号
行号+G
复制粘贴
yy:复制单行;3yy:复制光标所在行的三行(包括光标所在行本身)
p:在光标处下行打印
P:大写的P,在光标上一行打印
撤销or恢复
u:撤销上一步的操作
ctrl+r:恢复撤销操作
剪切
dd
数字+dd:剪切指定行,包括光标所在行
shift+d(D):删除当前行、光标处及后续内容
4.底线模式
进入方式:在vim编辑下,按esc进入命令行模式,输入‘:’进入底线模式
将vim编辑的内容写入文件,退出,保存并退出,强制
:w 写入文件数据
:q 退出
:wq 保存并退出
:! 强制操作
:set nu 加行号
搜索、查找
在vim命令模式下,输入/+关键字,即可找到你要找的关键字
:noh取消高亮
粘贴模式
:set paste 进入粘贴模式,可以规范的粘贴内容
替换
单行替换只替换一次 :s/源内容/新内容/ (对光标所在行进行替换)
单行替换,替换N次 :s/源内容/新内容/g (对光标所在行进行替换)
全文替换,逐行匹配,找到第一个关键字,只替换一次 :%s/八戒/黑熊精/
全文替换 :%s/八戒/黑熊精/g
可视化模式(对vim进行多行批量操作)
先确定光标位置
按下ctrl+v进入可视化选择模式
可以用方向键选择区域
选择好后,可以进行命令操作(按下y 复制;按下d 删除;按下p 进行粘贴;按下esc退出可视化)
按shift+i进入编辑模式,去多行修改文本,按选中的块修改。完成后按下2次esc
x 在命令行模式删除光标选中的内容
5.vim故障处理(linux文件保护机制)
vim的swp文件处理()
原因:1.多人同时编辑了一个文件2.编辑文件没有正常保存退出
解决方式:在ls -a中找到隐藏的swp文件,rm -f swp文件名 删除
6.初识nginx
1.创建软件库,将下面的两条命令执行
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2.安装nginx
yum install nginx -y
3.系统服务命令
systemctl start nginx 启动nginx
systemctl stop nginx 关闭nginx
4.查看nginx服务状态
ps -ef |grep nginx
linux 文件管理命令(二)
1.cat命令
作用:查看文件内容
语法:cat 文件 # 读取文件内容
attention:cat命令是一次性把文件中的所有的内容全都出来(放到内存中)因此cat命令不适合阅读大型文件
查看系统用户信息:cat /etc/passwd
显示行号:cat -n 文件
读取多个文件并一起显示:cat 文件1 文件2 文件3
结合重定向符号使用: > 重定向覆盖输出符,数据从左边覆盖写入到右边
< 重定向覆盖输入符,数据从右边覆盖写入到左边
>> 重定向追加输出符,数据从左边追加写入到右边
<< 重定向追加输入符,数据从右边追加写入到左边
cat 文件1 文件2 文件3 > 文件4 ;将文件1、2、3中的内容输出到文件4中
cat 写入多行数据:cat >> 文件名 <<EOF (END OF FILE)
数据
EOF
cat 证明文件存在空白的方法: -b 只会对有内容的行,显示行号。空行不显示。
cat -E 在每行结束处显示$,用于查看文件内的字节数。一个英文字母,一个字节
2.wc命令(word count)
作用:统计文件内的信息,一般统计如(行数、单词数、字节数)
参数、语法:-l:表示lines,行数(依据回车/换行符为准)
-w:表示words,单词数(依据空格来判断单词数量)
-c:表示bytes,字节数(依据空格,回车,换行)
3.tac命令
tac 文件名 将文件内容按行号逆序输出(123)->(321)
4.more分屏命令、less命令
more和cat一样都是一次性读取内容到内存,不适合读取大文件。
less命令是显示多少文本,消耗多少资源
操作: 空格 -> 翻篇
回车 -> 下一行
5.head和tail命令
head -5 文件 # 查看文件的前5行(若不给-5约束则默认为查看文件前10行)
tail -5 文件 # 查看文件的后5行
tail -f 文件 # 检测文件内容变化(要求被监测的文件存在)
tail -F 文件 # 对文件进行刷新读取,即使该文件不存在也可以监测
6.du命令
作用:查看文件或目录(会递归显示子目录)占用磁盘空间大小
语法:du [参数选项] 文件名或目录名
-s:summaries,只显示汇总的大小,统计文件夹大小
-h:表示以高可读性的形式进行显示,如果不写-h,默认以kb的形式显示文件大小
du -h ./* 显示当前目录下所有文件的大小
之前查看文件大小的命令:ls -lh 看不了文件夹的大小无法统计总和
查看日志文件的大小:du -sh /var/log
linux对文件管理的最小单位为4kb
echo $LANG查看linux编码规则
7.find命令
语法:find 目标所在位置 -name '对象'
find / -name 'duiiang'
模糊查找:find / -name '*.log' 在根目录下查找所有的.log文件
找到文本类型的数据:find / -type f -name 'duixiang'
找到文件类型的数据:find / -type d -name 'duixiang'
找到数据后的动作处理:
场景:找到所有的'.txt'文件并删除
1.结合find xargs | :find / -name '*.txt' | xargs -i rm -f {}
2.使用-exec
8.grep命令(重要)
grep 'duixiang' 文件名 在文件中查找对象并输出
在安全日志中查找和'root'相关的信息:grep 'root' /var/log/secure
grep的作用是从文件中(非文件夹)匹配出存在该关键字的那一行
忽略大小写 -i
9.管道符 ‘|’
管道符在linux中:'|'
管道符和其他命令的结合
利用grep和管道符查看系统用户信息:
/etc/passwd 是系统的用户信息存放文件
添加用户信息:useradd yejinyang
查看用户信息:grep 'yejinyang' /etc/passwd 或 id yejingyang
命令1,拿到用户文件信息 | 交给grep再去过滤
管道符结合find命令搜索信息:find / -name 'duixiang'|grep 'duiixang1' 路径
管道符常见用法:
检查进程命令
查看系统进程信息的命令:ps -ef # -e 显示所有的进程信息 -f 格式化显示出进程的id号
ps -ef | grep '要查的进程'
检查端口命令
netstat -tunlp # 查看系统上所有的端口信息
查看特定端口
netstat -tunlp |grep 端口号
统计文件数量
find 路径 -name '文件名' | wc -l
统计系统用户数量
/etc/passwd 系统用户信息存放文件
cat /etc/passwd | wc -l
grep+管道符+xargs的使用
需求:找出系统上所有的.txt文件
判断那些文件是包含apple文本的
显示匹配到数据的文件名
理论知识:xargs构造命令 ############
作用:将其他命令执行的结果,传递给它后面的命令作参数
语法:命令1 | xargs 选项
选项
-i 用 {} 代替传递的数据
xargs实现批量备份
find /路径/ -name '要查找的文件' | xargs -i cp {源文件} {被备分的文件}.bak
实现批量重命名
关键命令:rename 源字符串 新字符串 文件对象
实现:ll |xargs -i rename txt log {}
在.txt中查找包含'xiake'内容的文本
语法:find / -type f -name '*.txt' | xargs -i grep -l 'xiake' {}
用户管理篇
1.基础知识
安装软件时会自动创建用户,但仅用于运行该软件
可以通过UID去判断用户
2.组管理
组添加:groupadd 参数名 组名
-g 设置组的id号,默认从1000开始,1-999是系统预留的组
组修改:groupmod 参数 组名
-g gid缩写,可以设置组ID
-n name的缩写,可以设置组名
组删除:groupdel 组名
3.用户管理
添加用户:useradd 用户名
-g:指定用户组(可以是组ID,也可以是组名)
-G:指定用户附加组(可以是组ID,也可以是组名)
u:uid,用户的id(用户标识符),系统默认会分配,可自定义
c:comment,添加注释(可选)
-s:指定用户登录后所用的shell解释器,默认/bin/bash[专门的接待员],若果不想让其登录,可以设置/sbin/nologin
d:指定用户登录时的起始目录(家目录位置)
-n:取消建立以用户名称为名的群组
查看用户登录信息
whoami 打印当前名
who 显示已登录的终端用户信息。(tty是虚拟终端的代称,pts/序号 ssh远程终端的代称)
w 显示系统登陆用户信息和负载信息
last 显示近期登录的终端有哪些
lastlog 显示关于用户的登录记录
用户切换命令(su命令)
su root 不改变工作路径
su -root 相当于登录root账号
4.文件、用户权限管理
查看当前目录下文件详情的命令:ls -lh/ll -h
~ 表示当前用户的主目录
文件的权限:r 读;w 写;x 执行。顺序必须为:rwx 若无该权限则为'-'
解读:d rwx r-x r-x. 3 root root 242 Sep 5 22:17 /opt
文件类型 属主权限 属组权限 其他人权限 文件链接数 属组 属组 文件大小 文件最后修改时间 文件名
修改用户主要组:
usermod -g devops wuyifan01 是用于修改用户 wuyifan01 的主要组(primary group)为 devops 的命 令。以下是该命令的详细解释:
usermod: 这是一个用于修改用户账户的命令。
-g: 这个选项用于指定用户的主要组(primary group)。
devops: 这是你希望设置为用户 wuyifan01 主要组的组名。
wuyifan01: 这是你要修改的用户名。
执行这个命令后,用户 wuyifan01 的主要组将被更改为 devops。这意味着:
用户 wuyifan01 的 /etc/passwd 文件中的组ID(GID)将 被更新为 devops 组的GID。
用户 wuyifan01 在登录时,其主要组将是 devops。
用户 wuyifan01 创建的文件和目录将默认属于 devops 组
关于用户对文件是否有xx权限,需要关注:
1.该文件的对不同身份用户的权限是多少,是否有r,w,x的权限
2.该文件所处的目录,对于用户是否也给了权限
批注:除了user、group、other外还有all角色
对a(all)角色操作,就可以同时给u、g、o三个角色添加、修 改权限。相关linux命令:
chmod(changemod) a+r file.txt #给所有用户添加读权 限
chmod u-r file.txt # 给file.txt的属主,减去读取的权 限
思考:在不修改文件权限的情况下,为用户开权限。
1.修改文件的主人为用户
2.修改用户的属组
linux文件类型:
三种常见:- 普通文件。如touch创建的文件
d 文件夹。如mkdir创建的
l 软连接。类似windows的快捷方式
四种少见:b 块设备文件(如读取硬盘,光驱等 /dev/sda /dev/sdb)
p 管道文件
c 字符设备文件,如网络串口设备
s socket文件,进程间通信文件,如mysql生成的mysql.sock
在命令后 + --help可以显示该命令有何参数可用
创建软连接:ln -s 命令的源路径 快捷方式的路径
ln -s /usr/local/cmatrix12/bin/cmatrix /usr/local/bin
查看路径:which python
文件权限的数字表示: r -> 4; w -> 2; x -> 1; rwx -> 7,权限叠加用数字加法表示
chmod命令(设置文件权限)
语法:chmod 选项 权限 文件
作用:设置、修改文件的权限(u,g,o)
选项:-R 递归设置文件夹权限
注意:只有root用户和该文件的属主才能使用该命令
实例
将随风奔跑的属主的权限中的读去掉
chmod u-r 随风奔跑.txt
chmod u-w 随风奔跑.txt
chmod u-x 随风奔跑.txt
chgrp命令(修改属组)
该操作对安全性要求较高,需要以root的身份去操作
切换到root su - root(注意空格)
语法:chgrp 修改文件的属组 group 将源文件group的属组改为 '修改文件的属组'
chown 修改文件的属主 user