Linux学习笔记(1月23日)

4.16 chown命令

chown命令可以更改目录或文件的所属主或所属组,格式为:
chown -R 账户名.组名 文件名
chown -R 账户名:组名 文件名
-R选项只适用于目录,作用是级联更改,不仅更改当前目录,连目录里的目录或者文件也全部更改。
练习:

# mkdir test  //  创建test目录
# useradd user1  //  创建用户user1
# touch test/test1  //  在test目录下生成test1文件
# id user1  //  查看用户user1的所属组
uid=1000(user1) gid=1000(user1) 组=1000(user1)
# groupadd users1  //  创建组users1
# ls -l test  //  列出test目录下的文件的详细信息
总用量 0
-rw-r--r-- 1 root root 0 1月  23 21:44 test1
# chown user1 test  //  修改目录test的所属主为user1
# ls -l test
总用量 0
-rw-r--r-- 1 root root 0 1月  23 21:44 test1  //  此时目录test下的文件所属主和所属主并没有发生改变
# ls -ld test  //  列出目录test本身的详细信息
drwxr-xr-x 2 user1 root 19 1月  23 21:44 test  //  此时目录test本身的所属主已经更改为用户user1
# chown -R user1.users test  //  将目录test下所有目录及文件的所属主更改为用户user1,所属组更改为users
# ls -l test
总用量 0
-rw-r--r-- 1 user1 users 0 1月  23 21:44 test1  //  此时目录test下的文件test1的所属主和所属组都被更改了

history 可以查看历史命令,配合!使用,例如:

# history
    1  free
    2  dh -h
    3  df -h
    4  init 0
    5  date
    6  cal
    7  free
    8  dhclient
    9  ip addr
   10  ping www.baidu.com
   11  ping www.qq.com
   12  ip addr
   13  ip route
   14  vi /etc/sysconfig/network-scripts/ifcfg-ens33
   15  ip addr
   16  ip route
   17  vi /etc/sysconfig/network-scripts/ifcfg-ens33
   18  system restart network
   19  systemctl restart network
   20  ipaddr
   21  ip addr
   22  ping www.baidu.com
   23  cat /etc/init.d/network |more
   24  cat /etc/init.d/network |less
   25  init 0
   26  mkdir ~/.ssh/
   27  cd ~/.ssh/
   28  vi authorized_keys
   29  q
   30  quit
   31  vi authorized_keys
   32  chmod 600authorized_keys
   33  vi authorized_keys
   34  chmod 600 authorized_keys
   35  ls authorized_keys
   36  cat /etc/passwd |grep root
   37  vi /etc/ssh/sshd_config
   38  cd ~/.ssh/
   39  ls -l
   40  ls
   41  cat authorized_keys 
   42  vi /etc/sysconfig/network-scripts/ifcfg-ens33
   43  cat /etc/passwd |grep root
   44  init 6
   45  init 0
   46  ip addr
   47  ping www.qq.com
   48  ssh [email protected]
   49  hostname set-hostname riceyoung1
   50  q
   51  exit
   52  hostname set-hostname riceyoung1
   53  exit
   54  init 6
   55  hostname set-hostname riceyoung1
   56  hostname
   57  cat /etc/hostname
   58  init 6
   59  hostname
   60  hostnamectl set-hostname riceyoung1
   61  init 6
   62  ssh-copy-id [email protected]
   63  ssh-keygen
   64  ssh-copy-id [email protected]
   65  cat .ssh/id_rsa.pub
   66  ssh [email protected]
   67  cat .ssh/authorized_keys
   68  vi /etc/ssh/sshd_config 
   69  systemctl restart sshd
   70  ssh [email protected]
   71  init 0
   72  passwd 
   73  ls -l /usr/lib/systemd/system/runlevel*.target
   74  reboot 
   75  init 0
   76  ls -l
   77  init 0
   78  getenforce 
   79  mkdir test
   80  useradd user1
   81  touch test/test1
   82  tail /etc/passwd
   83  id user1
   84  groupadd users
   85  groupadd users1
   86  tail -2 /etc/group
   87  tail -2 /etc/shadow
   88  head -1 /etc/shadow
   89  head -1 /etc/passwd
   90  echo $BASH
   91  history
   92  ls
   93  ls -l /test
   94  ls -l test
   95  chown user1 test
   96  ls -l test
   97  ls -ld test
   98  ls -l test
   99  chown -R user1.users test
  100  ls -l test
  101  history
