Linux基础篇(8)小白如何学习Linux?文件管理之结构路径及增删改查(上)

##Linux基础篇

前言:

对未来最大的慷慨 就是把一切献给现在”                   

                                                      ——阿尔贝-加缪

    很庆幸我依然拥有着想象的能力 只是单单想象是不够的 人往往都是不知足的 而且盲目乐观 所以想象中的未来 大都比现在的正在前行的自己所能达到的那个目的地更加美好 可我的想象是那么动人 让我怎么舍得不向之奔跑 这种结局与目标之前的差距 大概只有按着加缪的这句话 才能使其缩小

    偶尔也会迷茫 有朋友告诉我 如果有一天你发现自己不再迷茫 那说明你成功了 起码正在过着令自己满意的生活 也许未来的不可知 是我们前进的原动力 写在这里 共勉

一、目录结构

微信图片_20201127144927.png

 #linux一切皆文件的设计思想
/bin:  #bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot: #这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev: #该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:#这个目录用来存放所有的系统管理所需要的配置文件
/home:#用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:#这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:#这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux #系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:#系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:#这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:#是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:#该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:#超级用户的二进制文件,这里存放的是系统管理员使用的系统管理程序。
/srv:#该目录存放一些服务启动之后需要提取的数据。
/sys:#这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
/tmp:#tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:#usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:#系统用户使用的应用程序。
/usr/sbin:#超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src: #内核源代码默认的放置目录。
/var:  #var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:#是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。


1)/etc/目录

特定主机系统范围内的配置文件

/etc/sysconfig/network-script/ifcfg-eth0  #网卡配置文件
/etc/hostname҅     #系统主机名配置文件
/etc/resolv.conf  # dns客户端配置文件
/etc/hosts҅        #本地域名解析配置文件
/etc/rc /etc/rc.d    #/etc/rc*.d 启动、或改变运行级时运行的scripts或scripts的目录.
/etc/hosts           #本地域名解析文件
/etc/resolv.conf     #DNS服务器配置
/etc/fstab           #开机自动挂载系统,所有分区开机都会自动挂载
/etc/inittab         #设定系统启动时Init进程将把系统设置成什么样的runlevel及加载相关的启动文件配置
/etc/exports         #设置NFS系统用的配置文件路径
/etc/init.d/         #这个目录来存放系统启动脚本
/etc/profile         #全局系统环境配置变量
/etc/issue           #认证前的输出信息,默认输出版本内核信息
/etc/motd           #设置认证后的输出信息
/etc/mtab           #当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df 命令
/etc/group           #类似/etc/passwd ,但说明的不是用户而是组.
/etc/passwd          #用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.
/etc/shadow          #在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读.这使破译口令更困难.
/etc/sudoers         #可以sudo命令的配置文件
/etc/syslog.conf     #系统日志参数配置
/etc/shells         #列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在/etc/shells 文件中,如果不是将不允许该用户登录.
/etc/opt/           #/opt/的配置文件
/etc/skel/          #默认创建用户时,把该目录拷贝到家目录下


2)/dev/目录

#/dev目录下的设备文件
/dev/cdrom 和 /dev/sr0҅ #系统光盘镜像设备
/dev/null  #黑洞设备
/dev/random #生成随机数的设备
/dev/zero  # 不断产生数据
/dev/pts/0 #虚拟的bash shell 终端,提供给远程用户使用 0代表第一个终端,1代表第二个终端
/dev/stderr  #错误输出
/dev/stdin҅  #标准输入
/dev/stdout  #标准输出


二、文件的时间

#linux文件有三种时间,用stat命令查看:stat 加文件名
#访问时间:atime,使用cat查看内容。
#修改时间:mtime,修改内容。
#改变时间:ctime,修改改内容,修改权限等属性,凡是有改动都会变。


三、文件的类型

#方式一

ls -l 文件名 //看第一个字符
文件类型
- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 设备文件(块设备)存储设备硬盘,U盘 /dev/sda, /dev/sda1
c 设备文件(字符设备)打印机,终端 /dev/tty1, /dev/zero
s 套接字文件
p 管道文件
l 链接文件(淡蓝色) 相当于windows的快捷方式 
      -        rw-r--r--    1       root  root   0   11月 22 05:13   a.txt
#例:文件类型     权限    硬链接个数  所有者 所属组  大小     修改时间     文件名




#方式二

[root@web01 ~]# file a.txt  # file命令
a.txt: empty


四、路径

#绝对路径示例
touch /home/alice/file1
touch ~alice/file2
#相对路径示例
touch ../file3
touch file4
touch abc/file5


