压缩 & 解压

解压

  • .tar.bz2: tar -jxvf
  • .tar.gz: tar -zxvf
  • .tar.xz: 先解开.xz,再使用tar -xvf
  • .gz: gzip -d
  • .xz: xz -d
  • .zip: unzip

如果要解压.rar文件,那么需要先安装unrar:

1
$ sudo apt-get install unrar

压缩

Vim

网络

查看MAC地址

1
2
3
$ sudo lshw -c network | grep serial
or
$ sudo lshw -C network

文件

搜索

文件搜索

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]
但常用形式可以简化为:
find [path…] [expression]

  • path: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录
  • expression: -options [-print -exec -ok …]

options

  • -name: 按照文件名查找文件。
  • -iname: 按照文件名查找文,忽略大小写。
  • -mtime -n +n: 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前
  • -type d/p/l/f/…: 查找某一类型的文件,目录/管道文件/符号链接文件/普通文件/…
  • -follow: 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
  • -perm xxx: 按照文件权限来查找文件,eg. -perm 755
  • -size n: [c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
  • -prune: 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
  • -user: 按照文件属主来查找文件。
  • -nouser: 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
  • -group: 按照文件所属的组来查找文件。
  • -nogroup: 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

其他

  • -print: find命令将匹配的文件输出到标准输出
  • –exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。
1
2
3
4
5
6
7
8
9
10
11
// 删除文件大小为零的文件
$ find ./ -size 0 -exec rm {} \;

$ rm -i `find ./ -size 0`

$ find ./ -size 0 | xargs rm -f &

// 为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项
$ find . -type f -exec ls -l { } \;
// 在/logs目录中查找更改时间在5日以前的文件并删除它们
$ find /logs -type f -mtime +5 -exec rm { } \;
  • -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
1
2
// 在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示
$ find . -name "*.conf" -mtime +5 -ok rm { } \;

示例

.
├── c
│ ├── a.c
│ └── t.c
└── other
└── b.pdf

1
2
3
$ find ./ -iname "file_name"
./c/a.c
./c/t.c
1
2
3
4
$ find ./ -iname "*.txt" -o -iname "*.pdf"
./c/a.c
./c/t.c
./other/b.pdf

内容搜索

grep: global search regular expression(RE) and print out the line

Usage: grep [OPTION]… PATTERN [FILE]…
Search for PATTERN in each FILE or standard input.
PATTERN is, by default, a basic regular expression (BRE).
Example: grep -i ‘hello world’ menu.h main.c

grep用于搜索由Pattern参数指定的模式,并将每个匹配的行写入标准输出中。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 显示所有以d开头的文件中包含test的行
$ grep 'test' d*

// 显示在aa,bb,cc文件中匹配test的行
$ grep 'test' aa bb cc

// 显示所有包含每个字符串至少有5个连续小写字符的字符串的行
$ grep '[a-z]' aa

// 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*)
// 这些字符后面紧跟着另外一个es(),找到就显示该行。
// 如果用egrep或grep -E,就不用""号进行转义,直接写成'w(es)t.*'就可以了。
$ grep 'w(es)t.*' aa

// 不区分大小写地搜索。默认情况区分大小写
$ grep -i pattern files

// 只列出匹配的文件名
$ grep -l pattern files

// 列出不匹配的文件名
$ grep -L pattern files

// 只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
$ grep -w pattern files

// 匹配的上下文分别显示[number]行
$ grep -C number pattern files

// 显示匹配 pattern1 或 pattern2 的行
$ grep pattern1 | pattern2 files

// 显示既匹配 pattern1 又匹配 pattern2 的行
$ grep pattern1 files | grep pattern2

权限

1
$ chmod -r xxx file_name

其中xxx为owner/group/world的顺序,其中x为一个三位二进制数。
x可为000~111之间的任意值,代表不同的权限。
4(100): read®
2(010): write(w)
1(001): excute(x)

一般为755,可改为775。

修改文件用户组

1
$ chgrp -r 新组 文件夹名
1
$ chgrp 新组 文件名

修改文件拥有者

1
$ chown -r 新用户 文件夹名
1
$ chown 新用户 文件名

xargs

删除文件

删除本目录下所有以hello开头的文件(包括文件夹):

1
$ find . -iname "hello*" | xargs rm -rf

整理文件

将本目录下所有.c文件都放至src文件夹中:

1
$ ls *.c | xargs -I {} mv {} src

统计代码行数

统计当前目录下(包括子文件夹)所有.cpp文件的代码行数:(包含空行)

1
2
$ find . -iname "*.cpp" | xargs cat | wc -l
统计代码行数,过滤空行:
1
$ find . -iname "*.cpp" | xargs cat | grep -v ^$ | wc -l