liuxn

这里之所以是查看下IP ,是我们后面要建一个Centos远程工具Xshell 连接Centos的时候,需要IP地址,所以我们这里先

学会查看虚拟机里的Centos7的IP地址


首先我们登录操作系统 用户名root 密码 123456

然后我们输入ip查询命名 ip addr

aa.jpg


发现 ens33 没有 inet 这个属性,那么就没法通过IP地址连接虚拟机。


接着来查看ens33网卡的配置: vi /etc/sysconfig/network-scripts/ifcfg-ens33   注意vi后面加空格

vi是Linux内置的文本编辑器命令 打开文件的意思


bb.jpg


从配置清单中可以发现 CentOS 7 默认是不启动网卡的(ONBOOT=no)。


把这一项改为YES(ONBOOT=yes),

cc.jpg


然后按 Esc 退出  再出入命令 :wq  再按Enter即可  (备注 :wq 是保存然后退出的意思 后面会专门讲下vi)


然后重启网络服务: sudo service network restart 


ee.jpg


然后我们再输入  ip addr 命令

ff.jpg


这里 inet属性显示了 虚拟机里的IP  192.168.1.107  (你们的可能和我不一样)



Xshell就是一个远程控制Centos的软件;(用XShell比较方便,试用的都知道,界面也人性化)

详细介绍请看 百度百科


我随便百度下载了一个中文版的 给下地址  

链接:https://pan.baidu.com/s/1hf0KX73eqfUrIYWTwhzqjg 密码:47bw


下面我们来安装下这个工具:

双击exe 

1.jpg


点下一步:

2.jpg


选 免费的 然后下一步:(免费的功能足够用了)

3.jpg


点接受,然后下一步:

4.jpg


选一个位置:然后下一步:

5.jpg


下一步:

6.jpg


安装:

7.jpg


OK 点完成;


8.jpg


这里我们要新建一个连接:


9.jpg


点新建:


10.jpg


这里我们输入名称,主机地址 协议 ssh 端口 22 不用改;


11.jpg


我们再保存下 连接主机的用户名和密码:

12.jpg


然后点 确定:

13.jpg


选中 连接:

14.jpg


这样我们就连上了 192.168.1.107 虚拟机的Centos了。我们通过这个工具,能更方便的管理多台服务器;


QQ鎴浘20170613174345.jpg


首先解释下这块, root代表当前登录用户,localhost代表主机名, ~代表当前主机目录,#代表用户权限 #表示超级用户,$表示普通用户;


查询目录中内容命令 ls  (list缩写)

格式 ls [选项]  [文件或目录]

选项:

  -a 显示所有文件,包括隐藏文件

  -l  显示详细信息

  -d 查看目录属性

  -h 人性化显示文件大小

  -i  显示inode


超级用户root默认的当前目录是 root目录 

我们可以用pwd命名(Print Working Directory 打印当前工作目录)看到

QQ鎴浘20170613175137.jpg

我们打印下当前目录下文件信息:

[root@localhost ~]# ls

anaconda-ks.cfg


只有一个文件



假如我们要列出所有文件  用 ls -a 把隐藏文件也显示出来

[root@localhost ~]# ls -a

.   anaconda-ks.cfg  .bash_logout   .bashrc  .tcshrc

..  .bash_history    .bash_profile  .cshrc


多了一些文件


我们也可以看其他目录的文件:

[root@localhost ~]# ls /etc/

adjtime                   modprobe.d

aliases                   modules-load.d

aliases.db                motd

alternatives              mtab

anacrontab                my.cnf

asound.conf               my.cnf.d

audisp                    NetworkManager

audit                     networks


同样也可以看具体某个文件

[root@localhost ~]# ls -l /etc/vconsole.conf

-rw-r--r--. 1 root root 37 6月  10 05:23 /etc/vconsole.conf


我们用 -l 或者 -la 组合 列出详细信息;

[root@localhost ~]# ls -l

总用量 4

-rw-------. 1 root root 1237 6月  10 05:24 anaconda-ks.cfg

[root@localhost ~]# ls -la

总用量 24

dr-xr-x---.  2 root root  135 6月  11 21:13 .

