..

有那些相见恨晚的Linux命令

在reddit上看到一个热门帖子,内容是:一人给一个你相见恨晚的Linux命令。

disown

这是一个bash内置命令,如果你需要将当前程序在后台运行的时候,有两个方式,1.让当前程序在新的session中运行。2.程序内部处理SIGUP信号,nohup就只这种工作方式。disown这个命令也能达到相同的功能。更多内容参考: https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

touch log
gdb -p 22499
(gdb) p close(1) # This closes the stdout of the running process
(gdb) p open("/home/.../log", 1) # This will open the log-file with O_WRITE
(gdb) c

这是一种非常hack的方式来将一个已经正在运行的程序的标准输出重定向到文件。更多内容参考: https://github.com/nelhage/reptyr

cat ~/.ssh/id_dsa.pub | ssh me@remotebox "cat >> ~/.ssh/authorized_keys"

通过ssh连接跨机器使用管道符,这也是比较hack的一种方式。顺便说一句,scp也是使用的ssh协议,所以在使用scp的时候,如果你配置了秘钥,那么scp是可以使用tab键来进行补全提示的。

fc

fc命令能够将上一次执行的命令在编辑器中打开,这个默认的编辑器可以使EDITOR环境变量来设置。

lsof

lsof能够列出当前操作系统打开的所有文件描述符,包括socket,文件等等,与之类似还有一个fuser命令。

CTRL + L 

这是一个快捷键,和clear的功能一样能够快速清空当前的terminal,bash还有很多快捷键,请参考: https://blog.hellojukay.cn/2018/05/23/20180523/

man ascii

在mac上下能够按照是十六进制的方式处处ascii码表,很多从事嵌入式开发的程序使用这个小技巧,同样的ascii -x也能实现这个功能.

xargs

能够将上一个程序的标准输出传给下一个程序的命令行,我最喜欢的功能是:echo xx | xargs -I {} command {}

convert

convert命令能够进行图片格式转换。

^find^replace

这是一个比较冷门的用法,通常在你出入命令行错误,或者你在用另一个参数再次运行某个命令,用这种凡是来修改命令行,类似的哈有!:s/find/replace以及全局替换!:gs/find/replace

image

rsync

这是一个同步,备份文件的命令。

iftop

这是一个监控网卡流量的命令,类似的监控io情况的命令有:iotop 。

sudo !!

使用sudo权限来执行上一条命令,换句话说,如果只是单纯的再次执行上一条命令就用!!即可。我习惯使用CTRL + P然后CTRL + a,然后输入sudo。

cd -

这条命令能够将你待会上一次所在目录。关于目录跳转的还有另外一个很有意思的工具: https://github.com/wting/autojump

tail -f file

能够监控文件的变化,实时输出到标准输出。

:w! sudo tee %

这是一条vim的内置命令,当你用普通用户编辑文件,但是没有权限保存的时候,这个条命令能够让你用sudo权限保存当前文件。

python -m SimleHTTPServe 8080

启动一个简单的http目录,暴露8080端口,将当前目录下的文件暴露出去。这是正对于python2版本,如果是python3环境,则使用python -m http.server 8080

fmt

文件格式化编排后输出到标准输出。

pkill/pgrep

按照名字查找进程号,类似ps aux | grep name| awk '{print $2}'

pv

以进度条的方式显示命令行的执行进度。

pushd/popd

这是是用堆栈的方式来进行目录跳转pushd跳转到目录目录,并将当前目录放在栈定,pop移除栈顶元素,回到上一次目录。

ncdu

查看磁盘空间占用情况。

dmidecode

或者当前系统的硬件信息。

htop

与top命令的功能类似,但是显示界面更加友好。

strace

这是非常hack的一个命令,能够调试一个脚本.

vnstat

一款linux下的性能监控工具。

find . -exec

查找可执行文件。

tree

展示当前目录的树状结构。

pstree

显示一个正在运行中的程序的进程树状结构。

ss

ss 也就是 socket status ,用来展示socket讯通状态的命令,类似于 netstat 命令 。

sl

sl这是一个非常滑稽的命令,如果你想深入ls,但是不小心写错了,终端中会有一个小火车驶过。

原文链接: https://www.reddit.com/r/linux/comments/mi80x/give_me_that_one_command_you_wish_you_knew_years/