Wget是一个有用的GNU命令行工具,用于从互联网上下载文件。 该实用程序可以使用常用协议(如HTTP,HTTPS和FTP)从服务器下载文件。 它运行在后台(非交互式),因此可用于脚本和cron作业。 GNU Wget由HrvojeNikšić撰写,目前在TimRühsen,Darshit Shah和Giuseppe Scrivano。

      wget具有可用的高级功能,使其成为非常强大的命令。它在缓慢或不稳定的网络连接上表现良好。如果由于网络问题下载不完整,wget将自动尝试从停止的地方继续下载。它可以在32位系统上下载大于2GB的文件。 GWget是wget的GUI实用程序。所以试试看,如果你不是CLI的粉丝。

Linux wget命令详解 http://www.linuxidc.com/Linux/2012-08/67837.htm

Linux 下使用 wget/aria2 进行离线迅雷批量下载 http://www.linuxidc.com/Linux/2011-10/46052.htm

Linux使用wget请求地址时报错 http://www.linuxidc.com/Linux/2011-07/39345.htm

Linux下载命令wget使用详解 http://www.linuxidc.com/Linux/2011-01/30980.htm

wget 使用大全 http://www.linuxidc.com/Linux/2008-09/15722.htm

详解wget命令-文件下载工具  http://www.linuxidc.com/Linux/2017-05/143998.htm

Linux 命令行下载工具 wget 的使用技巧 http://www.linuxidc.com/Linux/2007-10/8293.htm

wget 命令实例 http://www.linuxidc.com/Linux/2014-10/108733.htm

wget 命令操作实例  http://www.linuxidc.com/Linux/2015-12/126159.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2018-02/150757.htm

 

1. sudo !!命令

 

没有特定输入sudo命令而运行,将给出没有权限的错误。那么,你不需要重写整个命令,仅仅输入’!!‘就可以抓取最后的命令。

 

$ apt-get update

 

E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)

E: Unable to lock directory /var/lib/apt/lists/

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)

E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

 

 

$ sudo !!

 

sudo apt-get update

[sudo] password for server:

..

Fetched 474 kB in 16s (28.0 kB/s)

Reading package lists... Done

server@localhost:~$

 

2. python命令

 

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

 

# python -m SimpleHTTPServer

 

30214457_Adq6.jpg

 

3. mtr命令

 

我们大多数都熟悉ping和traceroute。那对于把两个命令的功能合二为一的mtr命令呢。如果mtr没在你的机子上安装,apt或者yum需要的包。

 

$ sudo apt-get install mtr (On Debian based Systems)

# yum install mtr (On Red Hat based Systems)

 

现在运行mtr命令,开始查看mtr运行的主机和google.com直接的网络连接。

 

# mtr google.com

 

30214457_1hBA.jpg

 

4. Ctrl+x+e命令

 

这个命令对于管理员和开发者非常有用。为了使每天的任务自动化,管理员需要通过输入vi、vim、nano等打开编辑器。

 

仅仅从命令行快速的敲击“Ctrl-x-e”,就可以在编辑器中开始工作了。

 

5. nl命令

 

“nl命令”添加文件的行数。一个叫做’one.txt‘的文件,其每行的内容是(Fedora、Debian、Arch、Slack和Suse),给每行添加行号。首先使用cat命令显示“one.txt”的文件内容。

 

# cat one.txt

 

fedora

debian

arch

slack

suse

 

现在运行“nl命令”,以添加行号的方式来显示。

 

# nl one.txt

 

1 fedora

2 debian

3 arch

4 slack

5 suse

 

6. shuf命令

 

“Shut”命令随机从一个文件或文件夹中选择行/文件/文件夹。首先使用ls命令来显示文件夹的内容。

 

# ls

Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

 

#  ls | shuf (shuffle Input)

Music

Documents

Templates

Pictures

Public

Desktop

Downloads

Videos

 

#  ls | shuf -n1 # 随机选择一个

Public

 

# ls | shuf -n1

Videos

 

# ls | shuf -n1

Templates

 

# ls | shuf -n1

Downloads

 

注意:你可以把‘ n1’替换成‘ n2’来输出两个随机选择或者使用 n3、 n4等数字输出其他任意的随机选择。

 

7. ss命令

 

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

 

# ss

 

State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port  

