02、Linux 教程:基本命令、查看文件、链接命令

基本命令、查看文件、链接命令

linux中的命令基本格式:命令 [-选项] [参数]

目录显示命令ls

ls(是list的简写),表示显示所有文件

显示根目录的文件:ls -a /

-a代表显示所有文件,包括隐藏文件(a代表all,隐藏文件一般是.开头的);

-l代表显示文件的详细信息(l代表long),执行ls -l /命令后:

 

从左到右代表:

文件类型(d代表目录directory、-代表二进制文件、l代表软链接文件link、b为装置文件中可供存储的接口设备、c为装置文件中的串行端口设备,如鼠标键盘)

权限(主组其他,r代表read,w代表write,x代表execute)、

引用计数(这个数字和目录下的文件或目录情况有关,同时与硬链接数有关,如果在目录A中建立一个目录B,那么B的引用计数就是2,因为默认B下有.和..两个目录,而目录A中的引用计数+1,同时如果多一个硬链接,该文件的引用计数也加1)、

所有者(只有一个)、所属组、文件大小单位字节、修改时间、文件名;

-lh(h代表human)代表显示文件的详细信息,与-l不同之处在于文件大小显示更人性化;

-d表示仅列出目录。

-i代表查询文件唯一标志(i代表inode)。

-sh可以查看每个文件占用的block总容量,可以发现ll命令结果的第一行total是总文件使用block的数量*每个block的大小,这个数大于总文件大小,但是剩余的磁盘空间已经不能利用了,因为每个文件再小也要占用一个block,这就是磁盘空间浪费:

 

创建目录mkdir

mkdir(make directories)是创建新目录的命令。

创建tmp下的新目录i1:mkdir -p /tmp/i1,-p意思是递归创建,如果要在一个不存在的目录下创建目录就必须用这个选项。mkdir支持创建多个目录,只需要用空格将多个目录隔开即可,目录名要写完全。

创建时直接分配权限:mkdir -m 711 test2

切换目录cd

cd(change directory) 切换目录。cd后加具体目录可以完成切换,加两个点可以回到上一级目录。

显示当前目录pwd

pwd(print working directory)显示当前目录。如果当前目录是链接文件,加选项-P会显示到链接到的具体位置。

删除rmdir和rm

rmdir(remove empty directory)删除目录(必须是空目录,否则执行失败),-p代表删除多层空目录。

rm(remove)删除文件或目录。-r表示删除目录;-f表示不需要再次确认;-rf表示删除目录且不需要确认。

拷贝cp与剪切mv

cp(copy)拷贝文件或目录,一般格式是cp [要复制的文件] [目标位置],不加选项可以复制文件,且可以复制多个文件到一个位置;-r表示复制目录;-p表示保留文件属性,因为文件拷贝过去后修改时间为拷贝时间,相当于新创建的时间,如果想保留文件的修改时间就要用这个选项。cp命令在拷贝时还可以修改名称,只要把目标位置改为一个新的具体文件(如/root表示复制到root下,/root/c表示复制到root下,并将其改名为c)

除此之外,cp还可以建立硬链接和软链接文件,格式为cp 选项 源文件 链接文件-l代表建立硬链接,-s代表建立软连接。

-a是-d和-r的结合,-d代表如果要复制的文件是软链接文件,则复制后还是软链接文件,它也可用做完整复制文件权限,可以代替-p。

mv(move)剪切文件及改名,一般格式是mv [要剪切的文件或目录] [目标位置],这个和cp一样有改名的功能,也可以同时剪切多个文件。如果要剪切的文件或目录在当前目录下,直接写文件名即可,无需写全路径。如果两个位置都不写全路径只写文件名代表在当前目录位置下改名。

注意把文件拷贝或剪切给别人使用时经常需要改变文件的所有者和所属组。

创建文件touch

touch创建文件,后加文件名就能创建,如果不在当前目录下创建需要写全路径。如果要创建文件名带空格的文件,必须用双引号将文件名包括进去,这样很不方便,后续处理也有麻烦,故在linux中不建议文件名中加空格。

