Linux命令行下“!”的十个神奇用法
!104:先运行history命令,所有命令前面都有一个标号,它表示运行104标号的命令
!$:表示上一次使用的路径
cd !$:就是进入上一次使用的路径
!!:执行和显示上一条命令的结果
!-1、!-2 或者 !-7:执行记录序列中的倒数第一条命令、倒数第二条命令已经倒数第七条等等
https://www.cnblogs.com/shuaihe/articles/8550108.html
make -n
如果make执行时,带入make参数“-n”或“–just-print”,那么其只是显示命令,但不会执行命令,这个功能很有利于我们调试我们的Makefile,看看我们书写的命令是执行起来是什么样子的或是什么顺序的。
https://blog.csdn.net/u012398613/article/details/50749767
which
查看可执行文件的位置(eg: which cd)
id
可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。
umask
决定了一个用户创建文件或者目录的默认权限:
https://blog.csdn.net/qq_27721925/article/details/53172257
https://blog.csdn.net/hsuxu/article/details/7193788
touch
一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
cat重定向文件内容
cat a.txt > b.txt 不完全等于copy,若源文件可执行,b.txt文件根据系统默认权限创建,所有b.txt一般不可执行。
查找
1、which命令是查找某个命令的完整路径,也就是说它是用来查找可执行文件的,which命令的原理是在当前登录用户的PATH环境变量记录的路径中进行查找。
2、whereis命令会在特定目录中查找符合条件的文件。这些文件应属于二进制文件,或是man手册页。
3、 find命令用来在指定目录下查找文件。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find . -name a.txt
find . -name "a.*" 通配符
find . -name "?.txt" 匹配1个字符
4、locate命令不是实时查找,所以查找的结果不精确,但查找速度很快。因为它查找的不是目录,而是一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
grep egrep fgrep
grep(global search regular expression and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来。
grep是很常见也很常用的命令,它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,但是注意,grep在数据中查找一个字符串时,是以“整行”为单位进行数据筛选的。
egrep命令等同于grep -E,利用此命令可以使用扩展的正则表达式对文本进行搜索,并把符合用户需求的字符串打印出来。
fgrep命令等同于grep -F,它利用固定的字符串来对文本进行搜索,但不支持正则表达式的引用,所以此命令的执行速度也最快。
grep hello a.txt:在a.txt中查找包含hello字符串所在的行,并打印
grep hello * :在当前目录所有文件中查找包含hello字符串所在的行,并打印
grep hello * -r :查找当前目录及其子目录下包含hello字符串所在的行,并打印
grep hEllo * -ri :忽略大小写,其他同上
egrep "hello | a" * -ri:查找当前目录及其子目录下包含hello / a字符串所在的行,并打印
sed
http://man.linuxde.net/sed
sed 's/hello/hi/' c.txt:c.txt文件中的hello替换为hi,但是未写入文件
sed 's/hello/hi/' c.txt -i:c.txt文件中的hello替换为hi,写入文件
sed 's/hello/hi/g' c.txt -i:全部替换,上述2个命令只替换每一行的第一个匹配到的字符串
awk
http://man.linuxde.net/awk
打印每一行的第二和第三个字段:
awk ‘{ print
2," role="presentation" style="position: relative;">2,3 }’ filename
tar
http://man.linuxde.net/tar
打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
tar(选项)(参数)
选项:
-c或--create:建立新的备份文件;
-x或--extract或--get:从备份文件中还原文件;
-v或--verbose:显示指令执行过程;
-f<备份文件>或--file=<备份文件>:指定备份文件.
将文件全部打包成tar包:
tar -cvf log.tar log2012.log 仅打包,不压缩!
gzip log.tar 以gzip压缩,得到log.tar.gz文件,log.tar文件删除
bzip2 log.tar 以bzip2压缩,得到log.tar.bz2文件,log.tar文件删除
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
将tar包解压缩:
tar -zxvf log.tar.gz 解压缩以gzip压缩的,直接解压缩为文件
tar-jxvf log.tar.bz2 解压缩以bzip2压缩的,直接解压缩为文件
gzip -d log.tar.gz 解压缩以gzip压缩的,解压缩为.tar文件
bzip2 -d log.tar.gz 解压缩以bzip2压缩的,解压缩为.tar文件
tar -xf log.tar 解压缩.tar为文件
wc
http://man.linuxde.net/wc
可以计算文件的行数、字数、Byte数,并显示。
wc(选项)(参数)
选项:
-c或--bytes或——chars:只显示Bytes数;
-l或——lines:只显示行数;
-w或——words:只显示字数。
wc -l c.txt
cat c.txt | wc -l