linux 操作基础(之前学的有错佬友们可以在评论区纠正)

LINUX 基础

LINUX命令

  1. pwd 打印当前的绝对路径

  2. su -name 切换到name用户

  3. ctrl + c 强制中断linux的操作

  4. stat 文件路径 查看文件状态(访问时间、修改时间)

  5. cat 文件路径 读取文件内容

  6. mkdir 文件夹名 创建文件夹

    • mkdir -p 文件路径 递归创建文件夹:mkdir -p ./123/23/1
  7. rmdir 文件夹名 删除文件夹

  8. touch

    • touch 文件名 创建普通文件;touch yunwei.txt

      若当前目录存在该文件,则表示修改文件的访问时间属性

  9. ls 文件路径 查看该文件路径下的详细信息

    ls -l 文件路径 查看该路径下的文件的详细信息

    ls -d 文件夹路径 查看该文件夹的详细信息

    ls -a 文件路径 查看隐藏文件

    ls -h 文件路径 查看文件容量单位

  10. echo

    echo ” “ 打印字符串

    echo ${变量名} 打印变量名

    echo 变{a/1…z/?}量 打印一堆变?量

  11. TAB

    命令补全和路径补全

  12. history

    1. 查看历史命令 history -c 清除历史命令
  13. who

    1. 查看当前存在几个终端:确定有几个人在连接服务器

Xshell连接LINUX服务器

  • WINDOWS模式的xshell终端下的服务器连接命令:ssh 用户名@ip

  • LINUX模式的xshell终端下的服务器连接命令:ssh -p 端口 用户名@ip

LINUX与引号的关系

  • linux下的单引号,表示不做特殊符号的转义,仅仅是一个纯字符串
  • linux下的双引号,也表示定义字符串,但是它能识别特殊符号。

vim操作

  1. ​ vim 文件名 进入该文件执行命令模式
  2. ​ 输入 i 进入写入模式
  3. ​ 按 esc 退出写入模式,进入命令模式
  4. ​ 输入 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.基本操作

  1. ​ vim 文件名 进入该文件执行命令模式
  2. ​ 输入 i 进入写入模式
  3. ​ 按 esc 退出写入模式,进入命令模式
  4. ​ 输入 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

image-20240909140243286

image-20240909141946787

chgrp命令(修改属组)
该操作对安全性要求较高,需要以root的身份去操作
切换到root su - root(注意空格)
语法:chgrp 修改文件的属组 group 将源文件group的属组改为 '修改文件的属组'
chown 修改文件的属主 user

	

内容较枯燥先跳过

18 个赞

好好好,说补linux就补

1 个赞

言出必行得 :smirk:

linux.do 居然有 linux 了 :tieba_087:

3 个赞

主打一个速度

1 个赞

图裂了,不知道是不是我这边显示的问题

1 个赞

路径问题,图应该得重新传

学习了下。。

1 个赞

罕见的Linux内容,感谢分享!

1 个赞

还以为是linuxdo的基础操作tieba_072

1 个赞

谢谢佬的分享,感觉在补课

1 个赞

感谢你的分享

1 个赞

终于在这个社区看到点Linux的东西了 :rofl:

1 个赞

不说啥了点个赞先

1 个赞

啥也不说了,必须点个赞

1 个赞

终于看到点Linux的东西了 :innocent:

1 个赞

好东西,先赞后看

1 个赞

感谢你的分享

1 个赞