dr-xr-xr-x. 17 root root  224 6月  10 05:23 ..

-rw-------.  1 root root 1237 6月  10 05:24 anaconda-ks.cfg

-rw-------.  1 root root    0 6月  11 21:13 .bash_history

-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout

-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile

-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc

-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc

-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc

[root@localhost ~]# 


这里第一列 比如 dr-xr-xr-x.  代表文件类型以及所有者,所属组以及其他者权限

第一位d代表文件类型 常见的有   - 文件 d目录 | 软件链接文件

后面9位 每3位一个组 分别是 所有者u 所属组g 以及 其他者o的权限

权限分三种 r读  w写   x执行

比如  dr-xr-xr-x  这个目录 所有者 所属组 以及其他者 都有 读和执行权限;

比如  -rw------- 这个文件  所有者有读写权限 所属组以及其他者没有权限;


第二列 那个数字  是 硬链接次数 后面再说;


第三列 root  是 所有者;


第四列 root 是 所属组;


第五列 是文件大小;假如看不惯  可用 ls -lh 

[root@localhost ~]# ls -lh

总用量 4.0K

-rw-------. 1 root root 1.3K 6月  10 05:24 anaconda-ks.cfg


第六列的日期是该文件最后一次修改时间;


最后一列 是文件名称;


查看目录属性 要加 -d

[root@localhost ~]# ls -ld /etc/

drwxr-xr-x. 78 root root 8192 6月  13 15:50 /etc/

[root@localhost ~]# 


查看文件的inode属性 类似 主键 唯一识别文件的Id 用 -i

[root@localhost ~]# ls -li

总用量 4

33574979 -rw-------. 1 root root 1237 6月  10 05:24 anaconda-ks.cfg

[root@localhost ~]# 


33574979 就是inode属性


linux中 关于目录 有几个重要概念

一个是 / 根目录  还有一个当前用户的家目录 比如 root用户的家目录是 /root  普通用户的家目录是/home/xxx 下


root登录 默认家目录 是root 我们这里先用 cd .. 进入 / 根目录

[root@localhost ~]# cd ..

[root@localhost /]# 


然后我们看下 根目录  / 下有哪些目录 

[root@localhost /]# ls 

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

[root@localhost /]# 


我们用 cd 回到家目录

[root@localhost /]# cd

[root@localhost ~]# 


创建目录命令  mkdir (make directories)

比如在/root 下建一个 书籍目录

[root@localhost ~]# mkdir 书籍

[root@localhost ~]# ls

anaconda-ks.cfg  书籍

[root@localhost ~]# 


假如我们要递归创建目录和文件

[root@localhost ~]# mkdir 书籍2/java编程思想

mkdir: 无法创建目录"书籍2/java编程思想": 没有那个文件或目录

 发现失败了 默认不准递归创建 要递归创建的话 家-p

[root@localhost ~]# mkdir -p 书籍2/java编程思想

[root@localhost ~]# ls

anaconda-ks.cfg  书籍  书籍2

[root@localhost ~]# ls /root/书籍2/

java编程思想

[root@localhost ~]# 


切换所在目录,cd (change directory)

 

简化操作

cd ~     进行当前用户的家目录

cd 

cd - 进入上次目录

cd .. 进入上一级目录

cd . 进入当前目录


我们先进入 /root/书籍2/ 目录

然后cd ~ 回到家目录 /root/

然后 cd - 进入上次目录 也就是 /root/书籍2/ 目录

再cd.. 进入 /root/目录

cd .没啥意义(注意cd后面要加个空格);

[root@localhost ~]# cd /root/书籍2/

[root@localhost 书籍2]# cd ~

[root@localhost ~]# cd -

/root/书籍2

[root@localhost 书籍2]# cd ..

[root@localhost ~]# cd.

-bash: cd.: 未找到命令

[root@localhost ~]# cd .

[root@localhost ~]# 


目录补全以及命名补全  tag键

比如 切换目录 /usr 假如记不清楚 直接 /u 然后 tag键,则自动补全;

[root@localhost ~]# cd .

[root@localhost ~]# cd /usr/

[root@localhost usr]# 


