Linux 常见命令常用用法

作者: , 共 1820 字 , 共阅读 0

简单列一些 Linux 自带的 GNU 命令的常用用法,可以当做 cheatsheet 使用。

最新修订都在https://gitee.com/zhiqiang.org/cheatsheets,可配合cheat 工具使用

1、ls 列出文件

# 列出指定文件或目录,只显示文件名
ls foo
# 显示隐藏文件 -a,all。
ls foo -la
# 显示详细信息(权限、文件大小、时间)-l,long
ls foo -l
# 按大小排序 -S,size(注意是大写的S)
ls foo -lS
# 文件大小采取可视化显示(比如2M,3G)-h
ls foo -lsh
# 按修改时间排序 -t,time
ls foo -lt
# 排序逆序 -r,reverse
ls foo -ltr

2、grep 按行搜索文件内容

# 常规用法,显示所有匹配的行,-r 表示 recursive 递归搜索
grep 'xxx' src -r
# 显示所有不匹配的行,-v
grep -v 'xxx' src -r
# 只显示匹配部分,-o only
grep -o 'xxx.*.jpg' src -r
# 不显示文件名
grep -h 'xxx' src -r
# 显示行号(默认不显示行业,有点违反直觉),-n number
grep -n 'xxx' src -r
# 忽略大小写 -i,ignore
grep -i 'xxx' src -r
# 显示匹配行的上下文,-A2 上面2行,-B3 下面3行,-C4 上下各4行。
grep -A2 -B3 -C4 'xxx' src 
# 只显示文件,不显示匹配内容,以配合xargs使用,比如下面删除所有包含xxx的文件
grep xxx src -rl | xargs rm

3、find 查找文件

# 查找src目录下所有文件和文件夹,递归所有子目录
find src
# 限制查找文件。-type d表示返回目录。
find src -type f
# 根据文件名查找,-iname表示忽略大小写。注意带*的字符串必须用引号引起来。
find src -name '*.csv'
# 多重条件 -a 表示and,-o表示or
find src -name '*.csv' -o -name '*.jpg'
# 根据文件大小筛选 -size,+表示大于,-表示小于。
find src -size +10M -size -10G

find 和 grep 结合,可以实现对指定的文件类型进行搜索,比如搜索 src 目录下所有.cpp.hpp包含boost的行:

grep "boost" `find src -type f -name "*.cpp" -o -name "*.hpp"`

4、xargs 管道和

Linux 的命令行管道很有用,配合 xargs 可以做更多事情。

# 删除包含指定文字的文件
grep xxx ./src/ -lr | xargs rm -rf
# 删除所有文件名匹配的文件
find src -type f -name "*.cpp" -o -name "*.hpp" | xargs rm -rf
# 指定分隔符 -d delimiter
echo -e "a\tb\tc" | xargs -d "\t" mkdir
# 显示命令先不执行(等待用户确认) -p print
grep xxx ./src/ -lr | xargs -p rm -rf
# 显示命令直接执行 -t
grep xxx ./src/ -lr | xargs -t rm -rf

xargs 还可以配合-I使用,适合多个参数的命令,比如 mv ,当文件名里有空格或特殊字符时也可能需要使用这个参数:

# 将所有包含指定文字的文件转入指定文件夹
grep xxx ./src/ -lr | xargs -I file mv 'file' ./removed/

Q. E. D.

类似文章:
IT » Linux, cheatsheets
cheat 提供命令行的速记记录,在命令行下,随时增加笔记随时查看,用的时间越长越强大!
编程 » Linux, Vim, 字符编码
由于 UNICODE 的优势,目前推荐都用 UTF-8 进行编码。
编程 » Linux, rsync
在同步一个超大文件时,发现 rsync 并没有按照预期的同步一个文件。而使用md5sum检验文件内容时,原始文件和目标文件的内容并不一样。
编程 » Python
在 Python3 以上,通常说的字符串是指unicode字符串,以下将不再重复强调。
相似度: 0.075
boost是除std外最常用的 C++库,覆盖很多常用操作。目前最新的版本是1.59.0
相似度: 0.067
编程 » C++, GCC, 编译链接
C++的链接分为两部分,一个是编译时,一个是运行时。但运行时的行为也收到编译参数的影响。
获取程序占用的内存量,是一个诡异的需求。但程序写多了,有时候还真需要,尤其是代码运行出现问题的时候。
编程 » GIT
有时候不小心把一些大文件 commit 到了本地版本库,但往网络版本库同步时,因为文件过大被拒绝。如果在上传前,本地有多次提交,此时再在当前版本里删除这些大文件还不够,还需要把历史记录全删掉。效果要跟从来没提交过这些文件一样。
相似度: 0.062
编程 » Python
Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止。下面命令可以查看当前的搜索路径:
编程 » popen, C++
我们在 C++里可以这么查看popen是否正常执行:
在 Python 中操作文件或字符串时,有时候会碰到 UnicodeDecodeError 异常:
云蒙山景区在北边密云区,可远望密云水库,风景视野都很好。进入景区之后小巴摆渡车开七公里后下车开始徒步,先走一公里平路,再延索道走大约四公里。上山总里程 5 公里多一点,爬升约 700 米。下山路线一样。有索道可坐。