Linux基础命令及部分实验过程

                                                                          Linux:一切皆文件
##文件系统层级标准(FHS)

##用户和组的管理

1、用户

三种用户:root超级用户(超级管理员)、系统用户、普通用户
华为甘道夫默认用户名:gandalf    默认密码为:IaaS@OS-CLOUD9!
ID+用户名:查询用户所属的uid(user id)、gid(group id)和groups(群组)

 超管用户的uid为0,普通用户的uid默认从1000开始递增,1到999是这些uid默认是给系统内部组件及服务来使用的
可以到 /etc/login.defs 里面修改通过useradd新建的用户id或者通过groupadd新建的用户组id,最小是否从1000开始:



#/etc/passwd 用户管理配置文件     字符段对应关系如下:


root超管用户:

普通用户:



当末尾显示/sbin/nologin 的时候,意味着该用户不可以登录操作系统:


用户密码存放文件:/etc/shadow

useradd:添加用户
usermod:修改用户参数

-r 系统用户
-G 添加附加组
userdel:删除用户
-r 代表同时删除创建用户时的主目录和邮箱
不允许登陆:shell /sbin/nologin

2、组
/etc/group 组配置文件    字符段对应关系如下:
xlz        :x                :1000                         :xlz
组名    密码      gid(唯一标识组)     当前组里的用户

基本组:创建一个用户后,若没有指定基本组,则会自动为自己分配一个与uid相同的基本组id
附加组:除基本组之外,用户还可以被分配到其他组

groupadd:创建组
newgrp :登陆组
groupmod:修改组
groupdel:只能删除groupadd添加的组,基本组只能通过删除用户来实现

##快捷键命令

ctrl+Shift+t   开多个终端
ctrl +Shift +“+”字号变大   ctrl+“-”字号变小   // 临时的
想要一直生效     编辑   属性    字号默认的去掉
init 3: 登录到纯字符界面
init 5: 登录到图形界面 (前提是安装了server   with    GUI)
startx:从字符界面退到图形界面(前提是安装了server   with    GUI )
关机:1. init 0  2. poweroff  3. shutdown -h now
重启:1. init 6   2. reboot   3.shutdown -r now  4. systemctl reboot

/etc/inittab 默认启动配置文件