比如要输入一些命令 useradd 假如记不清出了 

直接输入 user 然后tab键 

[root@localhost ~]# user

useradd     userdel     usermod     usernetctl  users

[root@localhost ~]# useradd 

会把所有user开头的命令都显示出来;


pwd命令(print working directory)打印工作目录

就是打印当前位置

[root@localhost ~]# pwd

/root

[root@localhost ~]# 


删除空目录: rmdir (remove empty directories)

rmdir [目录名]

我们删除root下的空目录 书籍 试下

[root@localhost ~]# ls

anaconda-ks.cfg  书籍  书籍2

[root@localhost ~]# rmdir 书籍/

[root@localhost ~]# ls

anaconda-ks.cfg  书籍2

[root@localhost ~]# 

发现没问题

我们删除 书籍2目录时,

[root@localhost ~]# rmdir 书籍2/

rmdir: 删除 "书籍2/" 失败: 目录非空

[root@localhost ~]# 

报错了,因为 书籍2 目录 非空;

这里的话 假如要删除 书籍2 目录 我们需要先把书籍2里面的文件或者目录先删除,然后才能删除书籍2目录,

这个是非常不现实的,所以 rmdir命令了解即可,以后基本不用的。


删除文件或目录:rm  (remove)

rm -rf [文件或目录]

选项: 

-r 删除目录

-f 强制

我们用 touch命令新建一个空文件

然后用rm命令删除

[root@localhost ~]# touch java牛

[root@localhost ~]# ls

anaconda-ks.cfg  java牛  书籍2

[root@localhost ~]# rm java牛

rm:是否删除普通空文件 "java牛"?n

[root@localhost ~]# ls

anaconda-ks.cfg  java牛  书籍2

[root@localhost ~]# rm java牛

rm:是否删除普通空文件 "java牛"?y

[root@localhost ~]# ls

anaconda-ks.cfg  书籍2

[root@localhost ~]# 

删除文件会提醒是否删除,输入n 不删除 输入y 删除;

假如我们删除 书籍2 目录

[root@localhost ~]# rm 书籍2/

rm: 无法删除"书籍2/": 是一个目录

报错,假如要用rm删除目录,必须 加 -r

[root@localhost ~]# rm -r 书籍2/

rm:是否进入目录"书籍2/"? y

rm:是否删除目录 "书籍2/java编程思想"?y

rm:是否删除目录 "书籍2/"?y

[root@localhost ~]# ls

anaconda-ks.cfg

依然提示我们是否要删除,假如有一万个文件 那得输入y到手麻;

我们用 mk -rf 来强制删除 无需提醒

[root@localhost ~]# mkdir -p 书籍2/java编程思想

[root@localhost ~]# ls

anaconda-ks.cfg  书籍2

[root@localhost ~]# rm -rf 书籍2/

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]# 

这样方便很多  直截了当;以后用删除 就用 rm -rf 命令即可;


复制命令:cp   (copy)

cp [选项] [源文件或目录] [目标目录]

选项:

-r 复制目录

-p 连带文件属性复制

-d 若源文件是链接文件,则复制链接属性

-a 相当于 -pdr

我们复制下文件

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]# cp anaconda-ks.cfg /tmp/abc

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]# ls /tmp/

abc

ks-script-p0Ci4J

systemd-private-12ece3aaa1eb44678dbf684dbccbc32f-vmtoolsd.service-xjTV7r

systemd-private-3588b18d27f94b80849d22621ef2defb-vmtoolsd.service-wmk7Jt

systemd-private-90f54554da784e52aeb890d207e41094-vmtoolsd.service-I8F1Yy

systemd-private-d5f08625d54e4ed3a0faa9b9fb944db5-vmtoolsd.service-4rHPpX

systemd-private-f68c251a6a6c46ac94b4c1e73090ef59-vmtoolsd.service-S6J6U0

systemd-private-f7cb736915b24ef2b72faee1ec860c6d-vmtoolsd.service-ldpfcl

yum.log

把 root下的anaconda-ks.cfg复制到了 tmp下 并且重名为 abc

假如 cp anaconda-ks.cfg /tmp/abc 不加文件名 则新文件名称不变

