Linux文件基础操作
1、在RedHat中有时不能正确显示IP地址,此时需要关闭Redhat,重新在管理员模式下打开VMware,启动Redhat之后,输入ifconfig就可以用了
2、显示当前目录下的信息内容:ls 粗略显示
ls -a 全部显示
ls -l 以长格式显示,例如
$ls -l
drwxr-xr-x 3 user group 102 Mar11 22:56 Filename
7个段分别是:文件类别、权限、链接数、文件拥有者、文件所属组、文件大小、文件创建时间或修改时间、文件名
- 文件属性:drwxr-xr-x 其中各个字符代表的意义: d: 代表是目录文件。-代表普通文件,b:代表块设备文件,c:代表字符设备文件,l:代表链接设备文件 rwx:第一组是授予文件所有者的权限,-代表无权限;r代表具有可读权限; w代表具有可写权限;x代表具有可执行权限 r-x:第二组授予同组用户的权限 r-x:代表其他用户权限
- 文件硬链接数或目录子目录数:3 (一个空目录的该字段是2,表示该目录下有两个子目录,因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..")
- 所有者:user
- 所属用户组:group
- 文件大小:102 byte
- 修改时间:Mar11 22:56
- 文件名:Filename
3、创建目录:在root权限下,在指定目录下创建一个新的目录:mkdir /home/c_program
在同一个目录下创建多个目录mkdir -p /home/c_program/add
4、删除一个目录 rmdir /home/c_program
5、复制一个文件到一个新的目录下 cp file /home/test
6、移动一个文件到一个新的目录 mv file /home/test
7、删除一个文件rm /home/test/file
8、注意,此处的目录与文件不是一个概念,目录是一个文件夹,而文件是一个带有后缀名的实体文件
9、使用vi创建一个新的文件,首先在控制台下输入vi test.c,进入到编辑器后,输入 i 进入编辑模式,编辑好后按下Esc键,退出,输入 :wq,保存退出即可,此时就生成了一个新的test.c文件
10、ubuntu的终端中
shutdown -h now 现在立即关机
11、获取root权限
首先输入:sudo passwd root(设置root密码)
输入当前系统的账户密码(账户:admin-pc的密码)
输入新的root密码,确认新密码,密码更新成功
在提示符处输入:su按Enter键获取root权限
输入刚刚设置的root密码
命令提示符前出现root@的字样说明root的权限已经获得
文件权限一般可认为是0 123 456 789,一共十位:
0:表示该文件的文件类型。Windows里面是使用了一种文件关联的技术,通过扩展名来关联相应的应用程序,使得双击某个文件,就能达到调用相应的应用程序来打开它的目的,这样简单快捷。然而对于用户来说,好处是方便,坏处是隐藏了一个实质性的东西:文件的真正的类型,与其扩展名实际上是毫无关联的。
举例来说:一个纯粹的文本文件,可以给它命名“我的歌声里.mp3”,然后在win下双击,会调用相应的音乐播放器来打开,结果显而易见,肯定是错误的。那反过来,一个真正的MP3文件我也可以给它命名“花名册.txt”,在win下双击,一般会调用相应的文本编辑器来打开,显示的一定是乱码。
上面两个例子是为了说明一个观点,某个文件真正的类型与其扩展名没关系。
那么在不知道文件扩展名的情况下,如何知道文件的类型呢?在Linux是这样的。
Linux中文件类型只有以下这几种:
1.-,普通文件。
2.d,目录文件,d是directory的简写。
3.l,软连接文件,亦称符号链接文件,s是soft或者symbolic的简写。
4.b,块文件,是设备文件的一种(还有另一种),b是block的简写。
5.c,字符文件,也是设备文件的一种(这就是第二种),c是character的文件。
Linux系统最原始的也只有这五种,所以第0位,只能是以上五者之一。
那么你会有疑问,
1.MP3文件是是哪种?答案:普通文件。
2.二进制文件是哪种?答案:普通文件。
3.文本文件是哪种?答案:普通文件。
4.为什么硬连接没有类型表示?答案:硬连接和软连接,名字上虽然只差一个字,本质完全不同,硬连接也是文件。其类型是普通文件
r:read,w:write,x:execute。
再次强调,文件的内容和该文件当时所用的文件名毫无关联;该文件的类型,也与该文件当时的文件名,毫无关系。
查看一个文件的内容,实际上是这样的一个过程:
举例来说,你用了这个命令:cat /tmp/abc.txt
1.你只传递了一个绝对路径,/tmp/abc.txt,系统首先要知道/tmp/abc.txt文件的inode是多少才行,如何得知呢?
2.记住一个规律,某文件的父目录会(记录)知道该文件的inode号!
3.那么要得到“/tmp/abc.txt”这个文件名,得先知道/tmp目录的情况,要知道/tmp目录的情况,得先知道/目录的情况,所以就可以从/目录开始(假设/目录的inode号是0,并且这是写死的),然后再去一张叫做inode-table的表中查找inode号0所指向的数据域,然后从数据域里面可以找到一些类似于下面的内容:(看起来像一张表,不是么?其实可以想象到,目录文件就是一张表,存储了它内部有哪些文件名,以及该文件名对应的inode号)
文件名 inode号
bin 18
var 19
tmp 20
... ...
从“/”,这个目录文件中找到了“/tmp”文件名对应的inode号,就是20。(假设啊)
4.然后通过inode号20,去inode-table里面找寻20对应的数据域,然后从数据域中,又会找到一张表:(为什么又是表呢?因为“/”是一个目录,“/tmp”也是一个目录,那当然数据域里面存的还是表)
文件名 inode号
abc.txt 8899
bbb.mp3 10088
kkk.jpg 20000
... ...
好了,我们找到了/tmp/abc.txt的inode号了,就是8899。根据上面的规律,是不是又得去inode-table里面找8899号对应的数据域了?对,就是这样。
5.找到inode号8899对应的数据域,于是会发现如下一些内容:
“abcdefg”(假设文件内容就是这样)
...
又有疑问了,为什么这次不是表了?
答案:/tmp/abc.txt文件不是目录文件了,它是一个普通文件,他存储的一般都是一些字符串。
体现在本质上:
普通文件:存储普通数据,一般就是字符串。
目录文件:存储了一张表,该表就是该目录文件下,所有文件名和inode的映射关系。
从父目录中获得本文件的inode号---->找到inode-table表中找到这个inode号对应的数据域中的起点以及其他信息---->去这个数据域中读取该文件的内容(普通文件的内容一般是字符串,目录文件的内容是一张表)
关键就是访问任何一个文件,要看是否能搞到inode号,搞不到就没辙了。搞到inode就好说了,拿着inode号去inode表中查找即可,最后找到数据域,那么就可以找到文件的内容了
然后整个过程这不仅仅跟本文件权限有关,还跟它的父目录(还有父目录的父目录...)权限有关(是否能搞到本文件的inode)
体现在命令上:
对于普通文件来说,rwx的意义是:
r:可以获得这个普通文件的名字和内容。
w:可以修改这个文件的内容和文件名。可以删除该文件,但是用户会得到是否删除写保护文件的prompt。
x:该文件是否具有被执行的权限。
对于目录文件来说,rwx的意义是:
r-x:可以进入cd该目录,可以获得该目录下存储情况,但是不能修改这个目录内部存储的文件(目录)的名字,也不能在该目录下新建文件和目录
-wx:可以进入cd该目录,但是看不到该目录下的存储情况(ls不可用),可以往该目录下添加、修改、删除文件。可以通过cat来读取该目录下的文件or目录的内容,由于得不到该目录下存储了那些文件,在不知情的情况下只能通过猜,cat + 文件名获得文件内容,所以这样依然不保密。
--x:可以进入cd该目录,看不到存储情况,也不能往该目录下添加、修改、删除文件。但是依然可以通过cat + xx(猜)来获得该目录下的文件的内容。
rw-:不能进入cd该目录,用ls仅仅可以获得文件名和目录名,因为获取不到这些文件的inode号,当然也不能获得该目录下的文件的内容。不能往该目录下添加、修改、删除文件。
总结:
1.目录文件虽然是文件,但是存储内容的只是一张表而已,关于文件名和inode号的映射关系。
2.文件的扩展名和文件类型之间没关系。
3.文件的文件名和文件实际存储内容之间,没关系。
4.要知道如何查找到一个文件内容的过程。
5.为什么同一个文件系统移动文件要比跨文件系统快?
答:因为只需要修改某个目录中路径和inode对应关系即可,不需要重新写一遍数据域。
6.什么是买来的500G的硬盘,格式化完后总是少了达不到500G?
答:从本文可知,inode-table也是需要占用存储空间的,所以缺少的一部分中inode-table占用了不少。
7.要如何了解Linux文件系统和inode的相关知识,能否推荐个文章?
答:http://www.cyberciti.biz/tips/understanding-unixlinux-filesystem-inodes.html
.tar.xz
解压:tar -Jxvf FileName.tar.xz
压缩:tar -Jcvf FileName.tar.xz DirName
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
———————————————
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
———————————————
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
———————————————
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -
———————————————
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
gzip 命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下:
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段: 压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),-9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。指令实例:
gzip *% 把当前目录下的每个文件压缩成 .gz 文件。
gzip -dv *% 把当前目录下每个压缩的文件解压,并列出详细的信息。
gzip -l *% 详细显示例1中每个压缩的文件的信息,并不解压。
gzip usr.tar% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