# !ls  //  执行历史命令中最后一次以ls开头的命令
ls -l test
总用量 0
-rw-r--r-- 1 user1 users 0 1月  23 21:44 test1

head命令:用于显示文件的前10行,后面直接跟文件名。如果加-数字选项则数字为几就显示前几行。
练习:

# head /etc/passwd  //  显示passwd文件的前10行
root:x:0:0:root:/root:/bin/bash
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
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
# head -2 /etc/passwd  //  显示passwd文件的前2行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

tail命令:用于显示文件的最后10行,后面直接跟文件名。如果加-数字选项则数字为几就显示后几行。
练习:

# tail /etc/passwd  //  显示passwd文件的后10行
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash
# tail -2 /etc/passwd  //  显示passwd文件的后2行
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash

4.17/4.18 软链接和硬链接

链接文件分为硬链接和软链接两种,两种链接的本质区别在于inode。
硬链接:
当系统要读取一个文件时,就会先读inode table,然后再根据inode中的信息到块区域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块区域,即进行硬链接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode。即使某一个inode被删除了,只要有任何一个inode存在,该文件也不会消失。
硬链接有两个限制:
1.不能跨文件系统,因为不同的文件系统有不同的inode table;
2.不能链接目录;
软连接:
软链接是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。删除来源文件时,目的文件不会被删除,但如果再次读取目的文件时,会提示无法打开来源文件。但删除目的文件时,对来源文件是不会有任何影响的。
任何目录下都有...两个隐藏目录,其中.是目录本身,..是该目录的上一层目录,当使用ls -l时列出来的详细信息第二列的数字就是该目录下使用相同inode的子目录数,包含隐藏的目录...,所以目录的子目录数至少为2,文件的inode至少为1。
练习:

//  硬链接:
# cd test1
[root@riceyoung1 test1]# ln test1 hltest1  //  为源文件test1创建硬链接文件hltest1
[root@riceyoung1 test1]# ls -li  //  hltest1和test1的inode均为8393647,所以使用相同的inode的文件数为2
总用量 8
8393647 -rw-r--r-- 2 root root 114 1月  24 01:07 hltest1
8393647 -rw-r--r-- 2 root root 114 1月  24 01:07 test1
[root@riceyoung1 test1]# rm -f hltest1 //  直接删除硬链接文件hltest1,不加-f会出现删除提示;删除目录加-r选项
[root@riceyoung1 test1]# cat test1  //  即使删除硬链接文件,也不会对源文件产生影响
#Are you motherfuckers ready for the new shit?
#This is the new shit!
#Do you get it?
#No!
#Do you want it?
#Yes!
//  软连接:
# cd test1
[root@riceyoung1 test1]# touch test2
[root@riceyoung1 test1]# mv test2 test3  //  mv命令可以移动文件位置,也可以更改文件名
[root@riceyoung1 test1]# ls -l
总用量 4
-rw-r--r-- 1 root root 114 1月  24 01:07 test1
-rw-r--r-- 1 root root   0 1月  24 01:17 test3
[root@riceyoung1 test1]# rm -f test3
[root@riceyoung1 test1]# ln -s /root/test2/test2 test2  //  使用绝对路径,为源文件/root/test2/test2创建软链接文件/root/test1/test2
[root@riceyoung1 test1]# ls -l
总用量 4
-rw-r--r-- 1 root root 114 1月  24 01:07 test1
lrwxrwxrwx 1 root root  17 1月  24 01:23 test2 -> /root/test2/test2  //  test2的文件类型为l,指向/root/test2/test2
[root@riceyoung1 test1]# cd ../test2
[root@riceyoung1 test2]# cat test2
#fjkldsjfklasjlkfj kdslajfk ldjska 
#jalkfjslkdfjklsjfklsjkfls
#jfklsjfklsjklfjsklfjksldf
#sjdkflsdjklghkxnkvnksndklsd
#jafkdjakfjkdajfklwjeifisifo
[root@riceyoung1 test2]# cd ../test1
[root@riceyoung1 test1]# cat test2  //  查看/root/test1/test2就是查看/root/test2/test2
#fjkldsjfklasjlkfj kdslajfk ldjska 
#jalkfjslkdfjklsjfklsjkfls
#jfklsjfklsjklfjsklfjksldf
#sjdkflsdjklghkxnkvnksndklsd
#jafkdjakfjkdajfklwjeifisifo
[root@riceyoung1 test1]# vi test2  //  删除后3行
[root@riceyoung1 test1]# cat test2  //  修改/root/test1/test2就是修改/root/test2/test2
#fjkldsjfklasjlkfj kdslajfk ldjska 
#jalkfjslkdfjklsjfklsjkflso
[root@riceyoung1 test1]# rm -f test2
[root@riceyoung1 test1]# cd ../test2
[root@riceyoung1 test2]# cat test2  //  即使删除软链接文件,也可以访问源文件并且没有任何影响
#fjkldsjfklasjlkfj kdslajfk ldjska 
#jalkfjslkdfjklsjfklsjkflso

