linux学习笔记

1、删除指定日期的文件

比如先查找下待删除的文件:

find . -mtime +2 -type f -name '*.mp3'

再对该文件进行删除:

find . -mtime +2 -type f -name '*.mp3' -exec rm -rf {} \;

2、查找文件中文件个数:

ls -l |grep "^-"|wc -l

3、vim下代码对齐

 

Crl键+v,进入该模式之后,按下j键,选择需要对齐的行范围,之后再按=。即可实现代码的对齐。

4、

在vim中进行代码编辑的时候,需要跳入定义的函数则需要通过创建tags命令创建当前目录的tags,如果存在跨目录之间的调用则需要在上一级公有目录下创建该tags。命令如下:Ctags –R,这样会生成一个tags文件。在代码中通过CTRL+]和CTRL+t来回跳转关键字

5、Vim语法的自动补全:CTRL+n

6、代码块的注释:

 

1)  选择一定范围行(CTRL+V),在行首shift+I,输入//,再按两次ESC按键。即可实现该段代码内的注释

2)  注释取消:选定上述范围行的前两个字符,即//,再按X键,将整个范围内的两个//删除。

 

7、在linux下可以通过data获取系统当前的时间,但是并不是以时间戳的方式展示。如果想要将其转为时间戳的方式,则可以用date +%s –d ‘date的结果’的方式进行转换。

 

那么在c中则是需要通过ctime将time(NULL)获取的当下时间转为字符串,易于辨识的结果。

time_t t=time(NULL);

cout<<ctime(&t)<<endl;//该结果与linux下的date结果是一样的,如Wed Dec 30 10:59:26 2015这样的形式。

8、在不打开文件的情况下,获悉文件的行数

wc -l 文件名

查看某个文件夹下面的文件数量:

ls -l |grep "^-"|wc -l

9、vim下对于文件中内存的批量替换

:%s/source_pattern/target_pattern/g

例子:将所有的jsData换成ReadData:

:%s/jsData/ReadData/g

其中的/g表示全文替换。具体例子如下:

由于不同系统之间换行不同。表现如下:

在vim编辑器下可以看出^M这样的字符。需要对该字符进行全文删除。

输入的命令如下所示:

其中输入^M需要按下ctrl+v,输入^,按下ctrl+M输入M。

10、在vim中同时打开多个文件。

在命令行中输入vim -p file1.cpp file2.cpp可以同时打开上述两个文件。

在.varm这个配置文件中添加下面一行代码:

map <Tab> :tabn <CR>

就可以实现利用tab键对上述两个cpp文件之间进行切换。

此时如果想要再打开一个file3.cpp的话,可以在其中一个文件中进入:e file3.cpp打开file3.cpp这个文件。

11、编辑文本下的撤销和恢复。

 u 撤销上一步的操作,Ctrl+r 恢复上一步被撤销的操作

12、进行多行的复制和移动

:1,3 m 5
把 1-3行移动到第5行
:1,3 co 5
把1-3行复制到第5行

13、zip文件中对目标文件的解压

当a.zip中有多个文件,而仅仅想要解压其中的某个文件夹(如b)中的内容,可以采取下面的方式

unzip a.zip "b/*" -d .

表示解压a.zip中的b文件夹中的内容到当前的目录中,也可以自己制定目录。可以尝试,不写-d的情况。

14、查看当下目录下面各个文件的大小

du -h --max-depth=1【只是各个目录,并不包括当前目录下面的文件】

du -sh *【查看当前目录下的文件夹大小】

15、vim下通过mark的方式,实现多行操作(复制,剪切,删除等)

先建立marks。如进行多行移动。

在待移动的行首(注意,是正常模式)输入ma,此时则在该行建立一个mark,a。

在待移动行的末尾,类似创建一个markb,输入mb。

在目标位置行,创建mark c。之后,在命令模式下,输入:'a,'b m'c

多行复制:

光标移动到结束行,输入ma
光标移动到起始行,输入y'a
光标移动到需要复制的行,输入p,行前复制则输入大写P

 

同样可以采用以下方式进行多行复制:
光标移动到起始行,输入ma
光标移动到结束行,输入mb
光标移动到粘贴行,输入mc
然后输入:'a,'b, co 'c  

若要删除多行,则输入:'a,'b de

 

16:sed方式进行字符批量替换

1)对input.txt中汉字句号批量转为英文句号。

sed 's/[。]/./g' input.txt > data.txt

2)将英文句号批量转为汉字句号再加一个换行:

sed 's/[.]/。\n/g' data.txt > data1.txt

17:删除海量文件

这里说的“海量”并不是指体积大,而是指数量,比如一个目录下有数百万个小文件,进入这些目录里使用ls命令是愚蠢的做法,而直接执行rm *,没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用rm命令进行删除是无效的。
那么正确的方法是什么呢?有两种方法可选:
第一种:

 

find /path/to/directory -type f -exec rm {} \;

第二种:

ls -1 /path/to/directory | xargs -I{} rm {}

第三种:

 

 

service sendmail stop 
cd /var/spool 
mv clientmqueue clientmqueue-todelete 
mkdir clientmqueue 
chown --reference=clientmqueue-todelete clientmqueue 
chmod --reference=clientmqueue-todelete clientmqueue 
service sendmail start 
rm -rf clientmqueue-todelete

