linux
linux终端怎么进入编辑模式?
一、linux终端怎么进入编辑模式?
Linux终端进入编辑模式的方法
Linux是vim进行文档编辑
一、一般模式切换到编辑模式
1、i:进入插入模式。从目前光标处插入。
2、I(大写i):进入插入模式。从目前所在行的第一个非空格符处开始插入。
3、a:进入插入模式。从目前光标所在处的下一个字符处开始插入。
4、A:进入插入模式。从光标所在行的最后一个字符处开始插入。
5、o:进入插入模式。从目前光标处所在的下一行处插入新的一行。
6、O:进入插入模式。从目前光标所在处的上一行插入新的一行。
7、r:进入替换模式。替换光标所在处的那一个字符一次。
8、R:进入替换模式。一直替换光标所在处的字符,直到按下Esc键为止。
9、Esc:退出编辑模式返回到一般模式。
二、从一般模式切换到命令行模式
1、:w:把编辑好的数据写入到硬盘文件中。
2、:w!:当文件属性为“只读”时强制写入该文件。具体能不能写入还要看该文件的文件权限。
3、:q:离开vi。
4、:q!:如果修改过文件但不需要存储,使用“!”强制离开不保存文件。
5、:wq:保存后离开。
6、:wq!:强制保存后离开。
7、:w[filename]:将编辑的数据保存成以filename命名的文件,相当于另存为文件。
8、:r[filename]:在编辑的数据中读另一个文件的内容,即将filename文件的内容加载到光标所在行的后面。
9、:num1,num2w[filename]:将num1到num2的内容保存成文件名filename的文件。
10:、:set nu:显示行号,设置完成后将会在每一行的前缀显示行号。
11、:set nonu:取消行号。
二、linux编辑模式怎么取消字符标注?
在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,
对于回车符的定义:
windows:0D0A
unix\linux: 0A
MAC: 0D
比较快捷的去除这些符号的方法有这么几种:
(1)是用VI的命令:
使用vi打开文本文件
vi dos.txt
命令模式下输入
:set fileformat=unix
:w
(2) VI下使用正则表达式替换
g/\^M/s/\^M//
或者
%s/^M//g
(3)使用sed 工具
sed ’s/^M//’ filename > tmp_filename
(4)既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现:
tr -d '\r'
(5)最后一个方法是本人最常用的方法,个人觉得最方便
在终端下敲命令:
$ dos2unix filename
直接转换成unix格式,就OK了!~
三、Linux 下的文本编辑工具 有哪些?
如果是要写文章的话,我推荐一款Markdown文件编辑软件:Typora
安装方式:输入命令
sudo snap install typora
四、linux中怎么在终端中编辑文本之后保存?
在linux终端下用命令编辑一个文件并保存的具体操作步骤如下:
1、首先打开命令控制台找到copy要编辑的文件,执行命百令ls看看下面有几个文件,我这个下面有个index.php文件。
五、合适linux系统的文本编辑工具有哪些?
文本处理工具
课堂前疑问
awk:
- 文本级数据处理编程语言
- 可获取并打印特定内容
- 名字来源于。。。。
awk 语法规则
- awk [options] -f profile file
- awk [options] 'program'file
常用选项
读取脚本的方式
——————————————————————————————
程序脚本中变量的各种含义
awk打印变
此处先在lab3目录 ln 一个链接,相当于复制文件到目录内,
FS=","辨识原信息中逗号,把信息分隔开来,分成按需序号排列的信息模块,之后第二个大括号内的$2则代表第二个模块的内容 |代表管道管道符(匿名管道)是Shell编程经常用到的通信工具。. 管道符是" | ",主要是把两个应用程序连接在一起,然后把第一个应用程序的输出,作为第二个应用程序的输入。. 如果还有第三个应用程序的话,可以把第二个程序的输出,作为第三个应用程序的输入,以此类推。
自定义变量名规则
自定义变量的操作
自定义变量的其他方式
运算法则和匹配
单引号双引号的区别和应用
sed语法规则
sed [OPTION]{script}[input-file]
常用选项
脚本中常用内容
a text:在每行后面加上新行text
i text :在每行前面加上新行text
r filename:在每行后面加上filename中的所有内容
R filename:在每行后面依次加上一行filename中的内容
d :删除
p:打印
s/pattern/repalce_string/ :把pattern替换成replace_string
w filename :另存为
打印实例
这里的-n是必须的,不然会把内容先一行一行打印出来
插入文本内容实例
这里要注意一下有r和没有r的区别
寻址
存储示例
存放在aaa中
查找以TP53开头的数据并存放在文件aaa中
替换脚本
形式
s/pattern/repalce_string/flags
flag
- 数字:第几行模式匹配的地方
- g :替换所有
- p :打印原来的行
- w filename:替换的结果写到文件filename中
替换示例
- 替换每一行的第一个字符
- 替换每一行所有pattern
- 从第m行到第n行替换
- 在同一个文件中替换并保存
单引号双引号的区别(?)
a=foobar是shell的变量赋值,a是变量名,它等于foobar,后面可以直接引用。
grep
- global regular expression print
- 文本搜索工具
grep语法规则
-a --text #不要忽略二进制的数据。
-A<显示行数> --after-context=<显示行数> #除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b --byte-offset #在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> --before-context=<显示行数> #除了显示符合样式的那一行之外,并显示该行之前的内容。
-c --count #计算符合样式的列数。
-C<显示行数> --context=<显示行数>或-<显示行数> #除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> --directories=<动作> #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> --regexp=<范本样式> #指定字符串做为查找文件内容的样式。
-E --extended-regexp #将样式为延伸的普通表示法来使用。
-f<规则文件> --file=<规则文件> #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F --fixed-regexp #将样式视为固定字符串的列表。
-G --basic-regexp #将样式视为普通的表示法来使用。
-h --no-filename #在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H --with-filename #在显示符合样式的那一行之前,表示该行所属的文件名称。
-i --ignore-case #忽略字符大小写的差别。
-l --file-with-matches #列出文件内容符合指定的样式的文件名称。
-L --files-without-match #列出文件内容不符合指定的样式的文件名称。
-n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。
-q --quiet或--silent #不显示任何信息。
-r --recursive #此参数的效果和指定“-d recurse”参数相同。
-s --no-messages #不显示错误信息。
-v --revert-match #显示不包含匹配文本的所有行。
-V --version #显示版本信息。
-w --word-regexp #只显示全字符合的列。
-x --line-regexp #只显示全列符合的列。
-y #此参数的效果和指定“-i”参数相同。
grep [OPTIONS] PATTERN <filename>
示例
who的运用
三剑客小结
sort命令的书写
语法及其常用参数格式
sort [-bcfMnrtk][源文件][-o 输出文件]
补充说明:sort可针对文本文件的北荣,以行为单位来排序。
参数(用法,指令)
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序
-n 依照数值的大小进行排序
-o<输出文件> 将排序后的结果存入指定的文件
-r 以相反的顺序来排序
-t<分隔字符> 指定排序时所用的栏位分隔字符
-k 选择以哪个区间进行排序
举例
(1)sort
(2)sort的-u选项
(3)sort的-r选项
(5)sort的-o选项
但如果是将排序结果输出到原文件中,用重定向就不行了
例如:
这么做之后,number这个文件将被清空
就在这个时候,-o选项出现了,它完美地解决了这个问题,让你放心的将结果写入原文件,
这就是为什么-o比重定向优势的原因
例如:
(6)sort的-n选项
我们会经常遇到排序下来10比2“小”的情况。
出现这种情况主要是由于排序程序将这些数字按照字符来排序了,排序程序会先比较1和2,显然1比2小,所以就将10放在2前面,这也是sort一贯的作风。
我们如果想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!
(7)sort的-t选项
(8)cat file1 file2 | sort
合并两个文件并排序
(9)sort -k n <filename>
按第n个key排序
(10)其他的sort常用选项
-f会将小写字母都转化为大写字母来进行比较,即忽略大小写
-c会检查文件是否排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C会检查文件是否已经排好序,如果乱序,不输出内容,仅返回1
-M会以月份来排序,比如JAN小于FEB等等
-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
课件示例
问:这里的k3 和k4 的含义是指先排序key3再排列key4?最后的4n是啥意思嘞?
先按第3列排序 如果第3列相同 则按第4列排序。第四列按照数值大小排序,而第三列则按字典顺序排,例如1 10 11 12……2 20 21 22……3这样的顺序
uniq:去除重复
uniq用法:uniq [option] <filename>
语法:uniq [-cdu][-f][-s][-w][--help][--version][输入文件][输出文件]
参数
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f或--skip-fields= 忽略比较指定的栏位。
-s或--skip-chars= 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w或--check-chars= 指定要比较的字符。
--help 显示帮助。
--version 显示版本信息。
示例
[输入文件] 指定已排序好的文本文件。
[输出文件] 指定输出的文件。
文件testfile中第2 行、第5 行、第9 行为相同的行,使用uniq 命令删除重复的行,可使用以下命令:
uniq testfile
testfile中的原有内容为:
$ cat testfile #原有内容
test 30
test 30
test 30
Hello 95
Hello 95
Hello 95
Hello 95
Linux 85
Linux 85
使用uniq 命令删除重复的行后,有如下输出结果:
$ uniq testfile #删除重复行后的内容
test 30
Hello 95
Linux 85
检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:
uniq-c testfile
结果输出如下:
$ uniq-ctestfile #删除重复行后的内容
3 test 30 #前面的数字的意义为该行共出现了3次
4 Hello 95 #前面的数字的意义为该行共出现了4次
2 Linux 85 #前面的数字的意义为该行共出现了2次
补充
linux中的uniq命令的常见例子
当你有一个包含相同条目的雇员(employee)的文件,你可以以如下方式来删除相同的条目
$ sort namesd.txt | uniq
$ sort –u namesd.txt
如果你想知道有多少行是相同的,可以像下面这个做。以下例子中的第一列显示该行的重复数量。在本例中,以Alex和Emma开头的行,在文件中有两个重复行。
$ sort namesd.txt | uniq –c
2 Alex Jason:200:Sales
2 Emma Thomas:100:Marketing
1 Madison Randy:300:Product Development
1 Nisha Singh:500:Sales
1 Sanjay Gupta:400:Support
以下命令仅仅列出了相同的条目
$ sort namesd.txt | uniq –cd
2 Alex Jason:200:Sales
2 Emma Thomas:100:Marketing
cut提取特定列
用法
- cut -c list <filename> 剪下list所列的字符
- cut -f list <filename> 剪下list所列的field
cut示例
要显示字段的某个范围,可以指定开始和结束的字段,中间用连字符(-)连接,如下所示:
paste
使用注意事项
粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本,除非指定-d选项,它将成为域分隔符。
paste选项及其含义
paste -d -s -file1 file2
-d 指定不同于空格或tab键的域分隔符。例如用@分隔域,使用- d @。
-s 将每个文件合并成行而不是按行粘贴。- 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。
示例
#cat pas1
ID897
ID666
ID982
#cat pas2
P.Jones
S.Round
L.Clip
基本paste命令将pas1和pas2两文件粘贴成两列:
# paste pas1 pas2
ID897 P.Jones
ID666 S.Round
ID982 L.Clip
通过交换文件名即可指定哪一列先粘:
# paste pas2 pas1
P.Jones ID897
S.Round ID666
L.Clip ID982
要创建不同于空格或tab键的域分隔符,使用-d选项。下面的例子用冒号做域分隔符。# paste -d: pas2 pas1P.Jones:ID897S.Round:ID666L.Clip:ID982
要合并成两行,而不是按行粘贴,可以使用-s选项。下面的例子中,第一行粘贴为ID号,第二行是名字。# paste -s pas1 pas2ID897 ID666 ID982P.Jones S.Round L.Clip
join
命令概述
join命令用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
注意:join在对两个文件进行连接时,两个文件必须都是按照连接域排好序的,按其他域排序是无效的。
命令格式
用法:join [选项]... 文件1 文件2
常用选项
针对每一对具有相同内容的输入行,整合为一行写到标准输出,
默认的内容连接区块是由第一个空白符代表的分界符号。当文件1
或文件2 都被指定为"-"时,程序将从标准输入读取数据。
-a 文件编号 文件编号的值可以是1 或2,分别对应文件1 和 文件2。
此选项用于根据指定文件编号输出不成对的行目。
-e 字符 将缺失的输入区块替换为指定字符
-i, --ignore-case 比较时忽略大小写
-j 域 等于"-1 域 -2 域"
-o 格式 按照指定格式构造输出行
-t 字符 使用指定字符作为输入和输出的分隔符
-v 文件编号 类似 -a 文件编号,但禁止组合输出行
-1 域 在文件1 的此域组合
-2 域 在文件2 的此域组合
--check-order 检查输入行是否正确排序,即使所有输入行均是成对的
--nocheck-order 不检查输入是否正确排序
--header 将首行视作域的头部,直接输出而不对其进行匹配
--help 显示此帮助信息并退出
--version 显示版本信息并退出
除非使用了"-t 字符串" 选项,否则前导空格分隔的域将被忽略,如果指定了字符串,
则使用指定字符串分隔任意的域并从1 开始计数的域编号。可以指定的格式是由一个
或多个逗号活空格所分隔的描述,其形式为"文件编号.域"或者"0"。默认的
格式输出合并后的域、文件1 和文件2 剩下的域,均由该指定字符串分隔。
重要提示:文件1 和文件2 必须在合并域中排序。
例如,如果"join"后没有选项,使用"sort -k 1b,1"。
注意,所进行的比较遵从"LC_COLLATE"所指定的的规则。
如果输入没有被排序并导致某些行无法合并,将会显示警告信息。
参考示例
两个文件内容如下
[deng@localhost test]$ cat file1
1 一月
2 二月
3 三月
4 四月
5 五月
6 六月
7 七月
8 八月
9 九月
10 十月
11 十一月
12 十二月
13 十三月
[deng@localhost test]$ cat file2
1 January
2 February
3 March
4 April
5 May
6 June
7 July
8 August
9 September
10 October
11 November
12 December
14 MonthUnknown
[deng@localhost test]$
内连接(忽略不匹配的行)
[deng@localhost test]$ join file1 file2
1 一月 January
2 二月 February
3 三月 March
4 四月 April
5 五月 May
6 六月 June
7 七月 July
8 八月 August
9 九月 September
10 十月 October
11 十一月 November
12 十二月 December
[deng@localhost test]$
【此处观察可发现13和14行已不见了踪影,因为不指定任何参数的情况下使用join命令,就相当于数据库中的内连接,关键字不匹配的行不会输出。】
左/右连接(-a的用法,又称左/右外连接,显示左/右边所有记录)
显示左边文件中的所有记录,右边文件中没有匹配的显示空白。(a1中的1则代表文件1,即左边的文件)
全连接(又称全外连接,显示左边和右边的所有记录)
指定输出字段(-o的用法)
参数 -o 1.1 表示只输出第一个文件的第一个字段。
指定输出多个字段(-o的用法)
输出第一个文件的第一个字段,输出第二个文件第二个字段
输出第一个文件的第一个字段和第二个字段,输出第二个文件第二个字段
当第一个文件第三个字段不存在的情况下,自动省略“1.3”以及其后面的列
指定分隔符(-t)
指定了以两个文件中第一列做匹配字段
等同于join file1 file2 [deng@localhost test]$ join -j1 file1 file2
1 一月 January
2 二月 February
3 三月 March
4 四月 April
5 五月 May
6 六月 June
7 七月 July
8 八月 August
9 九月 September
10 十月 October
11 十一月 November
12 十二月 December
[deng@localhost test]$
指定匹配的字段
以第一个文件的第二列和第二个文件的第三列做匹配字段。由于第二个文件中第三列的两个3 都与第一个文件中第三行因此输出
[deng@localhost test]$ join -1 1 -2 2 file1 file2
join: file1:10: is not sorted: 10 十月
join: file2:2: is not sorted: 2 February
[deng@localhost test]$
指定字符的补全
-o 指定 将file1的1,2列,file2的1,2 列都输出。-a指定将file1中不匹配的行也输出,但是file2中没有与file1后两行对应的字段,因此使用empty补齐
[deng@localhost test]$ join -o 1.1 1.2 2.1 2.2 -e 'empty' -a1 file1 file2
1 一月 1 January
2 二月 2 February
3 三月 3 March
4 四月 4 April
5 五月 5 May
6 六月 6 June
7 七月 7 July
8 八月 8 August
9 九月 9 September
10 十月 10 October
11 十一月 11 November
12 十二月 12 December
13 十三月 empty empty
[deng@localhost test]$
不匹配的行输出
[deng@localhost test]$ join -v 1 -a1 -a2 file1 file2
13 十三月
14 MonthUnknown
[deng@localhost test]$
结合管道使用
有时我们需要将多个格式相同的文件join到一起,而join接受的是两个文件的指令,此时我们可以使用管道和字符“-"来实现
[deng@localhost test]$ join file1 file2 | join - file2 | join - file1
1 一月 January January 一月
2 二月 February February 二月
3 三月 March March 三月
4 四月 April April 四月
5 五月 May May 五月
6 六月 June June 六月
7 七月 July July 七月
8 八月 August August 八月
9 九月 September September 九月
10 十月 October October 十月
11 十一月 November November 十一月
12 十二月 December December 十二月
[deng@localhost test]$
split(分割文件)
Split:按指定的行数截断文件
格式: split [-n] file [name]参数说明:-n: 指定截断的每一文件的长度,不指定缺省为1000行file: 要截断的文件name: 截断后产生的文件的文件名的开头字母,不指定,缺省为x,即截断后产生的文件的文件名为xaa,xab....直到xzz例一:split -55 myfile ff将文件myfile依次截断到名为ffaa,ffab,ffac.....的文件中,每一文件的长度为55行
按文件大小分割
[root@pps public_rw]# split -b 20m 文件名称[root@pps public_rw]# ls -lh总计 552M-rwx------ 1 hoho hoho 276M 2005-09-09 RevolutionOS.rmvb-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_aa-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_ab...-rw-r--r-- 1 root root 20M 03-19 18:00 RevOS_part_am-rw-r--r-- 1 root root 16M 03-19 18:00 RevOS_part_an
“-b 20m”指定分割文件的大小为20M,文件后面的“RevOS_part_”是分割文件的前缀,最后的是16M的“剩余”文件。
组装文件:
[root@pps public_rw] cat RevOS_part_* > RevolutionOS_RSB.rmvb
这里不怕组装顺序错误,因为分割的时候是按字母顺序排下来的,cat也是按照字母顺序处理的,如果不放心,将组装后的文件哈希对比一下:
[root@pps public_rw]# md5 sum RevolutionOS.rmvbac7cce07f621b1ed6f692e6 df0ac8c16 RevolutionOS.rmvb
[root@pps public_rw]# md5sum RevolutionOS_RSB.rmvbac7cce07f621b1ed6f692e6df0ac8c16 RevolutionOS_RSB.rmvb
放心了吧:)
如果要分割的是一个文本文件,比如有好几千行,当然每行的字符数是不等的,想要以行数为分割,比如每100行生成1个文件,只需要 -l 参数,如下:
[root@pps public_rw]# split -l 100 test.txt
其实,如果不加任何参数,默认情况下是以1000行大小来分割的。
diff
diff(选项)(参数)
选项
示例
比较log2014.log log2013.log
[root@localhost test3]# diff log2014.log log2013.log
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12
上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。
并排格式输出
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2014-03 | 2013-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-07 | 2013-08
2013-09 2013-09
2013-10 2013-10
2013-11 <
2013-12 <
[root@localhost test3]# diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
> 2013-11
> 2013-12
"|"表示前后2个文件内容有不同"<"表示后面文件比前面文件少了1行内容">"表示后面文件比前面文件多了1行内容
正则表达式
什么是正则表达式?
正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。
正则表达式与通配符的区别
- 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式
- 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能用shell自己的通配符来进行匹配
通配符的种类和作用
基础正则表达式
正则表达式主要分为基础正则表达式与扩展正则表达式,在linux中扩展正则表达式用得比较少,一般只用于某些特殊场合,先学习基础正则表达式的用法,日后工作如果碰到扩展正则表达式的需求再查阅读相关资料。以下这些正则表达式的元字符需要亲自在linux中反复练习,熟练掌握,日后用处极大。
小结
六、如何用linux中的文本编辑器?
2023年蚂蚁食盐的第12篇专栏文章。大家好,我是蚂蚁食盐!
(本文内容包括文件类型查看、文本文件读写等)
1. Linux文件类型、查看文件类型
在Windows中,可以通过右键属性,或者直接通过后缀名来查看文件的类型。Linux中,特别是命令行中,一旦文件没有后缀名(Linux运行文件可以没有后缀名),甚至无法知道文件是什么类型,怎么打开。因此,Linux中有专门的命令去对文件类型进行反馈。
在Linux命令行中,可以使用ls -l 文件名
来查看此文件的类型,命令行会返回此文件的一些信息,其中为首的是10个字母(如drwxr-xr--
),其中的第一位表示的是此文件的类型,通常为以下几个字符:
-
:普通文件,通常是纯文本文件、二进制文件、数据格式文件、压缩文件等。d
:目录文件(directory),通常是目录,其中存放的是目录中包含文件的相关信息。b
:块设备文件(block),可随机访问设备,如硬盘、光驱等。c
:字符设备文件(character),按时序线性访问设备、如鼠标键盘、猫等串口设备。l
:链接文件(link),表示此文件是一个符号链接文件。p
:管道文件(pipe),一种FIFO的特殊文件类型,主要解决多个程序同时存取一个文件造成的错误。s
:套接字文件(socket),通常在网络之间进行数据连接。 可以用ls -a
来查看所有文件(包括隐藏文件):隐藏文件以.
作为开头,如.bashrc
。
对于具体文件,也可以使用file 文件名
可以对该文件的类型进行返回。另外,Linux也提供了一种查看文件详细信息的命令,使用stat 文件名
即可查看文件的详细属性。值得注意得是,file和stat命令不仅能够对普通文件使用,对于其他种类的文件也都可以使用。
2. 查看文档的5个命令
Linux中提供了一系列查看文档的命令:cat
、more
、less
、head
、tail
。5个命令的基本用法是命令 文件名
,即可查看文档内容。区别之处在于,cat命令会将整个文档都读入内存,其他4个只会将需要显示的部分进行读取。其中全部阅读推荐使用less
命令,实时查看追加内容建议使用tail -f 文件名
命令。除此之外,这些命令的常见选项和具体用法为:
cat命令
cat 文件名
:打印文件的全部内容至命令行窗口。cat -n 文件名
:打印文件的全部内容,在左侧加入行号后输出至命令行窗口。cat -b 文件名
:打印文件的全部内容,非空行左侧加入行号后输出至命令行窗口。cat -s 文件名
:打印文件的全部内容,多个空行会变成一个空行输出至命令行窗口。
更高级的cat命令:batcat(原名bat)。batcat 文件名
能替代cat命令的功能,并且默认了代码高亮、显示文件名、显示行号、分页输出等功能,可在命令行中更清晰的查看文本的内容,进入batcat的交互模式后,操作方式和less命令交互类似【空格为向下翻页,b为向上翻页,q为退出】。其他的相似命令还有ccat等。
bat是一个第三方命令,一般使用者会将bat命令取别名为batcat。可以通过apt install -y bat
或yum install -y bat
进行下载安装。下载安装完后,有些发行版使用batcat 文件名
命令就直接可以输出内容,有的则会提示没有batcat命令。如果提示没有batcat命令,可以在\~/.bashrc(针对当前用户)或/etc/bashrc(针对所有用户)配置文件尾部加入alias batcat="bat"
,重新打开命令行或输入source bashrc路径
生效。batcat会显示默认的配色主题,如果觉得颜色和背景色冲突或想更换配色方案,单次可以使用batcat --theme=TwoDark 文件名
进行显示,也可以在\~/.bashrc(针对当前用户)或/etc/bashrc(针对所有用户)配置文件尾部加入一行export BAT_THEME="Monokai Extended Light"
并使之生效。
【注:TwoDark
、Monokai Extended Light
、GitHub
都是自带主题,可通过batcat --list-themes
查看各种主题配色方案。】
more命令
more 文件名
:显示文件内容。进入more交互页后,按Space
或Ctrl+f
或↓
表示向下翻页,按b
或Ctrl+b
或↑
表示向上翻页,5Enter
表示向下5行,Enter
表示向下1行。翻到文档尾部就会结束交互,按q
也会结束交互。按:f
表示显示文件名和屏幕上末行的行号,按=
表示显示屏幕上末行的行号。more -5 文件名
:表示每次显示5行,向上向下翻页都移动5行。其他选项:-l
选项表示忽略所有换页符,-s
多个空行只保留一个空行,+/pattern
找到第一个有pattern的并从此行开始显示,+5
表示把第5行作为首行在屏幕中显示。
less命令
less 文件名
:显示文件内容。less命令比more命令拥有更多功能。进入交互界面后,按f
、Space
、PgDn
表示向下一页,按d
表示向下半页;按b、PgUp表示向上一页,按u表示向上半页;按5Enter
或5j
表示向下5行,按Enter
或j
表示向下1行,7y
表示向上7行,y
表示向上1行;g
表示翻页至行首,G
表示翻页至行尾。按q
或ZZ
退出交互(less命令无法用Ctrl+c
进行退出)。。less -5 文件名
:表示每次显示5行,向上向下翻页都移动5行(d
和u
不受影响)。其他选项:-m
表示像more一样在屏幕最下方显示阅读百分比,-e
表示像more一样阅读到最后自动离开文档,-s
表示多个空行只保留一个空行,-N
表示在内容前增加行号,-f
表示强制打开非文本文件,-i
表示忽略搜索时的大小写。- less命令还能进行内容搜索,用法和vim相似。在需要查找文档中内容abc时,可以在命令模式下使用
/abc
进行从前到后的匹配,输入待匹配内容后按下回车,就会出现文档中出现的第一处出现abc的地方,按n
会显示匹配的下一处,按N
会显示匹配的上一处。用?abc
可以进行从后到前的匹配,按n
会显示匹配的下一处(下一处在前一处的上方),按N
会显示匹配的上一处(上一处在前一处的下方)。 - more和less还可以作为长文本输出时的查看工具,可以使用命令
cat XXXX | more -5
或ls XXXX | less
对前一个命令的产生的长文本进行处理,翻看时比较方便。
head命令
head 文件名
:可以将文件的前10行输出到命令行。加选项可以更改输出的行数或按照字节进行显示。-n
表示按行输出,-c
表示按字节输出。-n 8
表示输出前8行,-n -8
表示输出除最后8行外的所有行。例:head -n 8 test.txt
表示输出文档的前8行,head -c -8 test.txt
表示输出文档除了最后8字节以外的所有字节。
tail命令
tail 文件名
:可以将文件的后10行输出到命令行。加选项可以更改输出的行数或按照字节进行显示。-n
表示按行输出,-c
表示按字节输出。-n 8
和-n -8
都表示输出后8行,-n +8
表示输出从8行开始的所有行。- tail的另一个重要用途就是跟踪文件的变化。
tail -f 文件名
、tail -F 文件名
、tailf 文件名
都可以实时跟踪文件的变化,在文件变化时同步输出在屏幕上。区别是-f
选项仅保持到此文件被删除或重命名;-F
选项一直保持运行,删除后如果建立同名文件会继续跟踪文件的变化;tailf
和-f
选项相似,但是占用更少的资源。追踪时,用Ctrl+s
表示暂停刷新,用Ctrl+q
表示继续刷新,用Ctrl+c
表示退出交互。
3. 简单文档编辑器:nano、gedit、echo、cat重定向
对于文本文件,我们常常有修改文档内容的需求。通常我们使用vim或emacs就可以对文件进行修改。然而很多时候,供用户使用的Linux系统上不一定有vim或emacs,因此nano和echo便成为了非常实用的文本编辑工具。而对于GUI画面来说,gedit
或GUI中自带的窗口化的文本编辑器与Windows中的notepad功能相似,没有任何学习成本。
1). echo的基本使用
echo "ABCD……"
命令表示向标准输出设备(向终端的屏幕上)输出ABCD……
。使用-n
选项,可以在echo输出的最后一行省略最后一个换行符(即下一行命令提示符紧接着最后一行输出的末尾);使用-e
选项执行文本中的转义字符(不用-e
或使用-E
默认不转义);echo默认不带格式输出,会将所有的文本变为一行,可以将输出的内容添加上双引号,即可输出带格式的文本,如echo "
cat /etc/fstab"
。
利用重定向的机制,则可以向文本中追加写入或者覆盖写入一些文本,达到文本编辑的作用。
- 追加写入:使用
echo "ABCD……" >> A.txt
表示向A.txt文档的末尾追加写入一行文本ABCD……
; - 覆盖写入:使用
echo "ABCD……" > B.txt
表示将B.txt文档内容全部擦除,并在空文档的开头写入一行文本ABCD……
。
另外,也可以使用echo "$(< 文件名)"
将文件内容打印在屏幕上(类似cat命令的功能)。
番外:双引号"
,单引号'
,反引号``
,$
,${
}和$()
- 反引号代表将所引用的内容在命令行中先行执行,将反引号输出的内容替代反引号本身作为命令的一部分;
- 单引号表示强引用,会忽略引号中对于字符的处理、路径、字符、命令等,其引用是严格的原封不动的引用;
- 双引号表示弱引用,会将一些特殊字符(如
$ ' " \
等)进行解析,在引号中替代特殊字符部分; - 双引号可用于含有空格字符串的处理;若双引号中的特殊符号不想被解析可以在特殊字符用转义符号
\
。 $(命令)
的用法和反引号一致,都是加入命令提前执行;${变量}
的用法和$变量
一致,都是获取Linux(环境)变量的值。
2). cat重定向进行文本写入
使用cat 文件名
命令可以在命令行中打印文档的全部内容。如需要一同打印文件的行号,可加入-n
选项(打印所有行的行号)或-b
(不打印空行行号)。如果不希望打印多个空白行,使用-s
(多个空白行只打印一个空白行)。
使用cat和重定向功能,可以进行文件清空,文本覆盖写入、追加写入等功能。
- 使用
cat << EOF > test.txt
,可以向test.txt文件中逐行覆盖写入键盘输入的文本,以EOF
字符作为结束写入的标志。 - 使用
cat > test.txt
,可以向test.txt文件中逐行覆盖写入键盘输入的文本,结束写入时利用Ctrl+d
进行结束。 - 使用
cat > test.txt
,可以向test.txt文件中逐行追加写入键盘输入的文本,结束写入时利用Ctrl+d
进行结束。 - 使用
cat > /dev/null > test.txt
,可以将文件内容进行清空。 - 使用
cat File1.txt File2.txt > File0.txt
,可以将多个文件的文本按命令中的顺序依次写入File0.txt中。 - 使用
cat FILE1 > FILE2
,常用来做文件镜像或镜像盘,如#cat ABCD.iso > /dev/sdb
。
3). 最“简单”的编辑器Nano
使用nano 路径/文件名
可以将文件打开进行编辑。Nano的使用方法较为简单,使用说明在交互界面的下方即有说明。
值得说明的是Linux对于键盘操作的简写:对于Windows键盘而言,C^x
表示的是Ctrl+x
,M^x
表示的是Alt+x
。
总结
本文介绍了Linux文件的种类和查看文本文件和修改文本文件的命令,下次将介绍vim编辑器。
七、求推荐linux下文本编辑器,类似Ultraedit,很方便切换列块模式?
大部分写作软件和文本编辑器我都试过。
个人比较喜欢小黑屋,但这东西好久不更新了有时候稳定性差点意思。
最近觉得墨者写作也不错,但是动不动就弹出窗口提示有人邀请我拼字,拼字……老子一天才3000多。
其实想要稳定的工具,纯粹的文本编辑器就不错。
比如:Notepad++;UltraEdit;editplus都不错,功能纯粹,非常适合需要断网的纯单机写作环境(断网才能安静写点东西)。Gvim不推荐,设置太麻烦,熟悉的程序员除外。
下面这个是Notepad++
基本功能一个不少,字数统计,断电自动保存(再次打开就能继续),章节目录功能可以用文件夹工作区代替,文档结构图可以快速定位,改文很方便。
最关键的这是老牌软件稳定性有保证。
八、Linux中强大的文本编辑工具-Vim详解
Linux中强大的文本编辑工具-Vim详解
在Linux系统中,Vim是一款备受推崇的文本编辑工具。它不仅仅是一个编辑器,更是程序员和系统管理员的利器。本文将深入探讨Vim的相关知识,带您了解这款强大的编辑工具。
Vim介绍
Vim是一个功能强大的文本编辑器,最初是由Bram Moolenaar开发的Vi文本编辑器的升级版本,它提供了比Vi更多的功能和特性。在Linux系统中,Vim是默认安装的编辑器之一,也是许多程序员和系统管理员的首选。
为什么选择Vim
Vim具有强大的定制能力、丰富的插件支持以及高效的操作方式。与其他文本编辑器相比,Vim可以极大地提高编程效率,尤其适合处理大量代码和文本文件。
Vim基本操作
在使用Vim时,掌握一些基本操作是至关重要的。例如,切换模式、移动光标、文本编辑、保存文件等功能都是日常编辑中常用的操作。
- 切换模式:Vim有多种模式,包括普通模式、插入模式、命令模式等,通过键盘命令可以在不同模式间切换。
- 移动光标:在Vim中,使用h、j、k、l键可以控制光标向左、下、上、右移动。
- 文本编辑:Vim支持文本替换、删除、复制、粘贴等操作,通过命令可以方便地对文本进行编辑。
- 保存文件:在普通模式下,使用:w命令可以保存文件。
Vim插件
通过安装插件,可以使Vim功能更加强大,满足不同用户的需求。常用的插件管理工具有Vundle、Pathogen和Vim-plug等,可以帮助用户快速管理和安装插件。
结语
通过本文的介绍,相信您对Vim这一强大的文本编辑工具有了更深入的了解。在Linux系统中,熟练掌握Vim不仅可以提高工作效率,还可以带来更好的编程体验。
感谢您看完这篇文章,希望本文能够帮助您更好地了解和使用Vim这款优秀的文本编辑工具。
九、centos 编辑文本
CentOS 编辑文本操作详解
在 CentOS 操作系统中,编辑文本文件是开发人员和系统管理员必不可少的操作之一。无论是修改配置文件、编写脚本还是编辑日志文件,掌握编辑文本的技巧是非常重要的。本文将介绍 CentOS 中编辑文本的常用方法和技巧,帮助您提高工作效率。
使用文本编辑器进行编辑
在 CentOS 中,有许多文本编辑器可供选择,比如 Vim、Nano、Emacs 等。其中,Vim 是最常用的文本编辑器之一,也是很多开发人员的首选。要使用 Vim 编辑文本文件,只需在终端输入vim 文件名即可打开相应的文件。接下来,您可以使用各种命令进行编辑,比如插入、删除、保存等。
另外,如果您对 Vim 不太熟悉,也可以选择使用 Nano 等简单易用的编辑器。Nano 操作起来更加直观,适合新手快速上手。
常见编辑操作
编辑文本文件时,常见的操作包括插入文本、删除文本、复制粘贴文本等。以下是一些常用的编辑操作技巧:
- 插入文本: 在 Vim 编辑器中,按下 i 键即可进入插入模式,之后就可以开始输入文本。完成后,按下 Esc 键退出插入模式。
- 删除文本: 在 Vim 中,按下 x 键可以删除光标所在位置的字符;按下 dd 可以删除整行文本。
- 复制粘贴文本: 在 Vim 中,按下 y 键可以复制选中的文本;按下 p 可以粘贴文本到光标位置。
文本搜索和替换
在编辑大型文本文件时,经常需要查找特定内容并进行替换。在 Vim 中,可以使用/关键词来查找文本,使用:s/旧内容/新内容/g来替换文本。
除了 Vim,一些其他编辑器也提供了类似的搜索替换功能。通过熟练掌握这些功能,你可以更快速地定位和修改文本文件中的内容。
编辑配置文件
在 CentOS 中,配置文件是系统运行和应用程序正常工作的关键。因此,编辑配置文件是非常常见的操作。比如,编辑 /etc/hosts 文件可以配置主机名和 IP 地址的映射关系;编辑 /etc/fstab 文件可以配置磁盘挂载信息等。
在编辑配置文件时,务必谨慎操作,避免误操作导致系统异常。在编辑关键配置文件前,最好备份原文件,以防意外发生。
结语
通过本文的介绍,相信大家已经对 CentOS 中编辑文本的操作有了更深入的了解。编辑文本是 Linux 系统使用过程中的基础操作,熟练掌握编辑技巧可以提高工作效率,减少不必要的出错风险。希望本文对您有所帮助,谢谢阅读!
十、word2010中,文本编辑模式有?
打开Word2010文档窗口,切换到“审阅”功能区。
在“修订”分组中单击“修订”按钮使其显示为非启用状态即可, 单击“修订”按钮取消修订编辑模式
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...