可以使用软链接实现磁盘扩容的功能,但最好使用绝对路径。

4.19/4.20 yum/rpm工具

yum是RHEL/CentOS所特有的安装rpm程序包的工具。
rpm是以一种数据库记录的方式来将我们所需要的套件安装到Linux主机的一套管理程序。
安装rpm包必须保证本地有对应的rpm包文件。
yum工具最大的优势在于可以联网去下载所需要的rpm包,然后自动安装。如果要安装rpm包有依赖关系,yum工具会帮我们依次安装所有相关的rpm包。
使用yum list可以列出所有的rpm包资源。

[root@riceyoung1 ~]# yum list |head -10
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
已安装的软件包
GeoIP.x86_64                                1.5.0-13.el7               @anaconda
NetworkManager.x86_64                       1:1.12.0-6.el7             @anaconda
NetworkManager-libnm.x86_64                 1:1.12.0-6.el7             @anaconda
NetworkManager-team.x86_64                  1:1.12.0-6.el7             @anaconda


由于管道被破坏而退出

centos.ustc.edu.cn表示下载rpm包资源的地址。
在已安装的软件包中,最左侧是rpm包名,中间是版本信息,最右侧是安装信息。
如果已安装,最右侧显示以@开头的标识,如果未安装则没有@,如果rpm包已安装但需要升级则显示updates
搜索一个rpm包:
yum search 关键词或者使用yum list |grep '关键词'来过滤。
安装一个rpm包:
yum install -y rpm包名
卸载一个rpm包:
yum remove -y rpm包名
升级一个rpm包:
yum update -y rpm包名
查看可用套件组:
yum grouplist
安装套件组:
yum groupinstall -y 组名
这里的-y选项是用来省略与用户交互的。
用yum找一个命令是由哪个包安装来的:
yum provides /*/命令
使用rpm工具安装rpm包:
rpm -ivh rpm包名.rpm // i表示安装,v表示可视化,h表示显示安装进度
查询系统已经安装过的所有的包:
rpm -qa
卸载rpm包:
rpm -e rpm包名
查看一个包是否安装:
rpm -q rpm包名rpm -qa |grep rpm包名 // grep是用来过滤的
列出某个rpm包都安装了哪些文件:
rpm -ql rpm包名
查看某个文件是由哪个rpm包安装得来的:
rpm -qf /usr/bin/命令
which只能用来查找PATH环境变量中出现的路径下的可执行文件:
which 命令

猜你喜欢

转载自blog.csdn.net/weixin_44527700/article/details/86618085