当前位置: 首页 > article >正文

linux-24 文件管理(二)文件编辑,字符集,nano,文件删除,rm

    我们创建文件还可以使用文件编辑器来实现,我们在Windows上怎么创建一个文件呢?
点右键通创建一个文本文档?是不是这样子,然后在里面开始编辑。事实上,它就是个编辑器,打开之后填内容的对不对?那事实上,在linux里边也有很多的编辑器,什么叫文本编辑器?word是不是文本编辑器?不是,word是个字处理器。它可不是文本编辑器,什么叫文本?这里我们要说明白。
    当然,首先我们需要先知道ASCII码,什么叫ASCII?它叫做美国国家标准信息交换代码。
a叫做Ameria,是美国的标准信息交换代码。那ASCII码到底是什么玩意儿呢?简单来讲,假如说我们一共有128个字符需要让你去存储,我们有128个字符,这128个字符,我们需要存储下来,怎么存?怎么存储到计算机上?计算机只能存储二进制信息,对吗?二进制的,那想象一下,我存储128个字符,这128个是不是不相同啊?128个是不同的字符,那这128个不同的字符怎么存?第一个叫零,第二个叫呢?叫一,第三个叫一零,是不是这样子,是不是这种格式的?那事实上,有没有想象过我们一共使用多少位可以全部引用这128种不同的变化?
    我使用多少个二进制位可以表示变化,大家应该都学过,所谓的排列组合,对吗?来猜一下,
我要想表示128种,128种不同的组合,需要多少个二进制位?一个位上要么有要么没有,
这个不是什么难题,这应该是个常识,对吧?首先,二的六次方所表示的数值范围是多大?从零到63,二的六次方是从零到63,零到63,一共是多少个数字?64个,但是它包含了零要记明白这一点,所以是64个数字,那同样道理,二的七次方呢?是从几到几?零到一二七,一共多少个?128个,也就意味着七位二进制就可以表示128种不同的变化了,可以这么理解吧,这变化就从000 0000到111 1111,就这么多种变化,找任何一位变化,不管怎么变,它最多只能表示这么多种不同的类型,但是我们知道,计算机存储数据的最小单位是什么?字节,一个字节是多少位?那因此虽然是128个不同的字符,但实际上它存储的时候还要使用八位,因为它不可能再少,在计算机里边,任何一个最小存储单位虽然是位,但在内存里边我们引用通常都是字节,在磁盘上它也是字节,不能再小了。

    那因此,ASCII码是什么呢?它其实就是靠这些基本的二进制位的变化来表示一些不同字符,但是你有没有想象过,为什么把01000001理解为A这个字符,请问它为什么是A?它天生就是A吗?说它是个B行不行?二进制和字符之间有关系没有?没有,那我们为什么说它是A?如果别人非得解释为B行不行?为了避免这种情况的话,怎么办?标准化,这就是标准化的意义了。我们制定个标准,大家以后看到这个字符串都理解为A,听懂了吗?这就叫ASCII码表,以后你看到了去查这张表,知道这就是A,就这么简单。那为什么它叫做文本呢?想一下,假设我说01000001是用来代表A的,只有这么多数据,我们可以使用一种状态换字符,把它转换成t=A来显示对不对?使用文本文档,那你有没有想过在Word文件里边,大家知道word存储一个A以后还可以存储很多信息?字体大小,颜色格式是不是很多种?那你有没有想象过?我把它存储为A,存储为蓝色,这个蓝色本身需要不需要数据来进行描述?这些数据放在什么地方?这些数据和你显示的文本有关系吗?没有,它只是说修饰了这个文本的颜色而已,能明白这意思吗?或者修饰了这个文本的属性而已,所以我们说这叫字处理器,它不是文本编辑器,因为它存储的不是文本,或者是它存储的不仅仅是文本,还包括很多额外的,事实上我们看不到的信息,或者说事实上我们压根就没用的信息,所以ASCII码就是纯文本的,没有任何修饰信息的,但word所处理的并非如此,你有没有想象过,编一个Word文档,你里边就存储着,哪怕一个字符A,你在里边给它加点颜色,修改字体大小再搞点什么下划线之类的,一存储你会发现这文件大小可能已经很大了。但是要存储文本文件,那可能只有一个字节而已。
    有没有观察过?这就是文本和字的字处理器的区别。那既然说到这了,我们不妨再延伸一点点,