[root@localhost ~]# cp anaconda-ks.cfg /tmp/

[root@localhost ~]# ls /tmp/

abc

anaconda-ks.cfg

ks-script-p0Ci4J

systemd-private-12ece3aaa1eb44678dbf684dbccbc32f-vmtoolsd.service-xjTV7r

systemd-private-3588b18d27f94b80849d22621ef2defb-vmtoolsd.service-wmk7Jt

systemd-private-90f54554da784e52aeb890d207e41094-vmtoolsd.service-I8F1Yy

systemd-private-d5f08625d54e4ed3a0faa9b9fb944db5-vmtoolsd.service-4rHPpX

systemd-private-f68c251a6a6c46ac94b4c1e73090ef59-vmtoolsd.service-S6J6U0

systemd-private-f7cb736915b24ef2b72faee1ec860c6d-vmtoolsd.service-ldpfcl

yum.log


假如复制目录:

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]# mkdir -p 书籍2/java编程思想

[root@localhost ~]# ls

anaconda-ks.cfg  书籍2

[root@localhost ~]# cp 书籍2/ /tmp/

cp: 略过目录"书籍2/"

我们需要加 -r

[root@localhost ~]# cp -r 书籍2/ /tmp/

[root@localhost ~]# ls /tmp/

abc

anaconda-ks.cfg

ks-script-p0Ci4J

systemd-private-12ece3aaa1eb44678dbf684dbccbc32f-vmtoolsd.service-xjTV7r

systemd-private-3588b18d27f94b80849d22621ef2defb-vmtoolsd.service-wmk7Jt

systemd-private-90f54554da784e52aeb890d207e41094-vmtoolsd.service-I8F1Yy

systemd-private-d5f08625d54e4ed3a0faa9b9fb944db5-vmtoolsd.service-4rHPpX

systemd-private-f68c251a6a6c46ac94b4c1e73090ef59-vmtoolsd.service-S6J6U0

systemd-private-f7cb736915b24ef2b72faee1ec860c6d-vmtoolsd.service-ldpfcl

yum.log

书籍2


这里我们用 ls -l  或者缩写命令 ll 来看下 文件的详细信息:

QQ鎴浘20170618103556.jpg

时间不一样;第二个是复制文件的当前时间;

假如我们需要把目录或者文件的属性一起复制 我们加 -a命名;

11.jpg


剪切或改名命令:mv  (move)

mv [原文件或目录] [目标目录]

我们把 root下的 书籍2 剪切到 tmp 下 并且重命名

[root@localhost ~]# ls

anaconda-ks.cfg  书籍2

[root@localhost ~]# mv 书籍2 /tmp/书籍2哈哈

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]# ls /tmp/

abc

anaconda-ks.cfg

ks-script-p0Ci4J

systemd-private-12ece3aaa1eb44678dbf684dbccbc32f-vmtoolsd.service-xjTV7r

systemd-private-3588b18d27f94b80849d22621ef2defb-vmtoolsd.service-wmk7Jt

systemd-private-90f54554da784e52aeb890d207e41094-vmtoolsd.service-I8F1Yy

systemd-private-d5f08625d54e4ed3a0faa9b9fb944db5-vmtoolsd.service-4rHPpX

systemd-private-f68c251a6a6c46ac94b4c1e73090ef59-vmtoolsd.service-S6J6U0

systemd-private-f7cb736915b24ef2b72faee1ec860c6d-vmtoolsd.service-ldpfcl

yum.log

书籍2

书籍2哈哈


假如在同一个目录 那就是重新命令操作了

[root@localhost ~]# ls

anaconda-ks.cfg

[root@localhost ~]# mkdir -p 书籍2/java.pdf

[root@localhost ~]# ls

anaconda-ks.cfg  书籍2

[root@localhost ~]# mv 书籍2/ 牛逼/

[root@localhost ~]# ls

anaconda-ks.cfg  牛逼

[root@localhost ~]# ls 牛逼/

java.pdf

[root@localhost ~]# 


我们先切换到系统根目录 / 看看根目录下有哪些目录

[root@localhost ~]# cd /

