楼主: 一生有你llx

[笔记] Linux基础命令

[复制链接]
论坛徽章:
0
81#
 楼主| 发表于 2019-1-3 07:05 | 只看该作者
tac
        将指定文件中的行,按照反序方式显示。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
        tac [选项]  file

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-b | --before
将分隔符放到文件记录前
-r | --regex
将分隔符当做一般字符处理
-s | --separator=STRING
使用指定的间隔字符取代新建的控制字符

3、实例
1)反序显示
[root@localhost weijie]# cat 1.c           //查看文件内容
hello world,
i am david.
i love linux,
love code.
[root@localhost weijie]# tac 1.c           //反序显示
love code.
i love linux,
i am david.
hello world,
2)将分隔符放在文件前面
[root@localhost weijie]# tac -b 1.c          //将分隔符“回车”放在文件最前面,导致最前面是两个空行,最后一行不能换行,
love code.
i love linux,
i am david. hello world, [root@localhost weijie]




使用道具 举报

回复
论坛徽章:
0
82#
 楼主| 发表于 2019-1-4 06:53 | 只看该作者
tee
        将标准输入的内容复制到指定的文件中,同时在标准输出中显示。
        此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
        tee [选项]  [files]

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-a | --append
追加模式,并不覆盖
-i | --ignore-interrupts
忽略终端信号

3、实例
        将文件内容排序之后保存到另外的地方
[root@192 weijie]# cat 2.c                        //查看内容
hello  linux
i   am weijie
love   world
hehe
im join
[root@192 weijie]# sort 2.c | tee 4.c         //排序之后保存到4.c,并且送到标准输出
hehe
hello  linux
i   am weijie
im join
love   world



使用道具 举报

回复
论坛徽章:
0
83#
 楼主| 发表于 2019-1-5 18:54 | 只看该作者
uniq
      将文件中重复出现的行删除,结果送到标准输出或者指定文件。在使用uniq指令之前,必须使用sort对内容进行排序,否则没有效果。如果没有选项,则将匹配的行合并到第一个匹配项。
     此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
     uniq [选项]  [input] [output]

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-c | --count
显示行重复出现的次数
-d | --repeated
仅显示重复出现的行
-D|--all-repeated[=delimit-method]
打印所有重复行
-f | --skip-fields=N
忽略前n个字段
-i | --ignore-case
比较时忽略大小写
-s | --skip-chars=N
忽略前n个字符
-u | --unique
只显示不重复的行
-z | --zero-terminated
以0字节为结束符,而不是换行
-w | --check-chars=N
比较不超过指定次数

3、实例
     1)删除重复行
[root@192 weijie]# cat 3.c                     //查看内容
nihao linux.
i am david.
nihao linux.
i am david.
[root@192 weijie]# sort 3.c | uniq –c       //先排序,然后再删除重复行,显示重复行出现的次数
      2 i am david.
      2 nihao linux.
     2)只显示不重复的行
[root@localhost weijie]# cat 3.c            //查看内容
nihao linux.
i am david.
nihao linux.
i am david.
i love linux
[root@localhost weijie]# sort 3.c | uniq -c –u     //只显示不重复的行
      1 i love linux




使用道具 举报

回复
论坛徽章:
0
84#
 楼主| 发表于 2019-1-6 08:17 | 只看该作者
vim
        vim是unix系统最通用的文本编辑器,它的功能可以说是非常强大了,它是vi的升级版。vim有三种工作模式:编辑模式、命令模式、末行模式,默认打开的时候进入命令模式。
       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
       vim有许多内置命令,可以帮助我们更好的编辑文件
命令
说明
ESC
进入到命令模式
命令模式

a
从光标位置之后添加内容
A
从光标位置之后添加内容
i
从光标位置开始插入内容
I
从光标所在行的行首开始插入内容
o
光标所在行的下方新建一行
O
光标所在行的上方新建一行
D
删除光标到这一行结束的字符
dd
删除光标行
ndd
删除光标开始的n行
yy
复制光标行
nyy
复制光标开始的n行
p
粘贴到光标下方
P
粘贴到光标上方
/字符串
从光标开始向后查找
?字符串
从光标开始向前查找
进入末行模式
末行模式

