标签(空格分隔): Linux入门 linux 运维
—
写作:N27_李伟 2017-7-13
一、 Linux上常用的文件管理命令都有哪些,使用方法
1. 文件类型的分类
文件类型:
– 普通文件类型
d:目录文件
b:块设备
c:字符设备
l:符号链接文件
p:管道文件,pipe
s:套接字文件,socket
例如:
[root@loong ~]# ll 总用量 44 -rw-r--r--. 1 root root 26150 7月 9 18:43 install.log
说 明:自左向右:
– 这是一个普通文件
rw- 文件属主的权限
r– 文件属组的权限
r– 其他用户的权限
1 数字表示被硬链接的次数
root 文件的属主,本例中文件属主是root
root 文件的属组,本例中文件属组是root组
26150 文件的大小,字节数
7月…文件最后一次被修改的时间
install.log 文件名
[root@loong ~]# ll /dev 总用量 0 brw-rw----. 1 root disk 8, 0 7月 14 07:44 sda brw-rw----. 1 root disk 8, 1 7月 14 07:44 sda1 brw-rw----. 1 root disk 8, 2 7月 14 07:44 sda2
说明:自左向右
b:块设备
rw-:属主权限,可读写。
rw-:属组权限
—:其他用户权限
1 :被硬链接的次数
root:设备文件属主
disk:设备文件属组
8,:设备主设备号,标识设备类型
0 :设备次设备号,标识同类型的不同设备
7月….:设备文件最后修改的时间
sda:设备文件名
2. 目录管理的命令mkdir,rmdir
1. mkdir:创建一个目录
语法:mkdir [OPTION]… DIRECTORY…
-p:自动创建路径上不存在的目录
-v:显示命令的创建过程
-m:设定权限
例如:在/tmp目录下建立mydir目录并在此目录下再建立名称为1的目录
[root@loong ~]# ls / bin boot cgroup data dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var [root@loong ~]# cd /tmp [root@loong tmp]# ls yum.log [root@loong tmp]# mkdir -pv /tmp/mydir/1 mkdir: 已创建目录 "/tmp/mydir" mkdir: 已创建目录 "/tmp/mydir/1" [root@loong tmp]# ls mydir yum.log [root@loong tmp]# cd mydir [root@loong mydir]# ls 1
2. rmdir:移除一个目录。要移除的目录必须是一个空目录。
语法:rmdir [OPTION]… DIRECTORY…
-p:删除某一空目录后如父目录为空,则一并删除。有较大风险,尽量不用
-v:显示命令的创建过程
例如:删除上例中建立的目录
[root@loong tmp]# mkdir -pv /tmp/mydit/1 mkdir: 已创建目录 "/tmp/mydit" mkdir: 已创建目录 "/tmp/mydit/1" [root@loong tmp]# ls /tmp mydit yum.log [root@loong tmp]# ls mydit 1 [root@loong tmp]# rmdir mydit/1 //删除名为1的目录 [root@loong tmp]# ls mydit/1 ls: 无法访问mydit/1: 没有那个文件或目录 //目录已删除 [root@loong tmp]# rmdir mydit //删除mydit目录 [root@loong tmp]# ls yum.log [root@loong tmp]#
3.文件查看命令:
主要有cat,tac,head,tail,more,less命令。其中more,less命令分屏查看。
1. cat:
将[文件]或标准输入组合输出到标准输出。
-A, –show-all 等于-vET
-b, –number-nonblank 对非空输出行编号
-e 等于-vE
-E, –show-ends 在每行结束处显示”$”
-n, –number 对输出的所有行编号
-s, –squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, –show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, –show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
–help 显示此帮助信息并退出
–version 显示版本信息并退出
2. tac:
用法:tac [选项]… [文件]…
将每个指定文件按行倒置并写到标准输出。
如果不指定文件,或文件为”-“,则从标准输入读取数据
3. head:
head [选项]… [文件]…
将每个指定文件的头10 行显示到标准输出。
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
如果不指定文件,或者文件为”-“,则从标准输入读取数据。
> 显示文件前15行
[root@loong etc]# head -n20 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 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin
4. more 分屏查看命令
5. less 分屏查看命令。man命令实际上调用less命令来查看帮助手册
4、文件管理命令cp,rm,mv
– cp:copy,复制文件命令
源文件:—->目标文件
单源复制:cp [OPTION]… [-T] SOURCE DEST
如果目标不存在,则创建之并复制源文件的数据流到目标文件。
如果目标存在:
1、如果目标文件是非目录文件则覆盖目标文件
2、如果目标文件是目录文件,则在其下创建源文件同名的文件并复制源方便的数据流到该文件中。
例如:
[root@loong conf]# pwd /tmp/conf [root@loong conf]# ls mke2fs.conf nsswitch.conf numad.conf prelink.conf request-key.conf rsyslog.conf nfsmount.conf ntp.conf pm-utils-hd-apm-restore.conf readahead.conf resolv.conf [root@loong conf]# cd /tmp/mytest [root@loong mytest]# ls ntp1.conf ntp.conf [root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/ //拷贝/tmp/conf/numad.conf到/tmp/mytest目录下 [root@loong mytest]# ls /tmp/ conf/ .ICE-unix/ mytest/ yum.log [root@loong mytest]# ls /tmp/mytest ntp1.conf ntp.conf numad.conf //在目标目录下创建同名文件并拷贝完成) [root@loong mytest]# cp /tmp/conf/numad.conf /tmp/mytest/ cp:是否覆盖"/tmp/mytest/numad.conf"? y //再次拷贝,因为已经存在一个同名文件,提示是否覆盖 [root@loong mytest]#
多源复制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
如果DEST不存在:错误;
如果DEST存在:
如果DEST是非目录文件:错误;
如果DEST是目录文件:分别复制每个文件至目标目录中,并保 持原名;
例如:复制/tmp/conf下所有的n*.conf文件到/tmp/mytest下
[root@loong mytest]# cp /tmp/conf/ n*.conf /tmp/mytest1 cp: 目标"/tmp/mytest1" 不是目录 //目标mytest1不存在,报错 [root@loong mytest]# cp /tmp/conf/n*.conf /tmp/mytest [root@loong mytest]# ls /tmp/mytest nfsmount.conf nsswitch.conf ntp.conf numad.conf //多个文件原名复制到目标目录下 [root@loong mytest]#
cp命令常用选项:
-i:交互式复制,即覆盖之前提醒用户确认;
-f:强制覆盖目标文件;
-r, -R:递归复制目录;
-d:复制符号链接文件本身,而非其指向的源文件;
-a:-dR –preserve=all, archive,用于实现归档;
– rm命令:
rm命令:remove
rm [OPTION]… FILE…
常用选项:
-i:interactive 交互式
-f:force 强制
-r: recursive,目录递归操作1
删除目录:rm -rf /PATH/TO/DIR
危险操作:rm -rf /*
注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)
– mv命令
mv命令:move,移动一个文件到指定位置
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE..
常用选项:
-i:交互式;
-f:force
二. bash工作特性之命令执行状态返回值
命令执行状态返回值:
在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结束时,都会返回一个数字值,这个值叫做返回值,或者称为错误号 ( Error Number )。这个值保存在特殊环境变量?中,可以用’echo $?‘查看。
[root@loong ~]# ls / bin boot cgroup data dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var [root@loong ~]# echo $? 0 [root@loong ~]#
返回值是0,表示命令操作成功,反之将返回1~255之间的一个数值。但是’$?‘变量只保存最后一条执行命令的返回值。
程序执行也有返回值,对程序执行结果的返回值可以通过'(command)’或’$(command)’来引用。
例:引用pwd的显示结果,交由ls命令执行
[root@loong ~]# pwd /root [root@loong ~]# ls `pwd` anaconda-ks.cfg install.log install.log.syslog [root@loong ~]# ls $pwd anaconda-ks.cfg install.log install.log.syslog [root@loong ~]#
命令行展开
~ 展开为用户的主目录,~username展开为指定用户的家目录
{}可承载一个以逗号分隔的列表,并展开为多个路径。
如:/tmp/{a,b}=/tmp/a,/tmp/b
/tmp/{a,b}/h=/tmp/a/h,/tmp/b/h
练习:
1. 创建/tmp目录下a_c,a_d,b_c,b_d
[root@loong ~]# ls /tmp conf yum.log [root@loong ~]# mkdir /tmp/{a,b}_{c,d} [root@loong ~]# ls /tmp a_c a_d b_c b_d conf yum.log
2. 创建/tmp/mylinux/下的如下目录
/tmp/mylinux
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
执行过程:-p表示如父目录不存在,则自动创建之。-v表示显示创建过程
tree命令显示目录的树形结构
[root@loong ~]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}} mkdir: 已创建目录 "/tmp/mylinux" mkdir: 已创建目录 "/tmp/mylinux/bin" mkdir: 已创建目录 "/tmp/mylinux/boot" mkdir: 已创建目录 "/tmp/mylinux/boot/grub" mkdir: 已创建目录 "/tmp/mylinux/dev" mkdir: 已创建目录 "/tmp/mylinux/etc" mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d" mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d" mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig" mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/network-scripts" mkdir: 已创建目录 "/tmp/mylinux/lib" mkdir: 已创建目录 "/tmp/mylinux/lib/modules" mkdir: 已创建目录 "/tmp/mylinux/lib64" mkdir: 已创建目录 "/tmp/mylinux/proc" mkdir: 已创建目录 "/tmp/mylinux/sbin" mkdir: 已创建目录 "/tmp/mylinux/sys" mkdir: 已创建目录 "/tmp/mylinux/tmp" mkdir: 已创建目录 "/tmp/mylinux/usr" mkdir: 已创建目录 "/tmp/mylinux/usr/local" mkdir: 已创建目录 "/tmp/mylinux/usr/local/bin" mkdir: 已创建目录 "/tmp/mylinux/usr/local/sbin" mkdir: 已创建目录 "/tmp/mylinux/var" mkdir: 已创建目录 "/tmp/mylinux/var/lock" mkdir: 已创建目录 "/tmp/mylinux/var/log" mkdir: 已创建目录 "/tmp/mylinux/var/run" [root@loong ~]# tree /tmp/mylinux /tmp/mylinux ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run 24 directories, 0 files
文件的元数据信息有哪些,分别表示哪些含义,如何查看
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。因此,元数据就是数据的数据。任何文件系统中的数据分为数据和元数据。数据指文件中实际存在的数据,元数据指用来描述该文件的系统特征的数据。诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等。在集群文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
文件系统元数据(metadata)的更改都被保存在一份单独的日志里,当发生系统崩溃时可以根据日志正确地恢复数据。除此之外,日志使系统重新启动时不必进行文件系统的检查,从而缩短了恢复时间。
查看元数据的命令是stat
stat [OPTION]… FILE…
[root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-07-19 10:44:44.170998930 +0800 //访问时间 Modify: 2017-07-19 10:44:44.170998930 +0800 //修改时间,即修改文件内容 Change: 2017-07-19 10:44:44.170998930 +0800 //改变时间,指元数据改变
可以看出获得的元数据包括了文件名,文件大小的字节数,文件占用的块数(blocks),文件权限、用户属主和属组信息,以及最后三行的时间戳信息。
修改文件的时间戳信息
使用touch命令来修改时间戳信息
touch [OPTION]… FILE…
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]
例:直接touch filename,将文件的时间戳修改为当前时间。会修改所有的三个时间戳。
[root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-05-05 11:30:10.000000000 +0800 Modify: 2017-07-19 10:44:44.170998930 +0800 Change: 2017-07-19 11:37:05.144985181 +0800 [root@loong tmp]# touch numad.conf [root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-07-19 14:38:31.574996407 +0800 Modify: 2017-07-19 14:38:31.574996407 +0800 Change: 2017-07-19 14:38:31.574996407 +0800
例:使用-a选项,仅修改atime,并指定时间为2017-6-21 15:22:05
[root@loong tmp]# touch -a -t 201706211522.05 numad.conf [root@loong tmp]# stat numad.conf File: "numad.conf" Size: 91 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 147231 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-06-21 15:22:05.000000000 +0800 Modify: 2017-07-19 14:38:31.574996407 +0800 Change: 2017-07-19 14:45:09.950992896 +0800
原创文章,作者:N27_loong,如若转载,请注明出处:http://www.178linux.com/81788
评论列表(1条)
总结的不错,相较于上一篇来说,注释部分使用了’//’,可见是思考之后的,继续加油~