[root@localhost /]# ls

bin   dev  home  lib64  mnt  proc  run   srv  tmp  var

boot  etc  lib   media  opt  root  sbin  sys  usr

[root@localhost /]# 


这里首先看下 根目录/ 下的 bin 和 sbin;

在user下也有bin和sbin

[root@localhost /]# ls usr/

bin  games    lib    libexec  sbin   src

etc  include  lib64  local    share  tmp

[root@localhost /]# 


根目录下的bin和sbin,usr目录下的bin和sbin,

这四个目录都是用来保存系统命令的。


bin: 

bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。


/usr/bin:

主 要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。 


/sbin: 

主 要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。


/usr/sbin:


放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等


bin目录下的命令普通用户和root用户都可以执行,

但是sbin下的命令只有root用户可以执行;


/boot目录,是启动目录,存的是启动相关的文件

该目录下不要乱存东西;


/dev设备文件保存目录

/etc配置文件保存目录

/home普通用户的家目录

/lib系统库保存目录

/mnt系统挂载目录

/media挂载目录

/root超级用户的家目录

/tmp临时目录

/proc直接写入内存的,虚拟文件系统

/sys直接写入内存的,虚拟文件系统

/var系统相关文档内容

locate命令

locate 文件名

在后台数据库中按文件名搜索,搜索速度更快


 /var/lib/mlocate

#locate命令所搜索的后台数据库


updatedb

更新数据库


locate搜索速度比较快;


[root@localhost ~]# ls

222  anaconda-ks.cfg  牛逼

[root@localhost ~]# locate 牛

-bash: locate: 未找到命令


我们用locate命令的时候 发现 为找到命令,我们用Yum命令远程安装下locate

[root@localhost ~]# yum -y install mlocate

已加载插件:fastestmirror

base                                   | 3.6 kB     00:00     

extras                                 | 3.4 kB     00:00     

updates                                | 3.4 kB     00:00     

(1/4): extras/7/x86_64/primary_db        | 168 kB   00:00     

(2/4): base/7/x86_64/group_gz            | 155 kB   00:02     

(3/4): base/7/x86_64/primary_db          | 5.6 MB   00:04     

updates/7/x86_64/primary_db    FAILED                                          

http://mirrors.nju.edu.cn/centos/7.3.1611/updates/x86_64/repodata/01ced03ac066a40f0d778eda08908656cc9f5b2f6433274ed482582f9d86c88a-primary.sqlite.bz2: [Errno 12] Timeout on http://mirrors.nju.edu.cn/centos/7.3.1611/updates/x86_64/repodata/01ced03ac066a40f0d778eda08908656cc9f5b2f6433274ed482582f9d86c88a-primary.sqlite.bz2: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')

正在尝试其它镜像。

(4/4): updates/7/x86_64/primary_db                     | 5.7 MB   00:01     

Determining fastest mirrors

 * base: mirrors.163.com

 * extras: mirrors.163.com

 * updates: mirrors.163.com

正在解决依赖关系

--> 正在检查事务

---> 软件包 mlocate.x86_64.0.0.26-6.el7 将被 安装

--> 解决依赖关系完成


依赖关系解决


============================================================================

 Package          架构            版本                  源             大小

============================================================================

正在安装:

 mlocate          x86_64          0.26-6.el7            base          113 k


事务概要

============================================================================

安装  1 软件包


总下载量:113 k

安装大小:378 k

Downloading packages:

警告:/var/cache/yum/x86_64/7/base/packages/mlocate-0.26-6.el7.x86_64.rpm:  头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY

mlocate-0.26-6.el7.x86_64.rpm 的公钥尚未安装

mlocate-0.26-6.el7.x86_64.rpm                          | 113 kB   00:01     

从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥

导入 GPG key 0xF4A80EB5:

 用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"

 指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5

 软件包     : centos-release-7-3.1611.el7.centos.x86_64 (@anaconda)

 来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  正在安装    : mlocate-0.26-6.el7.x86_64                               1/1 

  验证中      : mlocate-0.26-6.el7.x86_64                               1/1 


已安装:

  mlocate.x86_64 0:0.26-6.el7                                               


