Simplestory's Blog

Linux一些命令

一些鲜为人知的Linux命令

Word count: 2kReading time: 7 min
2017/11/07

Linux下使用命令行是家常便饭,通常情况下,我们都会熟记四五十个命令,但有一些少用却有用的命令被大部分人遗漏了。这篇博文收集了其中的一小部分。

sudo !!

有些命令在没有超级用户权限下运行是会报错的,之后可以用sudo !!来调用之前的命令。!!可以抓取最后的命令。

python命令

我们可以通过简单的python命令生产一个通过HTTP显示文件夹结构树的简单网页,可以通过浏览器在端口8000访问,直到发出中断信号。

1
$ python -m SimpleHTTPServer

mtr

mtr命令将ping和traceroute命令的功能结合在一起,mtr命令的使用前可能需要用apt/yum进行安装

1
2
$ sudo apt install mtr #基于Debian系统
$ yum install mtr #基于Red Hat系统

Ctrl+x+e

为了使每天的任务自动化,管理员需要通过输入vi、vim、nano等打开编辑器。仅仅从命令行快速的敲击Ctrl-x-e,就可以在编辑器中开始工作了。

nl

nl命令添加文件的行数,即给指定文件添加行号。

shuf

该命令随机从一个文件或文件夹中选择行/文件/文件夹。可以接在ls命令后面来随机抓取。

1
2
$ ls|shuf -n1  #随机选择一个
$ ls|shuf -n2 #随机选择两个。以此类推

ss

ss表示socket统计。这个命令调查socket,显示类似netstat命令的信息。它可以比其他工具显示更多的TCP和状态信息。

last

