Title

linux学习记录(管道、环境变量与常用命令) 10.14~10.15

管道;

类似文件重定向

第一个命令的标准输出至第二个命令的标准输入,第二个文件的标准输出至第三个命令的标准输入

(1)只会处理stdout标准输出,stderr会忽略

(2)管道右边的命令必须能接受stdin(有些指令如:rm tmp -r接收的是文件参数)

(3)多个管道命令可以串联

 

与文件重定向的区别:

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

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

 

例:所有.python文件总行数find . -name '*.py' | xargs cat | wc -l

find . -name '*.py'在当前目录下,寻找所有(.)以.py结尾的文件名

 xarg cat

cat不能接收标准输入,但是能接收文件名,把上面的标准输入通过xarg转化为文件参数,用空行隔开,传给cat

find . -name '*.py' | xargs cat 是把文件名作为参数,给cat输出,输出的是那些文件的内容

相当于 cat ./match_client/__init__.py ./match_client/match/__init__.py ./match_client/match/Match.py ./match_client/match/constants.py ./match_client/match/ttypes.py ./client.py

find . -name '*.py' | cat   是把文件名当做文件内容,给cat输出

 wc 分别统计每个文件的行数,wc -l 统计总行数

 

环境变量:

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

(1)查看

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

env 显示当前用户的变量

set 显示当前shell的变量,包括当前用户的变量

export  # 显示当前导出成用户变量的shell变量

可以看到环境变量有SHELL、PWD、LONGNAME、HOME等等... 

输出某个环境变量

 

 修改:

通过export修改的环境变量,只会在当前的bash环境下有效,重新登陆(重开一个bash)又变回原来

要想不变:

在家目录下vim .bashrc

在最后一行加上export HOME=/home/acs/homework

再source .bashrc

 为什么将修改放到.bashrc中,就可以确保修改会影响未来所有的环境呢?

每次启动bash,都会先执行~/.bashrc

每次ssh登录远程服务器,都会启动一个bash命令给我们

每次tmux新开一个pane,都会启动一个bash命令给我们

所以未来所有新开的环境都会加载我们修改的内容

 

查看cpu信息:cat proc/cpuinfo

 

$PATH:可执行文件(命令)的存储路径,通过$PATH环境变量找命令的路径

如command命令,操作系统会遍历$PATH中的所有路径,直到第一个和command匹配的命令为止

如果有一个命令同时出现在多个路径出现,会选择第一个

打开根目录下的bashrc,vim ~/bashrc,加一行

 运行一下

 发现echo $PATH多了一个目录

然后可以在家目录下直接运行

 

D_LIBRARY_PATH:用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表

告诉去哪找动态链接库的路径

c++在执行编译的时候,所有的库分成动态链接库和静态链接库,(动态库和静态库)

动态库:只有在执行的时候才会去找那个函数 -- 好处:可执行文件变小,更新方便,只需要重新编译动态库

C_INCLUDE_PATH:C语言的头文件路径,内容是以冒号分隔的路径列表。

CPLUS_INCLUDE_PATH:CPP的头文件路径,内容是以冒号分隔的路径列表。

 PYTHONPATH:Python导入包的路径,内容是以冒号分隔的路径列表。

JAVA_HOME:jdk的安装目录。
CLASSPATH:存放Java导入类的路径,内容是以冒号分隔的路径列表。

 

常用命令:

(1)系统状况:

1、top:查看所有进程的信息(Linux的任务管理器)

打开后,输入M(大写):按使用内存排序

打开后,输入P(大写):按使用CPU排序

打开后,输入q:退出

2、df -h

disk free

查看硬盘使用情况

3、free -h

查看内存使用情况

4、du -sh

disk usage

查看当前目录占用的硬盘空间

-h 显示出所有文件的占用情况

5、ps aux / -ef

process status 

查看所有进程

 grep xxx 看是否存在xxx字符串,存在就输出

6、kill -9 pid

杀死编号为pid的进程

传递某个具体的信号:kill -s SIGTERM pid(有些个别不能kiil -9)

-9 SIGKILL -15 SIGTERM

7、netstat -nt

查看所有网络连接

8、ping www.baidu.com

检查是否连网

(2)文件权限:

10位

d _ _ _ | _ _ _ | _ _ _

第一位表示是不是文件夹、超链接...,后面rwx三位一组(代表自己,同组,其他人能不能访问)

chmod +x xxx 给xxx添加可执行权限

chmod -x xxx 去掉xxx可执行权限

chmod +r xxx 给xxx添加可读权限

chmod -r xxx 去掉xxx可读权限

chmod +r * -R

chmod 777 xxx -R:递归修改整个文件夹的权限

 ...

(3)文件检索

1、find

 2、grep xxx

从标准输入中读取,如果含有xxx就显示+标记

 ctrl+d结束

find 

 find出的那些地址,作为参数传给cat显示,再作为输入,传给grep

找出所有cpp文件中,含有acs_3144的行

我们不知道上面的行是哪个文件怎么办?

3、ag命令,在当前目录下查找,会列出在哪个文件里,哪一行

***注:ag很重要

4、wc

 238行(-l line),576个单词(-w word),7469字节(-c char) 

 wc也可以接收标准输入的内容

 查看当前文件夹下所有.cpp文件一共有多少行

 5、tree

查看文件夹结构

+ -a罗列时候会包含隐藏文件

6、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

 将每行内容按字典序排序

find homework/lesson_6 | sort 

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

(4)查看文件内容

1、more

cat整个输出

more先输出一部分

回车:下一行

空格:下一页

b:上一页

q:退出

2、less

与more类似,功能更全

回车:下一行

y:上一行

Page Down:下一页

Page Up:上一页

q:退出

3、head 

head -10 查找某个文件前十行内容

4、tail

tail -10 查找某个文件后十行内容

 (5)用户相关

1、history 查看当前用户的历史操作记录,内容存放在~/.bash_history中

修改.bash_history,可持久化

(6)工具

1、md5sum 

计算md5哈希值

可以从stdin读入内容

也可以在命令行参数中传入文件名列表

反推几乎不可能

用户输入密码->转化为hash值->和数据库内的hash值对比,这样就可以不存储密码

可以用到练习册:不希望学生看原文,同时结果可以评测

2、time command:统计command命令的执行时间

3、ipython3:交互式python3环境。可以当做计算器,或者批量管理文件。

4、watch -n 0.1 command:每0.1秒执行一次command命令

crontab 每周几去备份,重启完执行什么命令

5、tar

压缩文件(zcvf)

tar -zcvf ttt.tar.gz tmp 将tmp文件夹中的所有文件压缩,命名为ttt.tar.gz

解压文件(zxvf)

tar -zxvf ttt.tar.gz 

6、diff xxx yyy:查找文件xxx与yyy的不同点

(7)安装软件

1、sudo command 以root身份执行command命令

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

3、pip install xxx --user --upgrade:安装python包

posted @ 2023-10-14 17:01  长大想当太空人  阅读(39)  评论(0)    收藏  举报