Linux-2 文件管理(vi 和vim)

在linux系统中一切皆文件

1.Linux目录结构

1.1 WINDOWS/LINUX 对比

Windows: 以多根的方式组织文件 C:\ D:\ E:
Linux: 以单根的方式组织文件"/"

路径:是由 “/”和目录和文件名称两个部分组成。

1.2 简介

 

/目录结构:
FSH (Filesystem Hierarchy Standard):标准的目录结构
[root@linux-server ~]# ls /
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

1.3 图示

image.png

1.4 目录功能

 

bin 普通用户使用的命令 /bin/ls, /bin/date
sbin 管理员使用的命令 /sbin/service 
# 用 which 查看
案例:
[root@linux-server ~]# which ls   
[root@linux-server ~]# which useradd
/usr/sbin/useradd

dev 设备文件 /dev/sda,/dev/sda1
[root@linux-server ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Oct 31 14:16 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 31 14:16 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 31 14:16 /dev/sda2
[root@linux-server ~]# tty  #查看终端
/dev/pts/0  #这是我们的终端。

/root  #root用户的家目录
/home  #存储普通用户家目录 
lost+found 这个目录平时是空的,存储系统非正常关机而留下“无家可归”
的文件
/usr         #系统文件,相当于C:\Windows
/usr/local   #软件安装的目录,相当于C:\Program
/usr/bin    #普通用户使用的应用程序
/usr/sbin   #管理员使用的应用程序
/usr/lib       库文件Glibc 32bit
/usr/lib64    库文件Glibc 64bit
/boot        存放的系统启动相关的文件,例如kernel
/etc         #配置文件(系统相关如网络/etc/sysconfig/network)
/tmp         临时文件(系统:程序产生的临时文件)
/opt         空目录

/var  #存放的是一些变化文件,比如数据库,日志,邮件....
/proc #虚拟文件系统,系统程序文件所处目录 。虚拟文件系统:只要关机就会没有。
==设备(主要指存储设备)挂载目录==
/mnt   #系统提供这个目录是让用户临时挂载其他的文件系统

查看历史命令

 

[root@linux-server ~]# history
[root@linux-server ~]# clear  #清屏
快捷键:ctrl+l  #---清屏

2.文件管理

2.1 文件类型(理解即可)

 

 - 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
 d 目录文件(蓝色)
 b 设备文件  block device 设备文件,如硬盘U盘;
 c 设备文件 字符设备文件,比如我们的终端tty1,打印机。
 l symbolic link 即符号链接文件,又称软链接文件 (浅蓝色)
 s  socket 即套接字文件,用于实现两个进程进行通信
 p  管道文件

2.2示例1

查看各式各样的文件类型。你能找出几种呢?

 

[root@linux-server ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
-rwxr-xr-x. 1 root root 117656 Nov  6  2016 /bin/ls
srw-rw-rw-. 1 root root      0 Oct 31 14:16 /dev/log
brw-rw----. 1 root disk   8, 0 Oct 31 14:16 /dev/sda
crw--w----. 1 root tty    4, 1 Oct 31 14:42 /dev/tty1
lrwxrwxrwx. 1 root root     22 Oct 31 12:11 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root    158 Jun  7  2013 /etc/hosts
drwxr-xr-x. 2 root root      6 Nov  5  2016 /home
prw-------. 1 root root      0 Oct 31 14:16 /run/dmeventd-client

注意

通过颜色判断文件的类型是不一定正确的!!!
Linux系统中文件是没有扩展名!!!

3.文件管理命令

路径分类

 

绝对路径:从根开始的路径是绝对路径。案例:/home/alice/file1
相对路径:相对于当前位置开始的为相对路径。

绝对路径实例:

 

[root@linux-server ~]# useradd alice  #创建用户
[root@linux-server ~]# touch /home/alice/file1

相对路径示例:

 

[root@linux-server ~]# pwd
/root
[root@linux-server ~]# mkdir abc  #创建目录
[root@linux-server ~]# touch abc/file3

3.1 改变目录

 

# cd    绝对路径 cd /home/alice
# cd    相对路径 cd ..
# cd    直接回家

2.2 创建文件

 

[root@linux-server ~]# touch file1.txt  //无则创建,如果存在修改时间
[root@linux-server ~]# touch /home/file10.txt
[root@linux-server ~]# touch /home/file11.txt file12.txt
[root@linux-server ~]# touch /home/{zhuzhu,gougou}
[root@linux-server ~]# touch /home/file{1..20}  //批量创建
[root@linux-server home]# touch soso{a,b,c}  //{}集合,等价touch sosoa touch sosob touch sosoc

2.3 创建目录

语法:mkdir -v 详细 -p 递归 目录

 

# mkdir dir1
创建两个目录:
# mkdir /home/dir2 /home/dir3
# mkdir /home/{dir4,dir5} 
# mkdir -v /home/{dir6,dir7}   #显示创建时的详细信息
# mkdir -v /home/dir8/111/22
# mkdir -pv /home/dir8/111/222  ##包括其父母的创建,一级一级的创建
# mkdir -pv /home/{yang/{dir1,111},soso}

2.4.复制 cp -r

例如:复制opt/zhao/ming/hua 到 opt/下

cp -r opt/zhao/ming/hua /opt

==复制 cp -r 目录 -v 详细 -f 强制 -n 静默

Usage: cp [OPTION]... [-T] SOURCE DEST

 

# mkdir /home/dir{1,2}  //创建目录
# cp -v anaconda-ks.cfg /home/dir1/  //-v 显示详细信息
# cp -v anaconda-ks.cfg /home/dir1/test.txt  //复制并改文件名
# cp -r /etc /home/dir1 //-r 拷贝文件夹
# cp  -r  源文件1 源文件2 源文件N  目标文件 //将多个文件拷贝到同一个目录
# cp -rv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/passwd /etc/hosts .
# cp -r /etc /tmp
# cp -rf /etc /tmp

2.5 移动

1.创建一个新文件file1

 

[root@linux-server ~]# touch /root/file1

2.把file1文件移动到/tmp目录中。

 

[root@linux-server ~]# mv /root/file1 /tmp/
[root@linux-server ~]# ls /tmp/file1 
/tmp/file1

3.把file1文件更名为file2

 

[root@linux-server ~]# mv /tmp/file1 /tmp/file2

4.观察file1文件已经更名为file2

 

[root@linux-server ~]# cd /tmp/
[root@linux-server tmp]# ls
file2

2.6 删除

==删除 rm -r 递归 -f force强制 -v 详细过程 *通配符

实例1:删除/home/dir1

 

# cd /home/
# rm -rf dir1/

-r 递归
-f force强制
-v 详细过程

示例2:

 

[root@linux-server ~]# mkdir /home/dir10
[root@linux-server ~]# touch /home/dir10/{file2,file3,.file4}
[root@linux-server ~]# rm -rf /home/dir10/*  //不包括隐藏文件
[root@linux-server ~]# ls /home/dir10/ -a 
.  ..  .file4

示例3:

 

[root@linux-server ~]# touch {1..10}.txt
[root@linux-server ~]# touch file{1..20}.txt  #创建file1-10的txt文件
[root@linux-server ~]# rm -rf file1*

2.7 查看文件内容

cat全部

 

[root@linux-server ~]# cat /etc/passwd
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
...

参数:
-n 显示行号
-A 包括控制字符(换行符/制表符)

head头部

 

[root@linux-server ~]# head /etc/passwd  //默查看前十行
[root@linux-server ~]# head -2 /etc/passwd  //默认查看前两行

tail尾部

 

[root@linux-server ~]# tail /etc/passwd //默认查看文件的后十行
[root@linux-server ~]# tail -1 /etc/passwd  //查看文件最后一行
[root@linux-server ~]# tail /var/log/messages
[root@linux-server ~]# tail -f /var/log/secure  //-f 动态查看文件的尾部
[root@linux-server ~]# tail -F /var/log/secure  //-f 动态查看文件的尾部

grep过滤关键字 grep 针对文件内容进行过滤

 

过滤文件中带有root的内容:
[root@linux-server ~]# grep 'root' /etc/passwd
过滤以root开头的行:^ --以什么开头
[root@linux-server ~]# grep '^root' /etc/passwd
过滤以bash结尾的行:$ --以什么结尾
[root@linux-server ~]# grep 'bash$' /etc/passwd
过滤日志中带有failure的行:
[root@linux-server ~]# grep 'failure' /var/log/secure

less --分页显示

 

[root@linux-server ~]# less /etc/makedumpfile.conf.sample
1.空格键是翻页  回车键是翻行
2.上下箭头可以来回翻
3.快捷键:q -quit 退出

作业

 

1.在/opt/test/dir1/test/目录下面创建20个test.txt文件
2.将整个/opt/test/dir1/test/目录拷贝到/mnt/dir2目录中
3.将/mnt/dir2/test/目录中的file2.txt 改名为file300
4.将/mnt/dir2/test/目录中以txt结尾的文件删除。查看留下的文件

2.8 修改文件内容

VI 与vim的三个模式

image.png

命令模式

 

光标定位键盘:
hjkl        #上下左右
0 $         #行首行尾
gg          #页首
G(shift+g)  #页尾
3G           #进入第三行
/string     #查找字符,n下一个,N上一个    (n N 可以循环的)
o           #下一行
O           #上一行

文本编辑

 

 yy      #复制 
 3yy     #从光标开始复制3行。在最后粘贴
 ygg     #从当前光标复制到行首
 yG      #从光标开始复制到行尾
 d       #剪切一行
 dd      #剪切一行
 3dd     #从光标开始删除3行
 dgg     #从光标开始删除到行首 
 dG      #从光标开始删除到行尾 
 p       #粘贴到本行的下一行
大P      #粘贴到本行的上一行
 x       #删除光标所在的字符
 D       #从光标处删除到行尾
 u       #undo撤销
 r       #可以用来修改一个字符

进入其它模式:

 

 a    #在当前光标后面进入插入模式
 i    #在光标所在处进入插入模式
 A    #在行尾进入插入模式
 shift+:    #进入末行模式(扩展命令模式)
 ctrl+v     #进入可视块模式
 shift+v    #进入可视行模式

扩展命令模式:

 

 :10    #进入第10行 
 :w     #保存 
 :q     #退出 
 :wq    #保存并退出 
 :q!    #不保存并退出 
 :wq! 强制保存退出

查找替换

 

语法----> :范围 s/old/new/选项 
:1,5 s/nologin/soso/   #从1-5行的nologin 替换为soso
:%s/bin/soso/g  #全局
注释:%表示全文  g表示全局

读入文件/写文件(另存为)
语法----> :w 存储到当前文件
:w /tmp/aaa.txt    #另存为/tmp/aaa.txt 
:1,3 w /tmp/2.txt  #从1-3行的内容另存为/tmp/2.txt

**设置环境 : **

 

:set nu    #设置行号 
:set list  #显示控制字符
:set nonu  #取消设置行号 

**2.9 文件基本信息 **

时间类型

访问时间:atime,查看内容 //RHEL6会延后修改atime
修改时间:mtime,修改内容
改变时间:ctime,文件属性,比如权限,mv改名

查询示例

 

[root@linux-server ~]# ls -l passwd 
-rw-r--r--. 1 root root 839 Oct 31 21:29 passwd

[root@linux-server ~]# stat passwd 
  File: ‘passwd’
  Size: 839         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 33583688    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-10-31 21:29:40.750993492 +0800
Modify: 2019-10-31 21:29:36.449993550 +0800
Change: 2019-10-31 21:29:36.452993550 +0800
 Birth: -

ls -l 文件名 仅看的是文件的修改时间

Linux用户管理

1 用户概览

1.1. 用户/组基本概念!

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

Users and groups:

系统上的每个进程(运行的程序)都是作为特定用户运行的

. Every file is owned by a particular user.

每个文件是由一个特定的用户拥有 .

. Access to files and directories are restricted by user.

访问文件和目录受到用户的限制

2 用户管理

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

2.1 用户组

 

[root@linux-server ~]# groupadd hr   //创建一个用户组叫hr
[root@linux-server ~]# groupadd market  //创建一个用户组叫market
[root@linux-server ~]# groupadd net01 -g 2000  //创建组叫net01,并指定gid为2000
[root@linux-server ~]# grep 'net01' /etc/group  //查看/etc/group中组net01信息
net01:x:2000:
[root@linux-server ~]# groupdel net01  //删除组net01

 

/etc/group  ----->查看组的文件
/etc/gshadow  --->组的密码文件

/etc/group文件详解:

 

组名:组名是用户组的名称,由字母或数字构成,组名不应重复。

口令:口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
组标识号(gid):组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.

组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

2.2 用户

==创建用户 未指定选项==

 

[root@linux-server ~]# useradd user01   //创建用户

 

账户为分两类:
系统账户 :uid号码小于1000.
普通账户:uid 大于1000,登陆shell是bin/bash。
任何一个账户在创建的同时都会在系统里面创建一个同名的组。

 

/etc/passwd  ---->查看账户是否存在的文件
/home/  ---->用户的家目录,每创建一个用户会在/home目录下面创建对应的家目录
/etc/shadow   --->用户的密码文件

/etc/passwd文件详解--案例:

 

[root@linux-server ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
分隔符::
第一列:用户名
第二列:密码
第三列:用户标识号--->(uid)是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,
第四列:gid
第五列:描述信息。
第六列:家目录
第七列:是用户登陆到界面的第一个命令,开启一个shell。登陆shell

 

[root@linux-server ~]# id user01   //查看用户的uid、gid、和所在组
uid=1001(user01) gid=1003(user01) groups=1003(user01)

2.3.创建用户(带有选项)

 

[root@linux-server ~]# useradd user02 -u 503   //创建用户user02并指定uid为503
[root@linux-server ~]# useradd user05 -s /sbin/nologin  //创建用户并指定shell
[root@linux-server ~]# useradd user07 -G hr,it,fd  //创建用户,指定附加组
[root@linux-server ~]# useradd user10 -u 4000 -s /sbin/nologin

2.4删除用户

 

[root@linux-server ~]# userdel user10 //删除用户user10,但不删除用户家目录和mail
[root@linux-server ~]# ll -d /home/user10/
drwx------. 2 4000 4000 62 Nov  1 12:05 /home/user10/
[root@linux-server ~]# userdel -r user02  //删除用户user2,同时删除用户家目录和mail

==用户密码==

 

[root@linux-server ~]# passwd alice  //root用户可以给任何用户设置密码
[root@linux-server ~]# passwd   //root用户给自己设置密码
[root@linux-server ~]# su - alice
[alice@linux-server ~]$ passwd  //普通用户只能给自己修改密码,而且必须提供原密码

3 组成员管理

注意:只针对已存在的用户

 

                        命令  参数  目标
[root@linux-server ~]# usermod -G it user07  //覆盖原有的附加组
[root@linux-server ~]# usermod -aG hr user07  //增加新的附加组
[root@linux-server ~]# gpasswd -a tom hr   //给组添加用户
Adding user tom to group hr
[root@linux-server ~]# gpasswd -M tom,alice it  //-M:指定组成员
[root@linux-server ~]# gpasswd -d user07 hr   //-d : 从组删除用户
Removing user user07 from group hr

==其它选项管理==

 

[root@linux-server ~]# usermod -s /sbin/nologin user07   //修改用户的登录shell

作业

 

目的:修改一些重要文件前一定要先备份,文件结尾用.bak
1.将/etc/sysconfig/network-scripts/ifcfg-ens33 复制到/tmp下并且重新命名为ifcfg-ens33.bak

2 在/etc/yum.repos.d/ 下创建 yumlist的文件夹。并且在此文件夹下创建 yum.repo文件
3 进入 yum.repo文件 编辑文件内容 hello world
4  将 hello world 复制10行后保存文件。
5 将hello全部替换为 welcome
6 快捷键删除第二行到行尾的文件内容,操作后不要保存,请直接退出
7 将yum.repo文件 移动到/tmp下
8 在/tmp/yum.repo里显示行号
9./etc/passwd   第二段是干什么的?以什么分割?
10.给服务器添加3个账号 xiaozhang  xiaoli  xiaowang
11.修改普通用户xiaowang 和root的密码
12.创建用户jack和tom属于hr,wc组
13.创建用户tony,属于hr,不属于wc组,并且将3个人的密码修改为 qianfeng
14.将/etc/passwd前10行  内容写到 /tmp/passwd下。 然后将4-6行的 root换成haha


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ViVi IMproved)和VimVi IMproved)都是在Linux系统中常用的文本编辑器。Vi是最早的Unix文本编辑器之一,VimVi的增强版本。 Vi是一个基于命令行的文本编辑器,它提供了一系列的命令和快捷键来进行文本编辑。它具有简单的界面和高效的编辑功能,但可能对于新手来说有一定的学习曲线。 Vim是对Vi的改进和扩展,它保留了Vi的所有功能,并添加了许多新功能和改进。Vim提供了更丰富的功能和更友好的用户界面,可以通过配置文件进行自定义设置,并支持各种插件和脚本扩展。 在Linux系统中,你可以使用以下命令来打开ViVim编辑器: ``` vi filename # 打开Vi编辑器并编辑指定的文件 vim filename # 打开Vim编辑器并编辑指定的文件 ``` 一旦进入ViVim编辑器,你可以使用各种命令和快捷键进行文本编辑。例如: - i:进入插入模式,可以开始输入文本 - ESC:退出插入模式,回到命令模式 - :w:保存文件 - :q:退出编辑器 - :wq:保存并退出编辑器 此外,Vim还提供了许多其他功能,如语法高亮、多窗口编辑、宏录制、搜索替换等。你可以通过查阅相关的文档或教程来深入了解ViVim的使用方法和功能。 总结来说,ViVim都是在Linux系统中常用的文本编辑器,Vim是对Vi的增强版本,提供了更多功能和改进。它们都提供了强大的文本编辑功能,但对于新手来说可能需要一些时间来熟悉和掌握。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值