管道&环境变量&常用命令

管道

概念

  • 管道类似于文件重定向,可以将前一个命令的 stdout 重定向到下一个命令的 stdin

要点

  • 管道命令仅处理 stdout,会忽略stderr
  • 管道右边的命令必须能接受stdin
  • 多个管道命令可以串联。

与文件重定向的区别

  • 文件重定向左边为命令,右边为文件。

  • 管道左右两边均为命令,左边有stdout,右边有stdin

  • 举例:

    • 统计当前目录下所有的python文件的总行数。

      1
      
      find . -name '*.py' | xargs cat | wc -l
      

环境变量

概念

  • Linux 系统中会用很多环境变量来记录配置信息。

  • 环境变量类似于全局变量,可以被各个进程访问到。我们可以通过修改环境变量来方便地修改系统配置。

查看

列出当前环境下的所有环境变量:

1
2
3
env  # 显示当前用户的变量
set  # 显示当前shell的变量,包括当前用户的变量;
export  # 显示当前导出成用户变量的shell变量

输出某个环境变量的值:

1
echo $PATH

修改

环境变量的定义、修改、删除操作可以参考 shell语法——变量 这一节的内容。

为了将对环境变量的修改应用到未来所有环境下,可以将修改命令放到~/.bashrc文件中。

修改完~/.bashrc文件后,记得执行 source ~/.bashrc,来将修改应用到当前的bash 环境下。

为何将修改命令放到~/.bashrc,就可以确保修改会影响未来所有的环境呢?

  • 每次启动 bash,都会先执行 ~/.bashrc
  • 每次 ssh 登陆远程服务器,都会启动一个bash命令行给我们。
  • 每次 tmux 新开一个 pane,都会启动一个 bash 命令行给我们。
  • 所以未来所有新开的环境都会加载我们修改的内容。

常见的环境变量

  • HOME : 用户的家目录
  • PATH : 可执行文件(命令)的存储路径。路径与路径之间用:分隔。当某个可执行文件同时出现在多个路径中时,会选择从左到右第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。
  • LD_LIBRARY_PATH : 用于指定动态链接库(.so 文件)的路径,其内容是以冒号分隔的路径列表。
  • C_INCLUDE_PATH : C 语言的头文件路径,内容是以冒号分隔的路径列表。
  • CPLUS_INCLUDE_PATH : CPP 的头文件路径,内容是以冒号分隔的路径列表。
  • PYTHONPATH : Python 导入包的路径,内容是以冒号分隔的路径列表。
  • JAVA_HOME : jdk 的安装目录。
  • CLASSPATH : 存放 Java 导入类的路径,内容是以冒号分隔的路径列表。

linux 添加环境变量

添加环境变量之前需要明白以下几点

  • Linux的环境变量是保存在变量PATH中(window 也是保存在PATH中),可通过命令 echo $PATH 输出查看

  • Linux环境变量值之间是通过冒号分隔的( : )

  其格式为:PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

临时添加环境变量PATH

  • 可通过export命令,如:
    • export PATH=/usr/local/nginx/sbin/:$PATH,将/usr/local/nginx/sbin/目录临时添加到环境变量中

永久添加环境变量

  • 编辑.bashrc文件 vim ~/.bashrc «—- 通过这种方式,在关闭xshell后,添加的环境变量仍然生效

  • 文件末尾添加:export PATH="/usr/local/nginx/sbin/:$PATH"

  • source ~/.bashrc

所有用户永久添加环境变量

  • 编辑/etc/profile文件 vim /etc/profile «—- 通过这种方式,在关闭xshell后,添加的环境变量不生效

  • 文件末尾添加:export PATH="/usr/local/nginx/sbin/:$PATH"

  • source /etc/profile

总结

  linux添加环境变量注意几点:

    1、变量之前使用冒号分隔

    2、使用命令export

    3、export时,需要有$PATH

    4、在文件的末尾添加

    5、配置文件有,/etc/profile~/.bashrc

    6、添加bin或者sbin目录即可

常用命令

系统状况

  • top : 查看所有进程的信息(Linux的任务管理器)
    • 打开后,输入 M : 按使用内存排序
    • 打开后,输入 P : 按使用CPU排序
    • 打开后,输入 q : 退出
  • df -h : 查看硬盘使用情况
  • free -h :查看内存使用情况
  • du -sh : 查看当前目录占用的硬盘空间
  • ps aux : 查看所有进程
  • kill -9 pid : 杀死编号为 pid 的进程
    • 传递某个具体的信号 : kill -s SIGTERM pid
  • netstat -nt : 查看所有网络连接
  • w : 列出当前登陆的用户
  • ping www.baidu.com : 检查是否连网

文件权限

  • chmod: 修改文件权限
    • chmod +x xxx: 给xxx添加可执行权限
    • chmod -x xxx:去掉xxx的可执行权限
    • chmod 777 xxx:将xxx的权限改为777
    • chmod 777 xxx -R :递归修改整个文件夹的权限

文件检索

  • find /path/to/directory/ -name '*.py' : 搜索某个文件路径下的所有 *.py 文件
  • grep xxx : 从 stdin中读入若干行数据,如果某行中包含 xxx ,则输出该行;否则忽略该行
  • wc : 统计行数、单词数、字节数 既可以从 stdin 中直接读入内容;也可以在命令行参数中传入文件名列表;
    • wc -l : 统计行数
    • wc -w : 统计单词数
    • wc -c : 统计字节数
  • tree : 展示当前目录的文件结构
    • tree /path/to/directory/ : 展示某个目录的文件结构
    • tree -a : 展示隐藏文件
  • ag xxx : 搜索当前目录下的所有文件,检索 xxx 字符串
  • 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 个字符
  • sort : 将每行内容按字典序排序
    • 可以从 stdin 中读取多行数据
    • 可以从命令行参数中读取文件名列表
  • xargs : 将 stdin 中的数据用空格或回车分割成命令行参数
  • find . -name '*.py' | xargs cat | wc -l : 统计当前目录下所有 python 文件的总行数

查看文件内容

  • more : 浏览文件内容
    • 回车 : 下一行
    • 空格 : 下一页
    • b : 上一页
    • q : 退出
  • less : 与 more 类似,功能更全
    • 回车 : 下一行
    • y : 上一行
    • Page Down : 下一页
    • Page Up : 上一页
    • q : 退出
  • head -3 xxx : 展示 xxx 的前 3 行内容
    • 同时支持从stdin读入内容
  • tail -3 xxx : 展示 xxx 末尾 3 行内容
    • 同时支持从stdin读入内容

用户相关

  • history : 展示当前用户的历史操作。内容存放在 ~/.bash_history

工具

  • tar:压缩文件
    • tar -zxvf xxx.tar.gz /path/to/file/* : 压缩
    • tar -zcvf xxx.tar.gz:解压缩
  • diff xxx yyy :查找文件xxxyyy不同点

安装软件

  • sudo command : 以 root 身份执行 command 命令

  • apt-get install xxx : 安装软件(Ubuntu

    • yum install xxx : 安装软件(CentOS
  • pip install xxx --user --upgrade : 安装 python

    • pip3升级版的 pip