五、文件管理(创建,复制,移动,删除)

1)创建文件

touch file.txt    #无则创建 有则修改时间
touch /home/file1.txt
touch file{1..20}
touch Ego{n,N}.txt   #等同于Egon.txt EgoN.txt



2)创建目录

mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir -v /home/{dir6,dir7}
mkdir -p /home/dir8/111/222  #递归创建



3)复制

cp 源文件  目标文件
cp -v install.log /home/dir1
cp -v install.log /home/dir1/aaa.txt
cp -r /etc /home/dir1
cp install.log /home/dir2
cp anaconda-ks.cfg !$
cp anaconda-ks.cfg /home/dir2
cp -r /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf
/etc/hosts .



4)移动

# mv file2 /home/dir3
# mv file4 file5 #重命名


5)删除

rm -rf dir
-r 递归删除 #也用于删除目录
-f 强制不提示
-v 打印过程


六、查看文件内容

 (cat less more head tail grep)
 more  #翻页查看
 cat -n #显示行号 -A #包括控制字符/换行符
 head -2 #默认头10行 指定2行
 tail -1  #默认后10行 指定后1行
 tail -f /var/log/messages  #实时监测文件的尾部
 grep  #针对文件内容进行过滤
 # grep 'root' /etc/passwd
 # grep --color '^root' /etc/passwd
 grep --color 'bash$' /etc/passwd
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/passwd
/etc/shadow
/etc/group
/etc/grub.conf
/etc/resolv.conf
/var/log/messages #系统的日志文件
===============================================================================
dos2unix  #将windows格式的文件转成unix格式
unix2dos  #将Unix格式的文件系统转换winowns格式


七、修改文件内容(VIM)

1)VIM概念

什么是vim?:vim可以理解为windows下面的文本编辑器比如记事本word文档

它的主要用途是:它可以执行输出,删除,查找,替换,块操作的众多文本操作,而且可以根据自己的需求对文本进行编辑。

为何要用vim? :主要可以用来修改配置,以及编写脚本

vi与vim的区别 :vi不显示高亮颜色语法,vim显示高亮语法,其他功能没有什么区别


2)vim的四种模式

vim编辑器的四种模式:命令模式====>编辑模式====>可视化模式====>末行模式


#模式之间的转换:编辑文件进入命令模式=》按i a o进入编辑模式=》ctrl加v进入可视化模式=》按shift :进入末行模式。按esc返回命令模式 。保存编辑的文件或退出进入末行模式w    q    wq     q!   x   wq! 

3)命令模式

光标定位=> 上下左右键   或 h j k l 键
在光标所在的当前行移动光标 :$行尾        0行首
gg  将光标定位到行首
G    将光标定位到行尾    如;3G是将光标定位到地3行
yy    复制  以行为单位     如:3yy就是复制3行
p    当前光标的下一行粘贴     大P当前光标的上一行进行粘贴
D     从光标处删除到行尾
d    删除   dd删除光标所在的当前行 3dd 删除3行
x    删除光标所在的字符
u    恢复
R   进入替换模式
ctrl -r    执行上一步操作
shift+M   将光标移动到当前页面的中间
shift+L    将光标移动到当前页面的行尾
shift+H   将光标移动到当前页面的行首



4)插入模式

进入到插入模式: i a o s I A O s (这几个进入插入模式的区别)
 i :在光标所在字符前开始插入
 a :在光标所在字符后开始插入
 o :在光标所在行的下面另起一新行插入
 s :删除光标所在的字符并开始插入
 I :在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
 A :在光标所在行的行尾开始插入
 O :在光标所在行的上面另起一行开始插入
 S :删除光标所在行并开始插入



5)可视模式

按ctrl+v 进入可视化模式

1,添加加多行注释:

前提:注释的行需要整齐排列

先将光标移动到首行的开头位置

在命令模式,按ctrl+v

上下键选中第一列

shift+i,然后输入#

连续按两下ESC


2,取消多行注释:

注释的行需要整齐排列

在命令模式,按ctrl+v

上下键选中#号

按下d


7)末行模式

w 保存
q 退出
wq 保存并退出(相当与把文件存入or写入磁盘)
w! 强制保存
q! 不保存并退出
wq! 强制保存退出
x 保存并退出



8)查找替换

查找替换
:% s/root/yang/g   :   %表示全文   g表示全局替换       %等同于1,$
#尾部加g的作用 :不加g只替换每行的第一个,加g为全局替换
:4,9 s/^#// :4-9行的开头#号替换为空
:  ,8 s/root/yang/   : 从当前行到第8行
:5,10 s/.*/#&/        5-10前加入#字符 
#w 存储当前文件
:w /tmp/aaa.txt 另存为/tmp/aaa.txt
:1,3 w /tmp/2.txt
#r读入文件
:r /etc/hosts 读入文件到当前行后
:5 r /etc/hosts 读入文件到第5行后