知不知道我们的中国的汉字是怎么用计算机存储并表示的?常用汉字有多少个?我们英文字母有多少个?你单词无论怎么存储英文字母,也最多只有52个大小写是吧?实际上,只有26个,但中国汉字呢?每两个任何两个汉字都不一样,是不是?所以它有多少种变化呢?想象一下,常用汉字,
当然,也就几千个,对吧?事实上,我们可以实现的汉字大概有十多万个。那因此,为了表示绝大多数常用的汉字,那该怎么办呢?你要表示多少种不同的变化?想象一下,二的16次方可以表示多少个变化?二的16次方那就二的八次方乘以二的八次方那是多少个?65536是吧?它的范围是从零到65535,这就意味着我们使用二的16次方,也就意味着两个字节存一个汉字,就可以表示六万多个行字了,是不是?那请问我这里存储了这样一个字符,0001 1110 0111 1010,请问这是什么?
它到底是两个ASCII码呢,还是一个汉字呢?这取决于什么?取决于语言的原字符集是不是?你想让它解释为什么样的字符,那就在这个数据上给它套上一个叫做字符集,或者叫转义器的东西,
我把它理解成ASCII码,它一定有一个阿斯克码的转换器,相对应的,将它翻译成ASCII码的对应字符能理解吗?那么汉字也是一个道理,汉字也是一个道理,所以如果我们拿的是汉字转换器的话,那么,它一定会把它解释成一个汉字。那请问这个字可以表示"上",上下的上,它可能也可以表示"耳",耳朵的耳,或者表示"卫",卫生的卫,完全都有可能,那到底应该表示什么呢?就像刚才我们说的是一样,01000001既可以表示A,也可以表示B,那到底它应该表示谁?跟ASCII是不是一个道理,我们应该制定标准,如果大家没事都随便乱解释的话,就麻烦大了,是不是这样子?所以我们要遵循同一个法则,那于是就有了很多法则。听说过吧,我们称为叫国标,中国人都叫国标,对吗?比方说,GB18030,这是一种国标,GBK,听说过吧?还有GB2312,这也是一个,所以使用不同的国标翻译器来翻译的时候,可能汉字是不一样的,完全有可能不一样。事实上,还有一种统一的全球统一编码方式叫unicode,unicode这种编码机制将全世界的包括阿拉伯语,日本片假名,就日本学汉字学的一半儿那种,还有韩国那种片假名和中国的汉字等等,全球的所有字符,常用字符揉合到一个字符集里边去,到任何国家都不会显示错误。
    想象一下,中国人本来编译的是汉字,拿到美国去,这个文件美国人他又不懂汉字是不是,他拿着一个英文字符集一翻译,是一堆的看不懂的ASCII码,是不是完全有这种可能?所以,为了实现全球化,就有了unicode代码,叫做unicode。其实计算机它很简单,它最多只能理解零一,别的也理解不了,那我们强行让他知道这是汉字还是字符,实际上是靠软件转换或者叫转译来实现的,所有的功能都是靠软件来完成,计算机只能识别零一而已,那有没有想象过,比如像一个族"卫"字,它是怎么在显示器上显示出来的?到底是如何显示出来的?为什么会显示这种样子?它为什么还有字体的不同?我们所谓的文本编辑器,只是编辑成ASCII码的,一定要记住这一点,这就是为什么我们让在Windows里面使用Notepad++这个工具的原因,这其实就是个文本编辑器,它不是个字处理软件,我们在Windows里边编辑的工具拿到linux里边当配置文件,用使用这个编辑器应该是可以用的,否则你使用word编辑完以后到linux里面去当配置文件用,那就麻烦大了,好在我们linux里边有一个文本编辑,非常之简单,叫做nano,我来man一下,man nano,如下图,

nano - Nano’s ANOther editor, an enhanced free Pico clone,是一个递归缩写,说白了,它就是个简单的,增强的自由的编辑器或者叫的克隆版。当然了,我们不考虑那么多,其实使用它来编辑一个文件也很简单,nano hello,如下图,

这是一个全屏幕的文本编辑器,在里边可以输入内容,this is a test file.写完了,该保存退出了,是不是?在Windows里边咋保存,ctrl+s或者直接点文件保存,然后点叉就关闭了,在这怎么保存和关闭呢?底下有提示,注意看到这个拖字符,一个尖号(^)看到没有?这表示ctrl键,是控制键的意思,那所以我们要写出就是保存一下就使用ctrl+o,按着ctrl的同时按o,如下图,

使用ls -lh 看一下,如下图,

还有大小21个字符,使用file hello 看一下,如下图,

ASCII码没错吧?这样能创建文件的,而且创建的文件我们还可以填进一些内容。当然,其他的编辑工作跟我们此前通过移动光标都能实现的,这个编辑的功能非常小了,后面我们会讲vim。那怎么删除文件?我们使用rm,很简单,后面跟上要删除文件就可以了。比如rm hello,但是它报一个警告,说你的确要删吗?敲个y键,就真删了。ls -l ,没了吧?就这么简单,需要注意的是,如下图,

