linux基础篇

发布时间:2023年12月25日

1.删除虚拟机:

右键虚拟机的标签,选择管理,选择从磁盘中删除

2.内存、硬盘

机硬硬盘—容量大—读写慢—价格便宜

固态硬盘—容量小—读写快—价格昂贵

电源:在生产环境中,服务器都是使用AB双电源线路

3.服务器

服务器就是一台计算机,通常是指在计算机网络中,一个管理资源且能够为用户提供服务的计算机。

通常分为这几类服务器:

文件服务器:图片网页文件,视频文件的展示

数据服务器:提供数据读写的机器

应用程序服务器:开发应用程序的运行机器

云服务器:云服务器操作更方便,更安全,阿里云,腾讯云,性价比高

4.什么是操作系统?

操作系统是人与计算机硬件交互的中介

用户输入linux指令---发送给翻译官(shell壳,bash解释器--shell壳把用户的ls指令翻译成了机器码(列出文件夹中的内容)--计算机硬件识别机器码,执行动作—输出结果到屏幕。

操作系统的作用是管理和控制计算机中的硬件和各种软件资源,比如cpu的使用率,检测内存的使用情况,系统磁盘剩余空间。

4.什么是linux?

它是一套开放源代码,(在互联网上可找到源代码)可以自由传播。

5.linux远程连接

1.确保linux配置了正确的IP地址

命令:ip addr show 查看ip信息

2.安装好xshell软件,在物理机下载好最新版的xshell软件,新建连接,双击连接—接受协议--输入用户名和密码

3.使用ssh命令远程连接

命令:ssh? root@192.168.1.180

创建一个文件:你好.txt

whoami:显示当前主机名

linux的根目录是? ‘/’

win和linux区别如下:

查看根目录下的文件:

mkdir:创建文件夹

创建多个文件夹:mkdir {1,2,3}

创建多级文件夹:mkdir -p ./a/b/c

创建连续的多个文件夹:mkdir a{1..10}

删除非空文件(夹):rm -rf 文件名

删除多个文件:rm 文件名1 ?文件名2...

删除空文件夹 rmdir文件名

创建普通文件:touch 文件名

修改文件的创建时间:touch -t 10220203 文件名

修改a1的创建时间为10月22号2点3分

查看详细时间:ls -l --full-time

复制文件(不改变文件名):cp 源文件 ?目标文件地址

复制文件(改变文件名)cp 原文件

复制多个文件:

复制整个文件夹内容 :要加上 -r

加上-p,复制且保持文件属性不变:cp ?-p ?a1.txt ?aa.txt

加上? -i 提示是覆盖已存在的文件:cp ?-i ?a.txt ?a1.txt

加上 ?-f 强制覆盖

mv 移动文件:mv ?./a/a*? ./b

将所有以a开头命名的文件都移动b里面

启命令:reboot shutdown -r init
注销命令:logout
关机命令:halt shutdown -h init
显示当前操作系统和机器的信息: uname

ctrl +c? 取消当前操作

ctrl +l? 清屏

ctrl +d? 退出当前账户

ctrl +a? 光标移到行首

ctrl +e? 光标移到行

ctrl +u? 删除光标到行首的内容

在root权限下安装vim记事本:yum? install? vim? -y

vim? 文件名 : 打开文件

输入 ?i 进入编辑模式

按下esc 推出编辑

此时输入冒号,进入底线命令模式,然后输入 :wq! 强制写入文件内容且退出vim

:q!? 不保存直接退出

cat? 文件名 :查看文件内容

  1. 光标移到末尾 G
  2. 光标移到开头gg
  3. 粘贴复制:
  4. 复制一行 yy 复制 n nyy
  5. 粘贴 p
  6. 撤销:
  7. 撤销操作 u 向上一步 . 重复上一次操作
  8. 查找:
  9. 查找/string define \ 转义字符 查找“/bin/bash /\/bin\/bash
  10. vim 中一般认为输入与编辑是两个概念。
  11. 编辑是在命令模式下进行的,先利用命令移动光标来定位到要进行编辑的地方,然后再使用相应的命令进行编辑;而输入是在插入模式下进行的。
  12. 命令模式下常用的编辑命令:
  13. dd 删除光标所在的行。
  14. r 修改光标所在字符,r 后是要修正的字符。
  15. R 进入替换状态,输入的文本会覆盖原先的资料。
  16. s 删除光标所在字符,并进入输入模式。
  17. S 删除光标所在的行,并进入输入模式。
  18. cc 修改整行文字。
  19. u 撤消上一次操作。
  20. . 重复上一次操作。

将1.txt 文件中的内容写入到2.txt 文件里面

>? 是覆盖写入

cat 1.txt? >2.txt

>>? 是追加写入

cat? 1.txt? >>2.txt

显示行号输出:-n

cat -n 2.txt

格式化输出:xargs? -n? 4? <? 1.txt

一行输出4个字符,输出多行(源文件中每个字符需要用空格隔开)

重定向写入文件:cat? >>文件名 ?<<EOF

对所有行显示行号:-n?

对非空行显示行号:-b

同时显示多个文件:

将两个文件合并:cat? 1.txt? 2.txt? >./3.txt

清空文件:>2.txt

过滤输出的内容:cat? 1.txt ?|? grep “无”

?

分屏显示文件内容:more 文件名 ?

按下回车键下一行

空格 滚动一个屏大小

=显示当前行号

q 退出

查看前面5行 :head -5 文件名

head 默认显示10行

tail -3 文件名 :显示后3行

echo 追加

head ?-c ?5 文件名 :输出文件中5个字符

查找命令路径:which? 命令

语法:

tar(选项)(参数)

-A 或 --catenate:新增文件到以存在的备份文件;

-B:设置区块大小;

-c 或--create: 建立新的备份文件;

-C<目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

-d:记录文件的差别;

-x 或 --extract或 --get: 从备份文件中还原文件;

-t 或 --list: 列出备份文件的内容;

-z或 --gzip或--ungzip:通过gzip指令处理备份文件;

-Z 或 --compress或--uncompress: 通过(compress指令处理备份文件),

-f<备份文件>或 --file=<备份文件>:指定备份文件;

-v或 --verbose:显示指令执行过程;

-r:添加文件到已经压缩的文件;

-u:? 添加改变了和现有的文件到已经存在的压缩文件;

-j:支持bz土p2解压文件,

-v? :显示操作过程,

-l: 文件系统边界设置;

-k:? 保留原有文件不覆盖;

-m:保留文件不被盖;

-w? :确认压缩文件的正确性;

将 3.txt 创建压缩:tar? -czvf ?e.tar.gz? ./3.txt

Create zip verbose(详细)file

将1.txt 和2.txt 压缩成12.tar.gz: ?tar ?-czvf? 12.tar.gz? ./*

或者:tar ?-czvf ?12.tar.gz ?1.txt ?2.txt

查看12.tar.gz里面的文件:tar? -ztvf ?12.tar.gz

从压缩文件中单独找出1.txt 并解压缩: ?tar? -zxvf? 12.tar.gz? 1.txt

将解压获得文件放在a文件夹里面:tar? -zxvf? 12.tar.gz? -C? ./a

为 1.txt 建立一个软链接 11.txt

ln -s 1.txt 11.txt

压缩源文件而不是它的软链接:tar? -zchf? k.tar.gz? ./11.txt

gzip 压缩命令:

查看a.txt.gz 文件中包含什么:

zip 压缩 r.txt 为 ra.zip

unzip 解压缩:

passwd 更改用户密码:

id? 用户名:查看用户id

切换用户:su? -? 用户名

创建新的组:groupadd? myhome

查看新的组:tail etc/group

usermod? 命令:

批量更改账户密码:chpasswd

用户名1:密码

用户名2:密码

ctrl+d: 结束更改

显示当前登录的用户:w|cat

?cat ?/etc/passwd查看所有的用户信息

  1. 要求创建用户puyy uid 1500
  2. [root@centos ~]# useradd -u 1500 puyy
  3. 创建用户 alex 默认属于 puyy组 同时属于lcy组
  4. [root@centos ~]# useradd alex -g puyy -G lcy[lc1]?
  5. 创建用户jery 无法登录 ,家目录为/var/jery
  6. [root@centos ~]# useradd jery -s /sbin/nologin -d /var/jery
  7. 创建用户e1 注释信息是 “e1e1” 默认shell是/bin/bash
  8. [root@centos ~]# useradd -c "e1e1" e1

将一个已有用户 cnzhx 增加到一个已有用户组 apache 中,使此用户组成为该用户的附加用户组,可以使用带 -a 参数的?usermod? 指令。-a 代表 append 也就是将用户添加到新用户组中而不必离开原有的其他用户组。不过需要与 -G 选项配合使用:

# usermod -a -G apache cnzhx

如果要同时将 cnzhx 的主要用户组改为 apache,则直接使用 -g 选项:

# usermod -g apache cnzhx

如果要将一个用户从某个组中删除,则

gpasswd -d username groupname

但是这个时候需要保证 group 不是 user 的主组。

以上命令在root用户下执行

方法一、groups命令法

groups命令可以查看用户所属的用户组,查看系统当前登录用户的用户组。

查询lcy用户所在的用户组。

方法二、查看/etc/group

/etc/group是用户组配置文件,可以查看此文件通过grep命令查询某个用户所在的用户组。如下图所示,查询到air用户属于airsudo用户组。

方法三、id命令法

id命令也可以查看某个用户所属的用户组,只执行id命令,可以查看当前登录用户所在的用户组。

要查询特定的用户所属用户组,可以在后面接用户。如下图所示 ,查询lcy用户所在的用户组。

查案用户主目录的位置:pwd

将 lcy 添加到root 的sudo组里面:

sudo? ls? /root:? 以root身份执行命令:

在 1.sh 文件里面写入:echo “我是1.sh”

更改文件权限让其可执行:chmod? u+x? 文件名

chown 修改文件或文件夹所有者命令

chown 需要超级用户?root?的权限才能执行此命令。

语法

chown [-cfhvR] [--help] [--version] user[:group] file...

参数?:

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • --help : 显示辅助说明
  • --version : 显示版本

r文件夹里面的文件都给lcy: ????chown? -R ?lcy:lcy? r/*

  1. chattr [+-=][ASacdistu] 文件或文件名
  2. 命令选项:
  3. + : 增加某个特殊参数,其他原本存在的参数不动。
  4. - : 删除某个特殊参数,其他原本存在的参数不动。
  5. = : 设置一定,且仅有后面接的参数
  6. A : 当设置了A属性时,这个文件(或目录)的存取时间atimeaccess)将不可被修改,可避免例如手提电脑有磁盘I/O错误的情况发生。
  7. S : 这个功能有点类似sync。就是将数据同步写入磁盘中。可以有效地避免数据流失。
  8. a : 设置a之后,这个文件将只能增加数据,而不能删除,只有root才能设置这个属性。
  9. c : 这个属性设置之后,将会自动将此文件压缩,在读取的时候将会自动解压缩,但在存储的时候,将会先进行压缩后再存储(对于大文件有用)。
  10. d : 当执行dump(备份)程序的时候,设置d属性将可使该文件(或目录)具有转储功效。
  11. i : i的作用很大。它可以让一个文件不能被删除、改名、设置连接,也无法写入或新增数据。对于系统安全性有相当大的帮助。

  1. j : 当使用ext3文件系统格式时,设置j属性将会使文件在写入时先记录在journal中。但是,当文件系统设置参数为data=journalled时,由于已经设置日志了,所以这个属性无效。
  2. s : 当文件设置了s参数时,它将会从这个硬盘空间完全删除。
  3. u : s相反,当使用u来设置文件时,则数据内容其实还存在磁盘中,可以用来还原删除.
  4. 注意:这个属性设置上,比较常见的是ai的设置值,而且很多设置值必须要root才能设置。

; 一行执行多条命令使用;分隔符或者结束符,注释符

| 管道符

‘’ 单引号 定义字符串

“” 双引号 定义字符串

`` 反引号 命令中执行命令

& 后台执行 加在一条完整命令后面

\ 转义字符

+-* / 加减乘除运算符号

?匹配单个字符

* 匹配所有

~ 匹配家目录

() 分组

[ ] 匹配中括号中的一个字符

{} 匹配一个范围

[ ^ ]??? 表示否定括号中出现字符类中的字符,取反。

\? 转义字符

反引号命令解析

双引号:当输出双引号所有内容时,内容中有命令需要反引号标记

特殊符号

1.管道符,筛选作用

ORS可以改变每一行的结尾符(默认是换行符)

RS 改变换行符

2.$ 符

取出变量的值:n=”无力面对”?? echo $n

\? 将特殊含义的字符转化成普通字符

{} 创建多个文件,备份文件到同一路径下

{,.a11.txt} 表示备份文件a1.txt 为a11.txt 并放在a1.txt的路径下

&& 前一个命令正确,后面的才执行

?||? 前一个失败了才执行下一个命令

[!a-z]不要a到z的字符

history 列出你敲过的命令

!行号 ?执行第几行的命令

alias 设置别名

ctrl+k? 删除光标之后的字符

正则表达式

linux三剑客:grep sed awk

文本处理工具,均支持正则表达式引擎

·grep: 文本过滤工具,(模式:pattern)工具

·sed:stream editor,流编辑器;文本编辑工具

·awk: linux的文本报告生成器(格式化文本),Linux上是gawk

sed "2,3p" hh.txt -n ?输出2,3行

sed "2,3s/b/e/p" hh.txt -n? 将2,3行的b替换为e并打印

sed “2,+3p” hh.txt -n 输出2行再向下加三行

sed '2,$d' 1.txt?? ???删除第2行到结尾(没有改文件)

sed '2,$d' 1.txt -i? ??删除第2行到结尾(把文件也改了)

sed? “s/e/o/g”? 1.txt ???将文件中的e全部替换为o

sed -e "s/e/o/g" -e "s/5/6/g" 1.txt? ?将e替换为o 并将5替换为6 (多次替换加 -e)

sed "2a 你好" 1.txt? ??在第2行后插入内容 2a

sed "2i 你好啊" 1.txt?? 在第2行前插入内容

sed "1a 无力面对\n借口天性凉薄" 1.txt -I? 插入两行用\n

awk '{print NR "第一列:" $1}' 1.txt 2.txt? 输出两个文件并显示行号

awk '{print? FNR "第一列:" $1}' 1.txt 2.txt? 输出两个文件并显示各自的行号

awk? '{print "第一列" $1,"第二列"$2}' 1.txt 第一列和第二列默认是以空格隔开的

awk 'NR==3,NR==4{print "1:"$1,"2:"$2}' 1.txt?? 输出第三行和第二行,

NR 是指定的行号

awk 'NR==3,NR==4{print NR, $1,$2}' 1.txt?? 显示文件3,4行且显示行号

awk '{print $(NF-1)}' 1.txt?? 倒数第二列

awk? -F? ","? '{print $1}'? 1.txt?? 指定分隔符

awk -v FS="," '{print $2}' 1.txt? 更改默认的列分隔符

grep -E "^([^:]+\>).*\1$" 2.txt? 以非冒号开头,以什么结尾就以什么开头的行(\1 表示引用前面的条件)

grep -E “^([^:]).*\1$” 2.txt

print 默认空格换行符

printf 没有换行符

begin 打印之前的动作

end 打印之后的动作

awk ‘/^2/{print $0}’ 2.txt?

多个条件加上多个双斜杠和逗号

awk ‘/^2/,/^3/{print $0}’ 2.txt

awk? '{print $0}'? 2.txt | sort -n |uniq? 先排序再过滤

awk '{print $0}' 2.txt |sort -n|uniq -c|sort -nr|head -3

排序 | 统计重复次数 | 逆序排序 |打印前3 条数据

grep -c “^3” 2.txt ???????统计2.txt以3开头的行出现的次数

grep -m 3 "3$" 2.txt????? 统计以3结尾的行,只匹配3次

grep -l 3 "3$" 1.txt? 2.txt? 3.txt?? 看那个文件包含了以3结尾的行

grep -v “^2” 2.txt? 不以2开头的行

grep -E “\<[5-9]{2,4}\>” 2.txt? 匹配5到9之间的数字,匹配2到4个,将前后东西都去掉,只要匹配的

grep -E "^[[:space:]]+[^[:space:]]" 2.txt 空格开头,后面非空的行

grep -E "(^5|^2)" 2.txt? ??以5或2开头的

grep -E "^(5|2)\>" 2.txt? 单以5或2开头的行(默认空格为分割符)

crond服务

rpm? -qa|grep cron

开启ssh: service?sshd?start?

sudo service ssh star

关闭: service?sshd?stop

查看crond服务状态(ctos7):systemctl status crond

查看进程情况:ps aux |grep atd

创建一个一分钟后的任务 at now+1min

ctrl+d :提交任务

查看邮件:mail

检查邮件服务是否打开:ss -tnl | grep 25

?

rpm

yum(自动解决依赖关系)

编译安装三部曲:

yum groupinstall “Development Tools”

yum groupinstall "Server Platform Development"

yum grouplist :查看已经安装的软件包

开发工具安装成功

下载好的压缩包

cd到当前目录 :

解压文件 tar -zxvf ngix-1.9.9.txr.gz

看一下源码包:

第一曲:执行脚本configure文件

安装:[lcy@centos nginx-1.9.9]$ ./configure --prefix=/data/nginx199/

生成Makefile

第二曲:执行make命令

执行:make install 开始安装

看到data1里面的文件

进入nginx配置文件夹

编辑 ngixn.conf

将user 改为root

./sbin/nginx -s reload #重新读取nginx配置文件

骇客帝国:

shell脚本规则:

history


?[lc1]-g puyy"指定用户的主要组。在这种情况下,主要组将设置为"puyy"。

"-G lcy"指定用户将成为其成员的其他附加组。在这种情况下,用户还将添加到组"lcy"中。

文章来源:https://blog.csdn.net/qq_48257021/article/details/135134812
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。