首页 > 系统相关 >二、Linux系统安装和基本使用

二、Linux系统安装和基本使用

时间:2024-08-12 09:06:20浏览次数:14  
标签:What set 系统 vim file Linux test 安装 more

Linux系统安装和基本使用

这里我想记录自己在学习中遇到的有趣的、让自己觉得学到了的点。

Vim的使用

文章中举出的两个git power的例子非常有意思,我们来分析一下:

宏录制

The first example is to generate the following file:

1
2
3
.....
98
99
100

This file contains 100 lines, and each line contains a number. What will you do? In vim, this is a piece of cake. First change vim into normal state (when vim is just opened, it is in normal state), then press the following keys sequentially:
i1<ESC>q1yyp<C-a>q98@1
where means the ESC key, and means "Ctrl + a" here. You only press no more than 15 keys to generate this file. Is it amazing? What about a file with 1000 lines? What you do is just to press one more key:

这个例子用到了我自己并不清楚的一些操作,但是我希望通过查阅资料理解他们。i1<ESC>q1,我都能看懂。首先通过插入模式输入一个1,然后退出插入模式,使用q1开始录制宏1
image
此时可以看到下方的状态栏中出现了recording @1,也就是正在录制。然后yyp,这里分为两段,yy可以复制当前行,p可以粘贴当前行。得到的结果就是:
image
下一个指令是<C-a>,在我的STFW下,发现这个操作的作用是使整数数据+1,运行之后,第二行应该变成2,事实如此:
image
到这里之后的操作就很清晰了,q停止录制,98@1运行宏98次。最后得到:
image
第一个例子就给出了非常有意思的操作,这里给出一些宏操作的简单实例:

命令 功能
qa 录制宏 a
q 停止录制
@a 执行宏 a
@@ 重新执行上一次的宏

列交换

第二个例子是批量列交换的例子

The second example is to modify a file. Suppose you have such a file:

aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffff
ggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjj

You want to modify it into:

bbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaa
dddddddddddddddddddddddddccccccccccccccccccccccccc
fffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeee
hhhhhhhhhhhhhhhhhhhhhhhhhggggggggggggggggggggggggg
jjjjjjjjjjjjjjjjjjjjjjjjjiiiiiiiiiiiiiiiiiiiiiiiii

What will you do? In vim, this is a piece of cake, too. First locate the cursor to first "a" in the first line. And change vim into normal state, then press the following keys sequentially:

<C-v>24l4jd$p

where means "Ctrl + v" here. What about a file with 100 such lines? What you do is just to press one more key:

l右移光标
24l向右移动24格
4j向下移动4格
d剪切
$来到行末尾
p粘贴

