Linux常用命令

常用linux命令

系统管理

重启机器

sudo reboot

显示用户

whoami

显示主机名

hostname

查看内存使用情况

free -h

查看硬盘使用情况

df -h

查看系统时间

date

查看命令所在路径

which <program>
whereis <program>

设置和取消环境变量

# 设置SKIP_BFS环境变量为1
export SKIP_BFS=1
# 取消SKIP_BFS环境变量
unset SKIP_BFS

查看DNS

cat /etc/resolv.conf
# 或者
nslookup qq.com | grep Server

进程管理

查看当前运行的进程

top     # 实时显示进程
ps -aux # 以BSD风格打印进程快照
ps -ef  # 以System V风格打印进程快照

后台运行进程,当前shell断开时不结束

nohup <program> &

注意,如果想要后台运行进程的同时统计运行时间,不能直接使用nohup time <program> &,会报错nohup: failed to run command 'time': No such file or directory,这是因为time其实是一个shell关键字,另外有一个外部程序也叫time,只是系统中并没有安装,想要使用shell关键字time应该如下操作:

nohup bash -c 'time <program>' &

根据进程名杀死进程

kill -9 $(pidof <proc-name>)

注意,因为用到了pidof命令,这里的进程名必须精确,可以通过top或者ps来查找精确的进程名。
模糊匹配可用pgrep命令,参见按照名字杀死进程的四种方法

文件管理

文件按文件名查找

find <root-dir> -name <正则匹配文件名>

查找文件时,过滤"Permission denied"等错误信息,有两种方法,一种是使用2 > /dev/null直接清除所有错误输出,另一种是使用字符串过滤反选grep -v "Permission denied"

显示文件类型

file <filename>

计算文件的MD5值

md5sum <filename>

树形打印当前文件夹下的文件以及子文件夹

tree

查看文件、文件夹大小

du -hs <file/dir>
# s是summary求和,h是以适合阅读的方式展示(如 1k,2M,3G)

修改文件或目录权限

# 如添加可执行权限
chmod +x <filename>

远程文件传输

# 参照复制文件的 cp 命令
scp <from-file> <to-remote-dest>   # 传输文件
scp -r <from-dir> <to-remote-dest> # 传输文件夹

返回跳转前的目录。适用于编程过程中需要写测试文件,跳转到/tmp再跳转回去之类的情况。

cd -

创建和删除软链接

# s 是 symbolic 的意思,也就是符号链接
ln -s <original-dir> <symbolic-dir>  # 为原始文件夹创建软链接
rm -f <symbolic-dir>                 # 删除软链接

文本文件操作

文件拼接

cat infile1 infile2 infileN > outfile

程序同时输出到控制台和文件

./<program> 2>&1 | tee <logfile>

文本文件内容查找

ag <text-to-find>

显示文件内容

cat <filename>        # 打印整个文件
head -n 20 <filename> # 打印文件前20行
tail -n 20 <filename> # 打印文件后20行
less <filename>       # 交互式(分页)查看文件

统计文件行数

wc -l <filename>
# Hadoop 的入门 Hello Word 就是 Word Count!

递归统计文件夹下指定文件的文件行数

# 统计*.h头文件代码行数
wc -l $(find . -name *.h)

对比文件不同

diff <file1> <file2>

常用命令升级版

普通命令 升级版 新特性
top htop 彩色、鼠标交互
cat nl 带行号

vim操作

进入粘贴模式

:set paste

跳到文件头部

gg

跳到文件末尾

G

跳转到指定行号处

:<行号>

文本查找。敲n查找下一处。

/<文本>

剪切

dd

粘贴

p

开发环境

查看g++默认C++版本

g++ -x c++  -E -dM -< /dev/null | grep __cplusplus

实际上就是查看__cplusplus这个宏的值。也可以编写一个简单的程序来查看:

#include <iostream>
int main() {
    std::cout << __cplusplus << std::endl;
    return 0;
}

git操作

清理垃圾回收空间

git gc --prune=now

清除git历史记录中的大文件

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <path-of-remove-file>' --prune-empty --tag-name-filter cat -- --all

更多可参见 Git常用操作

原文地址:https://www.cnblogs.com/zhcpku/p/13440019.html