ESTAB      0      0           192.168.1.198:41250        *.*.*.*:http    

CLOSE-WAIT 1      0               127.0.0.1:8000             127.0.0.1:41393  

ESTAB      0      0           192.168.1.198:36239        *.*.*.*:http    

ESTAB      310    0               127.0.0.1:8000             127.0.0.1:41384  

ESTAB      0      0           192.168.1.198:41002       *.*.*.*:http    

ESTAB      0      0               127.0.0.1:41384            127.0.0.1:8000

 

8. last命令

 

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

 

#  last

server   pts/0        :0               Tue Oct 22 12:03   still logged in  

server   tty8         :0               Tue Oct 22 12:02   still logged in  

...

(unknown tty8         :0               Tue Oct 22 12:02 - 12:02  (00:00)    

server   pts/0        :0               Tue Oct 22 10:33 - 12:02  (01:29)    

server   tty7         :0               Tue Oct 22 10:05 - 12:02  (01:56)    

(unknown tty7         :0               Tue Oct 22 10:04 - 10:05  (00:00)    

reboot   system boot  3.2.0-4-686-pae  Tue Oct 22 10:04 - 12:44  (02:39)    

 

wtmp begins Fri Oct  4 14:43:17 2007

 

9. curl ifconfig.me

 

那么如何得到你的外部IP地址呢?使用google?那么这个命令就在你的终端输出你的外部IP地址。

 

# curl ifconfig.me

 

注意:你可能没有按照curl包,你需要 apt/yum来按照包。

 

10. tree命令

 

以树式的格式得到当前文件夹的结构。

 

# tree

.

|-- Desktop

|-- Documents

|   `-- 37.odt

|-- Downloads

|   |-- attachments.zip

|   |-- ttf-indic-fonts_0.5.11_all.deb

|   |-- ttf-indic-fonts_1.1_all.deb

|   `-- wheezy-nv-install.sh

|-- Music

|-- Pictures

|   |-- Screenshot from 2013-10-22 12:03:49.png

|   `-- Screenshot from 2013-10-22 12:12:38.png

|-- Public

|-- Templates

`-- Videos

 

10 directories, 23 files

 

11. pstree

 

这个命令显示当前运行的所有进程及其相关的子进程,输出的是类似‘tree’命令的树状格式。

 

# pstree

init─┬─NetworkManager───{NetworkManager}

     ├─accounts-daemon───{accounts-daemon}

     ├─acpi_fakekeyd

     ├─acpid

     ├─apache2───10*[apache2]

     ├─at-spi-bus-laun───2*[{at-spi-bus-laun}]

     ├─atd

     ├─avahi-daemon───avahi-daemon

     ├─bluetoothd

     ├─colord───{colord}

     ├─colord-sane───2*[{colord-sane}]

     ├─console-kit-dae───64*[{console-kit-dae}]

     ├─cron

     ├─cupsd

     ├─2*[dbus-daemon]

     ├─dbus-launch

     ├─dconf-service───2*[{dconf-service}]

     ├─dovecot─┬─anvil

     │         ├─config

     │         └─log

     ├─exim4

     ├─gconfd-2

     ├─gdm3─┬─gdm-simple-slav─┬─Xorg

     │      │                 ├─gdm-session-wor─┬─x-session-manag─┬─evolution-a+

     │      │                 │                 │                 ├─gdu-notific+

     │      │                 │                 │                 ├─gnome-scree+

     │      │                 │                 │                 ├─gnome-setti+

     │      │                 │                 │                 ├─gnome-shell+++

     │      │                 │                 │                 ├─nm-applet──+++

     │      │                 │                 │                 ├─ssh-agent

     │      │                 │                 │                 ├─tracker-min+

     │      │                 │                 │                 ├─tracker-sto+

     │      │                 │                 │                 └─3*[{x-sessi+

     │      │                 │                 └─2*[{gdm-session-wor}]

     │      │                 └─{gdm-simple-slav}

     │      └─{gdm3}

     ├─6*[getty]

     ├─gnome-keyring-d───9*[{gnome-keyring-d}]

     ├─gnome-shell-cal───2*[{gnome-shell-cal}]

     ├─goa-daemon───{goa-daemon}

     ├─gsd-printer───{gsd-printer}

     ├─gvfs-afc-volume───{gvfs-afc-volume}

12. <空格> 命令

 

你在终端上键入的每个命令都会记录到history,也能用history命令重新调用。

 

如何骗过history 命令呢?呵呵,你可以轻而易举地做到。在终端,只需要在键入命令之前输入一个或多个空格,这样你的命令就不会被记录了。

 

让我们体验一下吧,先在终端尝试五个常见的 Linux 命令并在命令之前留个空(例如** ls, pwd, uname, echo “hi”** 和 who),然后检查这些命令是不是记录在历史中。

 

avi@localhost:~$  ls

avi@localhost:~$  pwd

avi@localhost:~$  uname

avi@localhost:~$  echo “hi”

avi@localhost:~$  who

 

现在运行 history 命令来查看上面已执行的命令是否已经被记录了.

 

avi@localhost:~$ history

   40  cd /dev/

   41  ls

   42  dd if=/dev/cdrom1 of=/home/avi/Desktop/squeeze.iso

   43  ping www.google.com

   44  su

 

你看到没有最后执行的命令没有被记录。我们也可以用另一个命令cat | bash欺骗history,结果跟上面一样。

 

13. stat 命令

 

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

 

avi@localhost:~$ stat 34.odt

  File: `34.odt'

  Size: 28822   Blocks: 64 IO Block: 4096   regular file

Device: 801h/2049d  Inode: 5030293 Links: 1

Access: (0644/-rw-r--r--)  Uid: ( 1000/ avi)   Gid: ( 1000/ avi)

Access: 2013-10-14 00:17:40.000000000 +0530

Modify: 2013-10-01 15:20:17.000000000 +0530

Change: 2013-10-01 15:20:17.000000000 +0530

 

14. + . 和 + .

 

上面的组合键事实上不是一个命令,而是传递最后一个命令参数到提示符后的快捷键,以输入命令的倒序方式传递命令。按住 Alt或Esc再按一下 “.”。

 

15. pv 命令

 

在电影里尤其是好莱坞电影你可能已经看见过模拟文本了,像是在实时输入文字,你可以用pv命令仿照任何类型模拟风的文本输出,包括流水线输出。pv可能没有在你的系统上安装,你需要用apt或yum获取安装包,然后安装pv到你的机器。

 

root@localhost:# echo "Tecmint [dot] com is the world's best website for qualitative Linux article" | pv -qL 20

 

输出样式

 

Tecmint [dot] com is the world''s best website for qualitative Linux article

 

16. mount | colum -t

 

上面的命令用一个很不错的格式与规范列出了所有挂载文件系统。

 

avi@localhost:~$ mount | column -t

 

输出样式

 

/dev/sda1on  / type  ext3 (rw,errors=remount-ro)

tmpfson  /lib/init/rw  type  tmpfs(rw,nosuid,mode=0755)

proc on  /proc type  proc (rw,noexec,nosuid,nodev)

sysfson  /sys  type  sysfs(rw,noexec,nosuid,nodev)

udev on  /dev  type  tmpfs(rw,mode=0755)

tmpfson  /dev/shm  type  tmpfs(rw,nosuid,nodev)

devpts   on  /dev/pts  type  devpts   (rw,noexec,nosuid,gid=5,mode=620)

fusectl  on  /sys/fs/fuse/connections  type  fusectl  (rw)

binfmt_misc  on  /proc/sys/fs/binfmt_misc  type  binfmt_misc  (rw,noexec,nosuid,nodev)

nfsd on  /proc/fs/nfsd type  nfsd (rw)

 

17. Ctr+l 命令

 

在进行下一步之前,我先问一下,你是如何清理你的终端?呵呵,你会在提示符后键入 “clear”。好的。用上面的命令执行清理终端都将成为过去。你只需要按下Ctr+l,看看它如何立即清理你的终端。

 

18. curl 命令

 

在命令行下如何检查你的未读邮件?这个命令对于工作在没有图形界面的服务器的人佷有用。它会在运行期间再次要求输入密码,你不需要在上面一行硬编码你的密码,否则会有其它安全风险。

 

avi@localhost:~$ curl -u avishek1210@gmail.com --silent "https://mail.google.com/mail/feed/atom" | perl -ne 'print if //; print "$2 " if /<(title|name)>(.*)</>/;'

 

输出样式

 

Enter host password for user 'avishek1210@gmail.com':

Gmail - Inbox for avishek1210@gmail.com

People offering cars in Delhi - Oct 26

    Quikr Alerts

another dependency question

    Chris Bannister

    Ralf Mardorf

    Reco

    Brian

    François Patte

    Curt

    Siard

    berenger.morel

Hi Avishek - Download your Free MBA Brochure Now...

    Diya

★Top Best Sellers Of The Week, Take Your Pick★

    Timesdeal

aptitude misconfigure?

    Glenn English

Choosing Debian version or derivative to run Wine when resource poor

    Chris Bannister

    Zenaan Harkness

    Curt

    Tom H

    Richard Owlett

    Ralf Mardorf

    Rob Owens

 

19.screen 命令

 

screen命令能断开一个会话下的一个长时间运行的进程并能再次连接,如有需要,也提供了灵活的命令选项

 

要运行一个长时间的进程,我们通常执行

 

avi@localhost:~$ ./long-unix-script.sh

 

缺乏灵活性,需要用户持续当前的会话,但是如果我们执行上面的命令是:

 

avi@localhost:~$ screen ./long-unix-script.sh

 

它能在不同会话间断开或重连。当一个命令正在执行时按“Ctrl + A”然后再按“d”来断开。

 

重新连接运行:

 

avi@localhost:~$ screen -r 4980.pts-0.localhost

 

注解:在这里,这个命令的稍后的部分是screen id,你能用‘screen -ls’命令查看。欲了解更多关于screen命令和它们的用法,请阅读我们的一些帮助文章:10 个screen命令的示例。

 

20. file

 

No! 写在上面的命令不是笔误. ‘file’是一个能提供关于文件类型信息的命令。

 

avi@localhost:~$ file 34.odt

34.odt: OpenDocument Text

 

21. id

 

上面的命令会打印真正的和有效的用户和组的id。

 

avi@localhost:~$ id

 

输出样式

 

uid=1000(avi) gid=1000(avi)

groups=1000(avi),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth),117(scanner)

22. ^foo^bar 命令

 

在一个实例中运行修改后的最后一个命令。假设我需要运行一个命令‘ls -l‘来详细列出‘Desktop’目录下的内容。意外地,你打了‘lls -l‘。所以你需要重新打整个命令或者使用导航键编辑前面的命令。当你的命令很长时这个很痛苦。

 

avi@localhost:~/Desktop$ lls -l

bash: lls: command not found

 

avi@localhost:~/Desktop$ ^lls^ls 

 

ls -l

total 7489440

 

drwxr-xr-x 2 avi  avi       36864 Nov 13  2012 101MSDCF

-rw-r--r-- 1 avi  avi      206833 Nov  5 15:27 1.jpg

-rw-r--r-- 1 avi  avi      158951 Nov  5 15:27 2.jpg

-rw-r--r-- 1 avi  avi       90624 Nov  5 12:59 Untitled 1.doc

 

注意:在上面的替换中我们使用“typo(被替换的)original_command(原始命令)”。警告!这个命令可能会非常危险!如果你有意或者无意地打错了系统命令或者任何像rm -rf那样的风险命令的话!

 

23. > file.txt 命令

 

这个命令会刷新文件的内容而不需删除然后创建相同的文件。当我们需要反复输出,或者在相同的文件上记录日志时,这个命令就非常有用。

 

我有一个有很多文字的‘test.txt’文件在我的‘Desktop‘上。

 

avi@localhost:~/Desktop$ cat test.txt 

 

Linux 

GNU 

Debian 

Fedora 

kali 

ubuntu 

git 

Linus 

Torvalds

 

 

avi@localhost:~/Desktop$ > test.txt 

avi@localhost:~/Desktop$ cat test.txt

 

注意:再说一次,这个命令可能很危险!永远不要尝试刷新系统文件或者某篇日志文件的内容。如果你这么做了,你可能会遭遇严重的问题!

 

24. at 命令

 

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

 

avi@localhost:~/Desktop$ echo "ls -l > /dev/pts/0" | at 14:012

 

 

avi@localhost:~/Desktop$ echo "ls -l > /dev/pts/0" | at 2:12 PM

 

示例输出

 

-rw-r--r-- 1 avi  avi      220492 Nov  1 13:49 Screenshot-1.png

-rw-r--r-- 1 root root        358 Oct 17 10:11 sources.list

-rw-r--r-- 1 avi  avi  4695982080 Oct 10 20:29 squeeze.iso

..

..

-rw-r--r-- 1 avi  avi       90624 Nov  5 12:59 Untitled 1.doc

-rw-r--r-- 1 avi  avi       96206 Nov  5 12:56 Untitled 1.odt

-rw-r--r-- 1 avi  avi        9405 Nov 12 23:22 Untitled.png

 

注意:echo “ls -l”的意思是,将这串命令(这里是 ls -l)输出在标准终端上。你可以用你需要或者选择的命令替代‘ls -l‘。

 

> :重定向输出

 

/dev/pts/0: 这是输出设备和/或文件,输出到指定的地方,这里输出在终端(/dev/pts/0)。

 

就我而言,此时我的tty在/dev/pts/0。你可以用tty命令检查你的tty。

 

avi@localhost:~/Desktop$ tty

 

/dev/pts/0

 

注意: ‘at‘会在系统时间匹配到特定时间时会尽快执行。

 

25. du -h –max-depth=1 命令

 

下面的命令以人类可读的形式输出当前目录的子目录的大小。

 

avi@localhost:/home/avi/Desktop# du -h --max-depth=1 

 

38M     ./test

1.1G    ./shivji

42M     ./drupal

6.9G    ./101MSDCF

16G .

 

注意:上面的命令在检查系统使用率是非常有用。

 

26. expr 命令

 

‘expr‘不是那么鲜为人知的命令。这个命令在终端中计算简单的算数时非常有用。

 

avi@localhost:/home/avi/Desktop# expr 2 + 3 

5

 

avi@localhost:/home/avi/Desktop# expr 6 – 3 

3

 

avi@localhost:/home/avi/Desktop# expr 12 / 3 

4

 

avi@localhost:/home/avi/Desktop# expr 2 * 9 

18

 

27. look 命令

 

在终端上从英文字典上查单词以防混淆。比如说,我记不清了是该拼成carrier还是carieer。

 

avi@localhost:/home/avi/Documents# look car

 

Cara 

Cara's 

... 

carps 

carpus 

carpus's

carrel 

carrel's 

carrels 

carriage 

carriage's

carriages 

carriageway 

carriageway's 

carried 

carrier 

carrier's

carriers 

carries

...

caryatids

 

上面的命令会显示字典上所有以’car’开头的单词。我得到了我想找的。

 

28. yes 命令

 

另外一个命令在通常基础上并不会经常使用,但是在脚本语言和系统管理时非常有用。

 

这个命令会持续地输出给定的字符串,直到由你的中断命令打断。

 

avi@localhost:~/Desktop$ yes "Tecmint is one of the best site dedicated to Linux, how to"

 

Tecmint is one of the best site dedicated to Linux, how to

Tecmint is one of the best site dedicated to Linux, how to

Tecmint is one of the best site dedicated to Linux, how to

Tecmint is one of the best site dedicated to Linux, how to

...

Tecmint is one of the best site dedicated to Linux, how to

Tecmint is one of the best site dedicated to Linux, how to

Tecmint is one of the best site dedicated to Linux, how to

 

29. factor 命令

 

factor实际是一个源于数学的命令。这个命令会输出所有给定数字的因数。

 

avi@localhost:~/Desktop$ factor 22

22: 2 11

 

avi@localhost:~/Desktop$ factor 21

21: 3 7

 

avi@localhost:~/Desktop$ factor 11

11: 11

 

30. ping -i 60 -a IP_address

 

我们都用ping命令检测服务器是否连通。我通常ping google,来检测我是否连接到了因特网。

 

当你等待或者持续盯着你的终端等待命令的回应或者等待服务器的连接时,有时是很气人的。

 

一旦服务器连通就有一个声音如何(译注:下面命令是等60秒PING一次)?

 

avi@localhost:~/Desktop$ ping -i 60 -a www.google.com 

 

PING www.google.com (74.125.200.103) 56(84) bytes of data.

64 bytes from www.google.com (74.125.200.103): icmp_req=1 ttl=44 time=105 ms

64 bytes from 74.125.200.103: icmp_req=2 ttl=44 time=281 ms

 

注意,当你发现命令不会返回声音时。请确保你的系统不是静音的,声音已经在‘sound preferences(声音选项)‘ 中启用并确保勾选了‘Enable window and window sound‘。

 

31. tac 命令

 

这个命令很有趣,他会以倒序输出文本文件的内容。也就是从最后一行到第一行。

 

在home目录下,我的Documents目录下有一个35.txt文件。用cat 命令检查内容。

 

avi@localhost:~/Documents$ cat 35.txt

 

示例输出

 

  1. Linux is built with certain powerful tools, which are unavailable in windows.

  2. One of such important tool is Shell Scripting. Windows however comes with such a tool but as usual it is much weak as compared to it’s Linux Counterpart.

  3. Shell scripting/programming makes it possible to execute command(s), piped to get desired output in order to automate day-to-day usages.

 

现在用tac命令反转文件内容(译注:当然,我们知道cat反转过来就是tac)。

 

avi@localhost:~/Documents$ tac 35.txt

 

示例输出

 

  1. Shell scripting/programming makes it possible to execute command(s), piped to get desired output in order to automate day-to-day usages.

  2. One of such important tool is Shell Scripting. Windows however comes with such a tool but as usual it is much weak as compared to it’s Linux Counterpart.

  3. Linux is built with certain powerful tools, which are unavailable in windows.

32. strace Command

 

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

 

使用strace命令追踪一个命令的执行。

 

root@tecmint [~]# strace pwd

 

示例输出

 

execve("/bin/pwd", ["pwd"], [/* 29 vars */]) = 0

brk(0)                                  = 0x728000

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0df2000

access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

open("/etc/ld.so.cache", O_RDONLY)      = 3

fstat(3, {st_mode=S_IFREG|0644, st_size=38427, ...}) = 0

mmap(NULL, 38427, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f29b0de8000

close(3)                                = 0

open("/lib64/libc.so.6", O_RDONLY)      = 3

read(3, "ELF>ðíI;"..., 832) = 832

fstat(3, {st_mode=S_IFREG|0755, st_size=1922152, ...}) = 0

mmap(0x3b49000000, 3745960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =0x3b49000000

mprotect(0x3b4918a000, 2093056, PROT_NONE) = 0

mmap(0x3b49389000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3,0x189000) = 0x3b49389000

mmap(0x3b4938e000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1,0) = 0x3b4938e000

close(3)                                = 0

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de7000

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de6000

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de5000

....

 

strace命令有大量的参数和选项,请参考man页来获取详细信息。

 

33. disown -a && exit 命令

 

大多数系统管理员使用screen 命令来控制运行在终端后台的作业。让我们假设一下如果你有一个长期运行的作业并想要将它从终端中脱离,你可以用screen命令来这么做。但是如果你不知道如何使用screen,那么disown可以用来救急。

 

disown命令可以在后台持续运行任务,即使你关闭了终端会话。disown命令的语法是:

 

root@tecmint [~]# Command; disown -a && exit

 

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

 

34. getconf LONG_BIT 命令

 

上面的命令能显示你的机器架构是32 bit 或者 64 位?

 

root@tecmint [~]# getconf LONG_BIT

 

32

 

35. 终端上显示日期

 

下面的命令是几个命令的集合,确切地说是一个脚本。对于在shell或者终端下工作的人来说,没有GUI界面看到当前系统日期是一个乏味的工作。你可以用‘date‘命令查看今天的日期。

 

只要在提示符后输入如下的命令你就会在终端的右上角看到日期和时间。

 

root@tecmint [~]# while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &

 

163306_OVrT_3803405.gif

 

36. convert 命令

 

在写教程的时候,我经常需要生成输出,很多时候是图片格式的输出。上面的命令集合并不适合我。假设我需要tree命令的图片格式的输出(对 /etc/x11 目录 )。

 

root@tecmint:/etc/X11# tree | convert label:<a href="http://www.jobbole.com/members/lourenfu">@-</a> /home/avi/tree.png

 

上面命令的输出可以在一个特定的位置(这里是我的主目录)下看到,文件名是tree.png。

 

37. watch -t -n1 “date +%T|figlet”

 

记住“figlet”命令在我们早期的文章“20 Funny Commands of Linux”中的描述。这个命令非常酷,这次我们会通过管道输出到‘figlet‘而在终端上显示一个动画电子钟。

 

你自己检查一下,记住你必须已经在系统上安装了figlet,用apt 或者 yum安装所需要的包。

 

root@tecmint [~]# watch -t -n1 "date +%T|figlet"

 

示例输出

 

163306_NCAG_3803405.gif

 

38. host 和 dig 命令

 

虽然“host” 和 “dig”命令不那么鲜为人知,仍然很少使用。host命令是一个DNS查询工具。

 

root@tecmint [~]# host www.google.com

 

www.google.com has address 173.194.66.147

www.google.com has address 173.194.66.105

www.google.com has address 173.194.66.99

www.google.com has address 173.194.66.104

www.google.com has address 173.194.66.106

www.google.com has address 173.194.66.103

www.google.com has IPv6 address 2a00:1450:400c:c03::68

 

(译注:事实上,我觉得dig命令是最强大的,自从有了dig,我就再也不用 nslookup 了。)

 

root@tecmint [~]# dig www.google.com

 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> www.google.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

 

39. dstat 命令

 

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

 

root@tecmint [~]# dstat

 

163306_bJgC_3803405.gif

 

40. bind -p 命令

 

‘bind -p‘会显示所有的BASH shell可用的快捷方式。

 

root@tecmint [~]# bind -p

 

"C-g": abort

"C-xC-g": abort

"eC-g": abort

"C-j": accept-line

"C-m": accept-line

# alias-expand-line (not bound)

# arrow-key-prefix (not bound)

# backward-byte (not bound)

"C-b": backward-char

"eOD": backward-char

"e[D": backward-char

"e!": complete-command

"e/": complete-filename

"e@": complete-hostname

"e{": complete-into-braces

"e~": complete-username

"e$": complete-variable

# copy-backward-word (not bound)

# copy-forward-word (not bound)

# copy-region-as-kill (not bound)

....

....

 

41. touch /forcefsck

 

下面的命令会在root目录下创建一个空的文件夹’forcefsck‘。这会强制Linux系统在下次启动时检查文件系统。

 

root@tecmint [~]# touch /forcefsck

42. lsb_release

 

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

 

# lsb_release -a

LSB Version:    :base-4.0-ia32:base-4.0-noarch:core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:

Distributor ID: CentOS

Description:    CentOS release 6.3 (Final)

Release:        6.3

Codename:       Final

 

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

 

43. nc -zv localhost 80

 

检查 80 端口是否被打开。我们可以用任何其他端口号替换‘80’来检查端口是否被打开或关闭。

 

$ nc -zv localhost 80

Connection to localhost 80 port [tcp/http] succeeded!

 

(译注:出现该信息表示80端口已被打开。)

 

检查 8080 端口是否启用

 

$ nc -zv localhost 8080

nc: connect to localhost port 8080 (tcp) failed: Connection refused

 

(译注:该信息显示了8080端口并未打开。)

 

44. curl ipinfo.io

 

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

 

$ curl ipinfo.io 

 

“ip”: “xx.xx.xx.xx”, “hostname”: “triband-del-aa.bbb.cc.ddd.bol.net.in”, “city”: “null”, “region”: “null”, “country”: “IN”, “loc”: “20,77”, “org”: “AS17813 Mahanagar Telephone Nigam Ltd”.

 

45. find . -user root

 

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

 

# find . -user root

./.recently-used.xbel

./.mysql_history

./.aptitude

./.aptitude/config

./.aptitude/cache

./.bluefish

./.bluefish/session-2.0

./.bluefish/autosave

./.bash_history

 

在当前路径下列出所有 ‘avi’ 用户拥有的文件

 

# find . -user avi

./.cache/chromium/Cache/f_002b66

./.cache/chromium/Cache/f_001719

./.cache/chromium/Cache/f_001262

./.cache/chromium/Cache/f_000544

./.cache/chromium/Cache/f_002e40

./.cache/chromium/Cache/f_00119a

./.cache/chromium/Cache/f_0014fc

./.cache/chromium/Cache/f_001b52

./.cache/chromium/Cache/f_00198d

./.cache/chromium/Cache/f_003680

 

46. sudo apt-get build-dep ffmpeg

 

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

 

# apt-get build-dep ffmpeg

libxinerama-dev libxml-namespacesupport-perl libxml-sax-expat-perl

libxml-sax-perl libxml-simple-perl libxrandr-dev libxrender-dev

x11proto-render-dev x11proto-xinerama-dev xulrunner-dev

The following packages will be upgraded:

libpixman-1-0

 

1 upgraded, 143 newly installed, 0 to remove and 6 not upgraded.

Need to get 205 MB of archives.

After this operation, 448 MB of additional disk space will be used.

Do you want to continue [Y/n]?

 

47. lsof -iTCP:80 -sTCP:LISTEN

 

该命令会输出所用正在使用 80 端口的 进程/服务 的名称。在 80 端口运行下列命令会更好理解这个命令,它会列出所用运行在该端口的 进程/服务 。

 

root@localhost:/home/avi# lsof -iTCP:80 -sTCP:LISTEN

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

apache2 1566 root 5u IPv6 5805 0t0 TCP *:www (LISTEN)

apache2 1664 www-data 5u IPv6 5805 0t0 TCP *:www (LISTEN)

apache2 1665 www-data 5u IPv6 5805 0t0 TCP *:www (LISTEN)

apache2 1666 www-data 5u IPv6 5805 0t0 TCP *:www (LISTEN)

apache2 1667 www-data 5u IPv6 5805 0t0 TCP *:www (LISTEN)

apache2 1668 www-data 5u IPv6 5805 0t0 TCP *:www (LISTEN)

 

同样,你可以检查运行在端口 22 的进程/服务。

 

root@localhost:/home/avi# lsof -iTCP:22 -sTCP:LISTEN

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 2261 root 3u IPv4 8366 0t0 TCP *:ssh (LISTEN)

sshd 2261 root 4u IPv6 8369 0t0 TCP *:ssh (LISTEN)

 

48. find -size +100M

 

这条find命令会在当前目录下列出所有超过指定大小的文件(这里指定为100 MB),递归查询。

 

# find -size +100M

./.local/share/Trash/files/linuxmint-15-cinnamon-dvd-32bit.iso

./Downloads/Fedora-Live-Desktop-i686-19-1.iso

./Downloads/Ant Videos/shakira 2.avi

./Downloads/Deewar.avi

./Desktop/101MSDCF/MOV02224.AVI

./Desktop/101MSDCF/MOV02020.AVI

./Desktop/101MSDCF/MOV00406.MP4

./Desktop/squeeze.iso

 

在当前目录递归的列出所用大于 1000 MB 的文件。

 

root@localhost:/home/avi# find -size +1000M

./Downloads/The Dark Knight 2008 hindi BRRip 720p/The Dark Knight.mkv.part

./Downloads/Saudagar - (1991) - DVDRiP - x264 - AAC 5.1 - Chapters - Esubs - [DDR]/Saudagar

- (1991) - DVDRiP - x264 - AAC 5.1 - Chapters - Esubs - [DDR].mkv

./Downloads/Deewar.avi

./Desktop/squeeze.iso

 

49. pdftk

 

pdftk命令用来合并几个pdf文件。你必须安装有 pdftk 程序。如果还没有,请用apt或yum来获取相应的包。

 

$ pdftk 1.pdf 2.pdf 3.pdf …. 10.pdf cat output merged.pdf

 

50. ps -LF -u user_name

 

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

 

$ ps -LF -u avi

avi 21645 3717 21766 0 5 66168 117164 1 18:58 ? 00:00:00 /usr/

avi 21645 3717 21768 0 5 66168 117164 1 18:58 ? 00:00:00 /usr/

avi 22314 3717 22314 0 2 42797 50332 0 19:00 ? 00:00:40 /usr/

avi 22314 3717 22316 0 2 42797 50332 1 19:00 ? 00:00:00 /usr/

avi 22678 24621 22678 0 1 969 1060 1 21:05 pts/1 00:00:00 ps -L

avi 23051 3717 23051 0 2 37583 45444 1 19:03 ? 00:00:52 /usr/

avi 23051 3717 23053 0 2 37583 45444 0 19:03 ? 00:00:03 /usr/

avi 23652 1 23652 0 2 22092 12520 0 19:06 ? 00:00:22 gnome

avi 23652 1 23655 0 2 22092 12520 0 19:06 ? 00:00:00 gnome

 

51. startx – :1

 

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

 

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

 

转载于:https://my.oschina.net/u/3803405/blog/1795586

Logo

更多推荐