上面的方法是将目录重命名,然后使用了 --reference 引用参数来重建目录,然后删除重命名的目录。直接删除目录的方法速度是十分的快。也可以留着备份不删。更安全。
 

 

18:对于大文件中指定行范围的子文件提取(不打开文件的前提下获取指定行范围内容)

 tail -n +1000 file1 >file2:从1000行开始以后的内容存储到file2中

sed -n '1000,1008611p'  file1.txt > file2.txt

 

在不打开文件下,对于大文件进行按行添加内容:

比如在文件的第一行添加一些内容:

```

sed -i '1i\要添加的内容' text.txt

```

其中`-i:用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出动作`

 

对指定行的内容进行替换:

```

 sed -i '1c Hi' ab.txt              #ab.txt中的第一行代替为Hi

```

 

19:vim编辑模式下,完全匹配查找

/\<待查找的内容\>

另外,可以用grep下-w,如

grep -w '^因为遇见你*' your.txt

查找以“因为遇见你“为起始的字符串。

 

20:删除当前光标所在行之后的数行

普通模式下,d3k,表示向上删除3行,包括当前行总共4行。那个3可以换成任意数字。你也可以搭配j来向下删除一些行。注意,是普通模式下进行的操作。

 

21:使用grep查找文本中的内容,且输出行号:

grep -n '4F032783EAEEC871EB9A8C3D155589A6'  hash_list.txt

或者是使用cat方式

cat -b hash_list.txt | grep '4F032783EAEEC871EB9A8C3D155589A6'


22:gdb下断点的查看和删除

查看所有断点:

info b

删除指定断点:

delete 断点号

注:此处的断点号可以从上述的info b获悉。

23: 大文件的清空

对于几个G或者几个GB大小的文件,如果用rm方式删除的话,低效。可以通过将其清空的方式实现相同效果。

 

    $ echo "" > filename
  $ echo /dev/null > filename
  $ echo > filename
  $ cat /dev/null > filename

 

24:

 

对大文件的切割。

split命令专门用来将一个大文件分割成很多个小文件,我把split命令的选项做一个简要说明。

-b     分割后的文档大小,单位是byte
-C     分割后的文档,单行最大byte数
-d     使用数字作为后缀,同时使用-a length指定后缀长度
-l     分割后文档的行数
为了尽量保证日志的可读性,我们按行分割大日志文件,并且指定分割后的文件的前缀和后缀

 

#后缀是数字,占两位,前缀是test.log
split -l 1000000 test.log -d -a 2 test.log#最后这个一个test.log是指定了分割结果的前缀
#分割之后的结果
ls -lrth
总用量 1.3G
-rw-r--r-- 1 root root 645M 5月  30 20:42 test.log
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log00
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log01
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log02
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log03
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log04
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log05
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log06
-rw-r--r-- 1 root root  73M 5月  30 20:55 test.log07
-rw-r--r-- 1 root root  64M 5月  30 20:55 test.log08

 

25:对于大文件中指定行或者指定内容的删除:

 

对于大文件,不能够通过打开文件在删除的方式,可以用sed命令:

`sed -i '/^757/d'  test.txt `

其中用到了正则匹配,删除以757起始的字符串所在的行,`/d` 表示删除操作。

```

如果是要删除第三行: sed -i '3d' 1.txt

如果删除以Love开头的行 sed -i '/^Love/d' 1.txt

如果删除包含Love的行 sed -i '/Love/d' 1.txt

```

 

26: diff命令的文件对比:

`diff a.txt b.txt|vim -`

通过管道方式将对比结果输出到一个临时文件,方便查看


27:时间的相关设置

    char str_f_t1[100];
    struct tm * timeinfo1;
    time_t nowtime;
    time(&nowtime);
    timeinfo1 = localtime(&nowtime);
    strftime(str_f_t1, sizeof(str_f_t1), "%G-%m-%d %H:%M:%S", timeinfo1);//服务启动时间点
    string synctime1(str_f_t1);//当前时间

就可以获取当前的时间,且以字符串的形式表达

 

28:

在已经打开多个标签页的情况下,再以标签页的形式打开另一个文件:

:tabe <文件名>  在新标签页中打开指定的文件。

如果此时在该标签页进行:q退出的话,则会整个标签页退出。如果通过:e的方式打开了多个文件的话,这种退出会是整个标签页的退出。

 

29:

对于一个标签页中,通过:e的方式打开的多个文件。如何一个个保存退出呢?

 

30:移动光标到行首

1)按home键

2)按住shift + 6 键

3)按住大写 I 键,按住了这个键之后文本是可以编辑的,然后我通过按住大学 A 回到行首的话,我需要先按住Esc键之后才能,再去按住A键,才能回到行首,感觉有点不方便推荐使用home键,不管是可以编辑还是不可以编辑都适合。

 

移动光标到行尾:

 

1)按end键

2)按住shift + 4
3)按住大写 A 键,按住了这个键之后文本是可以编辑的,然后我通过按住大学 I 回到行尾的话,我需要先按住Esc键之后才能,再去按住I键,才能回到行首,感觉有点不方便推荐使用end键,不管是可以编辑还是不可以编辑都适合

 

 

 

 

 

 

 



 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值