执行touch命令除了可以创建文件外,还能将已有的文件的三种时间都统一成现在,有时因为开机程序问题,文件的时间可能会出现重大偏差,此时就需要执行此命令,加一些选项touch可以随意修改这三种时间(分别是modification time内容更新时间,status time状态更新时间,access time读取时间)。

查看文件命令

cat、tac和nl命令

cat查看文件内容,后加要查看的文件名。-n表示查看时显示行号。查看文件内容,包括特殊字符:cat -A 文件,在linux中编辑的文件回车符是$,而在windows中编辑完的文件在linux中打开后,回车符是ctrl+M $(^M$),此时脚本是不能正常运行的,此时只要用dos2unix加文件名就能将其转换为linux可执行的文件,这个命令如果没有可以手动安装:yum -y install dos2unix类似作用的命令还有unix2dos。

tac表示按行倒序排列查看,这两个命令不适用于查看很多内容的文件。

nl命令可以添加行号打印文件内容。这三个命令都是直接查看文件内容(不能翻页的)。

more和less命令

more也可以查看文件内容,它以百分比的形式显示查看文件内容多少,按f或空格可以翻页,回车可以看下一行,q或Q表示看完退出,但more不能向上翻页。还有搜索功能,在浏览状态下输入/要查找内容回车,就可以跳到那个位置,但是只能向下搜寻。

less和more类似,但加了向上翻的功能,pageup可以向上翻一页,上箭头可以向上看一行,less还可以查找内容,在浏览状态下输入/要查找内容回车,就可以跳到那个位置,按n跳到下一个搜索词,它可以向上搜寻,用?代替/即可。

head和tail命令

head可以指定看前几行,head -n 20 文件表示看前20行,如果不加选项代表看前10行。

tail和head类似,是看文件末尾行的,也可以使用-n来指定行数,-f代表动态查看,文件出现变化时tail命令的显示也会变化,常用来查看日志。按ctrl+c来退出查看状态。tail -n +100 文件表示查看文件100行后的数据。

显示文件的第11到第20行:head -n 20 文件 | tail -n 10

显示文件的第11到第20行且有行号:cat -n 文件 | head -n 20 | tail -n 10

od命令

od命令用来查看非文本文件:od -t c 文件代表用ascii方式展示内容,c就代表ascii方式,d、f、o、x分别代表十进制输出、浮点数输出、八进制输出和十六进制输出,a代表利用默认的字符来输出。

链接命令ln

ln(link)创建链接,ln 原文件 链接文件表示生成一个硬链接文件,-s表示生成软链接文件。

软链接 硬链接
修改源文件 可以访问到 同步修改
删除源文件 无法访问 可以访问
文件类型 文件类型为l 需要查看inode,和源文件用同一inode
大小 很小 和源文件一样大
修改时间 新建时间 与源文件相同
访问权限 全开,但能否访问取决于源文件 和源文件相同
限制 不能跨分区建立、不能针对目录使用
箭头标识 详细信息中有箭头标识

所谓硬链接,其实就是多个文件公用一个inode,此时两个文件除了文件名以外所有信息都一样,读取文件时无论通过哪个文件名都能链接到唯一的inode,进而找到唯一的datablock,因此修改哪个文件最终都会影响两个文件,而如果删除任意一个文件,也不会导致数据不能访问,因为inode和block依然存在,所以硬链接比较安全。

硬链接实质上就是多了一个目录的block而已,不会对磁盘和inode数产生很大的影响。

因为要链接到同一个inode,所以硬链接不能跨文件系统(分区),至于为何硬链接不能针对目录,这主要是因为目录下的文件是经常变动的,这会导致这种链接关系难以维护。

软链接仅仅是建立一个到源文件的快捷方式,它是一个独立的文件,故和源文件的inode不同,这种文件的大小就是源文件的文件名占用的空间,删除源文件会导致无法打开软链接。

用cp命令也可以建立硬链接和软链接。