一、管道
管道的作用就是将命令1的输出当成命令2的输入。
管道的输入格式:
命令1 | 命令2 | 命令3 #命令之间用 | 隔开
示例:
find ./match_client/ -name '*.py' | xargs cat | wc -l
上面的代码用于寻找当前目录下的.py文件并将其用回车分割成命令行参数,最后统计文件中的代码行数。
①运行:
find . -name '*.py'
②运行:
find . -name '*.py' | xargs cat
就会把代码都展示出来
③运行:
find . -name '*.py' | xargs cat | wc -l
就会统计所有的.py文件的代码行数
管道的要点:
- 管道命令仅处理stdout,会忽略stderr。
- 管道右边的命令必须能接收stdin。
- 多个管道命令可以串联。
- 管道两边均为命令,而文件重定向左边为命令,右边为文件。
二、环境变量
列出环境变量:
env # 显示当前用户的环境变量
set # 显示当前shell的变量,包括当前用户的变量
export # 显示当前导出成用户变量的shell变量
输出某个环境变量:
echo $PATH
修改环境变量:
export HOME=home/acs/homework
如果要将修改持久化,需要修改.bashrc文件。
在文件的末尾添加上述语句:
修改完要记得source一下,这样才能把最新的修改应用到这里。
之所以修改完.bashrc之后就可以持久化修改,是因为每次启动一个shell或者新开一个pane,都会先执行:
~/.bashrc
这样就把环境变量修改了 。
常见的环境变量:
1.HOME:
用户的家目录
上述已经展示过HOME的操作。
2.PATH:
可执行文件(命令)的存储路径
路径与路径之间用“:”分隔开。当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。
例如,将第六节课的匹配服务修改为可执行命令:
使用:
mv main match-server
将main重命名为match-server
在.bashrc中添加一行PATH:
source一下之后就可以在任意目录下使用match-server了 。
3.LD_LIBRARY_PATH:
用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表。
当我们修改动态链接库里面的内容时,不用重新编译可执行文件,方便修改。
4.C_INCLUDE_PATH:
C语言的头文件路径,内容是以冒号分隔的路径列表。
5.CPLUS_INCLUDE_PATH:
CPP的头文件路径,内容是以冒号分隔的路径列表。
6.PYTHONPATH:
Python导入包的路径,内容是以冒号分隔的路径列表。
7.JAVA_HOME:
jdk的安装目录。
8.CLASSPATH:
存放Java导入类的路径,内容是以冒号分隔的路径列表。
三、常用命令
本节主要是Linux的一些常见命令。
系统状况:
1.top:
作用:查看所有进程的信息(Linux的任务管理器)
使用方法:
- 打开后,输入M:按使用内存排序
- 打开后,输入P:按使用CPU排序
- 打开后,输入q(Ctrl+C):退出
上述排序中,如果相同则按照PID排序。
2.df -h:
查看硬盘使用情况
3.free -h:
查看内存使用情况
4.du -sh :
查看当前目录占用的硬盘空间
5.ps aux:
查看所有进程
因为top只能查看前几个进程,而ps aux可以显示所有进程。
也可以用于查看某个进程:
6.kill -9 PID:
杀死编号为PID的进程
传递某个具体的信号:kill -s SIGTERM pid(有些进程必需要用这个关)
7.netstat -nt:
查看所有网络连接
8.w:
列出当前登录的用户。
因为我用了两个terminal同时登录了acs这个用户,所以会显示有两个acs用户。
9.ping baidu.com:
检查是否能连网。
文件权限:
1.chmod:
修改文件权限
- chmod +x xxx 给xxx添加x权限
- chmod -x xxx 去掉xxx的x权限
- chmod 777 xxx:将xxx的权限改成777
- chmod 777 xxx -R:递归修改整个文件夹的权限
文件检索:
1.find /path/to/directory/ -name '*.py':
搜索某个文件路径下的所有*.py文件
2.grep xxx:
从stdin中读入若干行数据,如果某行中包含xxx,则输出该行;否则忽略该行。(Ctrl+D退出)
3.wc:
统计行数、单词数、字节数
- 既可以从stdin中直接读入内容;也可以在命令行参数中传入文件名列表;
- wc -l:统计行数
- wc -w:统计单词数
- wc -c:统计字节数
4.tree:
展示当前目录的文件结构
- tree /path/to/directory/:展示某个目录的文件结构
- tree -a:展示隐藏文件
5.ag xxx:
搜索当前目录下的所有文件,检索xxx字符串
6.cut:
分割一行内容
- 从stdin中读入多行数据
- echo $PATH | cut -d ':' -f 3,5:输出PATH用:分割后第3、5列数据
- echo $PATH | cut -d ':' -f 3-5:输出PATH用:分割后第3-5列数据
- echo $PATH | cut -c 3,5:输出PATH的第3、5个字符
- echo $PATH | cut -c 3-5:输出PATH的第3-5个字符
7.sort:
将每行内容按字典序排序
- 可以从stdin中读取多行数据
- 可以从命令行参数中读取文件名列表
8.xargs:
将stdin中的数据用空格或回车分割成命令行参数
find . -name '*.py' | xargs cat | wc -l:统计当前目录下所有python文件的总行数
查看文件内容:
1.more:
浏览文件内容
- 回车:下一行
- 空格:下一页
- b:上一页
- q:退出
2.less:
与more类似,功能更全
- 回车:下一行
- y:上一行
- Page Down:下一页
- Page Up:上一页
- q:退出
3.head -3 xxx:
展示xxx的前3行内容
- 同时支持从stdin读入内容
4.tail -3 xxx:
展示xxx末尾3行内容
- 同时支持从stdin读入内容
用户相关:
1.history:
展示当前用户的历史操作。内容存放在~/.bash_history中
只会展示后1000条
工具:
1.md5sum:
计算md5哈希值
- 可以从stdin读入内容
- 也可以在命令行参数中传入文件名列表;
2.time command:
统计command命令的执行时间
real是真实的完成的时间,但是其中可能有一部分时间不在执行命令,可能被操作系统挂起。
user是真实执行命令的时间。
3.ipython3:
交互式python3环境。可以当做计算器,或者批量管理文件。
! echo "Hello World":!表示执行shell脚本
exit表示退出
4.watch -n 0.1 command:
每0.1秒执行一次command命令
Ctrl+C关闭
5.tar:
压缩文件
- tar -zcvf xxx.tar.gz /path/to/file/*:压缩
- tar -zxvf xxx.tar.gz:解压缩
6. diff xxx yyy:
查找文件xxx与yyy的不同点
如果相同,则不会输出任何东西。
安装软件:
1.sudo command:
以root身份执行command命令
2.apt-get install xxx:
安装软件
3.pip install xxx --user --upgrade:
安装python包