111 lines
3.1 KiB
Markdown
111 lines
3.1 KiB
Markdown
---
|
|
title: 1.1、linux常用命令与技巧(1)
|
|
date: 2018-5-3 00:52:22
|
|
tags: linux
|
|
categories:
|
|
- linux
|
|
---
|
|
|
|
### md5sum与sha1sum
|
|
用于使用hash算法生成文件的摘要信息 , 常用于文件完整性的校验
|
|
<!-- more -->
|
|
```bash
|
|
# 生成a.txt的md5摘要信息
|
|
md5sum a.txt
|
|
|
|
# 生成当前目录下所有文件的sha1摘要信息
|
|
sha1sum ./*
|
|
```
|
|
|
|
### history
|
|
显示在终端中执行过的所有命令的历史记录
|
|
(按↑方向键快速找到执行过的命令也是利用的这个记录)
|
|
如果使用`history -c`可以清空这个列表
|
|
|
|
### chown
|
|
这个命令是用来改变文件拥有者和所在的组
|
|
```
|
|
chown <用户名>:<组> <文件名>
|
|
```
|
|
可以改变文件的所有权
|
|
|
|
### cal
|
|
就是calendar(日历) , 可以用来显示当前月份或者任意年份中的某一月
|
|
```
|
|
# 显示当前月份日历
|
|
cal
|
|
|
|
# 显示2018年2月的日历
|
|
cal 2 2018
|
|
|
|
# 显示2018年全年日历
|
|
cal -y 2018
|
|
```
|
|
|
|
### cat
|
|
代表了连结 , 通常也可以用它输出单个文件的内容
|
|
```bash
|
|
# 输出a.txt的内容(带行号)
|
|
cat -n a.txt
|
|
|
|
# 将a.txt b.txt的内容连结输出
|
|
cat a.txt b.txt
|
|
```
|
|
|
|
### 输出重定向
|
|
对于程序的输出 , 我们通常不能一直看着终端 , 而且终端也只能保留最近的内容
|
|
除了程序本身可以有对于日志的处理之外
|
|
我们也可以将程序向终端的输出重定向到指定的文件里面
|
|
使用`>`和`>>`可以实现重定向
|
|
前者表示始终覆盖目标文件 , 后者表示如果目标文件存在则执行追加操作 , 不会覆盖
|
|
```bash
|
|
# 执行java程序并将输出写入到当前目录的output.txt文件当中
|
|
java -jar demo.jar > ./output.txt
|
|
```
|
|
当然有些程序会在终端打印大量无意义的内容
|
|
我们如果想把这些输出直接丢弃
|
|
可以使用`/dev/null`作为目标位置
|
|
这是个并不存在的虚拟位置 , 定向到这里相当于是把输出内容直接丢弃 , 避免占用磁盘空间
|
|
```bash
|
|
command > /dev/null 2>&1
|
|
# 1表示标准输出 2表示标准错误输出
|
|
# 2>&1表示将标准错误输出重定向到标准输出, 这样两者都会被丢弃
|
|
```
|
|
|
|
#### 与cat的配合使用
|
|
cat既然表示连结 , 那么与输出重定向配合使用 , 就可以实现对于压缩分卷的结合了
|
|
```bash
|
|
# 注意分卷的顺序
|
|
cat data.z01 data.z02 data.zip > xdata.zip
|
|
# 将分卷结合成一个文件之后就可以执行解压了
|
|
unzip xdata.zip
|
|
```
|
|
|
|
### grep
|
|
全称是Global Regular Expression Print, 全局正则表达式输出
|
|
这个命令的作用是执行全文检索
|
|
```
|
|
# 在a.txt当中搜索str1字符串
|
|
grep "str1" a.txt
|
|
|
|
# 在当前目录下递归检索所有文件搜索str1字符串
|
|
grep -r "str1" ./
|
|
```
|
|
当然不限于固定的字符串, 也可以使用正则表达式
|
|
|
|
#### 管道符"|"
|
|
格式 : 命令A|命令B
|
|
作用是将命令A的输出结果作为命令B的操作对象
|
|
比如结合`grep`可以对繁杂的输出结果进行过滤
|
|
```bash
|
|
# 查询当前运行的进程, 并过滤包含tomcat关键字的行
|
|
ps ax | grep tomcat
|
|
```
|
|
比如`wc -l`可以用来统计行数
|
|
```
|
|
# 统计当前目录下总共有多少文件
|
|
ls -l | wc -l
|
|
```
|
|
因为`ls -l`的输出是逐行输出当前目录下每个文件的详细信息 , 所以统计出的行数实际上就是文件数量了
|
|
|