num
跳到指定行
w
保存
q
退出
q
强制退出
set nu
显示行号
set nonu
不显示行号
1、语法
       vim [选项]  file

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
+num
从文本的指定行开始显示
-b
进入二进制模式
-d
进入diff模式,编辑多个文件时,显示差异部分
-m
不允许修改文件
-n
不使用缓存
-o
同时打开n个文件
-p
以tab形式显示每个文件
-r
列出缓存,并显示恢复的信息
-s
静默模式,不显示任何错误信息

3、实例
       1)使用tab编辑多个文件
[root@localhost weijie]# vim –p 1.c 2.c                  //tab显示多个文件
1.c  2.c                                                                                                                  X
hello world,
i am david.
i love linux,
love code.
       2)显示行号
  1 hello world,
  2 i am david.
  3 i love linux,
  4 love code.
~                                                                                                                           
                                                                                                                     
:set nu                   //在末行模式下使用set nu显示行号




使用道具 举报

回复
论坛徽章:
0
85#
 楼主| 发表于 2019-1-7 06:53 | 只看该作者
ex
        ex会启动vim编辑器,它的执行效果和vim –E相同。从ex模式回到普通模式,可以在vim中输入:vim。
        此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
        ex [选项]  file

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
+num
从文本的指定行开始显示
-b
进入二进制模式
-c
第一个文件编辑完成偶执行指定的指令
-d
进入diff模式,编辑多个文件时,显示差异部分
-m
不允许修改文件
-n
不使用缓存
-o
同时打开n个文件
-p
以tab形式显示每个文件
-r
列出缓存,并显示恢复的信息
-R
以只读模式打开
-s
静默模式,不显示任何错误信息

3、实例
        ex模式编辑文件
[root@localhost weijie]# ex 1.c               //进入ex模式编辑
"1.c" 5L, 62C
进入 Ex 模式。输入 "visual" 回到正常模式。
:visual                                             //输入visual,回到正常模式
hello world,
i am david.
i love linux,
love code.
nihao ed




使用道具 举报

回复
论坛徽章:
0
86#
 楼主| 发表于 2019-1-8 06:39 | 只看该作者
sed
        sed是一种流编辑器,用来从输入流中读取内容并完成转换,输入流可以来自一个文件,也可以来自一个管道。
       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
       sed [选项]  file

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-n | --quite | --slient
静默模式
-e | --expression=script
给指令添加脚本
-f | --file=script-file
将文件内容作为脚本,追加给指令
--follow-symlinks
处理到位时遵循符号链接;硬链接仍将被破坏。
-i[SUFFIX]  |  --in-place[=SUFFIX]
编辑文件到位(如果提供了扩展名,则进行备份)。默认的操作模式是中断符号链接和硬链接。这可以通过跟随符号链接和复制来改变。
-c  |  --copy
当在-i模式下对文件进行洗牌时,请使用复制而不是重命名。虽然这将避免断开链接(符号或硬链接),但结果的编辑操作并不是原子操作。这很少是想要的模式;-遵循符号链接通常就足够了,而且它更快、更安全。
-l | --line-length=N
指定每一行最大字符数,超过就自动换行
--posix
禁用所有的GNU表达式
-r | --regexp-extended
在脚本中使用扩展正则表达式。
-s
将文件看作是分离的,而不是单独连续的长字符串
-u | --unbuffered
从输入文件中加载最少数量的数据,并更频繁地刷新输出缓冲区。
       如果没有给出-e、--expression,、-f或-file选项,那么第一个非选项参数将作为sed脚本进行解释。其余的参数都是输入文件的名称;如果没有指定输入文件,则读取标准输入。

命令
说明
没有地址的命令

: label
b和t命令的标签
#comment
注释将扩展到下一行(或-e脚本片段的末尾)。
}
{}块的结束括号
没有地址或者一个地址的命令

=
打印当前的行号
a \
text
追加文本,在换行符之前有一个嵌入的反斜杠
i \
text
插入文本,在换行符之前有一个嵌入的反斜杠
q [exit-code]
立即退出sed脚本,而不处理任何更多的输入,除非自动打印没有被禁用,当前的模式空间将被打印出来。退出代码参数是一个GNU扩展。
Q [exit-code]
立即退出sed脚本,而不处理任何更多的输入。这是一个GNU扩展
r filename
附加从文件中读取的文本。
R filename
附加从文件读取的一行。命令的每次调用都从文件中读取一行。
接受地址范围的命令

