bash命令/文件管理-文件管理

网友投稿 783 2022-09-21

bash命令/文件管理-文件管理

bash命令/文件管理-文件管理

=============BASH Shell对文件进行管理==============

创建、复制、删除、移动、查看、编辑、压缩、查找

内容提要:

Linux目录结构

文件定位 路径

文件管理

一、Linux目录结构

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

Linux:   以单根的方式组织文件  /

/目录结构: FHS

[root@gaolei ~]# ls /

bin     dev   lib         media  net   root     srv  usr

boot    etc   lib64       misc   opt   sbin     sys  var

cgroup  home  lost+found  mnt    proc  selinux  tmp

bin   普通用户使用的命令 /bin/ls, /bin/date

sbin     管理员使用的命令

dev   设备文件 /dev/sda,/dev/tty1,dev/tty2,/dev/pts/1

root   root用户的HOME

home   存储普通用户家目录

lost+found   孤儿文件

proc   虚拟的文件系统,反映出来的是内核,进程信息或实时状态

usr 系统文件,相当于C:\Windows

/usr/local 软件安装的目录,相当于C:\Program

/usr/bin   普通用户使用的应用程序

/usr/sbin 管理员使用的应用程序

/usr/lib          库文件Glibc

/usr/lib64      库文件Glibc

boot   存放的系统启动相关的文件,例如kernel,grub(引导装载程序)

etc   配置文件(系统相关如网络/etc/sysconfig/network,应用相关配置文件...)

lib   库文件Glibc

lib64 库文件Glibc

tmp     临时文件(主要是程序产生的临时文件)

var 存放的是一些变化文件,比如数据库,日志,邮件....

mysql:       /var/lib/mysql

vsftpd: /var/ftp

mail: /var/spool/mail

cron:    /var/spool/cron

log: /var/log

临时文件:   /var/tmp   (主要是程序产生的临时文件)

==设备(主要指存储设备)挂载目录==

media       移动设备默认的挂载点

mnt   手工挂载设备的挂载点

misc automount进程挂载

net automount进程挂载

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

命令存储位置:

/bin   普通用户使用的命令 /bin/ls, /bin/date            RHEL7淘汰

/sbin     管理员使用的命令                                        RHEL7淘汰

/usr/bin   普通用户使用的应用程序

/usr/sbin 管理员使用的应用程序

库文件存储位置:

/lib   库文件Glibc                                                RHEL7淘汰

/lib64 库文件Glibc                                                RHEL7淘汰

/usr/lib          库文件Glibc

/usr/lib64      库文件Glibc

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

二、路径 (定位文件)

绝对路径:    从/开头的路径 /home   ~alice

相对路径:    相对于当前目录开始 .   ..

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

.      链接到当前目录

..    链接到上一级目录

~    当前用户的家目录

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

# useradd alice

# touch /home/alice/file1

# touch ~alice/file2

# mkdir abc

# touch ../file3

# touch file4

# touch abc/file5

三、文件管理

1. 文件管理之:cd   改变目录

cd                  绝对路径    cd /home/alice     cd ~alice

cd                  相对路径    cd Desktop/abc    cd ..

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

cd 专用:

cd -              返回上次目录

cd                  直接回家

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

2. 文件管理之:创建/复制/移动/删除

==创建

文件 touch

# touch file1.txt                 //无则创建,有则修改时间

# touch file3 file4

# touch /home/file10.txt

# touch file{1..20}

# touch file{a..c}

# touch yang{a,b}                       //{}集合,等价touch yanga yangb

目录 mkdir

# mkdir dir1

# mkdir /home/dir2 /home/dir3

# mkdir /home/{dir4,dir5}

# mkdir -v /home/{dir6,dir7}

# mkdir -p /home/dir8/111/222      //包括其父母的创建

==复制 cp

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

# cd

# mkdir /home/dir{1,2}

# cp -v install.log /home/dir1

# cp -v install.log /home/dir1/yang.txt

# cp -rv /etc /home/dir1

# cp -v install.log /home/dir2

# cp -v anaconda-ks.cfg !$

# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /home/dir2

# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts .

# cp -r /etc /tmp

# \cp -r /etc /tmp

==移动 mv

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

# mv file1 /home/dir3            将file2移动到/home/dir3

# mv file2 /home/dir3/file20   将file2移动到/home/dir3,并改名为file20

# mv file4 file5                将file4重命名为file5,当前位置的移动就是重命名

