标签 命令 下的文章
Linux命令及Linux终端的20个趣事
玩Linux其乐无穷!哈哈。不相信。记住我的话,在文章结尾时你就会相信Linux确实好玩了。
1. 命令:sl (蒸汽机车)
你可能了解 ‘ls’ 命令,并经常使用它来查看文件夹的内容。但是,有些时候你可能会拼写成 ‘sl’ ,这时我们应该如何获得一些乐趣而不是看见“command not found”呢?
安装 sl
root@tecmint:~# apt-get install sl (In Debian like OS)
root@tecmint:~# yum -y install sl (In Red Hat like OS)
输出
root@tecmint:~# sl
当你敲入的是‘LS‘而不是’ls‘时,这个命令也会运行。
2. 命令:telnet
非也!非也!!这可不像它平常那样复杂。你可能很熟悉telnet。Telnet 是一个文本化的双向网络协议。这里不需要安装什么东西。你需要的就是一个Linux系统和一个连通的网络。
root@tecmint:~# telnet towel.blinkenlights.nl
3. 命令:fortune
试试你未知的运气,终端里有时也有好玩的。
安装 fortune
root@tecmint:~# apt-get install fortune (for aptitude based system)
root@tecmint:~# yum install fortune (for yum based system)
root@tecmint:~# fortune
You're not my type. For that matter, you're not even my species!!!
Future looks spotty. You will spill soup in late evening.
You worry too much about your job. Stop it. You are not paid enough to worry.
Your love life will be... interesting.
4. 命令:rev(翻转)
它会把传递给它的的每个字符串都反过来,是不是很好玩。
root@tecmint:~# rev
123abc
cba321
xuniL eb ot nrob
born to be Linux
5. 命令:factor
该谈点儿关于Mathematics的了,这个命令输出给定数字的所有因子。
root@tecmint:~# factor
5
5: 5
12
12: 2 2 3
1001
1001: 7 11 13
5442134
5442134: 2 2721067
6.命令:script
好的,这不是什么命令,而是一个脚本,一个很有趣的脚本。
root@tecmint:~# for i in {1..12}; do for j in $(seq 1 $i); do echo -ne $i x $j=$((i*j))\\t;done; echo;done
1 x 1=1
2 x 1=2 2 x 2=4
3 x 1=3 3 x 2=6 3 x 3=9
4 x 1=4 4 x 2=8 4 x 3=12 4 x 4=16
5 x 1=5 5 x 2=10 5 x 3=15 5 x 4=20 5 x 5=25
6 x 1=6 6 x 2=12 6 x 3=18 6 x 4=24 6 x 5=30 6 x 6=36
7 x 1=7 7 x 2=14 7 x 3=21 7 x 4=28 7 x 5=35 7 x 6=42 7 x 7=49
8 x 1=8 8 x 2=16 8 x 3=24 8 x 4=32 8 x 5=40 8 x 6=48 8 x 7=56 8 x 8=64
9 x 1=9 9 x 2=18 9 x 3=27 9 x 4=36 9 x 5=45 9 x 6=54 9 x 7=63 9 x 8=72 9 x 9=81
10 x 1=10 10 x 2=20 10 x 3=30 10 x 4=40 10 x 5=50 10 x 6=60 10 x 7=70 10 x 8=80 10 x 9=90 10 x 10=100
11 x 1=11 11 x 2=22 11 x 3=33 11 x 4=44 11 x 5=55 11 x 6=66 11 x 7=77 11 x 8=88 11 x 9=99 11 x 10=110 11 x 11=121
12 x 1=12 12 x 2=24 12 x 3=36 12 x 4=48 12 x 5=60 12 x 6=72 12 x 7=84 12 x 8=96 12 x 9=108 12 x 10=120 12 x 11=132 12 x 12=144
7.命令:Cowsay
一个在终端用ASCII码组成的小牛,这个小牛会说出你想要它说的话。
安装Cowsay
root@tecmint:~# apt-get install cowsay (for Debian based OS)
root@tecmint:~# yum install cowsay (for Red Hat based OS)
输出
root@tecmint:~# cowsay I Love nix
____________
< I Love nix >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
如果用管道将‘fortune command’命令重定向到cowsay会怎样呢?
root@tecmint:~# fortune | cowsay
_________________________________________
/ Q: How many Oregonians does it take to \
| screw in a light bulb? A: Three. One to |
| screw in the light bulb and two to fend |
| off all those |
| |
| Californians trying to share the |
\ experience. /
-----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
提示:‘|’是管道命令符。通常它是将一个命令的输出作为下一个命令的输入。在上面的例子中‘fortune’的输出作为‘cowsay’命令的输出。管道命令会经常用在脚本和程序编写中。
xcowsay是一个图形界面程序。它与cowsay类似只是以一种图形的方式来表达,可以说是X版本的cowsay。
apt-get insatll xcowsay
yum install xcowsay
输出
root@tecmint:~# xcowsay I Love nix
cowthink是另一个命令。运行“cowthink Linux is sooo funny ”看看它与cowsay的不同吧。
apt-get insatll cowthink
yum install cowthink
输出
root@tecmint:~# cowthink ....Linux is sooo funny
_________________________
( ....Linux is sooo funny )
-------------------------
o ^__^
o (oo)\_______
(__)\ )\/\
||----w |
|| ||
8. 命令:yes
yes 是一个非常有趣又有用的命令,尤其对于脚本编写和系统管理员来说,它可以自动地生成预先定义的响应或者将其传到终端。
root@tecmint:~# yes I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
I Love Linux
提示: (直到你按下ctrl+c才停止)
9. 命令: toilet
什么?你在开玩笑吗! 当然没有,但肯定的是这个命令的名字太搞了,我也不知道这个命令的名字从何而来。
安装toilet
root@tecmint:~# apt-get install toilet
root@tecmint:~# yum install toilet
输出
root@tecmint:~# toilet tecmint
mmmmmmm " m
# mmm mmm mmmmm mmm m mm mm#mm mmm mmm mmmmm
# #" # #" " # # # # #" # # #" " #" "# # # #
# #"""" # # # # # # # # # # # # # #
# "#mm" "#mm" # # # mm#mm # # "mm # "#mm" "#m#" # # #
这个命令甚至提供了一些颜色和字体格式。
root@tecmint:~# toilet -f mono12 -F metal Tecmint.com
提示:Figlet 是另外一个与toilet产生的效果类似的命令。
10. 命令:cmatrix
你可能看多好莱坞的电影‘黑客帝国’并陶醉于被赋予Neo的能看到在矩阵中任何事物的能力,或者你会想到一幅类似于‘Hacker’的桌面的生动画面。
安装 cmatrix
root@tecmint:~# apt-get install cmatrix
root@tecmint:~# yum install cmatrix
输出
root@tecmint:~# cmatrix
11. 命令: oneko
可能你坚信Linux的鼠标指针永远是同样的黑色或白色一点儿也不生动,那你就错了。“oneko”是一个会让一个“Jerry”你的鼠标指针附着到你鼠标上的一个软件包。
安装 oneko
root@tecmint:~# apt-get install oneko
root@tecmint:~# yum install oneko
输出
root@tecmint:~# oneko
提示:关闭运行着oneko的终端时,Jerry也会随之消失,重新启动终端时也不会再出项。你可以将这个程序添加到启动选项中然后继续使用它。
12. Fork炸弹
这是一段非常欠抽的代码。运行这个命令的后果自己负责。这个命令其实是一个fork炸弹,它会以指数级的自乘,直到所有的系统资源都被利用了或者系统挂起(想要见识这个命令的威力你可以试一次这个命令,但是后果自负,记得在运行它之前关掉并保存其它所有程序和文件)。
root@tecmint:~# :(){ :|:& }:
13. 命令:while
下面的”while“命令是一个脚本,这个脚本可以为你提供彩色的日期和文件直到你按下中断键(ctrl+c)。复制粘贴这个命令到你的终端。
root@tecmint:~# while true; do echo "$(date '+%D %T' | toilet -f term -F border --gay)"; sleep 1; done
提示:以上脚本通过下面的修改也会产生类似的输出但是还是有点不同的,在你的终端试试吧。
root@tecmint:~# while true; do clear; echo "$(date '+%D %T' | toilet -f term -F border --gay)"; sleep 1; done
14. 命令: espeak
将你的多媒体音箱的音量调到最大,然后在将这个命令复制到你的终端,来看看你听到上帝的声音时的反应吧。
安装 espeak
root@tecmint:~# apt-get install espeak
root@tecmint:~# yum install espeak
输出
root@tecmint:~# espeak "Tecmint is a very good website dedicated to Foss Community"
15. 命令: aafire
在你的终端放一把火如何。把这个“aafire”敲到你的终端,不需要什么引号看看这神奇的一幕吧。按下任意键中指该程序。
安装 aafire
root@tecmint:~# apt-get install libaa-bin
输出
root@tecmint:~# aafire
16. 命令: bb
首先安装“apt-get install bb”,然后敲入“bb”看看会发生什么吧。
root@tecmint:~# bb
17. 命令: url
如果在你的朋友面前用命令行来改变你的 twitter status 会不会很酷呢。用你的用户名密码和你想要的状态分别替换username, password 和“your status message“就可以了。
root@tecmint:~# url -u YourUsername:YourPassword -d status="Your status message" http://twitter.com/statuses/update.xml
18. ASCIIquarium
想要在终端弄一个水族馆该,怎么办?
root@tecmint:~# apt-get install libcurses-perl
root@tecmint:~# cd /tmp
root@tecmint:~# wget http://search.cpan.org/CPAN/authors/id/K/KB/KBAUCOM/Term-Animation-2.4.tar.gz
root@tecmint:~# tar -zxvf Term-Animation-2.4.tar.gz
root@tecmint:~# cd Term-Animation-2.4/
root@tecmint:~# perl Makefile.PL && make && make test
root@tecmint:~# make install
安装 ASCIIquarium
下载并安装ASCIIquarium。
root@tecmint:~# cd /tmp
root@tecmint:~# wget http://www.robobunny.com/projects/asciiquarium/asciiquarium.tar.gz
root@tecmint:~# tar -zxvf asciiquarium.tar.gz
root@tecmint:~# cd asciiquarium_1.1/
root@tecmint:~# cp asciiquarium /usr/local/bin
root@tecmint:~# chmod 0755 /usr/local/bin/asciiquarium
最后在终端运行“asciiquarium”或者“/usr/local/bin/asciiquarium”,记得不要加引号,神奇的一幕将在你眼前展现。
root@tecmint:~# asciiquarium
19. 命令: funny manpages
首先安装“apt-get install funny-manpages”然后运行下面命令的man手册。其中一些
baby
celibacy
condom
date
echo
flame
flog
gong
grope, egrope, fgrope
party
rescrog
rm
rtfm
tm
uubp
woman (undocumented)
xkill
xlart
sex
strfry
root@tecmint:~# man baby
20. Linux Tweaks
该到了做一些优化的时候了
root@tecmint:~# world
bash: world: not found
root@tecmint:~# touch girls\ boo**
touch: cannot touch `girls boo**`: Permission denied
root@tecmint:~# nice man woman
No manual entry for woman
root@tecmint:~# ^How did the sex change operation go?^
bash: :s^How did the sex change operation go?^ : substitution failed
root@tecmint:~# %blow
bash: fg: %blow: no such job
root@tecmint:~# make love
make: *** No rule to make target `love`. Stop.
$ [ whereis my brain?
sh: 2: [: missing ]
% man: why did you get a divorce?
man:: Too many arguments.
% !:say, what is saccharine?
Bad substitute.
server@localhost:/srv$ \(-
bash: (-: command not found
Linux总是sexy:who | grep -i blonde | date; cd ~; unzip; touch; strip; finger; mount; gasp; yes; uptime; umount; sleep(如果你知道我的意思,汗!)
还有一些其它的命令,只是这些命令并不能在所有的系统上运行,所以本文没有涉及到。比如说dog , filter, banner
使用愉快,你可以稍后再对我说谢谢:)您的评价是我们前进的不竭动力。告诉我们你最喜欢的命令。继续关注,不久我会有另一篇值得阅读的文章。
via: http://www.tecmint.com/20-funny-commands-of-linux-or-linux-is-fun-in-terminal/
译者:Linchenguang 校对:wxy
Linux 移动或重命名文件/目录-mv 的10个实用例子
熟悉了 复制命令,下一个相关的命令就是 mv 命令。当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。
初识 mv 命令
mv 命令是一个与cp类似的命令,但是它并非创建文件或目录的复制品/副本。不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了。来看一下 mv 命令在日常操作中的一些例子。
1.移动文件
移动文件时需要注意的是文件的源地址和目标地址必须不同。这里有个例子,想要将file\_1.txt文件从当前目录移动到其它目录,以/home/pungki/为例,语法应该如下:
$ mv file_1.txt /home/pungki/office
如我们所见,当我们移动 file\_1.txt 文件时,先前目录的 file\_1.txt 就被删除了。
2.移动多个文件
如果想一次移动多个文件,我们可以将他们放在一行并用空格分开。
$ mv file_2.txt file_3.txt file_4.txt /home/pungki/office
如果你的文件有规律可循的话那么你就可以使用通配符。比如,为了移除所有以.txt为扩展名的文件,我们可以用下面的命令:
$ mv *.txt /home/pungki/office
3.移动目录
不同于复制命令,用 mv 命令移动目录相当直接。移动目录你可以使用不带选项的 mv 命令。看下面的截图就一目了然了。
4.重命名文件或目录
我们也用 mv 命令来重命名文件或目录。不过目标位置和源位置必须相同才可以。然后文件名必须不同。
假定我们当前所在目录为/home/pungki/Documents,而我们想将file\_1.txt重命名为file\_2.txt。那么命令应该如下:
$ mv file_1.txt file_2.txt
如果是绝对路径,它应该像下面这样:
$ mv /home/pungki/Documents/file_1.txt /home/pungki/Documents/file_2.txt
5. 重命名目录
上一段的规则同样适用于目录。请看这个例子:
$ mv directory_1/ directory_2/
6. 打印移动信息
当你移动或重命名一大堆文件或目录时,你可能会想在不去目标位置去查看的情况下知道你自己的命令是否成功地执行了。这就要用到-v选项了。
$ mv -v *.txt /home/pungki/office
该方法同样适用于目录。
7. 使用交互模式
当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项。(译注:通常发行版会通过alias命令,将-i作为默认选项,所以会有提示。)
假设我们想将 file\_1.txt 移动到 /home/pungki/office。同时,/home/pungki/office 目录下已经有file\_1.txt文件了。
$ mv -i file_1.txt /home/pungki/office
这个提示会让我们知道目标位置处file\_1.txt的存在。如果我们按y键,那么那个文件将会被删除,否则不会。
8. 使用更新选项
-i 选项会提示我们关于覆盖文件的提示,而 -u 则只在源文件比目标文件新时才执行更新。让我们看一看下面的例子:
假如 file\_1.txt 和 file\_2.txt有如下特点:
File_1.txt has 84 bytes file size and it last modified time is 12:00
File_2.txt has 0 bytes file size and it last modified time is 11:59
我们想将它们移动到 /home/pungki/office 目录下。但是目标地址已经有file\_1.txt和file\_2.txt了。
我们用下面的命令将file\_1.txt 和file\_2.txt从当前目录移动到/home/pungki/office
$ mv -uv *.txt /home/pungki/office
可以看到这些文件被移动了。能移动这些文件是因为它们最近的修改时间戳比 /home/pungki/office 目录中的文件新。
9.不要覆盖任何已存在的文件
如果-i选项询问我们是否要覆盖文件,那么 -n 选项将不会允许我们覆盖任何已存在的文件。
继续使用第8点中的例子,如果我们将-u 换成 -n同时加上-v选项,那么我们会看到没有任何文件移动到了 /home/pungki/office 目录下。
$ mv -vn *.txt /home/pungki/office
10. 复制时创建备份
默认情况下,移动文件将会覆盖已存在的目标文件。但是如果我们移动错了文件而目标文件已经被新的文件覆盖了,这时应该怎么办才好呢?有没有一种方法可以恢复之前的文件呢?答案是肯定的。我们可以用-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份。这里我们还以第8点为例。
$ mv -bv *.txt /home/pungki/office
如截图中所见,在 /home/pungki/office 目录下出现了名为file\_1.txt~ 和 file\_2.txt~ 的文件。那个波浪符号(~)意味着这些文件是备份文件。从它们的属性中我们可以看到,这些文件比file\_1.txt和file\_2.txt要旧。
11. 无条件覆盖已经存在的文件
(译注:这一节是译者补充的,原文遗漏了这个重要选项)
当你希望无论如何都覆盖已经存在的文件或目录时,你可以使用 -f 选项。如果同时指定了 -f 选项和 -i 或 -n 选项,则 -f 选项会覆盖它们——即不进行任何提示而覆盖,所以,在使用此参数时,知道你在做什么。
$ mv -f *.txt /home/pungki/office
总结
移动文件和目录命令是Linux系统的基本命令。通常你可以通过man mv 或者 mv --help显示mv的手册页以了解更多详细信息。
via: http://linoxide.com/linux-command/mv-command-linux/
译者:Linchenguang 校对:wxy
Linux cp 命令的15个示例 - 创建文件和目录的副本
拷贝文件和目录是每一个操作系统的基本指令。备份行为基本上是创建文件和目录的副本。在Linux系统下,我们可以用cp命令来实现。
copy 命令是什么
正如我们在上文提到的,cp是一个用来创建文件和目录副本的命令。在这里我们提供了一些在日常操作中可能用到的cp命令的实例。
1. 不带任何参数下,运行cp
这是 cp 命令最基础的使用。 拷贝名为 myfile.txt 从一个位置到另一个位置,我们可以像这样子输入:
$ cp myfile.txt /home/pungki/office
如果我们没有输入绝对路径,这意味着我们正在当前目录下拷贝一个文件。在上面的实例中,myfile.txt位于/home/pungki/Documents目录下。如果我们当前目录正是/home/pungki/Documets,那么没有必要输入/home/pungki/Documents/myfile.txt来拷贝文件。当/home/pungki/office是一个目录,则文件会拷贝到里面。
2. 同时拷贝多个文件
要在同时拷贝多个文件,我们只需要将多个文件用空格隔开。如下示例:
$ cp file_1.txt file_2.txt file_3.txt /home/pungki/office
3. 拷贝一个目录
要拷贝一个目录的话会有点棘手。你需要添加 -r 或者 -R 选项来实现。-r或-R 选项表明递归操作。无论该目录是否为空目录,这个选项都是必要的。如下示例:
$ cp -r directory_1 /home/pungki/office
需要注意的一件事,你需要移除在目录名尾部的斜杠。否则你会收到类似的错误信息cp: omitting directory‘directory\_1/’
如果你收到错误信息,则目录不会被拷贝到目标文件夹。
4. 创建文件的硬链接,而不是拷贝它们
拷贝文件意味着你必须使用一些存储空间来储存拷贝的文件。有时候出于某种原因,你可能想要创建“快捷方式”或者链接到文件,而不是拷贝它们。要做到这一点,我们可以使用-l选项。
$ cp -l file_4.txt /home/pungki/office
从上图看出,我们看到file\_4.txt的硬链接已经拷贝到/home/pungki/office/file\_4.txt。标记有同样的 inode, 835386。但是请注意,硬链接不能用来创建目录。下面让我们看一个例子。
原目录 directory\_1 的 inode 值是 278230
原文件 file\_5.txt 的 inode 值是 279231
对 directory\_1 执行 cp 命令
拷贝的 directory\_1副本的 inode 值是 274800
拷贝的 file\_5.txt副本的 inode 值是 279231。跟它的原文件一样
5. 创建文件的符号链接
也有一种链接叫做 软链接 或 符号链接。我们用 -s 选项来实现。下面是命令的示例。
$ cp -s /home/pungki/Documents/file_6.txt file_6.txt
创建符号链接只能在当前目录下进行。在上面的截图中,我们想要创建符号链接 /home/pungki/office/file6.txt 指向原文件 /home/pungki/Documents/file6.txt。但是为了创建符号链接,我必须在将/home/pungki/office作为目标目录。一旦我设法进入目录,我就可以向上面一样运行 cp -s 命令。
现在你列出文件详情,你会看到/home/pungki/office/file\_6.txt指向了原文件。在其文件名后标记了箭头符号。
6. 不随符号链接拷贝原文件
[译注:意思是只拷贝符号链接文件]
我们可以用 -P 选项来实现。当对符号链接使用 cp 命令,它会照原样拷贝它自身。来看看下面的示例。
$ cp -P file_6.txt ./movie
如你所见,cp 命令照原样拷贝file\_6.txt自身。文件类型仍然是一个符号链接。
7. 随符号链接拷贝原文件
现在我们可以试一下-L选项。基本上,这个刚好与上面的 -P 选项 相反。下面是个示例:
$ cp -L file_6.txt ./movie
使用这个选项,拷贝的文件将会和file\_6.txt原文件一样。我们可以从文件大小看出来。拷贝的文件有50 字节而当file\_6.txt作为符号链接时文件大小只有33 字节。
8. 文件归档
当我们去拷贝一个目录时,我们会用-r或者-R选项。但是我们也可以用-a选项来归档文件。这样会创建文件和目录的准确套录,如果有的话也可以包括符号链接。下面是示例:[译注:-a 会保留原文件或目录的属性]
$ cp -a directory_1/ /home/pungki/office
上列的命令会拷贝一个名为 directory1 的目录到/home/pungki/office目录下。如你所见,**file6.txt**依然作为符号链接被复制。
9. 显示正在做什么
默认情况下,当拷贝作业成功时,我们仅仅会再次看到命令提示符。如果你想了解在拷贝文件时都发生了什么,我们可以用 -v 选项。
$ cp -v *.txt /home/pungki/office
当我们从当前目录下拷贝所有的 txt 文件到 /home/pungki/office 目录,-v选项会显示正在操作的过程。这些额外的信息会帮助我们了解更多拷贝过程。
10. 当原文件较目标文件新时拷贝
我们用 -u选项来实现。下面是具体示例:
$ cp -vu *.txt /home/pungki/office
起初我们看到file\_1.txt 是0字节大小。然后我们用 vi 编辑,加入一些内容并保存。接下来,我们发现文件大小已经变为了 36 个字节。 与此同时在/home/pungki/office目录中,我们已经包含了所有txt文件。当我们用 -u 选项,结合 -v 选项来查看具体操作,cp 命令会只拷贝比目标目录下新的文件。因此,我们看到只有 file\_1.txt 拷贝到 /home/pungki/office 目录下。
11. 使用交互模式
交互模式下会询问是否覆盖目标目录下的文件。使用 -i 选项,启用交互模式。
$ cp -ir directory_1/ /home/pungki/office/
12. 创建备份文件
当目标目录已经含有同名文件,默认情况下 cp 命令会覆盖目标目录下的同名文件。使用 --backup 选项,cp 命令会为每一个现有的目标文件做一个备份。../office 相对于 /home/pungki/office 。下面是示例:
$ cp --backup=simple -v *.txt ../office
正如我们看到的,--backup=simple 选项会创建一个在文件名末尾用波浪符标记(~)的备份文件。--backup 选项也有一些其他控制:
- none, off:从不备份(即使给出 --backup)
- numbered, t:用编号备份
- existing, nil :如果编号备份存在则使用编号备份,否者用简易备份[译注:也就是用波浪号]
- simple, never :总是使用简易备份
13. 只拷贝文件属性
cp 命令也提供给我们 --attributes-only 选项。顾名思义,这个选项只会拷贝文件名及其属性,不会拷贝任何数据。下面是示例:
$ cp --attributes-only file_6.txt -v ../office
从上图看出, 原文件 file\_6.txt 有 50 字节大小。用了 --attributes-only选项,拷贝的文件只有0字节大小。这是因为文件内容并没有拷贝。
14. 强制拷贝
用了 -f 选项会强制进行拷贝操作。如果目标文件不能打开,可以用 -f 尝试一下。
$ cp -f *.txt -v ../office
15. 在拷贝之前先删除目标
我们可以用,--remove-destination 选项 实现。这个选项与上面的-f选项形成对照。如果 cp 命令在目标目录下发现同名文件, cp 命令会先删除目标文件,然后再拷贝一份新的。下面是示例:
$ cp --remove-destination *.txt -v ../office
总结
cp 命令是 Linux 下最基础的命令之一。对于那些想要学习 Linux 的人,必须得把这个命令掌握。当然你也可以在你的终端下键入 man cp 或者 cp --help 来显示更多帮助信息。
Linux中的more命令-逐页显示长文本文件
如果你已经习惯了在Linux系统上工作,那你一定会发现在Linux世界中存在着大量的文本文件。配置文件和日志文件通常都采用文本格式。这些文件通常都有很长的内容,不能在一屏内全部显示。所以在处理这种文件时,我们需要分页显示。这时我们可以用上more命令。
more是干嘛的
more是一个用来分页显示大文本文件的命令,它默认是内置在各个Linux发行版中的。
怎么用more
使用more命令,只需要键入:
$ more file_name
比如,我们想检查/var/log目录下的日志文件syslog,只需要键入:
$ more /var/log/syslog
然后我们可以看到在屏幕左下角有个提示,告诉我们当前的显示比例为0%。看上去这个文件相当大,所以第一页是全部页数的0%。使用空格键可以往下翻页,然后就可以看到提示的百分比会增加。
限制每页显示的行数
在执行more命令的时候,它会占用你终端窗口的全部空间用于显示。但是你可以通过参数-数字来限制每页显示的行数。
例如,你希望每页限制显示12行,可以通过下面的命令:
$ more -12 /var/log/syslog
现在,你会看到每页只显示12行,在按下空格键后,就会翻页显示后面的12行。
Display user message
我们知道,more命令会在显示区域的左下角提示当前内容所占的百分比。对于第一次使用more命令的人来说,他或她可能会想知道怎么才能往下翻页。为了避免这种情况,我们可以在执行时增加-d参数,这样就会额外显示一行用户信息“[按空格键继续,‘q‘推出.]”
如果用户按了‘空格‘或’q‘之外的按键,more会显示一行帮助信息“ [按‘h’键查看提示。]”
如果按下h键,会显示一个帮助信息:
一个有意思的指令是b按钮,b按钮允许你退回到前面的页面。换句话说,b按钮可以允许向前翻页。
你可以通过左上角的...前1页信息来确认当前显示的是前面的页面。
禁止滚动
通过参数-c,more命令不会滚动页面,而是直接清除之前的内容,替换为下一页的内容。 With -c option, more will not scroll the page. It will clear the previous page and put the next page or lines there.
$ more -10 -c lynis.log
如果按下空格键,下一页会仍然有相同的大小。
忽略多余的空白行
使用参数-s来忽略多余的空白行,下面是个例子:
当我们增加参数-s后:
$ more -s doc_30.txt
查找字符串
如果你的日志文件非常大,那么在其中查找你想要的字符串并不是那么容易。more命令的查找功能可以帮你,通过参数+/string可以用来搜索字符串,找到的关键字会显示在第一行。比如我们要在/var/logs/syslog文件中搜索“dhclient”,那more命令的格式:
$ more +/dhclient /var/log/syslog
然后,如果要在文件中继续搜索下一个,只需要按下/按钮,后面跟有关键字dhclient。
从指定行开始显示
你也可以通过参数+数字来指定开始显示的行,例如,我们有一个15行的文件:
然后我们想从第5行开始显示这个文件的内容,命令看起来会是这个样子:
$ more +5 doc_30.txt
可以显示二进制文件吗?
答案是不行. more命令会提示这样的信息,例如:
结论
more是一个用来查看文本文件的基础工具,它不能用来显示二进制文件。通常,我们可以通过命令man more或者more --help来获取更多关于more怎么使用的信息。
ls命令的20个实用范例
Linux中一个基本命令是ls。没有这个命令,我们会在浏览目录条目时会遇到困难。这个命令必须被每个学习Linux的人知道。
ls是什么
ls命令用于列出文件和目录。默认上,他会列出当前目录的内容。带上参数后,我们可以用ls做更多的事情。这里是一些在日常操作中使用到的ls用法的示例。
1. 不带参数运行ls
不带参数运行ls会只列出文件或者目录。看不到其他信息输出(译注:有时候你发现无参数的ls命令和这里描述的不同,那有可能是你的ls命令实际上带参数的ls别名)。
$ ls
2. 使用长清单模式
使用-l字符(小写L字符),会显示当前目录内容的长列表。在接下来的例子中,我们会结合-l参数(这个参数经常使用)来得到更好的结果。
$ ls -l
这里是如何读取输出 :
- 第1列
+ 第一个字母**d**意味着内容是目录或者文件。在上面的截图中,Desktop、 Documents、 Downloads 和 lynis-1.3.8是目录。如果是'-'(**减号**),这意味着它的内容是文件。当它是l(**小写l字符**),意味这内容是链接文件。
+ 下面的9个字符是关于文件权限。**前3个rwx**字符是文件的拥有者的权限,**第二组3rwx**是文件的所有组的权限,**最后的rwx**是对其他人访问文件的权限。
- 第2列 这行告诉我们有多少链接指向这个文件。
- 第3列 这行告诉我们谁是这个文件/文件夹的所有者。
- 第4列 这行告诉我们谁是这个文件/文件夹的所有组。
- 第5列 这行告诉我们这个文件/文件夹的以字节为单位的大小。 目录的大小总是4096字节。
- 第6列 这告诉我们文件最后的修改时间。
- 第7列 这告诉我们文件名或者目录名。
3. 显示文件大小
以字节为单位看大小可能会不方便。6.5M读起来比6727680字节更简单。要这么做,我们可以使用-h与-l结合的参数。-h参数意味着便于人识别。
$ ls -lh
另外一个可以这么做的参数是--si。这个参数和-h参数类似,但是-si以1000为单位,而-h以1024为单位。
$ ls -si
4. 排序文件大小
在我们可以显示文件大小之后,我们希望以文件大小排序。我们可以使用-S参数来这么做。这列表会从大到校排序。
$ ls -lhS
5. 测量大小
ls可以通过使用-block-size=SIZE改单位大小。这里的SIZE是:
K = Kilobyte
M = Megabyte
G = Gigabyte
T = Terabyte
P = Petabyte
E = Exabyte
Z = Zettabyte
Y = Yottabyte
比如,我们希望使用MB作为单位大小。所以语法就会像这样:
$ ls -l --block-size=M
6. 显示隐藏文件
在Linux中,以"."(点号)开头的文件是隐藏文件。为了在ls命令中显示它,我们可以使用-a选项。
$ ls -a
7. 只列出目录条目
如果我们希望只列出目录,我们可以使用-d选项。
$ ls -d */
8. 不打印所有者信息
要这么做,我们使用-g选项。
$ ls -g
9. 不打印组信息
-g隐藏了拥有者信息,—G会隐藏组信息。
$ ls -lG
10. 打印UID和GID
如果你想以数字方式列出项的所有者和所有组(即UID和GID),我们可以带-n选项使用ls命令。这里是个例子。
$ ls -n
从上面的例子中,我们知道用户pungki的UID是100,GID是1000,而root组的GID是0。
11. 不带颜色打印
一些Linux发行版已经对ls命令启用彩色。这会使ls以各种颜色打印列表。如果你不想要这样,你可以使用 --color=never 参数。
$ ls --color=never
12. 打印每个文件的索引号
为了打印索引或者大家俗称的inode号,我们可以使用-i选项。索引号会显示在第一列。
$ ls -li
13. 增加 / (斜线) 标记目录
要这么做,使用-p选项。
$ ls -p
14. 排序时反转顺序
你或许需要在列出条目时反转顺序。要这么做,你可以使用-r选项。
$ ls -r
15. 递归列出子目录
带-R参数后,你可以列出包含它子目录的目录。
$ ls -R
16. 扩展名排序
你可以使用-X参数或者--sort=extension来通过扩展名来排序(译注:这样对于筛选不同类型的文件很有用)。
$ ls -lX
或
$ ls --sort=extension
17. 通过修改时间列出
使用-t选项会按修改时间排序,新的文件在前。
$ ls -lt
18. 列出你的主目录
要列出你的主目录,你可以用"~"(波浪号)来代表它。这样你就不必输入完整的目录名。让我们假设家文件名为/home/pungki,那么波浪号就对/home/pungki有意义了。
$ ls ~
19. 列出父目录
无论你在那个目录,你可以列出父目录而不必输入完整路径。这是个例子。
$ ls ../
这回列出1层之上的目录内容。
$ ls ../../
这回列出2层之上的目录内容(译注:可不支持“...”来代表2层之上)。
20. 打印ls命令版本
使用--version参数打印它。
$ ls --version
总结
这些是在日常操作中会使用到的参数。当然你总可以输入man ls 或者 ls --help 来查询ls的手册页