Linux常用命令、管道、环境变量

1 Linux常用命令

1.1 系统状况

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:测试网络连接,检查是否联网。

1.2 文件权限

chmod:修改文件权限

  • chmod +x filename:给filename添加可执行权限;
  • chmod -x filename:去掉filename的可执行权限;
  • chmod abc filename:其中a,b,c各为一个数字,表示User、Group以及Other的权限。r=4,w=2,x=1,为读,写,可执行。 如设置所有人对该文件都可读可写可执行,则设置chmod 777 filename

1.3 文件检索

find <path>(文件路径) -name '*.py':搜索path路径下的所有py文件。 grep xxx:从stdin中读入若干行数据,如果某行中包含xxx,则输出该行,否则忽略该行。 wc:统计行数、单词数、字节数。

  • 既可以从stdin中直接读取内容,也可以在命令行参数中传入文件名列表。
  • wc -l:统计行数。
  • wc -w:统计单词数。
  • wc -c:统计字节数。

tree:展示当前目录的文件结构。

  • tree path:展示某个目录的文件结构。
  • 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文件的总行数。

1.4 查看文件内容

more:浏览文件内容。

  • 回车或空格:下一行。
  • b:上一页。
  • q:退出。

less:和more类似,功能更全。

  • 回车:下一行。
  • y:上一行。
  • Page Down:下一页。
  • Page Up:上一页。
  • q:退出。

head -3 xxx:显示xxx的前3行内容。

  • 同时支持从stdin读入内容。

tail -3 xxx:显示xxx末尾3行内容。

  • 同时支持从stdin读入内容。

1.5 用户相关

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

1.6 工具

md5Sum:计算md5的哈希值。

  • 也可以从stdin中读入内容,也可以在命令行参数中传入文件名列表。

time command:统计command命令的执行时间。 ipython3:交互式python环境。可以当作计算器,或者批量管理文件。 i command!表示执行shell脚本命令。 watch -n 0.1 command:每隔0.1s就执行一次command命令。 tar:压缩文件。

  • tar -zcvf xxx.tar.gz /path:压缩。
  • tar -zxvf xxx.tar.gz :解压缩。

diff xxx yyy:查看文件xxxyyy的不同点。

1.7 安装软件

sudo command:以root身份运行command命令。 apt-get install xxx:安装xxx软件。 pip install xxx --user --upgrade:安装python包。

2 管道

2.1 管道命令

管道命令操作符是|,,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后传递给下一个命令,作为标准的输入。 下图为管道命令的输出说明: https://raw.githubusercontent.com/unique-pure/NewPicGoLibrary/main/img/watermark%2Ctype_d3F5LXplbmhlaQ%2Cshadow_50%2Ctext_Q1NETiBAdW5pcXVlX3B1cnN1aXQ%3D%2Csize_20%2Ccolor_FFFFFF%2Ct_70%2Cg_se%2Cx_16-20231125214459645.png 【指令1】正确输出,作为【指令2】的输入,然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示在屏幕上面了。 通过管道之后,我们发现【指令1】和【指令2】的正确输出不显示在屏幕上面,只显示指令3的输出。

其类似于之前学习的文件重定向,可以将前面一个命令的stdout重定向下一个命令的stdin。但与文件重定向有很大区别:文件重定向左边为命令,右边为文件;管道左右两边均为命令,左边有stdout,右边有stdin

值得注意的点:

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

2.2 实例

  • 统计当前目录下所有python文件的总行数 统计总行数,在前面常用命令学习中,我们已经会了:wc -l,统计当前目录所有的python文件,也易得为:find . -name '*.py'。那么我们需要解决的问题则是将所有python文件选出来得到其内容再统计。我们则可能会这样:find . -name '*.py' | cat | wc -l。但find . -name '*.py'得到的是字符串,我们还需要利用xargs将字符串分割作为命令行参数,这样即可达到效果。 即:find . -name '*.py' | xargs cat | wc -l

3 环境变量

3.1 概念

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

3.2 查看环境变量

  • 列出当前环境下的所有环境变量:
1
2
3
env # 显示当前用户的变量;
set # 显示当前shell的变量,包含当前用户的变量;
export # 显示当前导出成用户变量的shell变量。
  • 输出某个环境变量的值:echo $PATH

3.3 修改环境变量

修改环境变量我们可以先将修改命令放到~/.bashrc文件中。修改完之后需执行source ~/.bashrc,来将修改应用到当前的bash环境下。

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

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

3.4 常见环境变量

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


相关内容

Buy me a coffee~
HeZephyr 支付宝支付宝
HeZephyr 微信微信
0%