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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash命令/文件管理-文件管理相关的知识,希望对你有一定的参考价值。



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

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


内容提要:

Linux目录结构

文件定位 路径

文件管理



一、Linux目录结构

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

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


/目录结构: FHS

[[email protected] ~]# 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地址



本文出自 “绿色森林” 博客,谢绝转载!

以上是关于bash命令/文件管理-文件管理的主要内容,如果未能解决你的问题,请参考以下文章

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

Linux的文件系统系统管理类命令bash基础特性

bash命令/文件管理-vim操作

linux下部分文件管理类基本命令汇总以及bash展开特性介绍

004-用户组权限管理命令及bash配置文件管道重定向grep

linux文件管理和 对bash的理解