完毕!


这样就安装完了。


[root@localhost ~]# locate 牛

/root/牛逼

/root/牛逼/java.pdf


这样 我们就能测试通过;


假如我们新建一个文件,然后再搜索

[root@localhost ~]# touch 牛牛

[root@localhost ~]# ls

222  anaconda-ks.cfg  牛逼  牛牛

[root@localhost ~]# locate 牛

/root/牛逼

/root/牛逼/java.pdf


我们发现 搜索不了。

原因是 locate命令搜索的是 /var/lib/mlocate 下的mlocate.db数据库

这个数据库不是实时更新的,所以我们需要更新下数据库;


我们updatedb下,然后再搜索

[root@localhost ~]# updatedb

[root@localhost ~]# locate 牛

/root/牛牛

/root/牛逼

/root/牛逼/java.pdf

[root@localhost ~]# 

结果就出来了;


locate优点是 搜索速度快 ,缺点是只能按文件名搜索;


更新数据库配置文件/etc/updatedb.conf配置文件

我们用vi打开下

[root@localhost ~]# vi /etc/updatedb.conf 


PRUNE_BIND_MOUNTS = "yes"

PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"

PRUNENAMES = ".git .hg .svn"

PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

~                                                                           

"/etc/updatedb.conf" 4L, 513C


这里PRUNE_BIND_MOUNTS="yes"开启搜索限制

PRUNEFS = 搜索时,不搜索的文件系统

PRUNENAMES = 搜索时,不搜索的文件类型

PRUNEPATHS = 搜索时,不搜索的路径


比如这里的tmp路径的文件 默认配置是搜索不到的;


链接命令:ln  (link)

ln -s [源文件] [目标文件]

功能描述:生成链接文件

选项: -s 创建软链接


硬链接特征:

1,拥有相同的i节点和存储block块,可以看作是同一个文件;

2,可通过i节点识别;

3,不能跨分区;

4,不能针对目录使用;


我们把/root下的anaconda-ks.cfg创建一个硬链接到/tmp下

[root@localhost ~]# ls

anaconda-ks.cfg  牛逼

[root@localhost ~]# ln /root/anaconda-ks.cfg /tmp/ana.hard

[root@localhost ~]# ll

总用量 4

-rw-------. 2 root root 1237 6月  10 05:24 anaconda-ks.cfg

drwxr-xr-x. 3 root root   22 6月  18 11:03 牛逼

[root@localhost ~]# ll /tmp/

总用量 16

-rw-------. 1 root root 1237 6月  18 10:12 abc

-rw-------. 1 root root 1237 6月  18 10:16 anaconda-ks.cfg

-rw-------. 2 root root 1237 6月  10 05:24 ana.hard

-rwx------. 1 root root  836 6月  10 05:24 ks-script-p0Ci4J

drwx------. 3 root root   17 6月  12 23:50 systemd-private-12ece3aaa1eb44678dbf684dbccbc32f-vmtoolsd.service-xjTV7r

drwx------. 3 root root   17 6月  17 17:42 systemd-private-3588b18d27f94b80849d22621ef2defb-vmtoolsd.service-wmk7Jt

drwx------. 3 root root   17 6月  16 04:51 systemd-private-90f54554da784e52aeb890d207e41094-vmtoolsd.service-I8F1Yy

drwx------. 3 root root   17 6月  10 05:26 systemd-private-d5f08625d54e4ed3a0faa9b9fb944db5-vmtoolsd.service-4rHPpX

drwx------. 3 root root   17 6月  14 06:38 systemd-private-f68c251a6a6c46ac94b4c1e73090ef59-vmtoolsd.service-S6J6U0

drwx------. 3 root root   17 6月  11 04:08 systemd-private-f7cb736915b24ef2b72faee1ec860c6d-vmtoolsd.service-ldpfcl

-rw-------. 1 root root    0 6月  10 05:19 yum.log

drwxr-xr-x. 3 root root   30 6月  18 10:24 书籍2

drwxr-xr-x. 3 root root   30 6月  18 10:24 书籍2哈哈

[root@localhost ~]# 


看着基本一样;


