缤纷绚烂的终端体验:探索lolcat
lolcat
是一款让终端从黑白灰变得缤纷多彩的神奇工具。
通过将文字渲染成彩虹般的颜色,让你的终端充满欢乐与活力。
可以把这个命令替换掉cat,这样你的内容都灵动了起来
比如lolcat /etc/resolv.conf
会生成如下信息:
mkdir 命令用来创建指定的名称的目录,看看官方定义:
make directories
所以mkdir是这两个单词的缩写。mkdir要求创建目录的用户在当前目录中具有_写权限_,并且指定的目录名不能是当前目录中已有的目录,参数-p可以指定建立多级目录,这个参数也是用的最多的。
1 | $ mkdir [可选项] 目录 |
-m
, –mode=模式,设定权限<模式> (类似 chmod)-p
, –parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录1 | $ mkdir hello |
1 | $ mkdir -p a/b/c/d/e/f/g |
1 | $ mkdir -m 777 test |
下面的一个命令可以创建一个项目的目录结构,如下:
1 | $ mkdir -vp project/{src/,include/,lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}} |
mkdir 命令用来创建指定的名称的目录,看看官方定义:
make directories
所以mkdir是这两个单词的缩写。mkdir要求创建目录的用户在当前目录中具有_写权限_,并且指定的目录名不能是当前目录中已有的目录,参数-p可以指定建立多级目录,这个参数也是用的最多的。
1 | mkdir [可选项] 目录 |
1 | -m, --mode=模式,设定权限<模式> (类似 chmod) |
1 | $ mkdir hello |
1 | $ mkdir -p a/b/c/d/e/f/g |
1 | $ mkdir -m 777 test |
下面的一个命令可以创建一个项目的目录结构,如下:
1 | mkdir -vp project/{src/,include/,lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}} |
mv
命令用于移动文件或者重命名文件及文件夹。官方定义为:
mv : move files
mv的语法与cp等其他语法类似,如下:
1 | $ mv [options] source dest |
几个比较常用的选项如下:
1 | $ ls |
直接移动或者叫做重命名,文件夹也类似的操作。
1 | $ ls |
可以看到此时多了一个备份文件
1 | $ cp -u a b |
此时的操作为,只有a比b更新或者b不存在的时候,才会进行更新,否则失败。
这个用法多用在:当横向对比两个文价夹有无重要更新的时候才会用到。
1 | $ cp -i b.txt a.txt |
在文件存在的时候,-i选项会进行提示,此时需要输入y才能覆盖,而输入n就会取消这个操作。
mv
命令用于移动文件或者重命名文件及文件夹。官方定义为:
mv : move files
mv的语法与cp等其他语法类似,如下:
1 | $ mv [options] source dest |
几个比较常用的选项如下:
1 | $ ls |
直接移动或者叫做重命名,文件夹也类似的操作。
1 | $ ls |
可以看到此时多了一个备份文件
1 | $ cp -u a b |
此时的操作为,只有a比b更新或者b不存在的时候,才会进行更新,否则失败。
这个用法多用在:当横向对比两个文价夹有无重要更新的时候才会用到。
1 | $ cp -i b.txt a.txt |
在文件存在的时候,-i选项会进行提示,此时需要输入y才能覆盖,而输入n就会取消这个操作。
.. note::
风萧萧兮易水寒,壮士一去兮不复还。
先秦-荆轲《易水歌》
如果Linux命令按照危险性来个排行榜,rm绝对一骑绝尘,名列第一。
因为发生过太多太多无奈、无辜、无法挽回的事情。
所谓风萧萧兮易水寒,壮士一去兮不复还,还得是rm命令
rm
命令用于删除文件或者目录。官方定义为:
remove files or directories
1 | $ rm [options] name... |
参数:
-i
删除前逐一询问确认,确认时比较好用。-f
即使原档案属性设为唯读,也直接删除,无需逐一确认,是force的意思。-r
将目录及里面的子文件逐一删除。删除文件可以直接使用rm
命令,若删除目录则必须配合选项”-r”,例如:
1 | $ rm a.txt |
删除当前目录下的所有文件及目录,命令行为:
1 | $ rm -r * |
文件一旦通过rm命令删除,则无法恢复,所以必须格外一定切记小心地使用该命令。
因为发生过很多欲哭无泪的故事。。。
主要的痛点就在如果是在root账户权限下,rm无所不能呀
这种情况主要在大批量删除居多文件的情况下发生,也是因为删除的命令参数超过了shell参数的个数导致的,可以通过getconf ARG_MAX
来确认,解决方法好几种
可以通过find和xargs命令配合的方式,比如删除当前目录所有的png文件,
1 | $ find . -name "*.png" -print0 | xargs -0 rm |
上面的这个命令会删除当前目录及子目录下所有的png文件,如果不想遍历,仅仅是当前目录,可以采用如下的方式:
1 | $ find . -maxdepth 1 -name "*.png" -print0 | xargs -0 rm |
还有一种方法是使用如下:
1 | $ find . -name "*.png" -delete |
切记,需要再三确认。
有时候文件可能会变得很大,非常非常大。比如有些log文件动辄几十GB,而通常情况下可能会用rm来删除,可能要产生比较大的IO消耗,一个比较简单的方法可以这么来操作:
1 | $ echo '' > big_file |
当然这个big_file
需要替换为大文件的路径和文件名字。
会写一个空格到这个文件,随后即可删除。
rm
命令用于删除文件或者目录。官方定义为:
remove files or directories
1 | $ rm [options] name... |
参数:
-i
删除前逐一询问确认,确认时比较好用。-f
即使原档案属性设为唯读,也直接删除,无需逐一确认,是force的意思。-r
将目录及里面的子文件逐一删除。删除文件可以直接使用rm
命令,若删除目录则必须配合选项”-r”,例如:
1 | $ rm a.txt |
删除当前目录下的所有文件及目录,命令行为:
1 | $ rm -r * |
文件一旦通过rm命令删除,则无法恢复,所以必须格外一定切记小心地使用该命令。
因为发生过很多欲哭无泪的故事。。。
rmdir
相对于 mkdir
,rmdir
是用来将一个“空的“目录删掉。
如果一个目录下面没有任何文件或文件夹,你就可以用 rmdir
指令将其除去。
而如果一个目录底下有其他的内容, rmdir
将无法将这个目录杀掉,除非使用那么就加上**-r** 选项就ok了。
这个命令比较鸡肋,基本都可以通过rm来搞定解决。
官方定义为:
remove directory
使用方法很简单,基本如下:
1 | $ rmdir directory |
如果说出彩的话,只有-p
选项还可以说道说道。
详细的解释为:
Each directory argument is treated as a pathname of which all components will be removed, if they are empty, starting with the last most component.
如果在删除子目录以后,主目录也是空目录的话,则一并删除之。
用法如下:
1 | $ rmdir -p directory |
其他的还是使用rm
吧。
rmdir
相对于 mkdir
,rmdir
是用来将一个“空的“目录删掉。
如果一个目录下面没有任何文件或文件夹,你就可以用 rmdir
指令将其除去。
而如果一个目录底下有其他的内容, rmdir
将无法将这个目录杀掉,除非使用那么就加上**-r** 选项就ok了。
这个命令比较鸡肋,基本都可以通过rm来搞定解决。
官方定义为:
remove directory
使用方法很简单,基本如下:
1 | $ rmdir directory |
如果说出彩的话,只有-p
选项还可以说道说道。
详细的解释为:
Each directory argument is treated as a pathname of which all components will be removed, if they are empty, starting with the last most component.
如果在删除子目录以后,主目录也是空目录的话,则一并删除之。
用法如下:
1 | $ rmdir -p directory |
其他的还是使用rm
吧。
.. note::
莫听穿林打叶声,何妨吟啸且徐行。
苏轼
Linux sleep
命令可以用来将目前动作延迟一段时间。
sleep
的官方定义为:
sleep - delay for a specified amount of time
或许你觉得计算机太累,让它稍事休息,亦或许过个个把钟头需要喝杯水,此时sleep
就有点小作用了。
其用法如下:
1 | $ sleep [--help] [--version] number[smhd] |
除了帮助和版本信息,基本没有参数了。
其中的number是必须的,也就是sleep多久的数字,默认为s
秒。其他的几个含义为:
s
second 秒m
minute分钟h
hour 小时d
day 天工作太累了,学习太累了,躺着太累了,休息5分钟
1 | $ sleep 5m |
1 | $ sleep 1h |
当然,sleep
也是支持时分秒搭配使用的,如下所示:
1 | $ sleep 1h 2m 3s |
将会sleep
1个小时2分钟3秒。
当然也可以做个循环计时器,通过sleep 1
1 | $ echo "five" && sleep 1 && echo "four" && sleep 1 && sleep 1 && echo "three" && sleep 1 && echo "two" && sleep 1 && echo "one" && echo "Stop" |
sleep
在程序里面使用比较频繁,特别是单片机的走马灯等。而Linux的sleep
,也是比较常与bash脚本来配合使用,如下:
1 | #!/bin/bash |