Linux 管道命令的使用
配合 Linux 管道符,可以根据情况执行多条命令,常用的符号有:'|' '&&' ';' '||' '>' '>>'
|
管道符 "|" 主要用来将上一个命令的输出作为下一个命令的输入。
例如:
ps aux | grep test.sh
将当前所有进程信息作为输出信息,grep 将输出的内容作为输入,列出有 "test.sh" 的行。
可同时使用多条管道:
cat /etc/passwd | grep /bin/bash | wc -l
这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行;第二个管道将grep的输出送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash。
多命令顺序执行符
; 命令1;命令2 多个命令顺序执行,命令之间无任何逻辑关系
&& 命令1&&命令2 逻辑与:当命令1正确执行后,命令2才会正确执行,否则命令2不会执行
|| 命令1||命令2 逻辑或:当命令1不正确执行后,命令2才会正确执行,否则命令2不会执行
例如:
pwd;ls;date
ls test.sh && echo found file
ls test.sh || echo no file
重导向
重导向就是使命令改变它所认定的标准输出。
'>' 可将结果输出到文件中,该文件原有内容会被删除,'>>' 则将结果附加到文件中,原文件内容不会被删除。
将 file1.txt 的内容复制到 file2.txt,file2.txt 原内容会被清空。
cat file1.txt > file2.txt
将 file1.txt 的内容附加到 file2.txt,file2.txt 原内容保留。
cat file1.txt >> file2.txt
grep 全局匹配打印命令 in Linux
tar 打包/压缩 in Linux
tar 是 Linux 下常用的处理打包或压缩的常用命令,常用来处理后缀名为:tar, tar.gz tar.bz2 的文件。
tar:存档格式,未经过压缩
tar.gz:在tar基础上进行 gzip 压缩,tar.gz 和 tgz 类似
tar.bz2:比 gzip 压缩比更高,但更耗时, tar.bz2,tbz 和 tb2 类似
Linux 查询程序或文件位置 which/find/locate
经常忘记将一些文件放在什么,或者安装一个应用程序后不知道准确的安装路径。使用命令可以进行查询:
which
which python
which
命令可用来查询 app 安装位置,返回值为路径。
find
find / -name file -type f
斜线:/ 代表从系统根目录查找,也可以定义特定的目录开始搜索
-name:代表只找文件名匹配,不找文件内的字符串
-iname:代表文件名不区分大小写
-type:搜索的文件类型 f
代表只找文件不找文件夹匹配,l
代表软链接文件
-mtime:指定查找日期天数
-exec:查找后执行 command 命令,注意最后要有分号 ;
例如,查找指定目录三天前的文件,然后删除文件:
find /temp/* -mtime +2 -exec rm -rf {} \;
-mtime 使用加号 +
代表指定日期前查找,减号 -
代表指定日期内查找。查找天数为取整关系,例如 2.5 天前的文件会被包含在 -mtime -2 内而不在 -mtime +2 内。
-exec 指令后跟需要执行的命令。
查询已知文件名的文件的所有位置,find
命令直接从文件系统 filesystem 查找文件,速度可能会比较慢,但优点是找到的文件当前肯定在系统内。
locate
locate
用来根据文件名寻找文件,它和 find
命令不同点是,find
从当前文件系统直接查找匹配,而 locate
命令会有一个背景进程,记录当前所有文件名到一个数据库文件中,当新建或删除一个文件时会动态更新这个数据库。当使用 locate
命令查找文件时,会从这个数据库里查找,这样速度会相比 find
快很多。
语法:
locate [option] strFile
strFile:将匹配所有包含此字符串的文件
option:
-i:不区分大小写
-c:输出匹配到的文件的个数
对于一些刚刚建立的文件,可能数据库没有更新到,所以无法通过命令查找到,这时候可以手动更新数据库:
sudo updatedb