启动级别有3和5两个级别
3:代表的是字符界面(命令行
5:代表的是图形化界面

systemctl get-default  //显示系统当前默认的启动方式,graphical.target对应的是级别5  图形界面

systemctl set-default //设置默认的启动方式
如设置系统默认启动方式为字符界面:
systemctl set-default multi-user.target 

##修改主机名
hostname 主机名 (临时更改)
hostnamectl set-hostname 主机名(永久更改)

##修改用户密码:
passwd 直接敲是修改当前用户的密码,修改其他用户密码在后面加用户名
root用户可以修改所有用户的密码 ,普通用户只能修改自己的密码
passwd -d 用户名 删除该用户的密码

##破解root密码
1、重启 reboot ,在进入系统倒计时的时候按e进入救援系统
2、在Linux16句末尾按空格后输入rd.break(以rd.break打断内核启动的方法重置密码),按ctrl+x进入救援模式
3、mount -o remount,rw /sysroot (以读写的方式重新挂载根给/sysroot读写权限,给跟系统一个读写权限)
4、chroot /sysroot/ (切换到真实的根下面)
5、passwd root (修改root密码,输入两次新密码)
6、touch /.autorelabel (创建一个标签文件)现在是在非正常的救援模式(非常规手段)下,修改了用户密码,所以你需要让系统给你一个认可,让系统知道你修改了用户密码,让系统带着标签和新密码去启动,更新安全策略。
7、exit (退出,让系统进行修改密码)
8、exit

##网卡配置
1、图形界面配置
2、修改网卡的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eno16777736

修改完成之后,重启服务:systemctl restart network
网关配置文件:/etc/sysconfig/network
DNS配置文件:/etc/resolv.conf

##切换用户更改命令提示符的用户名(switch user):su - 用户名

-  继承切换前的用户环境

//请不要频繁切换用户,否则可能会导致环境异常  可以用exit命令退回之前的用户
##查看当前的工作目录(print work directory):pwd
-P:显示出真实的路径,而非链接路径

##切换目录(change directory):cd

绝对路径:以 / 开始的路径 ,例 cd /home/redhat
相对路径:不是以 / 开始的路径,例 cd home

直接回到当前用户的主(家)目录:cd ~
回到当前目录的上一级目录:cd …
回到当前目录:cd .
切换到上一次的目录:cd -

##列出目录里的内容:ls(list)
ls -l 长列表列出=ll
ls -d 查看当前目录
ls -a 列出隐藏文件,包括.和…
ls -A 列出隐藏文件,不包括.和…
ls -i 显示文件的索引节点号(inode),一个索引节点号代表一个文件。

##通配符
*    //代表任意个数个字符
?    //代表任意一个字符,至少一个
[]   //表示可以匹配字符组中的任意一一个
[abc]  //匹配a、b、c中的任意一个
[a-f]   //匹配a-f范围内的任意一个字符

##查看和修改时间
date 查看系统时间
date -s “2020/2/5 12:00” 修改系统时间
clock 查看硬件时间
hwclock -w 系统时间附给硬件时间
hwclock -s 硬件时间附给系统时间
ntpdate time.windows.com 同步网络时间

##查看日历cal
cal 月 年 查看X年X月的日历
cal -3 查看上月、本月、下月的日历

##命令设置别名
临时设置别名:

在命令行中输入以下命令来创建一个临时的别名:

alias ll=‘ls -l’ 给ll命令设置别名为ls -l 即执行命令“ll”等于执行“ls -l”
unalias ll 删除ll的别名
永久创建(保存别名到配置文件):
~/.bashrc文件
nano或者vim ~/.bashrc //编辑bashrc文件
alias ll=‘ls -l’ //输入需要设置的别名
ctrl+o 写入
enter 确定
ctrl+x 离开
source ~/.bashrc 让文件生效

##文件类型
-   普通文件
d  目录文件
c   字符设备文件
b  区块设备文件
l   链接文件
p  管道文件
s  套接字文件
使用 ll或者 ls -l 命令可以查看文件的属性,所显示结果的第一列的第一个字符用来表明该文件的文件类型

##Vim文本编辑器
常用快捷键命令    详细快捷键命令
e跳到下一个字尾E 跳到下一个字尾,长跳

0跳至行首,不管有无缩进,就是跳到第0个字符
^:跳至行首的第一个字符
$:跳至行尾
gg:跳至文首
G:调至文尾
5gg/5G:调至第5行
dd删除光标所在行
d/D删除到行末
3,5 d删除3-5行
yy复制一行
2yy复制光标行和下一行
y/Y复制到行末
p粘贴粘贴板的内容到当前行的下面
P粘贴粘贴板的内容到当前行的上面
dgg:删除光标至文档首部
ctrl+r重复上一个操作
i在光标前插入
s删除光标所在位置并插入
o在光标所在的下一行插入
wq保存修改并退出
x保存修改并退出
q
退出,如果对缓冲区进行过修改,则会提示
q! 强制退出,放弃修改
set nu显示行号
set nonu不显示行号
%s /a/b/g将a替换位b,全局修改
 /所查找内容 查找
r文件名1 将文件名1的内容读到当前文件中
w文件名1 另存为文件名1
ctrl+v块选择

y将反白的地方复制
d将反白的地方删除

##文件
创建文件:touch
查看文件:cat 、more、less(比more高级,支持前后翻阅,上下键)、head默认打开文件头部前十行、tail默认打开文件末尾后十行

##目录
创建目录:mkdir+目录名
删除目录:rmdir+目录名
rmdir -p :连同上一级空目录一起删除

##复制 cp
复制文件:cp+文件名
复制目录:cp -r +目录名 //-r 递归
保留源文件属性:cp -p +文件名 (所属主、属组、权限、时间)

##移动 mv
mv+文件名+目标位置 :移动文件
mv aa bb 重命名文件aa

##文本切割 cut
cut -d -f 文件名
-d:指定分隔符
-f:指定截取的列数

##文本排序 sort
sort -n 文件名 按照数字大小排序
sort -n -u 文件名 排序并去重
sort -r 逆序排序

##文本统计 wc
统计指定文件中的字节数、字数、行数
wc -l 统计行数
wc -w 统计单词数
wc -c 统计字节数

##tee
tee命令会从输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
cat haha | tee xixi 将haha文件的内容保存至xixi同时创建xixi文件。

##文本查找
查找文件名 find
find -name
查找文件中的内容 grep
grep h haha 查找haha文件中带h的字符串
grep h ./* 查找当前目录下所有为文件中的h字符,不包含目录文件
grep -r h ./* 查找当前目录下所有文件中的h字符,包含目录文件
grep -w h haha 查找haha文件中带h的完整单词,不是单个的h字符

##查看进程 ps
ps -e 显示后台进程
ps -f 显示详细信息

进程的五种状态码:
D 不可中断
R 运行中
S 中断
T 停止
Z 僵死

几种附加符号含义:
< 高优先级
N 低优先级
L有些页被锁进内存
s 包含子进程
+位于后台的进程组
| 多线程,克隆线程

扩展:
gpasswd:给组设置密码
gpasswd -a maomao group1 将maomao用户添加组group1
gpasswd -M xixi, haha, maomao group1 指定多个用户添加到组group1
gpasswd -d maomao group1 将maomao用户从组group1移除
gpasswd -R group1 锁定group1组,只有组内成员才能进入本组

手动创建用户
(1)添加用户信息,在/etc/passwd/输入用户配置信息

(2)添加组信息

(3)创建用户家目录

(4)复制/etc/skel/的隐藏文件.bash和.mizilla到家目录


3、用户的密码文件
/etc/shadow

参数:以 1天 为单位
-n 最短使用时间
-x 最长使用时间
-w 警告时间
-i 宽限时间
例:passwd -n 2 -x 10 -w 1 -i 3 redhat 指定密码最短使用时间2天,最长使用时间10天,警告时间1天,宽限时间3天
-e 精确时间 通过修改账号
例 :usermod -e 2020-03-20 redhat

##更改文件的所属关系 chown,chgrp
chown xlz 666.txt 修改666.txt文件的所有者为为xlz
chown xlz.xlz666  666.txt 修改666.txt的所有者为xlz,所属组为xlz666

chown xlz:xlz666  666.txt 修改666.txt的所有者为xlz,所属组为xlz666
chown .xlz666  666.txt  修改666.txt的所属组为xlz666
chown -R 递归,连同目录下的所有文件、子目录都更新为新的所有者和所属组

chgrp 只能修改属组
chgrp xlz666  666.txt  修改666.txt的所属组为xlz666
chgrp -R 递归,连同目录下的所有文件、子目录都更新为新的属组

##文件权限控制 chmod

r(读)w(写)x(运行)权限:
对于普通文件:
r–可读取此文件的实际内容(cat查看文件)
w–可编辑此文件的内容(vim,echo),但不具备删除该文件的权限(删除 文件由该文件的上层目录控制,跟文件本身的权限无关)
x–该文件具有可以被系统执行的权限
对于目录文件:
r–具有读目录结构列表的权限,可以查询该目录下的文件名数据(ls)
w–空
x–用户能否进入该目录(cd)
同时有w和x权限才可以创建、删除文件和目录

9位权限关系对应表:

 

权限:前3位 rw-为  u 属主(所有者)的权限;中间3位 r-- 为 g所属组的权限;后三位 r-- 为o其他用户的权限

r     4
w    2
x     1
----------------------------------------------------------------
---       0
--x       1
-w-      2
-wx      3
r--       4
r-x       5
rw-      6
rwx      7
如:000则对应---------   653则对应 rw-r-x-wx   777则对应rwxrwxrwx

修改权限:

chmod u+w文件名     //在文件的所有者权限中添加 x运行权限  例如 rw- 变成 rwx
chmod g+w文件名     //在文件的所属组权限中添加 w写权限 例如 r--  变成  rw-
chmod o+r文件名      //在文件的其他用户权限中添加 r 读权限 例如---  变成  r-- 

chmod 777 文件名     //修改文件权限为rwxrwxrwx
chmod -R 777 +目录名    //递归,连同目录下的所有文件、子目录的权限都修改为777(rwxrwxrwx)

特殊权限:
suid:u+s,让进程不再属于它的发起者,而是属于程序文件本身(调用者执行该文件过程中,会暂时获得该文件的所有者权限,只在程序执行过程中有效)
例:使用suid来实现普通用户可以查看密码文件
答:先找到查看命令的程序文件位置,which cat

发现其所属者是root,现要实现普通用户查看密码文件,则要将其伪装成root

即可实现普通用户查看密码文件

sgid:g+s,在此目录下创建的所有文件的所属组均是该目录所在的属组

sticky:o+t,不能够删除其他用户在同目录里创建的文件,可删除自己创建的文件

**ACL访问控制列表:**可以对某个文件设置该文件具体的某些用户的权限,意思就是通过ACL可以对一个文件权限做扩展,可以使不同的用户对某个文件有不同的权限。
getfacl+文件名 获取文件的访问控制信息
setfacl 设置文件的acl
setfacl -m u:用户名:权限 文件名/目录名 ,修改文件的acl
setfacl -m g:组名:权限 文件名

权限掩码控制创建文件的权限
查看权限掩码:umask
修改权限掩码:umask 022
普通文件的权限掩码:666
目录文件的权限掩码:777

3、命令行编辑
nmcli connection edit
e
go ipv4
set address 192.168.1.2/24
yes
set gateway 192.168.1.1
save
activate eno16777736

4、命令行编辑
nmcli connection modify eno16777736 ipv4.addresses 192.168.168.2/24
nmcli connection modify eno16777736 +ipv4.address 192.168.168.168/24
nmcli connection modify eno16777736 ipv4.gateway 192.168.168.1
nmcli connection modify eno16777736 ipv4.method manual
nmcli connection modify eno16777736 connection.autoconnect yes
nmcli connection up eno16777736

##磁盘分区和文件系统
Linux里面根据硬盘接口的不同来命名:
IDE-------hd (a-d)       SATA/SCSI--------sd(a-z)
一块磁盘默认只能分配4个分区,主分区+扩展分区=4,可以4个全为主分区,
也可以把某个分区作为扩展分区,在扩展分区上可以创建多个逻辑分区:SCSI 最多 16 个,IDE 最多 63 个。

磁盘分区步骤:
一、创建分区:
1、#df-h 或lsblk  //查看磁盘剩余空间情况   如果没发现对应的磁盘,请查看自己是否已经添加了相应的磁盘
2、#fdisk /dev/sdb     //fdisk磁盘管理工具
Command (m for help):  //显示各参数对应含义(此处列举部分常用的)
n 创建分区
p 打印分区表
q 退出不保存
w 保存并退出
d 删除分区
l 列出已知的分区类型
t 更改分区的系统id

Command (m for help): n  // n创建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)   //p 主分区(当前有0个主分区,0个扩展分区,可分数量为4)
   e   extended                 //e 扩展分区
Select (default p):           //默认为p 主分区,直接回车
Partition number (1-4, default 1):         //分区号默认为1,直接回车

First sector (2048-41943039, default 2048):      //起始扇区默认从2048开始,直接回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):   //设置末尾扇区,可以+1G则意为分配容量为1G
                                                                                                                         //这里直接回车,把所有容量分配给此分区

Command (m for help): // p打印分区列表
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90e7f378

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

Command (m for help): w     //w保存并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

3.#partprobe (同步磁盘分区信息) 
4.分区完成后也可继续输入 #lsblk 或者 #fdisk -l 查看一下创建好的分区

二、创建文件系统(格式化分区):

#mkfs.xfs /dev/sdb1   //格式类型有ext2 ext3 ext4 xfs vfat nfs....(此处选xfs格式)
#df-h (查看磁盘剩余空间)或 df-TH(额外查看磁盘类型),会发现看不见sdb1的分区情况,是因为linux分区第一次需要手动挂载

三、挂载使用
#mkdir /sdb1  //在根目录创建一个sdb1的文件夹
临时挂载:
#mount /dev/sdb1 /sdb1/    //把sdb1的分区挂载到/sdb1文件夹,此时你往里面写文件是写在sdb1的分区里
#df-h 或 df-TH    //此时你会发现,你能看到sdb1的分区使用情况了
卸载:umount +分区文件名或 umount+挂载点目录
#umount /sdb1    //卸载sdb1挂载
#blkid /dev/sdb1  //查询sdb1分区的UUID,复制此UUID:UUID=85e8f604-5d63-46ae-90ee-d8b950b7b8bb

设置开机自动挂载:
#vim /etc/fstab  在末尾行添加UUID以及相应的信息
UUID=85e8f604-5d63-46ae-90ee-d8b950b7b8bb    /sdb1   xfs   defaults   0 0
设备名称(/dev/sdb1)或uuid (建议使用UUID) 挂载目录(/sdb1) 文件系统格式(xfs) defaults 开机是否备份 开机是否检查


#mount -a   //挂载所有设备(同时会检测/etc/fstab文件命令,即刷新/etc/fstab里的挂载点信息)
如果报错即挂载的某些信息问题不对(如路径),但有些信息不对也不会报错,例如文件系统格式本来是xfs的 
你在挂载点信息里填的是ext4也不会报错,但你执行了mount -a起码能检测到某些错误

假设你挂载点信息真的如上填错了,那么你重启后出现以下界面:

则原因一般为/etc/fstab文件的挂载信息有错误(如文件体统格式填写不对,xfs填了ext4等)

解决方法为:直接在界面中输入root密码,在命令行界面vim进入到/etc/fstab文件找到错误信息的那行挂载点信息修改正确或直接删除,万一里面挂载点信息很多,你确实找不到哪条错误,清空所有挂载点信息或暴力删除/etc/fstab文件。

也可能有外部原因导致出现此界面:例如在VMware环境下做,你在/etc/fstab里面添加了系统默认光驱地址(/dev/cdrom或/dev/sd0)的挂载点信息,而你的光驱因某些原因没连接上导致。如:

解决方法:直接勾选已连接,重启客户端

##LVM(Logical Volume Manager,Linux环境下对磁盘分区进行管理的一种机制):
可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的。

PV(Physical Volume,物理卷)
硬盘分区后(还未格式化为文件系统)使用pvcreate 命令可以将分区创建为pv。

VG(Volume Group,卷组)
将多个 PV 组合起来,使用 vgcreate 命令创建成卷组,相当于重新整合了多个分区后得到的一块虚拟的大磁盘。 虽然VG是整合多个PV的,但是创建VG时会将VG所有的空间根据指定的PE大小划分为多个PE,在LVM模式下的存储都以PE为单元,类似于文件系统的Block。

PE(Physical Extend,物理扩展)
PE是VG中的存储单元。实际存储的数据都是存储在这里面的,但实际还是存在了磁盘的 Block 中。

LV(Logical Volume,逻辑卷)
VG 相当于整合过的硬盘,可以通过Ivcreate 命令创建逻辑卷,那么创建出来的LV逻辑卷就相当于分区了,只不过该分区是通过VG来划分的。VG中有很多PE单元,可以指定将多少个PE划分给一个LV,也可以直接指定大小(如多少兆)来划分。划分为LV之后就相当于划分了分区,只需再对LV进行格式化即可变成普通的文件系统。

LE(Logical Extent,逻辑扩展)
PE是物理存储单元,而LE则是逻辑存储单元,也即为lv中的逻辑存储单元,和pe的大小是一样的。从vg中划分lv,实际上是从vg中划分vg中的pe,只不过划分lv后它不再称为pe,而是成为le。

LVM之所以能够伸缩容量,其实现的方法就是将LV里空闲的PE移出,或向LV中添加空闲的PE。

LVM实验(实验环境VMware):
1.添加一块磁盘20G
2.参考以上磁盘分区步骤进行分区,分配5GB,更改system id为8e Linux LVM (好区分开哪个分区是做LVM的)
#fdisk /dev/sdc
n,回车,回车,回车,+5G, 按p

按 l 查看已知分区类型  找到Linux LVM对应的system id为8e

按t修改更改system id为 8e  即类型为 Linux LVM 
接着按p打印sdc1分区,可以看到sdc1的system id已经更改为8e  系统类型为Linux LVM 



最后按w 保存并退出

3.#pvcreate /dev/sdc1  通过pvcreate创建物理卷   #pvs  查看pv信息    #pvdisplay  查看pv详细信息


4.#vgcreate vg0 /dev/sdc1 通过vgcreate创建卷组  #vgs  查看vg信息  #vgdisplay  查看vg详细信息(截图省略)

5.#Ivcreate -L +1G -n Iv1 vg0   //通过Ivcreate创建逻辑卷 -L指定大小;-n指定lv的名字;vg0从vg0卷组中划分
#lvs  查看lv信息  #lvsdisplay  查看lv详细信息(截图省略)

6.mkfs.xfs /dev/vg0/lv1  //格式化创建文件系统
7.#mkdir /lvdir   //创建挂载目录        #mount /dev/vg0/lv1 /lvdir/    //把lv1 挂载在/lvdir。

8.#umount /lvdir/  卸载;#blkid /dev/vg0/lv1  查看并复制/dev/vg0/lv1的uuid ;在/etc/fstab末尾行写入挂载信息 ,实现自动挂载


9.#mount -a   //挂载所有设备
10.#df -TH  //查看lv1磁盘分区剩余情况 ,可见总容量大小为1.1G  已使用34M,剩余空间1.1G,使用率4%

我们可以往里面填充容量做测试:
linux里面有两个文件非常特殊/dev/zero(空字块文件)  /dev/null(黑洞文件)你可以把所有不用的输出信息全部指向到这个路径下
dd if=/dev/zero生成空块(用空块填充), o(out输出)f(指定路径),bs(一个块的比特数大小) count(块数)

11.#cd /lvdir     
12.#dd if=/dev/zero of=xlz1.txt bs=1M count=600  //写入600M大小的文件
13.#df -TH  //查看当前lv1磁盘分区的剩余的空间,可见已使用了663M的空间, 使用率已经达到63%了

14.#dd if=/dev/zero of=xlz2.txt bs=1M count=400   //再往里面写入400M的文件
15.#df -TH  //再查看当前lv1磁盘分区的已使用空间已经达到了100%了,仅剩21k的剩余空间大小了

16.我们尝试再往里面写入1M的文件看看  dd if=/dev/zero of=xlz3.txt bs=1M count=1 

提示设备上已经没有剩余可用空间了,1M大小的xlz3.txt文件写不进去了,此时我们只能选择扩容了

lv逻辑卷扩容:
1.#vgs  //查看卷组还有多少可分配空间,vg0还有4G分配空间

2.#Ivextend -L +2G /dev/vg0/Iv1  // 扩容2G空间给lv1逻辑卷   #xfs_ growfs /Ivdir   //刷新一下lvdir的xfs文件系统 

3.#df -TH //继续查看lv1磁盘分区空间的剩余情况,总容量3G,已用1G,还剩2G,使用率34%  成功扩容并应用上

vg卷组扩容:
1.#vgs //扩容前查看vg总大小为5G

由于vg卷组的空间是由个个分区创建的pv物理卷集合一起,所以要想扩容vg,得创建新分区,再由新分区转pv添加到vg才行

2.#lsblk 或 fdisk -l /dev/sdc  // 查看磁盘c的使用情况,总共20G,已用5G,空闲15G

3.从磁盘c里创建新分区,大小为8G
#fdisk /dev/sdc  //n,回车,回车,回车,+8G,t,2,8e,w
#partprobe (同步磁盘分区信息) 
4.#lsblk //查看sdc2分区是否已经同步好了,

5.#pvcreate /dev/sdc2   把sdc2变成pv物理卷
  #vgextend vg0 /dev/sdc2  把8G的sdc2的pv物理卷扩容给vg0
  #vgs 查看扩容后vg0卷组的空间,原本的5G+扩容的8G=13G  成功

##文本压缩
大多数Linux应用软件包的命名也有一定的规律,它遵循:名称-版本-修正版-类型    例如:
software-1.2.3-1.tar.gz 意味着:软件名称:software   版本号:1.2.3   修正版本:1   类型:.tar,说明是一个tar包 .gz说明是个压缩包

所以凡是文件后缀名为.tar(把文件打包在一起)的都是tar包,如:xlz.tar。 而文件后缀名为:gz, bz2 ,xz ,zip的这些都为压缩包

单文件压缩(不能将多个文件压缩成一个压缩包):
gzip:
压缩:#gzip+文件名
如:#gzip 1.txt  或者 #gzip 1.txt 2.txt 3.txt分别把1.txt 2.txt 3.txt压缩成1.txt.gz 2.txt.gz 3.txt.gz的压缩包

解压缩:#gzip -d +文件名.gz = #gunzip+文件名.gz
如:#gzip -d  1.txt.gz  或者 gunzip 1.txt.gz

不解压查看压缩文件内容:#zcat+文件名.gz 

以下大同小异
bzip2:
压缩:#bzip2+文件名
-# 压缩比为1-9,默认为6

解压缩:#bzip2 -d +文件名
不解压查看压缩文件内容:bzcat+文件名

xz:
压缩:xz +文件名
-k 压缩时保留源文件

解压缩:xz -d +文件名
不解压查看压缩文件内容xzcat+文件名

多文件压缩:
zip:

压缩#zip xlz.zip 1.txt 2.txt 3.txt   //把1.txt 2.txt 3.txt文件压缩成xlz.zip文件


解压缩:#unzip xlz.zip //解压缩xlz.zip文件
要是该路径已存在相同名称的文件,则问你是否替换。y替换  n不替换  A全部替换  r重命名

日常中用得最多的就是tar命令的多文件压缩
tar:

c - 打包
x - 提取文件
t - 不解压查看压缩文件
v- 输出过程信息
f- 输出到xxx文件,跟包名
j- 特指(.bz2)压缩格式
J- 特指(.xz)压缩格式
z- 特指(.gz)压缩格式
p- 保留源文件的属性
C- 解压到指定的目录
打包成tar包文件:#tar -cvf xlz.tar 1.txt 2.txt 3.txt  //把1.txt 2.txt 3.txt文件打包成xlz.tar包
提取tar包里文件:#tar -xvf xlz.tar  //提取xlz.tar包里的文件
一般tar命令不会仅仅用于打包使用,一般会与压缩参数一起使用,形成打包且压缩的压缩包。
压缩:
#tar -jcvf +包名.bz2+文件名  //压缩成.tar.bz2的压缩包 
#tar -zcvf +包名.gz+文件名 //压缩成.tar.gz的压缩包 
#tar -Jcvf +包名.xz +文件名 //压缩成.tar.xz的压缩包 
如:#tar -jcvf xlz.tar.bz2 1.txt 2.txt 3.txt //把1.txt 2.txt 3.txt 文件压缩成xlz.tar.bz2的压缩包
解压缩:
#tar -jxvf +包名.bz2  //解压缩.tar.bz2的压缩包 
#tar -zxvf +包名.gz //解压缩.tar.gz的压缩包 
#tar -Jxvf +包名.xz  //解压缩.tar.xz的压缩包 
不解压查看包内容,如:#tar -tf +包名.tar.bz2 

##远程登录ssh+远程拷贝scp+远程免密登录  
远程登录ssh:
#vim /etc/hosts   //可以在这里最下方添加主机名和ip记录 如:192.168.8.130   rhel7.1  可以用ip或主机名远程登录,如↓↓
#ssh root@192.168.8.130     //用对方的root用户登录@对方的ip地址192.168.8.130或主机名ssh root@rhel7.1 前提是有添加记录↑↑
The authenticity of host '192.168.8.130 (192.168.8.130)' can't be established.
RSA key fingerprint is 24:f4:f1:49:19:18:45:65:bd:a0:73:14:61:bc:72:cc.
Are you sure you want to continue connecting (yes/no)? yes         //第一次连接对端会生成一个RSA key  选择yes继续连接即可
Warning: Permanently added '192.168.8.130' (RSA) to the list of known hosts.

root@192.168.8.130's password:       //输入对方root用户的密码
Last login: Fri May 13 17:44:26 2022 from 192.168.8.128     //登录成功


远程拷贝scp(ssh+cp):
拷贝给对方:
#mkdir /root/xlz.txt

#scp /root/xlz.txt root@192.168.8.130:/xlz         
root@192.168.8.130's password:     //输入对方root用户的密码
xlz.txt                              100%    0     0.0KB/s   00:00       //拷贝给对方成功
从对方那里拷贝过来:
#scp root@192.168.8.130:/xlz/xlz.txt /root/    

root@192.168.8.130's password:       
xlz.txt                              100%    0     0.0KB/s   00:00  

远程免密登录:
首先在本段和对端都生成一个rsa的密钥文件
#ssh-keygen -t rsa      //生成rsa类型的密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):    //这里提示输入保存密钥的文件,直接回车默认保存为/root/.ssh/id_rsa
Enter passphrase (empty for no passphrase):    //  输入密码短语(空表示无密码短语),直接回车
Enter same passphrase again:     //再次输入相同的密码,回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f6:c6:df:ac:f5:10:54:54:f5:77:be:9e:7a:f3:ad:53 root@rhel7.1
The key's randomart image is:
以上密钥内容过长,此处省略。。。。
#cd .ssh/     //进入到生成后密钥存放的路径
#ls     //查看一下生成后的密钥文件:
id_rsa(私钥)  id_rsa.pub (公钥) known_hosts    
#cat id_rsa.pub >> authorized_keys       //把公钥内容追加写入到authorized_keys文件里
#cat authorized_keys          //查看一下写入公钥内容的authorized_keys文件
#scp authorized_keys root@192.168.8.130:~/.ssh/   //把写入公钥内容的authorized_keys文件远程拷贝到对端家目录的.ssh/里
#ssh root@192.168.8.130    //尝试远程登录对端是否需要密码,由下图可知,免密登录成功!


对端想要免密登录本端,也是进行以上操作把对端生成的公钥内容文件authorized_keys拷贝到本端家目录的.ssh/里即可

##软件安装

在windows中有时候安装某个软件的时候,会提示错误信息:这个软件依赖于一些组件: C+ +2003库、.NetFramwork 4.0 4.5等
在Linux中的软件程序也会依赖于一些组件,而这些组件(包)都是以后缀名为.rpm或.deb等来表示的。

以rpm和dpkg安装方法举例:
rpm安装:
安装:rpm –ivh rpm +软件包名   如:rpm –ivh software-1.2.3-1.i386.rpm
卸载:rpm –e +软件名    如: rpm –e software
-i 安装软件
-t 测试安装,不是真的安装
-p 显示安装进度
-f 忽略任何错误
-U 升级安装
-v 检测套件是否正确安装

dpkg安装:
安装:dpkg –i deb +软件包名  如:dpkg –i software-1.2.3-1.deb
卸载:dpkg –e +软件名    如:dpkg –e software

但这种安装方式它们都可能会出现以下这种情况:

就是你在安装一个包时,它都可能依赖于某个甚至某些包来完成安装,要是这些依赖包不存在,那么就安装不了。而你要是手动一个个去安装这些依赖包呢,而这些依赖包呢也会可能存在需要其他依赖包才能安装这个依赖包,所以此种方法非常繁琐。我们可以使用yum源或者apt-get安装,当你安装一个包时,它会把这个包所依赖的所有包都自动给你安装上。

apt-get与yum的区别:
①yum是安装rpm程序包的工具,运作于rpm
②apt-get可以用于运作deb包,例如在Ubuntu系统上对某个软件的管理:
安装:apt-get install <package_name>
卸载:apt-get remove <package_name>
更新:apt-get update <package_name>

yum安装:
首先需要有一个仓库(yum源),来存放这些依赖关系,在需要的时候直接调用
配置yum源的两种方式:本地源/在线源
配置本地源:

1、虚拟机连接光盘
2、挂载光盘 mount /dev/cdrom /mnt

3、#cd /etc/yum.repos.d  //进到yum源的配置目录
4、#rm -rf* //清空该目录下的所有源配置文件

5、#vim xlz.repo //定义yum源配置文件。yum.repos.d目录下只认识.repo结尾的配置文件
本地源配置信息:
[xlz]            //repo id
name = xlz       //repo name
baseurl = file:///mnt     // 指向挂载光盘的/mnt的路径
enable = 1                  //1为启用源,0为不启用。如果此参数不存在,默认为启用
gpgcheck = 0           //关闭包的检测是否合法

6、#yum clean all    //清理yum缓存内容         
7、#yum repolist all    //重新生成索引信息,列举所有的包
8、安装:yum install+包名 -y    // -y  表示安装过程中自动yes确认同意安装
卸载:yum remove+包名 -y
升级:yum update+包名 -y
9、#yum install -y tigervnc*   //测试安装所有名称以tigervnc开头的包,*代表任意匹配


10.看到complete!表示安装成功

[root@localhost ~]# yum install -y bash-completion #下载命令补全工具
[root@localhost ~]# yum install -y vim 
[root@localhost ~]# yum install -y bzip2 

配置在线源(推荐使用阿里云的永久源):
由于我们使用的是redhat7.1的版本,而centos用的内核是redhat。所以我们只需要下载centos对应的在线源镜像文件版本即可:
阿里云镜像站(centos):https://developer.aliyun.com/mirror/?spm=a2c6h.13651102.0.0.485c1b11LOWK8m&serviceType=mirror
阿里云镜像站(centos永久源/过期源):https://developer.aliyun.com/mirror/centos-vault?spm=a2c6h.13651104.0.0.875912b2wGBlsf
centos官方镜像站(不推荐,外国服务器速度慢):https://vault.centos.org/?spm=a2c6h.13651104.0.0.51ea69f5Wsasmr  

所谓在线源,首先得保证本端能通外网才行
1.  #ping www.baidu.com     //测试能ping同外网

2.下载在线源配置文件
#cd /etc/yum.repos.d/    //首先来到配置yum源的配置目录 
#ls    //查看是否已存在其他源配置文件
#rm -rf *   //由于这里测试,我们只需用到在线源,其他全部直接清空
#wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo    //在线下载yum配置源文件
#ls    //查看一下CentOS-Base.repo在线源配置文件是否成功下载下来

由于阿里云的官方在线源已下架,所以我们需要把里面的源链接替换成永久源对应的链接
如以下的[base]、[updates]等里面的这些参数所对应的在线源地址都是已经失效了

检查索引时候直接报错,访问不了

我们需要访问永久源下载文件地址:https://mirrors.aliyun.com/centos-vault/  找到对应的版本 
如7.1版本的地址:https://mirrors.aliyun.com/centos-vault/7.1.1503/  记住后缀的 /centos-vault/7.1.1503/ 

3.#vim CentOS-Base.repo      //进入到在线源配置文件修改参数   如[base]参数所对应的在线源信息:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
       http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
       http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

修改成:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/7.1.1503/os/$basearch/    //把第一行在线源配置地址修改成永久源地址 
#       http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/            //把后面两行注释掉,就用第一永久源地址就行了
#       http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7    //gpgkey地址也修改一下

后面的[updates]、[extras]、[centosplus]这三个参数的配置也同样操作,修改成永久源对应的地址信息即可  
而后面的[contrib]参数是没有的,在下载地址https://mirrors.aliyun.com/centos-vault/7.1.1503/找不到,直接删除对应的信息即可

4.  #yum clean all    //清理yum缓存内容          #yum repolist all    //重新生成索引信息,列举所有的包



修改提示符:

临时修改提示符颜色:PS1="\[\e[1;32m\][\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"  

显示提示符格式
[root@rhel7 ~]# echo $PS1
[\u@\h \W]\$
修改提示符格式范例
PS1="\[\e[1;32m\][\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"  

PS1="\[\e[1;32m\][\[\e[1;33m\]\t\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"

想要配置永久生效可以写入到 /etc/profile.d/xlz.sh 文件中(恢复默认的时候可以把文件直接删除即可):

echo 'PS1="\[\e[1;32m\][\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/xlz.sh

posted @ 2022-05-09 16:38  小呀小黎子  阅读(166)  评论(0编辑  收藏  举报