学习linux_Day06——管道/环境变量/常用命令

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

管道

结构就像下面的代码:

<command1> | <command2> | <command3> | <command4> | ...

管道类似文件重定向,可以将前一个命令的stdout重定向的下一个命令的stdin,就是将上一个命令的stdout作为下一个命令的stdin,可以将多个命令组合起来使用。

要点
  1. 管道命令仅处理stdout,会忽略stderr
  2. 管道右边的命令必须能接受stdin
  3. 多个管道命令可以串联。
与文件重定向的区别
  • 文件重定向的左边是命令,右边是文件
  • 管道的左右两边都是命令,左边有stdout,右边有stdin
  • 一个管道是可以处理很多条命令的
示例

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

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

第一条命令find . -name '*py'是找到当前目录下的所有python文件,并将文件名作为stdout输出

第二条命令xargs cat是将find 的输出的结果作为stdin,并将其作为参数传给cat命令,分别查看这些.py文件的内容

第三条命令wc -l就是统计所有文件内容的总行数

环境变量

概念

Linux系统中会用很多环境变量来记录配置信息。
环境变量类似于全局变量,可以被各个进程访问到。我们可以通过修改环境变量来方便地修改系统配置。

查看环境变量
env # 显示当前用户的环境变量
set # 显示当前 shell 的环境变量,包含当前用户的环境变量
export # 显示当前导出成用户变量的 shell 变量
输出某个环境变量的值
echo $PATH  #用shell语法,符号$对变量进行取值操作

image-20220704015936806

修改环境变量

比如说,我们要将当前系统的家目录home/acs修改成home/acs/homework,可以用export命令将HOME变量导出来,再修改

export HOME=home/acs/homework

但是当我们重新打开Terminal的时候发现HOME变量又变成原来的了,这是因为,每次打开Terminal,启动bashssh远程链接服务器,用tmux 打开一个pane, 他们都会重新执行bash的终端配置文件~/.bashrc,而刚才的配置并不存在于这个文件中,因此就失效了。

为了让修改持久化,可以直接修改配置文件~/.bashrc,然后执行命令source ~/.bashrc,那么对环境变量的修改就会持久化了。

常见环境变量
  1. HOME:用户的家目录。
  2. PATH:可执行文件(命令)的存储路径。路径与路径之间用:分隔。当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。下列所有存储路径的环境变量,均采用从左到右的优先顺序。
  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导入类的路径,内容是以冒号分隔的路径列表。

我们可以将自己写的可执行程序的地址写进PATH环境变量中去,并且执行source ~/.bashsrc进行持久化,然后就可以在任何目录下通过输入可执行程序的名称,像执行ls命令一样执行自己定义的可执行程序

常用命令

系统情况
  1. top:查看所有进程的信息(Linux的任务管理器),类似windows的任务管理器
    • 打开后,输入M:按使用内存,从大到小排序
    • 打开后,输入P:按使用CPU,从大到小排序
    • 打开后,输入q:退出
  2. df -h:查看硬盘使用情况
  3. free -h:查看内存使用情况
  4. du -sh:查看当前目录占用的硬盘空间
  5. ps aux:查看所有进程
  6. kill -9 pid:杀死编号为pid的进程
    • 传递某个具体的信号:kill -s SIGTERM pid
  7. netstat -nt:查看所有网络连接
  8. w:列出当前登陆的用户
  9. ping www.baidu.com:检查是否连网,如果一直有数据更新,说明可以联网
文件权限

Linux 文件权限,总共有 10 位

  • 1:表示文件类型,可以是文件、目录、链接
  • 2-4:表示当前用户对该文件所拥有的权限
  • 5-7:表示当前用户组对该文件所拥有的权限
  • 8-10:表示其他用户对该文件所拥有的权限

其中 rwx 分别表示可读可写可执行

chmod:修改文件权限

  • chmod +x xxx:给xxx添加可执行权限
  • chmod -x xxx:去掉xxx的可执行权限
  • chmod 777 xxx:将xxx的权限改成777,777 表示可读可写可执行
  • chmod 777 xxx -R:递归修改整个文件夹的权限
文件检索
  1. find directory -name '*.py':搜索指定目录下所有 .py 文件

    • 也可以直接find -name '*.py':搜索当前目录中的所有.py文件
  2. grep xxx:从 stdin 中读入若干行内容,如果某行中包含要搜索的内容 xxx,则输入该行,并且对xxx标记,否则忽略该行。

    • grep 命令一般配合其他命令一起使用,通过管道处理上一个命令的输出结果。

    • 比如:输出当前目录下所有 .py 文件中包含 hello 的行。

find . -name "*.py" | xargs cat | grep 'hello'
  1. wc:统计行数、单词数和字节数

    • 可以从标准输入 stdin 中读入内容,也可以从指定文件中读入内容,也可以从命令行中传入文件参数列表

    • wc -l:统计总行数

    • wc -w:统计总单词数

    • wc -c:统计总字节数

  2. tree / tree .:树形展示当前目录的文件结构

    • tree dirctory:展示指定目录的文件结构

    • tree -a:可以展示隐藏文件

    • tree -h:可以展示每个文件的大小

  3. ag xxx常用,搜索当前目录下的所有文件,检索 xxx 字符,输出所有包含 xxx 的行并且显示其对应的文件,比grep 命令多了字符串对应的文件和位置

  4. cut:分割内容

    • 可以从标准输入中读取多行数据
    • 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中读取多行数据
  • 可以从命令行参数中读取文件名列表

  • 举例:cat xxx.txt | sort,将文件内容按每行字典序排序输出

8、xargs:将 stdin 中的数据用空格或回车分割成命令行参数

经典例子:统计当前目录下所有 python 文件的总行数

find . -name '*.py' | xargs cat | wc -l 
查看文件内容
  1. more:从前往后输出一页内容,Enter下一行、Space下一页、b 上一页、q 退出查看

  2. less:和 more 类似,Enter下一行,y 上一行,Page Down 下一页,Page Up 上一页,q 退出,比more功能更多。

  3. head -3 xxx:展示 xxx 的前 3 行内容

    • 支持 stdin 读入内容
  4. tail -3 xxx:展示 xxx 末尾 3 行内容,一般用于查看最新的日志。

    • 支持 stdin 读入内容

      history | tail -3 # 查看最新的三个操作命令
      

      上面的四个命令和cat操作是一样的。

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

工具
  1. md5sum:计算文件 md5 哈希值(相当于数据的“指纹”,这是唯一的,不能逆解)

    • 可以从 stdin 读入内容,按 Ctrl + d 结束,同时输出 md5 哈希值
  2. time command:统计 command 命令的执行时间

  3. ipython3:一个 python 交换环境,可以用做计算器。(使用python语法进行计算)

    • ! echo "hello"! 表示执行 shell 脚本
  4. watch -n 0.1 command:每0.1s 执行一次命令

  5. tar:压缩解压缩

    • tar -zcvf xxx.tar.gz yyy:将目录 yyy 压缩成 xxx.tar.gzc - compress

    • tar -zxvf xxx.tar.gz -C yyy:可以将 xxx.tar.gz 解压到指定目录,x - extract

    • tar -zxvf xxx.tar.gz :将 xxx.tar.gz 解压到当前目录

  6. diff xxx yyy:查找文件 xxxyyy 的差异

软件安装
  1. sudo command:以 root 身份执行命令

  2. apt-get install xxx:安装软件

  3. pip install xxx --user --upgrade:安装 python

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值