{
开始一个命令块(以)结尾)
b label
分支到标签;如果省略标签,则分支到脚本的末尾。
t label
如果“s///”自读取上一个输入行以来以及从最后一个t或T命令开始已成功地进行了替换,则从“分支到标签”;如果省略“标签”,则将其分支到脚本的末尾。
T label
如果自读取上一个输入行以来,以及自最后一个t或T命令以来,没有“s///”已成功地进行了替换,则从“分支到标签”;如果省略“标签”,则从“分支到脚本的末尾”。这是一个GNU扩展。
c\
text
用文本替换徐那种的行,在换行符之前有一个嵌入的反斜杠
d
删除模式空间。开始下一个周期。
D
删除模式空间中的第一个嵌入换行符。开始下一个周期,但如果模式空格中仍然有数据,则跳过从输入中读取。
h H
复制/追加模式空间到保持空间
g G
复制/追加保持空间到模式空间
x
交换持有空格和模式空格的内容
l
以“视觉清晰”的形式列出当前行。
l width
以“视觉清晰”的形式列出当前行,在宽度width处将其拆分。这是一个GNU扩展。
n N
在模式空间中读取/追加下一行输入
p
打印到当前模式空间
P
打印到当前模式空间的第一个嵌入换行符
s/regexp/replacement/
尝试将regexp与模式空间匹配。如果成功,则将该部分替换为替换部分。替换可以包含特殊字符&引用匹配的模式空间的那一部分,特殊转义\1到\9引用regexp中相应的匹配子表达式。
w filename
将当前模式空间写入文件名
W filename
将当前模式空间的第一行写入文件名。这是一个GNU扩展。
y/source/dest/
将在源中出现的模式空间中的字符音译为dst中相应的字符。

3、地址
       SED命令可以在没有地址的情况下给出,在这种情况下,命令将对所有输入行执行;使用一个地址,则只对与该地址匹配的输入行执行该命令;或者使用两个地址,在这种情况下,将对所有与从第一个地址开始并继续到第二个地址的包含行范围匹配的输入行执行命令。关于地址范围,需要注意三件事:语法是addr 1,addr 2(即地址用逗号分隔);addr 1匹配的行将始终被接受,即使addr 2选择了前面的行;如果addr 2是regexp,则不会根据addr 1匹配的行对其进行测试。
在地址(或地址范围)之后,在命令之前,可以插入一个“!”,这指定只有当地址(或地址范围)不匹配时才执行命令。支持以下的地址类型“
       number,只匹配指定的行号。
       first~step,从指定的行first开始,每step行匹配一次。
       $,匹配最后一行。
       /regexp/,匹配正则表达式regexp的行。
       \cregexpc,匹配正则表达式regexp的行。c可以是任何字符
       0,addr2,从“匹配的第一个地址”状态开始,直到找到addr 2为止。这类似于1,addr 2,但如果addr 2匹配输入的第一行0,addr 2表单将位于其范围的末尾,而1,addr 2窗体仍将位于其范围的开头。这只在addr 2是正则表达式时才起作用。
       addr1,+N,将匹配addr 1和addr 1后面的N行。
       addr1,~N,将匹配addr 1和addr 1后面的行,直到输入行号为N的倍数的下一行为止。

4、实例
       从一个文件读取内容输入到另一个文件
[root@192 weijie]# cat 1.c                      //查看文件内容
hello world,
i am david.
i love linux,
love code.
nihao ed
[root@192 weijie]# sed r 1.c >> 2.c           //1.c读取,写入到2.c
[root@192 weijie]# cat 2.c                      //查看内容
123
23
212
hello world,
i am david.
i love linux,
love code.
nihao ed




使用道具 举报

回复
论坛徽章:
0
87#
 楼主| 发表于 2019-1-9 06:17 | 只看该作者
join
        找出两个文件中相同的字段,根据相同字段合并两个文件,将合并结果显示到标准输出。
       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
       join [选项]  file1  file2

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-a 1或2
将文件中没有相同字段的行显示出来
-e string
如果在文件中找不到指定的字符串,在输出中填入选项中的字符串
-I | --ignore-case
忽略大小写
-j FIELD
等价于“-1  FIELD  -2  FIELD”
-o format
用指定的格式显示结果
-t CHAR
指定分隔符
-v 1或2
和-a一样,但是只显示没有相同字段的行
-1 FIELD
连接文件1指定的字段
-2 FIELD
连接文件2指定的字段
--check-order
检查输入是否正确排序,即使所有输入行都是可修的。
--nocheck-order
不检查输入是否正确排序