9)设置环境

#临时设置:
:set nu 设置行号 当次显示行——临时
:set ic 不区分大小写
:set nonu 取消设置行号
:set noic
#永久的环境:修改vim环境配置文件
/etc/vimrc 影响所有系统用户    vim /etc/vimrc
~/.vimrc 影响某一个用户
# vim ~/.vimrc 新建文件也可以
set ic
set nu



10)同时编辑多个文件

vim -o 文件1 文件2  #水平分割
vim -O 文件1 文件2  #垂直分割
#Ctrl + ww 切换
vim -p /etc/hosts /etc/grub.conf
使用 ^Pgup, ^PgDn 切换



11)文件内容对比

#相同文件之间差异对比,通常用与对比修改前后的差异

diff  #文件对比

vimdiff #以vim方式打开两个文件对比,高亮显示不同的内容

patch 命令


12)vim执行过程

#1,vim 打开文件 a.txt

#2,进入编辑模式编辑文件

#3,编辑文件的时候vim会自动创建一个临时文件 ( .a.txt.swp )隐藏文件

#4,编辑完成,vim会自动删除临时文件

#5,退出,修改成功

八、文件查找

查看命令所属文件 # which ls

一些命令的路径都被配置到了环境变量PATH里了 # echo $PATH


#语法:

find [options] [path...] [expression]


1)按文件名查找

[root@localhost ~]# find /etc -name "ifcfg-eth0"
[root@localhost ~]# find /etc -iname "ifcfg-eth0" # -i 忽略大小写
[root@localhost ~]# find /etc -iname "ifcfg-eth*"



2)按文件大小找

[root@localhost ~]# find /etc -size +3M # 大于3M
[root@localhost ~]# find /etc -size 3M
[root@localhost ~]# find /etc -size -3M
[root@localhost ~]# find /etc -size +3M -ls   # -ls找到后的处理动作



3)按时间找(atime、mtime、ctime)

[root@localhost ~]# find /etc -mtime +3 # 修改时间超过3天
[root@localhost ~]# find /etc -mtime 3 # 修改时间等于三天
[root@localhost ~]# find /etc -mtime -3  #修改时间3天以内



4)按文件属主、属组找

[root@localhost ~]# find /home -user egon #所有者
[root@localhost ~]# find /home -group it #所属组
[root@localhost ~]# find /home -user egon -o -group it
[root@localhost ~]# find /home -nouser #
[root@localhost ~]# find /home -nogroup #
[root@localhost ~]# find /home -nouser -o -nogroup



5)按文件类型

[root@localhost ~]# find /dev -type f  #普通文件
[root@localhost ~]# find /dev -type d   #目录
[root@localhost ~]# find /dev -type l   #链接
[root@localhost ~]# find /dev -type b   #块设备
[root@localhost ~]# find /dev -type c   #字符设备
[root@localhost ~]# find /dev -type s   #套接字
[root@localhost ~]# find /dev -type p  #管道



6)根据inode号查找

[root@localhost ~]# find / -inum 1811



7)按文件权限

[root@localhost ~]# find . -perm 644 -ls
[root@localhost ~]# find . -perm -644 -ls
[root@localhost ~]# find . -perm -600 -ls
[root@localhost ~]# find /sbin -perm -4000 -ls # set uid
[root@localhost ~]# find /sbin -perm -2000 -ls # set gid
[root@localhost ~]# find /sbin -perm -1000 -ls # sticky



8)找道后处理的动作

-print
-ls
-delete
-exec
-ok
[root@localhost ~]# find /etc -name "ifcfg*" -print # 必须加引号
[root@localhost ~]# find /etc -name "ifcfg*" -ls
[root@localhost ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \; #非交互
[root@localhost ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \; # 交互
[root@localhost ~]# find /etc -name "ifcfg*" -exec rm -rf {} \;
[root@localhost ~]# find /etc -name "ifcfg*" -delete #



9)find结合xargs

[root@localhost ~]# find . -name "egon*.txt" |xargs rm -rf
[root@localhost ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {}
/var/tmp
[root@localhost ~]# find /test -name "ifcfg-ens33" |xargs -I {} mv {} /ttt
[root@localhost ~]# find /ttt/ -name "ifcfg*" |xargs -I {} chmod 666 {}



猜你喜欢

转载自blog.51cto.com/14993780/2555694