ls,即list的缩写,用于列出指定目录或者文件。
常用的参数:
-a:列出当前目录下的文件和目录,包括隐藏文件。
-l:列出当前目录下除隐藏文件外的所有文件和目录的详细信息,包括权限、所有者、所属组以和文件创建的日期和时间。
-h:以人性化的方式列出文件,主要是文件的大小显示方式(B,KB,MB,G)
-i:列出文件的inode
-d:列出当前目录
在Linux文件系统中,主要有以下几种类型的文件:
普通文件:即一般的文件。
目录:相当于windows中的文件夹。
链接文件:类似于windows中的快捷方式。
链接文件又分为硬链接和软链接,两者本质上的区别在于inode。
设备:即与系统周边相关的一些文件。
alias,即命令的别名,在命令行中直接输入alias即可查看系统已设置的别名
如何自定义一个别名呢?
格式为alias 别名=’’,即可设置别名
可以用which命令查看详细信息:
取消别名的方法:unalias 别名
路径:即文件存放的地方。
在Linux中,分为绝对路径和相对路径。
绝对路径:由根目录/开始写起的,比如: /etc/ssh
相对路径:不是由根目录/开始写起的,比如: cd test
cd (change directory的缩写),用来切换用户所在目录。
cd :直接输入cd ,会进入当前用户的根目录下。
cd 后面加上目录名,则会切换到指定的目录下。
cd ~ 返回用户的家目录。
cd - :返回上一级目录。
cd . 表示当前目录,cd … 表示当前目录的上一级目录。
mkdir (make directory的缩写),用于创建目录。
那么,如果我们想在/tmp/zhangjin/目录下再创建目录1/2/3呢?这时候直接创建会发现报错
这时候,我们再加参数-p就可以解决,-p,用于递归创建目录。
rmdir (remove diretory),用于删除空目录,该命令只能用于删除空目录,不能删除文件。
可以发现,此命令有很大的局限性,我们一般用命令rm来删除文件和目录。
rm:用于删除目录mdir和文件,常用的参数有-r和-f
-r:删除目录,类似于rmdir,但比rmdir更强大,它可以删除非空目录。
-f:强制删除,如果后面跟一个不存在的文件或目录,也不会报错。
cp(copy的简写):复制。格式为:cp [参数] [来源文件] [目的文件],例如,把test1复制成test2,可以这样写:cp test1 test2。
常用参数:
-r:用于复制目录,如果不加此参数,则不能复制目录。
-i:复制时如果文件已经存在,则会询问是否覆盖。
mv(move的缩写),该命令的格式为: mv [参数] [源文件或目录] [目标文件或目录]。
(1)、目标文件是目录,但该目录不存在时:会把源目录重命名为目标目录名。
(2)、目标文件是目录,且该目录存在时:会把源文件或目录移动到该目录中。
(3)、目标文件是文件,且该文件不存在时:会把源文件重命名为目标文件名。
(4)、目标文件是文件,但该文件存在时:会询问是否覆盖。
4个命令都是关于查看文件的。
cat: cat后面直接加文件名,可以查看文件内容。
加-n参数,可以显示行号:
tac: 和命令cat一样,不同的是显示结果和cat正好反过来,先显示最后一行,然后倒数第二行,最后才显示第一行。
more:当文件内容太多时,一屏不能全部显示,这时就可以用more,当看完一屏时,按空格键可以继续看下一屏,看完全部后就会退出,相关的快捷键:Ctrl+D向上翻屏 Ctrl+F向下翻屏 q退出。
less:功能和more一样,不同的是,less可以一行一行显示,而且可以用 /(在当前行向下搜索) ?(在当前行向上搜索)来查找字符串。
head:用于显示文件的前10行,如果加参数-n,则表示显示文件的前n行。
tail:和head类似,用于显示文件的最后10行,如果加参数-n,则显示文件的最后n行。
文件的权限可以通过命令 ls -l 来查看。
我们以文件123为例,从左至右可划分为9个部分:
1、- :表示普通文件,如果为d,则表示目录,此外还有l表示链接文件,b表示块设备等。rw-rw-r–:这部分又可以分为3部分,rwx为一组,共有3组,分别表示所有者(user),所属组(group)和其他人(other)的权限。其中,r表示可读,w表示可写,x表示可执行。由此可见123这个文件,所有者拥有的权限为可读可写(rw),所属组的权限为可读可写(rw),其他人的权限为可读(r)。
2、表示该文件占用的节点(inode),如果是目录,这个数值与该目录下是子目录数量有关。
3、该文件的所有者。
4、该文件的所属组。
5、该文件的大小。
6-8、表示该文件最后一次被修改的时间,格式为月份、日期和时间。
9、文件名。
chown(change ower) :更改文件的所有者。格式为: chown [-R] 账户名 文件名 或者 chown [-R] 账户名:组名 文件名。
再查看目录dir3下的文件test3,可以发现test3文件的所有者还是root
加上参数-R,可以发现,文件的所有者也改为user1了。
chmod (change mode):改变用户对文件/目录的读写执行权限。格式为: chmod [-R] xyz(数字) 文件名。
为了方便更改文件的权限,Linux使用数字来代替rwx,r=4, w=2, x=1,-=0。例如,rwxrw-r–,用数字表示就是764(4+2+1=7,4+2+0=6,4+0+0=4)。
chmod还支持使用rwx的方式来设置权限。一般用u、g、o来分别表示user、group和others的属性,a(all)则代表全部。
默认情况下,目录的权限值为755,普通文件的权限值为644,这个值的规定便涉及umask了。
umask用于改变文件的默认权限,格式为:umask 3位数字。
查看umask的值,只要在命令行中输入命令umask即可。
可以看到,umask的预设值是0022,那么这表示什么含义呢?我们先来看以下两条规则。
1、若用户建立普通文件,则预设没有可执行权限,只有r、w两个权限,最大值为666(-rw-rw-rw-)。
2、若用户建立目录,则预设所有权限均开放,即777(drwxrwxrwx)。
umask数值代表的含义为以上两条规则中的默认值(文件为666,目录为777)需要减掉的权限,所以:
目录的权限为rwxrwxrwx - ----w–w- = rwxr-xr-x
普通文件的权限为rw-rw-rw - ----w–w- = rw-r–r--
umask的值是可以自定义的,比如设定umask为002,在创建目录或文件时,默认权限分别为:
目录:rwxrwxrwx - -------w- = rwxrwxr-x
文件:rw-rw-rw- - -------w- = rw-rw-r–
可以看到,创建的目录默认权限变为755,文件的默认权限变为664。
关于umask的计算方法,不应该直接单纯用数字相减,而应该换算成rwx来相减进行换算。
lsattr(list attribute):读取文件或者目录的特殊权限,格式为: lsattr [-aR] [文件/目录名]。
参数-a类似于ls的-a,列出隐藏文件。
参数-R:将子目录的数据也列出。
chattr(change attribute):修改文件的特殊属性。格式为: chattr [±=] [Asaci] [文件/目录名],其中,+、-、=分别表示增加、减少和设定。
A:表示文件或目录的atiime将不可修改。
s:会将数据同步写入磁盘中。
a:表示只能追加不能删除,非root用户不能设定该属性。
c:表示自动压缩该文件,读取时会自动解压。
i:表示文件不能删除、重命名、设定链接、写入以及新增数据。
以上参数,常用的有a和i。示例如下:
文件同样适用以上权限:
该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。例如passwd,当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码。
该权限可以作用在文件上,也可以作用在目录上。当作用在文件上时,其功能和set_uid一样,会使文件在执行阶段具有文件所属组的权限。当目录被设置这个权限时,任何用户在此目录下创建的文件都具有和该目录所属组相同的组。
防删除位。文件是否可以被用户删除,主要取决于该文件所在的目录是否对该用户具有(w)写权限,如果没有写权限,则这个目录下的所有文件都不能删除,同时也不能添加新的文件。
添加此权限的情景:如果希望用户能够添加文件但不能删除该目录下其他用户的文件,则可以对父目录增加该权限。设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。
我们分别查看passwd命令和/tmp/目录:
可以发现,passwd显示的是rws,而不是rwx,用数字表示为4755。/tmp/显示的是rwt,而不是rwx,用数字表示为1777.这个4和1是怎样计算出来的?当有特殊权限时,第一位数字可以是0、1(–t)、2(-s-)、3(-st)、4(s–)、5(s-t)、6(ss-)或7(sst).
passwd是s–,所以是4;而/tmp/是–t,所以是1。
设置特殊权限的方法也用命令chmod。其格式为:chmod ±=[s/t] [文件/目录名]。
创建硬链接的命令ln(link),格式为:ln [源文件] [目的文件]。
系统读取一个文件时,会先读取inode信息,然后再根据inode中的信息到块区域将数据提取出来。创建硬链接,只是增加了一个指向该文件的inode,并不会改变该文件,也不会额外占用磁盘空间。
硬链接的限制:
(1)、不能跨文件系统,因为不同的文件系统有不同的inode table。
find命令,其格式为: find [路径] [参数]。
常用的参数有:
-name filename:表示直接查找该文件名的文件。(常用)
-type filetype:通过文件类型(f、b、c、d、l、s等)查找文件。
-atime +n/-n:表示访问或执行时间大于或小于n天的文件。
-ctime +n/-n:表示写入、更改inode属性(更改所有者、权限或链接等)的时间大于或小于n天的文件。
-mtime +n/-n:表示写入时间大于或小于n天的文件。(使用最多)
关于atime、ctime和mtime的说明:
由上表可见,更改文件的内容会更改mtime和ctime,但文件的ctime的更改则有可能不会更改mtime,例如更改了文件的所有者或权限,则不会更改mtime。