Linux11_文件及目录以及其相关的组织命令
Linux文件:
普通文件:文本文件(.txt  .doc .odt)、音频文件等等
特殊文件:设备
一切皆文件;这与Windows不同;
Windows目录:
C盘是硬盘的根目录(加入没有把C盘磁盘分区的话);
H盘可能是光盘驱动器根目录;
Linux有且只有一个根目录  /斜杠;
根目录是最顶层的目录;
Linux目录名可以包含空格,但一般不这么用;
常用直属子目录:
/bin            binary缩写,表示二进制文件,所有可执行文件都是二进制的,bin文件包含了会被所有用户使用的可执行程序;
/dev           device 设备,外设;
/etc            and so on等等;零碎东西,历史遗留
/home       用户的私人目录,每个用户在home下都有私人目录
/root          根用户的目录,比较特殊,有自己的目录,比较任性
/media      表示媒体,可移动外设插入电脑时,linux可以让我们通过media这个子目录访问这些外设中的内容
/mnt          表示挂载,mount,临时挂载一些装置,有点类似media
/lib            库,表示被程序所调用的库文件,例如.so结尾的文件;windows下的库文件都是.dll结尾的
/opt          optional application software package,可选的应用软件包,用于安装多数第三方软件和插件
/sbin       表示系统二进制,多了个前缀system,系统级重要可执行程序
/srv         表示服务,包含一些网络服务启动之后所需要取用的数据
/tmp        表示临时,普通用户和程序,存放临时文件的地方
/usr        Unix Software Resource,最庞大的目录,包含大量用户调用的程序;其名字类似etc,是历史遗留命名,类似Windows中C:\Windows、C:\Program Files
/var        variable 动态的,可变的,var通常包含程序的数据比如日志文件,
这种目录结构与命名形式,在类Unix操作系统中也类似;macOX目录结构也是从根目录开始的;
不用硬背这些,使用中慢慢去理解即可;
Linux文件系统结构像一个倒立的树;
逐级分布,层叠包含;
==================================================
pwd //显示当前所在路径
根据当前提示符和pwd命令:获知当前所在目录位置;
==================================================
which           //显示命令对应可执行程序的位置;一个命令其实是随时可调用的程序罢了;
linux中可执行程序一般没有后缀的
linux中可执行程序不都位于同一个位置中;

===================================================
ls 列出文件和目录
CentOS终端默认是有颜色标注的:
一般来讲:
蓝色  ->目录
绿色  ->可执行文件
红色  ->压缩文件
浅蓝色->链接文件
灰色  ->其他文件
ls --coler=auto //开启颜色标注
ls --coler=none //关闭颜色标注

为了避免每次都要输入额外的参数,其实可以在一个配置文件里修改
ls 常用的参数:
-a  显示所有文件和目录,包括隐藏的;
//注意不包含. ..;   . 表示当前目录, .. 表示上级目录;
-A  和-a差不多,唯一区别是不列出.  ..;

-l  是ls命令最常用的;列出每个文件或目录的详细信息;都有一行信息;
 
详细信息行的解读:
drwxr-xr-x. 文件权限 
	2                链接数目
	grooovvve     文件所有者名称
	grooovvve     群组
	6               表示文件大小,单位byte
	日期
	最后是文件名
	
额外参数:
	文件大小是以字节为单位的;不是太直观;
	-h  会使得文件大小适合人类阅读的,超过1000byte,会成为1kb
	-t  按文件最近一次修改时间排序
ls 常用参数放在一起,效果是叠加的;

====================================================
cd
cd change directory 切换目录
是最常用命令之一;
命令格式:cd 要去的目录路径

连续回退两个目录:

回退一个目录:

相对路径与绝对路径:
绝对路径法切换目录:都是从/开始的;
相对路径法切换目录:必须当前目录下有对应文件或目录;

回到家目录的三种方法:
1、cd /home/grooovvve   //绝对目录的方式
2、cd ~                            //使用~
3、cd                               //直接cd 不加参数最方便

技巧:
此外使用tab键会自动补全目录,防止手动输入路径时名字写错;
================================================
du 统计目录大小
显示目录包含的文件大小;
深入遍历目录的子目录,统计所有文件的大小;


相关参数:
du -h         //适合人类阅读,单位转换
du -a        //显示文件和目录的大小
du            //默认是只显示文件的大小
du -s        //只想知道当前目录大小

 