3、实例
1)合并两个文件到标准输出
[root@192 weijie]# cat 1.c 2.c             //查看文件
hello world
i am david
love linux
this code
nihao ed
hello linux
i am weijie
love world
hehe
im join
[root@192 weijie]# join 1.c 2.c           //合并相同行
hello world linux
i am david am weijie
love linux world
2)显示没有相同字段的行
[root@192 weijie]# join 1.c 2.c -v 1          //显示文件1中不没有相同字段的行
this code
nihao ed
[root@192 weijie]# join 1.c 2.c -v 2         //显示文件2中没有相同字段的行
hehe
im join




使用道具 举报

回复
论坛徽章:
0
88#
 楼主| 发表于 2019-1-10 06:52 | 只看该作者
col
       过滤掉影响阅读的控制字符,使用重定向符把说明手册的内容输出到文本文件时,控制字符就成乱码。col指令可以过滤掉控制字符,使文本可读。col从标砖输入读取内容,输出到标准输出。col在读取字符时跟踪字符集,并确保字符集在输出时是正确的。如果输入试图备份到最后一条刷新行,col将显示一条警告消息。
       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
       col [-bfpx]  [-lnum] file

2、选项列表
选项
说明
--version
显示命令版本信息
--help
显示帮助文档
-b
过滤所有的控制字符
-f
过滤掉RLF字符,忽略HRLF字符
-p
忽略未知的控制字符
-x
将多个空格用tab代替
-lnum
设置缓冲区大小,默认128行

3、实例
       将clear指令的手册经过过滤,输出到文本文件
[root@192 weijie]# man clear > 3.c                  //将手册从定向到文件
[root@192 weijie]# vim 3.c                            //编辑文件,内部有很多乱码,这些都是控制字符
clear(1)                                                             clear(1)
N^HNA^HAM^HME^HE
       c^Hcl^Hle^Hea^Har^Hr - clear the terminal screen
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
       c^Hcl^Hle^Hea^Har^Hr
D^HDE^HES^HSC^HCR^HRI^HIP^HPT^HTI^HIO^HON^HN
       c^Hcl^Hle^Hea^Har^Hr clears your screen if this is possible.  It looks in the environ-
       ment for the terminal type and then in the t^Hte^Her^Hrm^Hmi^Hin^Hnf^Hfo^Ho database to  figure
out how to clear the screen.
[root@192 weijie]# man clear | col -b > 3.c                //将手册内容过滤之后,定向到文件
[root@192 weijie]# vim 3.c                                    //编辑文件内容,没有乱码
clear(1)                                                             clear(1)
NAME
clear - clear the terminal screen
SYNOPSIS
clear
DESCRIPTION
       clear clears your screen if this is possible.  It looks in the environ-
       ment for the terminal type and then in the terminfo database to  figure
       out how to clear the screen.



使用道具 举报

回复
论坛徽章:
0
89#
 楼主| 发表于 2019-1-11 06:58 | 只看该作者
文本过滤colrm
       从标准输入读取数据,删除指定的列,然后送到标准输出。如果用一个参数调用,则将从指定的列开始删除每一行的列。如果使用两个参数调用,则将删除从第一列到最后一列的列。列编号以第1列开始。
       此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。

1、语法
       colrm [startcol]  [endcol]

2、选项列表
       无

3、实例
1)删除第5列之后的列
[root@192 weijie]# cat 1.c                    //显示内容
hello world
i am david
love linux
this code
nihao ed
[root@192 weijie]#colrm 5 < 1.c            //删除第5列之后
hell
i am
love
this
niha
2)删除5~9列
[root@192 weijie]# colrm 5 9 < 1.c          //删除5~9
hellld
i amd
lovex
this
niha
3)不删除,全部显示
[root@192 weijie]# colrm < 1.c             //不指定列,显示所有的
hello world
i am david
love linux
this code
nihao ed




使用道具 举报

回复
论坛徽章:
0
90#
 楼主| 发表于 2019-1-11 07:02 | 只看该作者
做了一个Linux学习的平台,目前出来一个雏形,各位可以参考使用
链接:https://pan.baidu.com/s/1GOLVU2CbpBNGtunztVpaCQ  密码:n7bk

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表