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会变成死链接,不知道指向谁;

变成红色了;

 

此外软链接是可以指向目录的;

================================================

   

原文地址:https://www.cnblogs.com/grooovvve/p/12439012.html