===============================================
cat和less命令
只是显示文件内容,不能修改;
cat 是concatenate的缩写,表示“连接和串联”
cat 命令可以一次性在终端中显示文件的所有内容。
用法: cat 要显示的文件路径
cat 命令适合小文件显示
cat -n //可以显示行号
less 命令用于分页显示文件内容
如果文件较大,cat会令人猝不及防
相关快捷键:
空格 前进一个屏幕的内容,和pgdown类似;
回车 前进一行
d键  前进半页
b键  后退一页
y键  后退一行
u键  后退半页
q键  停止,退出less命令
注意linux中通常区分大小写
shift+d 表示大写
高阶快捷键:
=  显示你在文件中位置
h  显示帮助文档
/  进入搜索模式,n跳转下一个符合项目,shift+n跳转上一个符合项目;
more 和less类似,功能没有less那么强大
more是老命令
=================================================
head 和tail命令
显示文件的开头和结尾
有点对立的关系
head 显示文件开头几行
tail 显示文件结尾几行
head 默认情况下会显示文件的前10行
tail 默认情况下会显示文件的尾10行
还可以配合-n 数值;
指定要显示几行
例如   head -n 5 文件名  //显示文件的前5行


另外tail还有很强大的功能:
tail -f //可以实时最终文件的更新
如下图所示,可以看到光标闪烁
默认情况下,是每个一秒检查文件更新;
我们还可以手动设置这个检查的间隔:tail -f -s 4 文件名

此外有个快捷键要注意一下:
ctrl+C 中止大部分正在执行的终端命令;
==================================================
touch和mkdir命令
用于创建文件和目录
touch用于创建一个空白文件
实际上linux没有一个命令是专门用来创建一个空白文件的;
touch命令一开始的初衷是修改文件的时间戳,让系统以为文件是那个时候被创建或修改的;
touch 命令如果后面文件不存在,就会创建一个新的;
touch 命令可以创建多个文件,而且如果文件名包含空格的话,要注意使用引号;

mkdir用于创建目录
使用格式:mkdir 文件名

-p参数
递归创建目录结构

 
==================================================
cp 拷贝文件或目录,类似于复制+粘贴
cp 是copy的缩写,表示拷贝
不仅可以拷贝单个文件,还可以拷贝多个文件;
格式:cp 被拷贝文件 副本文件
不一定要在同一目录下拷贝;
运行cp new_file new_file_copy 可以看到多了一个文件;

如果拷贝在其他目录,只需要把第二个参数换成目录名即可:
cp new_file one/

如果拷贝文件到别的目录,而且换个名字:

拷贝目录:
需要在命令之后加上-r 或者-R参数
因为这是Recursive的缩写,表示递归

使用通配符
把当前目录以ha*开头的文件都拷贝到folder目录中;
通配符很强大,可以提高效率;
==================================================
mv 移动命令 移动文件,类似于剪切+粘贴
mv 是英文move的缩写,表示移动;
移动文件或者目录;
重命名文件或目录;

移动目录比较简单

mv命令也可以配合通配符一起使用;
mv命令还可以重命名文件;
机制是移动后,文件的原名字变成新的名字,这就相当于重命名;

==================================================
rm 命令 用来删除文件和目录
rm可以删除 一个文件、多个文件,目录;
删除一个文件:

删除多个文件
只要用空格隔开每个文件即可

-i参数 向用户确认是否删除
保险起见用rm删除文件时,使用-i参数;

-f参数 强制删除,不会询问
慎用
-r参数 递归地删除
rm -rf 极为危险!
尤其是rm -rf / //这个直接把整个系统删掉了
只有root用户能用这个命令;
现在Linux系统一般都有保护机制;

但是如果在/目录下 运行rm -rf /的话,就没有保护措施;
================================================
ln命令 创建链接
ln 类似于快捷方式,用于在文件之间创建链接;
Linux有两种链接类型:
物理链接、硬链接
符号链接、软链接
文件存储:
大致来说,每个文件分为两个部分:文件名+文件内容
文件名的列表是存储在硬盘的其他地方的;和文件内容分开存放的;这样方便Linux管理;
其实每个文件有三部分:
文件名、权限、文件内容;
每个文件的文件内容被分配到一个标识号码,叫做inode;
每个文件名都绑定到其文件内容(用inode标识);
创建硬链接:
使链接的两个文件,共享同一个文件内容;硬链接有缺陷,只能创建指向文件的硬链接,不能创建指向目录的硬链接;
通过一些参数的修改,也能创建指向目录的硬链接,但是比较麻烦;
软链接可以指向目录或文件。目录一般用软链接;
创建一个硬链接
ln 被硬链接的文件 硬链接文件

使用ls -i 查看文件的inode

对于硬链接来说,只有同时删除file1 与 file2,inode才会真正被删除;
此外可以发现删除file2之后,ls -l中 详细信息行中 2变成1,说明指向该inode的文件剩下一个;

软连接比较像Windows的快捷方式;
创建软连接需要加上-s参数 s是symbolic的缩写;
创建硬链接不需要任何参数;
格式 ln -s file1 file2 //创建file1的软连接file2
file2此时指向的是file1文件名,而不是像硬链接那样指向inode;
而且可以看到软链接file2开头的字母变成了l,表示软连接;
而且还可以看到1,而不是像硬链接那样是2;

而且inode号是不一样的;

对于软链接而言,删除file2对于file1来说没什么影响;
但是如果删除file1,file2会变成死链接,不知道指向谁;
变成红色了;

此外软链接是可以指向目录的;
================================================
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号