该命令显示的是上次登录用户的历史信息(通过搜索文件“/var/log/wtmp”,显示logged-in和logged-out及其tty‘s的用户列表。

curl ifconfig.me

该命令用于得到你的外部IP地址,使用curl可能需要安装相关包。

tree

以树形结构显示当前文件夹。

pstree

显示当前运行命令的所有进程及相关子进程,输出显示为树形结构。

<空格>

在终端键入的每个命令都会记录到history,可用history命令进行查看。在终端输入命令时可以在命令前加一个空格,这样你的命令就不会被记录到history。

stat

Linux中stat命令用来显示文件或文件系统的状态信息。使用文件名作为参数时,该命令返回文件的全部信息,包括文件大小、块、权限、访问时间、修改时间、状态改变时间等。

pv

该命令仿照任何模型风的文本输出,包括流水线输出。使用前可能需要先行安装pv包。

mount | column -t

用一个规范的模式显示所有挂载文件系统。

Ctrl + l

这更像是快捷键,作用等同于clear

at

该命令与cron命令相似,也可以用于安排一个任务或者在某个特定时刻执行命令。

1
2
$ echo "ls -l > /dev/pts/0" | at 14:012
$ echo "ls -l > /dev/pts/0" | at 2:12 PM

du -h -max-depth=1

该命令以人类可读的形式输出当前目录的子目录的大小。这在检查系统使用率是非常有用的。

expr

expr在终端中计算简单的算数。

look

在终端上从英文字典上查单词以防混淆。

1
$ look car  #显示字典上所有以’car‘开头`的`单词

yes

该命令会持续地输出给定的字符串,直至收到中断命令。这在脚本语言和系统管理时有很大用处。

factor

该命令会输出所有给定数字的因数。

ping -i n -a IP_address

在等待或者持续盯着你的终端等待命令的回应或者等待服务器的连接时。当服务器连通时会发出声音(确保你的系统不是静音的)。参数n是命令等待时间。

1
2
#该命令等60秒PING一次
$ ping -i 60 -a www.google.com

tac

该命令会以倒序输出文本文件内容,也就是从最后一行到第一行。

strace

strace是一个调试工具并被主要用于Linux的故障排除。它可能在你的系统内没有默认安装,你可能需要apt 或者 yum 安装所需要的包。

1
$ strace pwd  #使用strace命令追踪一个命令的执行

具体有关strace的命令参数参考man页。

disown -a && exit

disown可以在后台持续运行任务,即使关闭了终端会话。

1
$ <command> disown -a && exit

为了在终端中再次脱离一个已经长期运行的任务(译注:可能已经后台运行了,但是并没有脱离终端),使用jobs命令来找出任务号,接着使用disown %n,这里的%n是作业号。为了验证作业确实在运行,使用ps 或者top命令。nohup命令也是一个disown命令的替代品。

getconf LONG_BIT

显示你的机器架构是32bit还是64bit。

显示日期

这应该算是一个脚本,在终端提示符后输入如下的命令你就会在终端的右上角看到日期和时间。

1
$  while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &

watch -t -n1 "date + %T | figlet"

在使用之前,确保系统上已安装了figlet包。 该命令通过管道输出到figlet而在终端上显示一个动画电子钟。

host与dig

host是一个DNS查询工具,dig命令用来解析域名,与nslookup相比可以获得更多的域名信息。

dstat

dstat是一个多用途的工具,它会依据系统资源生成统计。默认情况下你的系统可能没有安装dstat。在使用这个彩色的描述系统信息的生成器前使用apt 或者 yum来安装。

bind -p

该命令会显示所有的BASH shell可用的快捷方式。

lsb_release

lsb_release命令会打印特殊发行版的信息。如果 lsb_release 还没安装,你可以在基于 Debain 的发行版中用命令 apt 安装,在基于 Red Hat 系统下用 yum 来安装包。

注意:选项‘-a’,会显示有关版本、ID、详情、发行号和研发代号的全部可用信息。

nc -zv localhost

参数num为任何端口号,该命令用来检查端口是否被打开或关闭。

curl ipinfo.io

该命令会输出并提供IP地址的地理位置。

find . -user root

该命令会输出当前目录下( root )用户所拥有的文件(译注:即owner为root)。下面是在当前目录下列出的所有 ‘root’用户拥有的文件。

sudo apt-get build-dep ffmpeg

该命令会在相应的包安装时自动构建依赖关系。因此包安装的过程将非常流畅,也是非常容易的。

lsof -iTCP: -sTCP:LISTEN

该命令会输出所用正在使用端口的进程/服务的名称。

pdftk

pdftk用来合并几个pdf文件,使用前需确保系统已安装pdftk包。

ps -LF -u user_name

该命令会输出一个用户的进程和线程。选项“L”(列出线程),选项“-F”(完整格式化)

startx - :1

分享 X 会话。如果你需要频繁的(以不同用户身份)登入或登出桌面时,那就需要 startx 来救场。这个命令建立了一个新的会话从而避免了在一个会话中反复的登入和登出。为了在X会话间进行交换,我们可以通过ctrl+Alt+F7ctrl+Alt+F8的组合键来完成。

注意:快捷键ctrl+Alt+F1~F6是为了控制台会话准备的,而ctrl+Alt+F7~F12则为X会话服务。因此我们有6个控制台会话和6个X会话,不需要频繁的登入登出。上面的顺序适用于大多数的发行版,然而不同发行版可能会有不同的实现。

致谢

Linux.中国-开源社区

CATALOG
  1. 1. sudo !!
  2. 2. python命令
  3. 3. mtr
  4. 4. Ctrl+x+e
  5. 5. nl
  6. 6. shuf
  7. 7. ss
  8. 8. last
  9. 9. curl ifconfig.me
  10. 10. tree
  11. 11. pstree
  12. 12. <空格>
  13. 13. stat
  14. 14. pv
  15. 15. mount | column -t
  16. 16. Ctrl + l
  17. 17. at
  18. 18. du -h -max-depth=1
  19. 19. expr
  20. 20. look
  21. 21. yes
  22. 22. factor
  23. 23. ping -i n -a IP_address
  24. 24. tac
  25. 25. strace
  26. 26. disown -a && exit
  27. 27. getconf LONG_BIT
  28. 28. 显示日期
  29. 29. watch -t -n1 "date + %T | figlet"
  30. 30. host与dig
  31. 31. dstat
  32. 32. bind -p
  33. 33. lsb_release
  34. 34. nc -zv localhost
  35. 35. curl ipinfo.io
  36. 36. find . -user root
  37. 37. sudo apt-get build-dep ffmpeg
  38. 38. lsof -iTCP: -sTCP:LISTEN
  39. 39. pdftk
  40. 40. ps -LF -u user_name
  41. 41. startx - :1
  42. 42. 致谢