AcWing-Linux基础课-7.管道、环境变量与常用命令

一、管道

管道的作用就是将命令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包 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值