Linux笔记 && Linux基础命令及语法

快捷键https://note.youdao.com/s/WP86L4T7

ctrl+a光标移动命令行首部
ctrl+e光标移动命令行尾部
ctrl+alt+F1切换图形化界面
ctrl+alt+F2~F6切换字符界面
ctrl shift +放大界面
ctrl shift T新开一个终端
ctrl +缩小界面
ctrl+w删除前面单词
ctrl+d删除后面字母
ctrl+c注释代码
ctrl+u清空至行首
ctrl +k删除至行尾

命令语法格式

 command     [options]...      [argument]..

  命令        [选项]         [参数]


线下环境

MachineVM必须启动
VMwarefoundation平台*
KVMclassroomdns,yum,repo,rc.local…*
KVMbastionGateway system(router)*
KVMutilitypodman Server
KVMworkstationClient - GUI
KVMserveraClient - CLI*
KVMserver{b-e}Client - CLI

考试环境安装

[kiosk@foundation0 ~]$ su - root
Password: 
Last login: Fri Oct  8 18:27:05 GMT 2021 from ::1 on pts/3
[root@foundation0 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G  9.9M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/nvme0n1p4  491G   62G  430G  13% /
/dev/nvme0n1p2 1014M  659M  356M  65% /boot
/dev/loop0      7.4G  7.4G     0 100% /content/rhel8.4/x86_64/rhel8-additional
/dev/loop2      6.7G  6.7G     0 100% /content/rhel8.0/x86_64/dvd
/dev/loop1      9.5G  9.5G     0 100% /content/rhel8.4/x86_64/dvd
/dev/nvme0n1p1  200M  6.6M  194M   4% /boot/efi
tmpfs           796M  3.5M  792M   1% /run/user/1000
/dev/sr0        5.9M  5.9M     0 100% /run/media/kiosk/CDROM

[root@foundation0 ~]# yum install -y /run/media/kiosk/CDROM/ex200v82-4.8-211016.x86_64.rpm 

环境命令+密码

切换用户
[kiosk@foundation0 ~]$ su -
Password: 
Last login: Fri Oct  8 18:27:05 GMT 2021 from ::1 on pts/3
[root@foundation0 ~]# su -

锁屏解锁密码:redhat

重置课程
[kiosk@foundation0 ~]$ rht-clearcourse 0
[kiosk@foundation0 ~]$ rht-setcourse rh124

查看环境
[kiosk@foundation0 ~]$ cat /etc/rht
RHT_VENUE=ilt
RHT_ENROLLMENT=0
RHT_ROLE=foundation
RHT_COURSE=rh124
RHT_TITLE="Red Hat System Administration I"
RHT_VMS="bastion workstation utility servera serverb "
RHT_VM0="classroom "
RHT_GVMS=""
RHT_PRIVUSEOVS=""
RHT_NOSTARTVMS=""
RHT_NOFINISHVMS=""
RHT_VMTREE=rhel8.2/x86_64


启动相应的机器

配置ip

1.配置ip
[root@localhost ~]# nmcli connection modify "ens32" ipv4.method manual ipv4.addresses  "192.168.1.10/24" ipv4.gateway "192.168.1.254" ipv4.dns "8.8.8.8" connection.autoconnect yes
2.重启网络(红帽8)
[root@servera ~]# nmcli connection down Wired\ connection\ 1  && nmcli connection up Wired\ connection\ 1

重启网络(Centos7)
[root@servera ~]#systemctl restart network

3.检查IP、掩码、网关、DNS
#查看主机名
[root@node1 ~]# hostname    
node1.domain250.example.com
#查网关
[root@node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.250.254  0.0.0.0         UG    100    0        0 eth0
172.25.250.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0
#查ip
[root@node1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
    inet 172.25.250.100/24 brd 172.25.250.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::b3ba:2f60:8a37:f33e/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
#查看dns
[root@node1 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search domain250.example.com
nameserver 172.25.250.254


设置主机名
[root@servera ~]#hostnamectl set-hostname node1.domain250.example.com

vim编辑器

  • vim的三种模式
命令模式(command):用vim打开一个文件,此时就是命令模式,标识符:1.光标闪动;2.最后一行有文件详细信息
输入模式(insert):按aio任意一个字符进入输入模式,标识符:insert
			a:光标之后输入
			A:光标所在行行尾输入
			I:光标所在行行首输入
			i:光标之前输入
			o:光标下一行输入
			O:光标上一行输入
末行模式(ex):最后一行做操作,标识符:“:”(冒号)
  • 三种模式的切换
1.命令模式 aio ---->  输入模式
		  <-----esc
2.命令模式 : ---->  末行模式
		  <-----esc
  • 光标移动
1.上下左右方向键
2.hjkl左下上右
  • 行内跳转
命令模式
行首:home/^(shift 6)
行尾:end/$(shift 4)
单词:w
  • 行间跳转
命令模式
gg:跳转到首行
G:跳转到尾行
5gg/5G:跳转到第5行

末行模式
:3:跳转至第3行
:%:跳转至最后一行
  • 页面跳转
pgup
pgdown
  • 复制
命令模式
	yy:复制光标所在行
	yw:复制单词
	3yy:复制光标所在行到下面的2行(包含光标所在行)
末行模式
	:8,26y:复制8到26行
	:%y:复制全文
  • 粘贴
p(小):粘贴到光标下一行
P(大):粘贴到光标上一行
  • 删除
命令模式
	dd:删除光标所在行
	dw:删除单词
	3dd:删除光标所在行到下面的2行(包含光标所在行)
	x/del:删除光标所在字符
	D:删除光标所在字符到行尾的内容
	dgg:删除光标所在行到首行内容
	dG:删除光标所在行到尾行的内容
	ct" 删除从光标到"位置之间的字符
末行模式
	:8,26d:删除8到26行
	:%d:删除全文
  • 剪切:删除+粘贴
  • 撤回
命令模式
	u:一步步撤回
	
反撤回:ctrl r
  • 保存、退出
命令模式
	ZZ(大写)
末行模式
	!表示强制(:wq!)
	:w保存
	:q退出
	:wq/x保存退出
调用:
	在vim中:!hostname  调用主机名
  • 设置行号、取消行号
末行模式
:set nu   设置行号
:set nonu 取消行号
:noh 	  取消高亮
  • 查找
命令模式
/root 
	n:往下
	N:往上
?root 
	n:往上
	N:往下
  • 替换
末行模式
:s/root/qq/   将光标所在行的第一个root替换为qq
:s/root/qq/g   将光标所在行的所有root都替换为qq
:1,5s/bin/wx/g  将1到5行的所有root都替换为qq
:%s/bin/wx/g   将全文的所有root都替换为qq
  • 批量注释
末行模式
:1,5s/^/#
:1,5s#^#//

可视化视图
1.ctrl v
2.选中你要注释的行
3.按I(大写)
4.按#
5.esc(两下)
  • 取消批量注释
末行模式
:1,5s/#//

可视化视图
1.ctrl v
2.选中你要取消注释的行
3.按d
  • 读入、写入
    vim 2.txt
    :r /etc/hosts
    在光标下一行读入
    
    写入
    vim 2.txt
    :w /tmp/20.txt
    
    

    练习

    1.通过cp /etc/passwd /tmp/生成vim练习模板文件,用vi编辑器打开/tmp/passwd文件,并以此文件作为练习素材。 
    2.在/tmp/passwd文件中显示行号。 
    3.在第5行后读入/etc/hosts和/etc/selinux/config的内容。 
    4.切换到最后一行,读入/etc/passwd的内容。 
    5.删除10到20行的内容。 
    6.将6、7行剪切到100行后。 
    7.在文件中查找”bin”字符串。 
    8.将文件中所有的”bin”字符串替换为”easthome”。 
    9.保存该文件后退出vi编辑器。 
    10.滤除该文件所有的空行之后,保存到/media/passwd.txt。 
    11.删除/root/passwd.txt。 
    

man

[kiosk@foundation0 ~]$ man chown 
/Ex

重定向

#              >   覆盖
[root@node1 ~]# echo "123" > 1.txt

#              >>    追加
[root@node1 ~]# echo "123" >>1.txt

#              2>   错误重定向:将错误内容放到后面的文件中
[root@node1 ~]# cat 1.txt 2.txt
123
123
cat: 2.txt: No such file or directory
[root@node1 ~]# cat 1.txt 2.txt 2>10.txt
123
123

#              &>     混合重定向:将正常和错误的全都放到后面那个文件
[root@node1 ~]# cat 1.txt 2.txt &> 20.txt
[root@node1 ~]# cat 20.txt
123
123
cat: 2.txt: No such file or directory


find

find 
--name  查找名字为 file 的文件
--user  查找归 jacques 所有的所有文件
[root@node1 ~]# mkdir /root/findfiles
[root@node1 ~]# find / -user jacques -exec cp -a {} /root/findfiles \;
find: ‘/proc/4828/task/4828/fd/7’: No such file or directory
find: ‘/proc/4828/task/4828/fdinfo/7’: No such file or directory
find: ‘/proc/4828/fd/8’: No such file or directory
find: ‘/proc/4828/fdinfo/8’: No such file or directory

grep

grep root /etc/passwd
#         -i 忽略大小写
#         -v 取反
#         ^root  以root开头的行
#         ^#     
#         bash$  以bash结尾
#         ^$	   空行

#    -i  忽略大小写
[root@node1 ~]# grep -i root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
#     -v  取反
[root@node1 ~]# grep -v root /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

#     将/etc/resolv.conf中含na的行不含空格写到/root/lines.txt中
[root@node1 ~]# grep na /etc/resolv.conf | grep  -v ^$ > /root/lines.txt
[root@node1 ~]# cat /root/lines.txt
# Generated by NetworkManager
nameserver 172.25.250.254

sed

以行号作为模式

作用格式描述
单独的行号1、$第一行、最后一行
起始行、结束行1,5处理1到5行
起始行~步长2~2从第二行开始,每隔两行处理一次
起始位置+N3+5处理3到8行

以正则为模式

格式示范
/正则表达式//^root/

sed子命令

sed的子命令告诉sed对指定的行进行何种操作,包括增加、删除、修改、查看(打印)。

!非,放在命令前面,表示取反
ddelete,表示删除
pprint,表示答应(显示)
#-n        默认输出,一般和p一起用
#-i        直接修改源文件
#-r        允许使用扩展正则
#-e        允许进行多项编辑


#p    打印    
[root@tang ~]# sed /^root/p /tmp/passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

#d    删除
[root@tang ~]# sed /^root/d /tmp/passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync
#a     在被匹配行下一行插入
[root@tang ~]# sed /^bin/a/tanghuiyang /tmp/passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
/tanghuiyang
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

#i     在被匹配行上一行插入
[root@tang ~]# sed /^bin/i/tanghuiyang /tmp/passwd 
root:x:0:0:root:/root:/bin/bash
/tanghuiyang
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

#c     覆盖被匹配的行
[root@tang ~]# sed /^root/c/tanghuiyang /tmp/passwd
/tanghuiyang
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

#匹配第一行
[root@tang ~]# sed 1p /tmp/passwd
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

#查找并替换
sed '模式匹配s/被替换的内容/替换以后的内容/' 文件
[root@yan ~]# sed 's#root#boot#' /etc/passwd
2 boot:x:0:0:root:/root:/bin/bash
3 bin:x:1:1:bin:/bin:/sbin/nologin
4 …………
56 s@@@ s### s!!! s///

在上述命令中,我们利用 "s###" 的替换功能,将 "root" 替换成了 "ROOT"
但是从结果上可以看出来,匹配到的所在行里,只有第一个 "root" 做出了改变,而后两个则不受影响……
#g:全局替换
[root@yan ~]# sed 's#root#ROOT#'g /etc/passwd
 ROOT:x:0:0:ROOT:/ROOT:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 ……
 ……
 #i: 忽略大小写
 [root@yan ~]# sed 's#root#!!!#'gi /etc/passwd
 ROOT:x:0:0:!!!:/!!!:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 
 #n:第n个被匹配到的...n表示数字
 [root@yan ~]# sed 's#root#@@@@@#1' /tmp/passwd (只匹配第一个,并作出修改,然后将指定数放在修饰符的位置使用)
 ROOT:x:0:0:@@@@@:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 
 [root@yan ~]# sed '1,2s#root#@@@@@#' /tmp/passwd (将1,2作为指定数,放在前面使用,但未添加全局)
 ROOT:x:0:0:@@@@@:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin

 [root@yan ~]# sed '1,2s#root#@@@@@#'g /tmp/passwd (添加了全局后)
 ROOT:x:0:0:@@@@@:/@@@@@:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 
 #y:转换的命令,对应转换
 [root@yan tmp]# cat a.txt
 abc
 [root@yan tmp]# sed 'y/abc/ABC/' a.txt
 ABC
 [root@yan tmp]# sed 'y/abc/tanbowen/' a.txt
 sed:-e 表达式 #1,字s符 15:“y”命令的字符串长度不同
 
 [root@yan tmp]# sed 'y/abc/tan/' a.txt
 tan

s

Linux系统基础命令

  • 关机:

1、halt(立即关机:简单的关机命令)

2、shutdown -h now (立刻关机:root用户使用-安全的关机命令)

3、shutdown -h 10 10分钟后自动关机 如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

  • 重启:

1、 reboot

2、 shutdown -r now 立刻重启(root用户使用)

3、 shutdown -r 10 过10分钟自动重启(root用户使用)

4、 shutdown -r 20:35 在时间为20:35时候重启(root用户使用) 如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

  • 修改主机名:

1、 hostname 主机名 (临时性修改主机名)

2、 hostnamectl set-hostname 主机名 (永久性修改主机名)

  • 列出文件:

ls

  • 移动/切换位置:

cd … 返回上一级目录

cd - 返回上一次目录

  • 查看当前用户:

1、 who

2、 whoami

  • 显示当前位置:

pwd

打印当前所在位置的绝对路径名称

[root@localhost file01]# pwd
/tmp/dir/file01
  • 查看版本:

1、uname -a

2、cat /proc/version

  • 查看IP地址:

1、ip addr show

2、ip a

  • 查看(命令)历史记录:

history

  • 查看命令类型:

type

  • 清屏:

1、clear

2、ctrl+L

文件管理

ls命令

  • 列出

ls -a 列出包括隐藏文件在内的所有文件

ls -l 列出文件详细信息

ls -h列出文件及其大小

ls -d列出文件本身

ls -i 显示inot号

[root@localhost tmp]# ls /etc
abrt                        gshadow                   printcap
adjtime                     gshadow-                  profile
aliases                     gss                       profile.d
aliases.db                  gssproxy                  protocols
alsa                        host.conf                 pulse
alternatives                hostname                  purple
anacrontab                  hosts                     python
asound.conf                 hosts.allow               qemu-ga
at.deny                     hosts.deny                qemu-kvm
[root@localhost tmp]# ls -d /etc
/etc
  • 列出递归

[root@localhost tmp]# ls -R /opt
/opt:
rh  xx

/opt/rh:

/opt/xx:
oo

/opt/xx/oo:

mkdir命令

  • 创建<目录>

举例:

[root@localhost tmp]# mkdir dir01
[root@localhost tmp]# mkdir dir02 dir03
[root@localhost tmp]# ls
dir01  dir02  dir03
[root@localhost tmp]# mkdir dir{A..E}
[root@localhost tmp]# # mkdir dir{05,06,07}
[root@localhost tmp]# mkdir dir{,.bak}
[root@localhost tmp]# ls
dir  dir01  dir02  dir03  dirA  dirB  dir.bak  dirC  dirD  dirE

  • 递归创建目录

格式

mkdir -p /opt/xx/oo

[root@localhost etc]# ls /opt
rh
[root@localhost etc]# mkdir /opt/xx/oo
mkdir: cannot create directory ‘/opt/xx/oo’: No such file or directory
[root@localhost etc]# mkdir -p /opt/xx/oo
[root@localhost etc]# ls /opt
rh  xx
[root@localhost etc]# ls /opt/xx
oo
[root@localhost etc]# 

touch命令

  • 创建<空文件>

[root@localhost tmp]# touch test{01..04}
[root@localhost tmp]# ls
dir    dir02  dirA  dirC  dirE    test02  test04
dir01  dir03  dirB  dirD  test01  test03

cp命令

  • 复制<目录/文件>到<指定位置>

语法:cp [选项]… 源文件… 目录
常用选项
 -r/-R 递归复制(可以复制<目录>)
 -i   针对<已存在的目标文件>,先询问<是否覆盖旧文件?>
 -f   强制复制(在cp操作中,针对<已存在的目标文件>,强制覆盖,不给任何指示)
   注意:-f选项 不可以 忽略 -i选项
 -a  复制<所有源属性>

-p 复制切文件原属性不变

别名命令
 cp=‘cp -i’
 如需调用<原始的cp命令>,方法为:\cp (临时取消别名)

[root@localhost tmp]# cp test01 dir/test01
[root@localhost tmp]# ls dir
file01  file1  file5  test01

mv命令

  • 移动<目录/文件>到<指定位置>(可用于改名)

语法:mv [选项]… 源文件… 目录
常用选项
 -i   针对<已存在的目标文件>,先询问<是否覆盖旧文件?>
 -f   强制移动(在mv操作中,针对<已存在的目标文件>,强制覆盖,不给任何指示)
    注意1:如果<目标目录>已存在,则无法移动。
    注意2:-f选项 可以 忽略 -i选项
别名命令
 mv=‘mv -i’
 如需调用<原始的mv命令>,方法为:\mv (临时取消别名)

★ 举例:
[root@localhost tmp]# mv dir{A..E} dir{02,03} dir01
[root@localhost tmp]# ls
dir  dir01  test01  test02  test03  test04
[root@localhost tmp]# ls dir01
dir  dir02  dir03  dirA  dirB  dirC  dirD  dirE
[root@localhost tmp]# ls
dir  dir01  test01  test02  test03  test04
[root@localhost tmp]# ls dir
file01  file1  file5  test01
[root@localhost tmp]# mv test{01..04} dir01
[root@localhost tmp]# ls
dir  dir01
  • 也可以<重命名>

  • ★ 举例:
    ### 原地改名:文件/目录 ###
    cd /tmp
    rm -rf *
    touch myfile01
    mv myfile01 myfile02
    mkdir dir01
    mv dir01 dir02
    ### 移动改名:文件/目录 ###
    cd /tmp
    rm -rf *
    touch myfile01
    mv myfile01 /root/myfile02
    mkdir dir01
    mv dir01 /root/dir02
    

rmdir命令

  • 删除<空目录>

语法:rmdir [选项]… 目录…

★ 举例:
cd /tmp
mkdir dir01 dir02 dir03
mkdir dir{04,05,06}
mkdir dir{A..E}
rmdir dir01 dir02 dir03
rmdir dir{04,05,06}
rmdir dir{A..E}

rm命令

  • 删除<目录/文件>

语法:rm [选项]… 文件…
常用选项
 -i   每次删除之前,会先询问<是否删除?>
 -f   强制删除(可以删除<目录>)
    注意1:-f选项 可以 忽略 -i选项
 -r/-R 递归删除
别名命令
 rm=‘rm -i’
 如需调用<原始的rm命令>,方法为:\rm (临时取消别名)

★ 举例:
cd /tmp
touch myfile03 myfile04 myfile05
rm /tmp/myfile03                 <---- 删除<指定文件>,由于<别名的定义>,每次删除之前,会先询问<是否删除?>
rm -f /tmp/myfile04 myfile05     <---- 强制删除<指定文件>
############################################
mkdir dir01 dir02 dir03
rm -rf /tmp/{dir01,dir02,dir03}  <---- 强制删除<指定目录>
############################################
rm -rf *                         <---- 强制删除<当前目录>中的<所有文件和目录>

rename命令

  • (批量更改<名称>中的<字符串>,功能有限)

语法: rename [options] expression replacement file…
解释: expression  代表<需要更改的匹配内容>,不能使用<通配符>和<正则表达式>
    replacement  代表<更改的结果内容>
    file…     代表<需要更名的文件>
常用选项
 -v 显示<详细的过程>

★ 举例:
cd /tmp
rm -rf *
touch myfile0001 myfile0002 myfile0003
mkdir dir01 dir02 dir03
rename "dir" "DIR" dir*    <---- 针对<dir开头的文件名或目录名>,统一将<dir字符串>更改为<DIR字符串>
rename "000" "0" myfile*   <---- 针对<myfile开头的文件名或目录名>,统一将<000字符串>更改为<0字符>

查看文件

(ls/cat/tac/head/tail/more/less)

ls命令:列出<指定的目录>中包含的内容(已经讲过,略)

cat命令:显示<文件>内容

选项:

cat -n 文件名 查看文件并显示行号

tac命令反序显示<文件>内容

head命令:显示<文件>开头内容

tail命令:显示<文件>结尾内容

tail -n 5……文件名 查看文件后5排

cat -f……文件名 动态查看文件

more命令:分屏显示,功能简单,只能向下翻屏

less命令:分屏显示,可上下滚屏,可搜索<关键字>

PgUp 向上翻页

PaDn 向下翻页

/+字符串 高亮显示 n从上往下翻

​ N从下往上翻

文件类型

  • Linux系统辨别目录与文件的方法

    蓝色表示目录(windows系统里面的文件夹)

    白色表示文件

    浅蓝色表示链接文件(类似于windows系同里面的快捷方式)

    绿色表示可执行文件(如脚本、命令程序文件)

    红色表示压缩文件

    黄色表示设备文件(硬件、键盘、鼠标、网卡、CPU硬件设备都是文件的形式存在)

    红色闪动文件 ——> 表示文件不可用

文件属性文件类型
-常规文件(包含:文本文件、二进制文件)
d目录文件
bblock device 即:<块设备文件>,如:<硬盘>支持以<block为单位>进行随机访问
ccharacter device 即:<字符设备文件>,如:<键盘>支持以<character为单位>进行线性访问
lsymbolic link 即:<符号链接文件>,又称<软链接文件>
ppipe 即:<命名管道文件>
ssocket 即:<套接字文件>,用于实现<两个进程>之间的通信
[root@localhost tmp]# ls -l
total 0
drwxr-xr-x. 2 root root 6 414 04:30 dir
drwxr-xr-x. 2 root root 6 414 04:27 dir01
drwxr-xr-x. 2 root root 6 414 04:28 dir02
drwxr-xr-x. 2 root root 6 414 04:28 dir03
drwxr-xr-x. 2 root root 6 414 04:28 dirA
drwxr-xr-x. 2 root root 6 414 04:28 dirB
drwxr-xr-x. 2 root root 6 414 04:30 dir.bak
drwxr-xr-x. 2 root root 6 414 04:28 dirC
drwxr-xr-x. 2 root root 6 414 04:28 dirD
drwxr-xr-x. 2 root root 6 414 04:28 dirE

d rwx r-x r-x. 2 root root 6 414 04:30 dir
  u    g   o    所属者 所属组
d :文件类型(目录文件)
u : 所属者
g : 所属组
o : 其他人
权限
r (4)读
w (2)写
x (1)执行



软连接与硬连接

  • 软连接

  • 特点:软连接可以跨分区,可以对目录进行链接,源文件删除后,连接文件不可用

  • 命令格式:ln -s 源文件路径 目标路径 (相当于windows创建快捷方式)

  • 注意:创建连接时一定要写目录或文件的绝对路径 哪怕是在当前路径下 也要写绝对路径

    [root@localhost ~]# ls
    anaconda-ks.cfg  Documents  initial-setup-ks.cfg              Music     Public     Videos
    Desktop          Downloads  linuxqq_2.0.0-b1-1024_x86_64.rpm  Pictures  Templates
    [root@localhost ~]# ln -s /Music /tmp
    [root@localhost ~]# ls /tmp
    dir  dir01  Music  vmware-root
    
  • 硬连接

  • 特点:硬连接不可以跨分区,不可以对目录进行链接,删除文件后,链接文件任然可用

  • 命令格式:ln 源文件目录 目标路径

[root@localhost tmp]# ln /tmp/dir01/test01 /tmp  //创建硬连接
[root@localhost tmp]# ls
dir  dir01  Music  test01  vmware-root
[root@localhost tmp]# cat test01     //链接无内容
[root@localhost tmp]# echo qwe > /tmp/dir01/test01   //在源文件中写入内容
[root@localhost tmp]# cat /tmp/test01    //链接文件内容随着更新
qwe
#源文件和链接文件inot号保持一致
[root@localhost tmp]# ls -i test01
17649549 test01
[root@localhost tmp]# ls -i dir01/test01
17649549 dir01/test01
  • 提示:硬连接的文件可以实现同步更新,并保持属性不变

用户和组

创建用户:useradd

格式:
	useradd	[选项]	用户名
-u:指定uid
[root@node1 ~]# useradd -u 1010 user3
[root@node1 ~]# grep user3 /etc/passwd
user3:x:1010:1010::/home/user3:/bin/bash
	
-c:指定描述信息
[root@node1 ~]# useradd -c user4 user4
[root@node1 ~]# tail  -n 2 /etc/passwd
user3:x:1010:1010::/home/user3:/bin/bash
user4:x:1011:1011:user4:/home/user4:/bin/bash

-d:指定家目录
[root@node1 ~]# useradd -d /test1 user5
[root@node1 ~]# tail  -n 2 /etc/passwd

-s:指定shell
[root@node1 ~]# useradd -s /sbin/nologin user6
[root@node1 ~]# tail  -n 2 /etc/passwd
user5:x:1012:1012::/test1:/bin/bash
user6:x:1013:1013::/home/user6:/sbin/nologin

[root@node1 ~]# su - user6
This account is currently not available.

-g:将用户加入到主组
-G:将用户加入到从属组
[root@node1 ~]# useradd -g group1 -G group2 user7
[root@node1 ~]# id user7
uid=1014(user7) gid=1014(group1) groups=1014(group1),1015(group2)

[root@node1 ~]# echo "redhat"  | passwd --stdin user7
Changing password for user user7.
passwd: all authentication tokens updated successfully.

练习

1.创建用户 fred,用户ID为1111,密码为fred1111

2.
创建组sysadm
创建用户harry,natasha,tom
要求harry,natasha的附加组为sysadm
要求tom用户的登陆shell为非交互式shell
三个用户的密码为redhat

修改用户:usermod

[root@node1 ~]# tail -n 2 /etc/passwd
harry:x:3535:3536::/home/harry:/bin/bash
sarah:x:3536:3537::/home/sarah:/sbin/nologin
[root@node1 ~]# usermod -u 5050 -c testsarsh -d /test2 -s /bin/bash sarah
[root@node1 ~]# tail -n 2 /etc/passwd
harry:x:3535:3536::/home/harry:/bin/bash
sarah:x:5050:3537:testsarsh:/test2:/bin/bash

删除用户:userdel

-r 
[root@node1 ~]# userdel user1
[root@node1 ~]# id user1
id: ‘user1’: no such user
[root@node1 ~]# cd /var/spool/mail/
[root@node1 mail]# ls
devops  manalo   remoteuser1  sarah    user1  user3  user5  user7
harry   natasha  rpc          student  user2  user4  user6  wallah
[root@node1 mail]# userdel -r user2
[root@node1 mail]# id user2
id: ‘user2’: no such user
[root@node1 mail]# ls
devops  manalo   remoteuser1  sarah    user1  user4  user6  wallah
harry   natasha  rpc          student  user3  user5  user7
[root@node1 mail]# 

创建组:groupadd

命令格式:
	groupadd [选项] 组名
	-g
[root@node1 ~]# groupadd -g 5055 group4
[root@node1 ~]# tail -2 /etc/group
group3:x:3538:
group4:x:5055:

修改组:groupmod

命令格式:
	groupadd [选项] 组名
	-g :gid
[root@node1 ~]# groupmod -g 6000 group4
[root@node1 ~]# tail -2 /etc/group
group3:x:3538:
group4:x:6000:

	
	-n : 修改组名
	[root@node1 ~]# groupmod -n testgroup4 group4
[root@node1 ~]# tail -2 /etc/group
group3:x:3538:
testgroup4:x:6000:

删除组:groupdel

[root@node1 ~]# groupdel group3

gpasswd:将用户加组

-a 将用户加入到组
-d 将组里的用户删除
[root@node1 ~]# useradd user10
[root@node1 ~]# groupadd group10

[root@node1 ~]# gpasswd -a user10 group10
Adding user user10 to group group10
[root@node1 ~]# id user10
uid=5051(user10) gid=5051(user10) groups=5051(user10),6001(group10)

[root@node1 ~]# gpasswd -d user10 group10
Removing user user10 from group group10
[root@node1 ~]# id user10
uid=5051(user10) gid=5051(user10) groups=5051(user10)

身份切换

以某个用户的身份执行某个命令,使用命令su - username -c cmd

[root@node1 ~]# su - harry -c id
利用harry的身份查看id信息

sudo提权

[root@servera ~]# vim /etc/sudoers    (有高亮、只读)
[root@servera ~]# visudo  (没有高亮,不是只读)

99 ## Allow root to run any commands anywhere
100 root    ALL=(ALL)       ALL
root:用户名
ALL:主机名
ALL:角色
ALL:命令

案例1:让harry用户有root权限

[root@node1 ~]# visudo
	100 root    ALL=(ALL)       ALL
    101 harry   ALL=(ALL)       ALL
    
测试
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo useradd user100
[sudo] password for harry: 
[harry@node1 ~]$ id user100
uid=5052(user100) gid=5052(user100) groups=5052(user100)

案例2:让sysadm组sudo时不需要密码

[root@node1 ~]# visudo
 111 # %wheel        ALL=(ALL)       NOPASSWD: ALL 
 112  %sysmgrs       ALL=(ALL)       NOPASSWD: ALL
测试:
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo cat /var/log/messages

=5051(user10),6001(group10)

[root@node1 ~]# gpasswd -d user10 group10
Removing user user10 from group group10
[root@node1 ~]# id user10
uid=5051(user10) gid=5051(user10) groups=5051(user10)


## 身份切换

以某个用户的身份执行某个命令,使用命令su - username -c cmd

```bash
[root@node1 ~]# su - harry -c id
利用harry的身份查看id信息

sudo提权

[root@servera ~]# vim /etc/sudoers    (有高亮、只读)
[root@servera ~]# visudo  (没有高亮,不是只读)

99 ## Allow root to run any commands anywhere
100 root    ALL=(ALL)       ALL
root:用户名
ALL:主机名
ALL:角色
ALL:命令

案例1:让harry用户有root权限

[root@node1 ~]# visudo
	100 root    ALL=(ALL)       ALL
    101 harry   ALL=(ALL)       ALL
    
测试
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo useradd user100
[sudo] password for harry: 
[harry@node1 ~]$ id user100
uid=5052(user100) gid=5052(user100) groups=5052(user100)

案例2:让sysadm组sudo时不需要密码

[root@node1 ~]# visudo
 111 # %wheel        ALL=(ALL)       NOPASSWD: ALL 
 112  %sysmgrs       ALL=(ALL)       NOPASSWD: ALL
测试:
[root@node1 ~]# su - harry
Last login: Sun Apr 24 11:26:21 EDT 2022 on pts/0
[harry@node1 ~]$ sudo cat /var/log/messages
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放纵 ╮青春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值