如果你不理解这些操作而是直接运行的话,很可能发现无法达到预期效果,那是因为你的光标起始位置并不在文本起始位置。
我们可以使用(移动光标直到达文本起点。这里给出vim速查表:
Vim速查表

vim配置文件

在ubuntu中,vim的配置文件默认在/etc/vimrc中,我们可以修改其中的内容以让vim看起来不一样。其中有意思的有:

	syntax on
	set showmatch           " Show matching brackets.
	set ignorecase          " Do case insensitive matching
	set smartcase           " Do smart case matching
	set incsearch           " Incremental search
	set hidden              " Hide buffers when they are abandoned
	set number              " Enable line of number
	set hlsearch            " Enable hightlight search result
	set smartindent         " auto head line format

Linux 基础

这里是Linux入门教程中的一些有趣的知识的记录。

输出一个目录下的指定文件行数

第一个让我感兴趣的是 统计当前目录的代码行数的任务,这里使用了这么一条命令实现:

find . | grep '\.c$\|\.h$\'| xargs wc -l

前面两个指令自然是非常熟悉了,但是第三条指令还是能让我学到很多。其中xargs可以将输入转化为参数一命令的参数,比如前面管道来的文件,xargs会进行分词,然后作为wc -l 命令的参数运行,而wc -l 可以统计文件的行数。这里我统计了anaconda3中的\.c$\|\.h$
这个正则表达式也可以解释一下,首先\.是为了转义.符号,因为.在正则表达式中默认是匹配任意的一个字符,转义后是.文件类型区分标志的开头,而尾部的$表示从尾部匹配。'|'与前面的转义类似,是用于给|转义,在正则中|是或者的含义。所以我们就能得到我们想要的结果:
image

统计磁盘使用情况

du -sc /usr/share/* | sort -nr | more

同样的,对于前两条命令依旧是相当熟悉了,最后一个more我却是第一次见,在输出非常长的情况,可以使用more/less来让输出可以翻页,more使用空格后翻,而less可以前后翻页。

编译一个hello world程序(或许不止于编译它?)

这些命令这里不留注释了,希望自己再再次看到他们的时候只会觉得非常熟悉,而不是需要查阅资料才能理解含义。

vim test.c
gcc -o test test.c
./test
./test > out.txt
./test | tee out.txt
objdump -d test | tee output.txt
time ./test < data | tee output.txt

可以记录的是一个将输出过滤掉的操作,只保留最后一条命令中的time输出time ./test < data > /dev/null/dev/null这个文件我也用过,但是一直只是把它当一个垃圾桶,没有深入理解过它,今天把它也搞明白。

/dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同样,/dev/null 在命令行和脚本中都非常有用。具体参考:shell脚本中 /dev/null 的用途

使用Makefile

标签:What,set,系统,vim,file,Linux,test,安装,more
From: https://www.cnblogs.com/zhywyt/p/18353571

相关文章

  • Java学习笔记2--JDK的安装和配置
    一.进入oracle官网,下载jdkoracle官网:Oracle|CloudApplicationsandCloudPlatformps:不同的浏览器,可能进入oracle官网,会只显示部分内容,所以建议使用googleChrome浏览器在下载之前,首先需要去查看本机电脑的配置型号,如下图,右键---此电脑---选择点击属性,显示x64版本如下......
  • Nexpose v6.6.264 for Linux & Windows - 漏洞扫描
    Nexposev6.6.264forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,releaseAug07,2024请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随......
  • 助医陪诊系统小程序,要怎么去设计这个程序呢?
        设计一个助医陪诊系统小程序,就如同为一位初来乍到的外国游客配备一个既懂当地语言又了解风土人情的超级导游。这位“导游”需要帮助游客轻松应对新环境,解答各种问题,并提供贴心的服务。以下是设计程序步骤:1.培养多语言能力-需求分析    语言课:深入了解......
  • SAP 系统性能分析 Tcode
    原文转载 http://blog.chinaunix.net/uid-20607558-id-1916144.html 感谢原作者的总结及归纳./nSMLTlanguagemanagementoverviewsapsupportlanguage==formanagedatabasehttp://help.sap.com/saphelp_47x200/helpdata/en/d0/1057cd20d96a43bde5d59291e8290f/frameset.......
  • 贷齐乐系统最新版SQL注入(绕过WAF可union select跨表查询)
    目录标题:贷齐乐系统最新版SQL注入(绕过WAF可unionselect跨表查询)内容:一,环境部署二,源码分析三,sql注入总结:[回到顶部](#article_top)一,环境部署本漏洞由于是2015年爆出的,所以这里源码使用的PHP版本不支持7版本,这里我们可以使用PHP5.4.45版本,只需小皮进行下载更改即......
  • 基于大数据的混合音乐推荐系统的设计与设计(论文+源码)_kaic
    摘 要随着数据的不断增长和用户对随听随播的收听方式的习惯,开发一款音乐推荐系统变得越来越必要。为了满足这一需求,本论文采用Java语言、Vue以及数据库MySQL进行开发。系统的主要功能包括登录注册、音乐分类管理、音乐推荐管理、音乐资讯管理、音乐库管理、音乐论坛管理、用......
  • 基于SpringBoot框架的企业财务管理系统设计与实现(论文+源码)_kaic
    摘  要在快速增长的信息时代,每个企业都在紧随其后,不断改进其办公模式。与此同时,各家企业的传统管理模式也逐步发生变化,政府和企业都将需要一个更加自动化和现代化的财务管理系统。这能够便利员工之间的信息交流和公司的工作任务进而提高工作效率。因此对现有的系统进行调......
  • 【Linux】编辑器vim入门(概念+模式转换+技巧)
    vim编辑器1.1.什么是vim?1.2.下载vim:1.3.......
  • 【Linux】项目自动化构建工具-make/Makefile(入门初使用)
    make/Makefile1.什么是make/makefile?为什么要使用?2.如何使用make/makefile(1)makefile基础框架1.规则2.规则的实现(2)如何与make搭配使用?3.文件的时间戳4.常用语法补充语法一:.PHNOY文件名语法二:$@与$^语法三:makefile里面可以定义变量参考文章:爱编程的大丙......
  • 零基础学会制作 基于STM32/51的智能水质监测系统设计/水检测/鱼塘检测/水质量检测
    项目介绍本论文是在研究和设计一套基于STM32单片机的智能水质监测系统,本系统主要包括监测模块、无线通信模块、报警模块、显示模块、电源模块等。当监测到的水质相关参数(如水温、水位、浑浊度、电导率、PH值等)与设定阈值不符时,则STM32的智能水质监测系统发出对应报警,并通过......