事实上rm本身是没有这能力的,它不会提示你直接默认,直接就会删的。但是在这里,为什么它会提示我们呢?因为我们这里使用的rm命令已经不再是原生的rm命令,是被修改后的rm命令,怎么修改的呢?叫做命令别名,我使用type rm来看一下,如下图,

他说rm是个别名,是谁的别名?是rm -i的别名,所以rm有个选项叫-i,-i是干什么的呢?-i叫interactive,叫交互式,一旦你删了,他就给你交互一下,问你要不要删?所以默认情况下,它是不会问你的,普通用户,你跳到student,你创建文件,实际上它就不会提示你的,只有管理员才默认有这么一个选项,就是为了避免误操作的,那如果我现在就是想用rm本身,不是这个别名,怎么办?这次我这样写一个命令,斜杠反斜杠rm,\rm a,回车没提示,如下图,

ls,a还有吗?\是什么意思呢?当我们想使用一个命令自身的意思,而不是别名的时候,还可以在命令前面加个斜反斜线,当然,只有别名的命令才有意义,没有别名这样写也没有意义的。还记得ls有别名吗?是不是,那\ls,如下图,

你看,这文件压根就没有颜色的?这目录根本就没有颜色,但是我们使用ls的时候,默认目录会有颜色,为什么呢?type ls,如下图,

你看,ls的方式是ls --color=tty,它使用选项,意思是给你指定了颜色显示方式的,在终端上指定颜色,或者叫以终端的类型、风格来显示颜色的。所以我不想让它提示,就直接用了。

    事实上rm有个专门的选项叫-f,表示强行删除的,叫force,这个别说提示了,明确指定你别给我提示,就是要删,就这意思,-f,好,rm不但可以用来删文件,还可以用来删目录,选项-r表示recursive,什么意思?删除一个目录的时候递归删除这个目录下的所有文件,因此rm -r就可以用来删目录了,而我们使用rm -rf,这什么意思?递归删除目录,而且不用提示,就这意思。所以一个目录下,无论有多少文件,直接就删了,那 rm -rf / 是什么意思啊?删除根目录,及其根目录下的所有文件,所以这个命令一过去,所有数据一溜烟儿驾鹤西游了,再重启一下系统,就发现系统启动不了了。几乎很多人,有三分之一以上的人在工作过程中都有可能犯这个错误的,这些错的原因不是因为他不懂,而是因为太快或者不小心造成的,有人问我,能不能找回删除的文件?我说什么意思?一不小心执行了这个命令,执行了三分钟以后,想起来了,ctrl+c取消了,但是文件已经损失大半,整个系统上,这绝对是致命的,把公司的电脑损坏一台,这是无所谓的,把公司的所有数据都损坏了,那领导可能就要跟你拼命了,就是这个道理,一定要记得,对管理员而言,这个命令太危险了,所以将来大家在生产环境中工作的时候,一定要记得一个法则,不到万不得已的时候,尽可别使用管理员直接登录,管理员的权限太大了。


http://www.kler.cn/a/463734.html

相关文章:

  • Java 数据库连接 - Sqlite
  • Flutter中的网络请求图片存储为缓存,与定制删除本地缓存
  • mysql 忘记root密码 无密码登录系统 配置文件怎么改?
  • 沙箱模拟支付宝支付3--支付的实现
  • 嵌入式学习(21)-正点原子脱机下载器Mini-Pro的使用
  • 【数据结构Ⅰ复习题】
  • 【Web安全】文件写入漏洞 ASP 网页病毒模拟(文件写入漏洞+FilesystemObject)
  • STM32单片机芯片与内部52 I2C 数据手册 寄存器
  • Prometheus 采集 JVM 数据
  • 从0到机器视觉工程师(二):封装调用静态库和动态库
  • 重启ubuntu服务器,如何让springboot服务自动运行
  • 【SQL Server】教材数据库(1)
  • Javascript数据结构常见题目(一)
  • Harmony OS 开发-ArkUI框架速成一
  • 【深度学习】多目标融合算法—样本Loss提权
  • 2024 年发布的 Android AI 手机都有什么功能?
  • springboot529基于JavaWeb的本科生交流培养管理平台的设计与实现(论文+源码)_kaic
  • C++:Windows 多线程 简单示例
  • Ubuntu 24.04安装和使用WPS 2019
  • 2412d,d语言中写汇编
  • 机器学习 LightGBM 算法原理解析
  • QT---------GUI程序设计基础
  • Linux下Shell编程之sed命令详解及示例
  • C#语言的字符串处理
  • 上位机开发 的算法与数据结构
  • ƒ () { [native code] } 的解释