我们用vi 打开文件 vi /root/anaconda-ks.cfg

QQ鎴浘20170619113124.jpg


我们随便修改下这个文件 (不要担心,这个文件是安装时候产生的,就算删除了也没事)

然后 esc  :wq 保存并且退出;


我们打开/tmp下的ana.hard文件

QQ鎴浘20170619114057.jpg

我们发现 硬链接内容也变了;


假如我们修改 硬链接里的内容,anaconda-ks.cfg里的同样修改;(大伙自己测试下)

这里说明同一个文件相当于有两个入口,我们可以查看下两个入口的inode;

[root@localhost ~]# ls -i /root/anaconda-ks.cfg /tmp/ana.hard 

33574979 /root/anaconda-ks.cfg  33574979 /tmp/ana.hard

[root@localhost ~]# 

我们发现 inode节点号一样;


就算我们把其中一个删除,也不会影响文件另外一个的访问;(大伙如果舍不得删除这个文件,可以自己新建文件测试)


硬链接的一些特性,比如不能跨分区,不能针对目录使用,以及容易误操作文件。所以我们一般不推荐使用,我们推荐使用软链接,类似windows里的快捷方式;


软链接特征:

1,类似Windows快捷方式;

2,软链接拥有自己的I节点和Block块,但是数据块中只保存原有文件的文件名和I节点号,并没有实际的文件数据;

3,lrwxrwxrwx l 软链接 软链接文件权限都为 rwxrwxrwx

4,修改任意文件,另一个都改变;

5,删除原文件,软链接不能使用;


软链接和硬链接的重要区别是 假如把原文件删除,软链接则不能用,但是假如是硬链接,删除原文件的话,不影响硬链的使用;


我们在root下 用touch命令新建一个a文件

然后用echo命令追加点内容进入 ,再用cat命令打印下内容

[root@localhost ~]# touch a

[root@localhost ~]# echo 1111 >> /root/a

[root@localhost ~]# cat /root/a

1111

[root@localhost ~]# 


然后在/tmp/下创建一个软链接

 ln -s /root/a /tmp/a.soft


我们来看下这个两个文件的inode节点

[root@localhost ~]# ll -i /tmp/a.soft /root/a

33575024 -rw-r--r--. 1 root root 5 6月  19 16:01 /root/a

17066258 lrwxrwxrwx. 1 root root 7 6月  19 16:41 /tmp/a.soft -> /root/a


我们发现是不一样的,我们可以把软链接理解成是指向原文件的引用 存的仅仅是地址,这样,假如原文件删除了,那软链接就没啥用了。但是这里 我们无论是修改两个文件的任意一个,另外一个始终能看到最终结果;

[root@localhost ~]# echo 2222 >> /root/a

[root@localhost ~]# cat /root/a

1111

2222

[root@localhost ~]# cat /tmp/a.soft

1111

2222

[root@localhost ~]# 


我们修改了原文件a 然后我们打开软链接 能看到结果

[root@localhost ~]# echo 3333 >> /tmp/a.soft

[root@localhost ~]# cat /tmp/a.soft

1111

2222

3333

[root@localhost ~]# cat /root/a

1111

2222

3333

[root@localhost ~]# 

我们修改软链接,用a.soft 和a打开 都能看到最终结果;


假如我们删除原文件

[root@localhost ~]# rm -rf /root/a

[root@localhost ~]# cat /tmp/a.soft

cat: /tmp/a.soft: 没有那个文件或目录

[root@localhost ~]# 

我们打开软链接 报错。


Centos之命令搜索命令whereis与which


whereis 命令名

#搜索命令所在路径及帮助文档所在位置

选项:

 -b :只查找可执行文件位置

 -m:只查找帮助文件


[root@localhost ~]# whereis ls

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

[root@localhost ~]# whereis -b ls

ls: /usr/bin/ls

[root@localhost ~]# whereis -m ls

ls: /usr/share/man/man1/ls.1.gz

我们可以查到ls命令的位置以及帮助文档的位置



which 文件名

搜索命令所在路径及别名

[root@localhost ~]# which ls

alias ls='ls --color=auto'

/usr/bin/ls



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值