==删除 rm

示例:删除/home/dir1

# cd /home

# rm -rf dir1

-r 递归

-f force强制

-v 详细过程

3. 文件管理之:查看文件内容

==文本文件 (cat less more head tail grep)

/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

/var/log/secure

cat

-n  显示行号

-A  包括控制字符(换行符)

linux $

Windows ^M$

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

扩展知识:

dos2unix 将Windows格式的文件转换成Unix格式

unix2dos 将Unix格式的文件转换成Windows格式

例如

# unix2dos file1

# dos2unix file2

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

less  more head  tail

# head  /etc/passwd

# head -2 /etc/passwd

# tail /etc/passwd

# tail -1 /etc/passwd

# tail -f /var/log/secure      //-f 动态查看文件的尾部

grep 针对文件内容进行过滤

# grep 'root' /etc/passwd

# grep --color 'root' /etc/passwd

# grep --color '^root' /etc/passwd

# grep --color 'bash$' /etc/passwd

# grep 'failure' /var/log/secure

==二进制文件 (strings grep)

# strings /bin/ls

4. 文件管理之:修改文件内容

gedit

vi ===> vim 文件编辑器

# ll > list.txt

命令模式:

a. 光标定位

hjkl

0 $

gg G

3G   进入第三行

/string(n N 可以循环的)  快速定位到某一行

b. 文本编辑(少量)

y 复制 yy 3yy ygg  yG (以行为单位)

d 删除 dd 3dd dgg  dG   (以行为单位)

p 粘贴

x   删除光标所在的字符

D 从光标处删除到行尾

u undo撤销

^r   redo重做

r   可以用来修改一个字符

c. 进入其它模式

a 进入插入模式

i 进入插入模式

o 进入插入模式

A 进入插入模式

: 进入末行模式(扩展命令模式)

^v 进入可视块模式

R   进入替换模式

插入模式:

^p 唯一补齐

末行模式:

a. 保存退出

:10 进入第10行

:w   保存

:q   退出

:wq 保存并退出

:w! 强制保存

:q! 不保存并退出

:wq! 强制保存退出

:x 保存并退出

b. 查找替换

:范围 s/old/new/选项

:1,5 s/root/yang/   从1-5行的root 替换为yang

:5,$ s/root/yang/ $表示最后一行

:1,$ s/root/yang/g            = :% s/root/yang/g    %表示全文  g表示全局

:4,9 s/^#//   4-9行的开头#替换为空

:% s#/dev/sda#/var/ccc#g

:,8 s/root/yang/        从当前行到第8行

c. 读入文件/写文件

:w                                     存储到当前文件

:w /aaa.txt   另存为/aaa.txt

:1,3 w/2.txt

:r /etc/hosts                       读入文件到当前行后

:5 r /etc/hosts                    读入文件到第5行后

d. 设置环境

临时设置:

:set nu 设置行号

:set ic   不区分大小写

:set ai 自动缩进

:set list                             显示控制字符

:set nonu      取消设置行号

:set noic

永久的环境:

/etc/vimrc    影响所有系统用户

~/.vimrc        影响某一个用户

# vim ~/.vimrc

set ic

set nu

# vim -O /etc/hosts /boot/grub/grub.conf  按两次^w切换

# vimdiff grub.conf /boot/grub/grub.conf      对比文件,按两次^w 切换

# vim -p /etc/hosts /boot/grub/grub.conf      ^PgUp, ^PgDn

课后作业:

# /etc/init.d/NetworkManager stop

# chkconfig NetworkManager off

1. 学习diff命令

2. /etc/passwd /etc/shadow每个字段的含意

3. 预习文件权限 书第七章

4. 修改相应文件,内容如下:

/etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=xxx.example.com //xxx为自己的拼音姓名

/etc/hosts

127.0.0.1   localhost

::1    localhost

y.y.y.y    xxx.example.com //y.y.y.y为当前IP地址、主机名为本机主机名

/etc/resolv.conf

nameserver 8.8.8.8

nameserver 202.106.0.20

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:e0:4c:1b:65:d9

ONBOOT=yes

TYPE=Ethernet

IPADDR=192.168.3.80 //IP参考自己的环境

PREFIX=24

# service network restart //重启网络服务

# ip addr //查看修改后的IP

最后将其改回原始的IP地址

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:用C#实现全屏幕截图
下一篇:logstash grok使用案例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~