linux命令实战

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令实战相关的知识,希望对你有一定的参考价值。

1cp

(复制文件或目录)

cp语法:

cp 源文件(source) 目标文件(destination)

cp [options]suouce

例题一:用root身份将主文件夹下的.bashrc复制到/tmp下,并更名为bashrc

技术分享图片


例题二:切换目录到/tmp。并将/var/log/wtmp复制到/tmp且查看属性


技术分享图片


例题三:复制/etc/这个目录的所有内容到/tmp下面。


技术分享图片

2rm

(移除文件和目录)

rm[fir]

-f :就是force 的意思,忽略不存在的文件,不会发出警告

-i: 互动模式,在删除前会询问用户是否操作

-r:递归删除。最常用在目录的删除,这是非常危险的参数


例题一:将刚才在cp中创建的bashrc删除。


技术分享图片

3mv

(移动文件于目录,或更名)

mv [-fiu]source destination

mv [options] source1 source2 .........directory

-f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖

-i: 若目标文件已经存在,就会询问是否覆盖

-u: 如目标文件已经存在,且source 比较新,才会更新


例题一:复制一个文件,创建一个目录,将文件 移动到目录中


技术分享图片


例题二:将刚才的目录名称重命名为mvtest2,在创建二个文件,在全部移动到/tmp/mvtest2。


技术分享图片

4cat

[AbEnTv]

例题一:查看/etc/issue,并且加上行号,然后空白行在不加行号


技术分享图片

5tac

(反向列示)


技术分享图片

6nl

(添加行号打印)可以将输出的内容自动加上行号


技术分享图片


可翻页查看的有more 和less

数据的选取有head 和tail


7head(取出前面几行默认十行)

-n 后面接数字,代表几行的意思


head -n 20 /etc/man.config 显示文件的前20行


8tail (取出后面的几行)

tail [-n number]文件

-n 后面接数字

-f 表示持续检测后面所接的文件名,要等到按下CTRL -c 才会停止


例题一:如果我不知道/etc/man.config有几行,却只想要列出100行之后的数据那


技术分享图片技术分享图片

9mtime:


当该文件的内容数据被修改时,就会更新这个时间,内容数据指的时文件的内容,而不是文件的属性或权限。

10Stime


当该文件的状态改变时,就会更新这个时间,举例来说,像是权限属性被改变了,就会更新这个时间。

11atime

当文件的内容被取用时,就会更新这个读取时间,举例来说,我们用cat读取/etc/man.config,就会更新该文件的atime了。


12touch [-acdmt]文件

-a 仅修改访问时间

-c 仅修改文件的时间,如该文件不存在则不创建新文件

-d 后面可以接欲修改的日期而不用目前的日期,也可以用- -date=“日期或时间”

-m 仅修改mtime

-t 后面可以接想修改的时间而不用目前的时间格式为[YYMMDDhhmm]


例题一:将~/.bashrc 复制成为bashrc,假设完全复制,检查其日期


技术分享图片


注意ll 是ls -l 的别名“;”则代表连续命令的执行


例题二;修改文件bashrc,将日期调整为二天前


技术分享图片


例题三:将bashrc日期改为2007/09/15 2:02


技术分享图片


在Linux中,经常会遇到很大的文件需要复制粘贴,但是文件太大,需要很长的时间来完成,这个时间就需要我们用到类似windos中的常用工具,压缩了。


在linux中常用的压缩命令就是 compress gzip 和bzip2



linux中常见的压缩文件的扩展名:

*.z compress程序压缩的文件

*.gz gzip程序压缩的文件

*.bz2 bzip2程序压缩的文件

*.tar tar程序打包的数据,并没有压缩过

*.tar.gz tar程序打包的文件,其中经过gzip的压缩

*.tar.bz2 tar程序打包的文件,其中经过bzip2的压缩




compress[-rcdv]文件或目录 这里是压缩

uncompress文件.Z 这里是解压

compress srcfile 将源文件压缩成压缩包,源文件消失

compress -r 可以连同目录下的文件也同时给予压缩

compress -v srcfile 压缩或解压缩时显示详细信息

compress -c srcfile > dstfile.Z 将源文件压缩成压缩包,源文件保留

compress -d dstfile.Z 将压缩包解压成源文件,压缩包消失

compress -d -c dstfile.Z > srcfile 将压缩包解压成源文件,压缩包保留


**例题解析**:将/etc/man.config复制到/tmp,并压缩。然后解压。


技术分享图片


注意一点,如果你系统上没有安装compress的话,这个是练习不了的,要安装的话用yum install ncompress 。值得注意的是compress在默认的情况下源文件会不见,压缩文件会被创建,扩展名会是.z。文件的大小从4940降到2873. 最后一步是解压缩。copmress因为不能打开.gz的文件,所以不常用或很少用。


gzip可以解开 compress zip gzip等所有的压缩软件,它的压缩文件名为*.gz。

gzip[-cdtv#]文件名

gzip -v 可以显示出源文件和压缩文件的压缩比等信息

gzip- t 用来检验一个压缩文件的一致性,看看文件是否有 误

gzip srcfile 将源文件压缩成压缩包,源文件消失

gzip -c srcfile > dstfile.gz 将源文件压缩成压缩包,源文件保留

gzip -d dstfile.gz 将压缩包解压成源文件,压缩包消失

gzip -d -c dstfile.gz > srcfile 或 zcat dstfile.gz > srcfile 将压缩包解压成源文件, 压缩包保留

gzip -# srcfile (#即1-9,表示压缩比,数字越大压缩比越高,默认为6)

**bzip2和bzcat**

**gzip为了替代compress,那么bzip2则是为了取代gzip,因为它的压缩比更高**。

**bzip2[-cdkzv#]文件名

bzcat 文件名。bz2**


参数:

-c :将压缩过程中产生的数据输出到屏幕上

-d:加压缩的参数-k:保留源文件,而不会删除原始的文件

-#:计算压缩比的参数


总结:compress gzip 和bzip2都是压缩工具但效果bzip2>gzip>compress.因为它的压缩比最高。


tar 的命令功能就是打包命令,可以将多个目录或者文件打包成为一个大文件,同时还可以通过gzip和bzip的支持,将文件经行压缩,并且windos中也支持tar.zg文件名的解压缩。


**tar -tf mage.tar.xz

预览压缩包的文件列表

tar -rf mage.tar /path/newfile

往tar包中增强文件(注意只能对tar包增加文件,而不能对压缩包增加)

tar -cf mage.tar filename1 filename2 [filenameN]

将多个文件打包至mage.tar

tar -zcf mage.tar.gz filename1 filename2 [filenameN]

将多个文件打包并用gzip压 缩为mage.tar.gz

tar -jcf mage.tar.bz2 filename1 filename2 [filenameN]

将多个文件打包并用bzip2 压缩为mage.tar.bz2

tar -Jcf mage.tar.xz filename1 filename2 [filenameN]

将多个文件打包并用xz压 缩为mage.tar.xz

tar -xf mage.tar

解压tar包的所有文件到当前目录

tar -xf mage.tar.xz filename

仅将压缩包中的其中一个文件filename解压到当前目录

tar -zxf mage.tar.gz

解压gz的压缩包到当前目录

tar -jxf mage.tar.bz2

解压bzip2的压缩包到当前目录

tar -Jxf mage.tar.xz

解压xz的压缩包到当前目录

tar -zxf mage.tar.gz -C /tmp

解压gz的压缩包到/tmp目录

tar -zvxf mage.tar.gz

解压gz的压缩包到当前目录并显示详细过程

tar zcvf mage.tar.gz -T yasuolist.txt -X paichu.txt

-T 指定需要打包并压缩的文件列表,每个文件路径一行

-X 指定要排除的文件列表,每个文件一行


总的来说只需要记住tar的三个用法就好


压缩:tar -jcv-f filename.tar.bz2 被压缩的文件或目录名称

查询:tar-jtv-filename.tar.bz2

解压缩:tar-jxv-f filename.tar.bz2-C 欲解压缩的目录


13管道命令|


“|”管道命令的用途:仅能处理由前面一个命令传来的正确信息。

例题如果要想知道/etc/下面有多少文件,可以利用ls /etc 来查阅,因为/etc/下面的文件太多,我们可以利用less来协助。


技术分享图片

14 选取命令:cut 和grep


cut命令

用来显示行中的指定部分,行为单位,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令

cut 选项 参数


选项:

-b:仅显示行中指定直接范围的内容;

-c:仅显示行中指定范围的字符;

-d:指定字段的分隔符,默认的字段分隔符为“TAB”;

-f:显示指定字段的内容;

-n:与“-b”选项连用,不分割多字节字符;

--complement:补足被选择的字节、字符或字段;

--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;

--help:显示指令的帮助信息;

--version:显示指令的版本信息。


参数: 文件:指定要进行内容过滤的文件


例题一:

将PATH 变量取出,找出第五个路径

[[email protected] ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[[email protected] ~]# echo $PATH | cut -d ':' -f 5

/root/bin

路径用“:”作为分割,-d -f 一般联合使用


如果取第3与第5就是这样:

[[email protected] ~]# echo $PATH | cut -d ':' -f 3,5

/usr/sbin:/root/bin


例题二:


将export输出的信息取得第12字符以后的所有字符串

[[email protected] ~]# export | cut -c 12-

如果取12-20的字符,就是cut -c 12-20


grep是一种强大的搜索工具,它能够用正则表达式搜索文本,并把匹配的行打印出来。

-a 表示不要忽视二进制数据。

-A显示列数,出了显示符合样本的那一行之外,并显示该行之后的内容。

-b 在显示符合样本的那一行之外,并显示该行之前的内容。

-c 计算符合样本的列数。

-C显示列数或显示行数,除了显示符合样本的那一行之外,并显示该行之前后的内容。

-d 进行动作,当指定要查找的目录而非文件时,必须要使用这项参数,否则grep命令将汇报信息并停止动作。

-e 指定字符串作为查找文件内容的范本文件

-i 忽略字符大小写的差别

-q 不显示任何信息

-n 在显示符合范本的那一行之前,表列出该列的标号。


例题一:用dmesg列出内核信息,并找出含“e1000”的那行。


技术分享图片


解析 dmesg 可以列出内核产生的信息,通过grep来选取网卡的相关信息,那我想把e1000,让他显色,并且还要加上行号,该怎样表示那?


技术分享图片


我的第一步先让关键字显色,第二部是显示行号,那么如果我想在关键字的前三行后四行也显示出来,该怎样表示那


技术分享图片

上面的很简单,那我们来做这一道显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行。

首先我们查看这个文件


技术分享图片


至少以一个空白字符开头的且后面存非空白字符的行^[[:space:]]\+"[^[:space:]]"

grep的用法有很多,后面都是跟一些命令的。例如。显示三个用户root,mage,wang的uid和默认shell,该怎样显示那,第一步也就是我们先要弄清楚,我们系统里面有没有这三个用户,当让一般都是没有的,所以我们要新建mage,和王的用户,


技术分享图片


第二部我们就是要找出uid和默认的shell


技术分享图片


这样的话我们这一题就已经做好了,此题主要考察我们的egrep的用法以及uid和shell的具体使用方法。

找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行,


本题就考察我们的egrep后面加一些常用命令的具体用法了,

技术分享图片


利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255


技术分享图片


这些题都是很简单的主要就是来考察我们egrep的具体用法,


sort命令


是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

-b:忽略每行前面开始出的空格字符;

-c:检查文件是否已经按照顺序排序;

-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;

-f:排序时,将小写字母视为大写字母;

-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;

-m:将几个排序号的文件进行合并;

-M:将前面3个字母依照月份的缩写进行排序;

-n:依照数值的大小排序;

-o<输出文件>:将排序后的结果存入制定的文件;

-r:以相反的顺序来排序;

-t<分隔字符>:指定排序时所用的栏位分隔字符;

+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

例题:

个人账号都记录在/etc/passwd下。请将账号排序。


[[email protected] ~]# cat /etc/passwd | sort

abrt:x:173:173::/etc/abrt:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

andy:x:1002:1002::/home/andy:/bin/bash

avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

barry:x:1003:1003::/home/barry:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

byj:x:1007:1007::/home/byj:/bin/bash

carl:x:1004:1004::/home/carl:/bin/bash

chrony:x:995:993::/var/lib/chrony:/sbin/nologin

例题二;

如果例题一中我用第三列排序,如何表示:


root:x:0:0:root:/root:/bin/bash

mage:x:1000:1000:mage:/home/mage:/bin/bash

wang:x:1001:1001::/home/wang:/bin/bash

andy:x:1002:1002::/home/andy:/bin/bash

barry:x:1003:1003::/home/barry:/bin/bash

carl:x:1004:1004::/home/carl:/bin/bash

duke:x:1005:1005::/home/duke:/bin/bash

eric:x:1006:1006::/home/eric:/bin/bash

byj:x:1007:1007::/home/byj:/bin/bash

qemu:x:107:107:qemu user:/:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin


看到黑体部分了把,如果是以文字的类型来排序的话,就会这样,想要用数字来排序就要加-n


[[email protected] ~]# cat /etc/passwd | sort -t ':' -k 3 -n

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync


last命令

用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;

-d:将IP地址转换成主机名称;

-f <记录文件>:指定记录文件。

-n <显示列数>或-<显示列数>:设置列出名单的显示列数;

-R:不显示登入系统的主机名称或IP地址;

-x:显示系统关机,重新开机,以及执行等级的改变等信息。


例题

利用last将输出的数据账号仅取出账号,并加以排序。

[[email protected] ~]# last | cut -d ' ' -f1 | sort

mage

mage

mage

mage


uniq命令


用于报告或忽略文件中的重复行,一般与sort命令结合使用。

-c或——count:在每列旁边显示该行重复出现的次数;

-d或--repeated:仅显示重复出现的行列;

-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;

-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;

-u或——unique:仅显示出一次的行列;

-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。

例题 使用last将账号列出,仅取出账号列,进行排序后进去出第一位

[[email protected] ~]# last | cut -d ' ' -f1 | sort | uniq

mage

reboot

root

wtmp

承上,如果我下个知道每个人登陆的总次数:

[[email protected] ~]# last | cut -d ' ' -f1 | sort | uniq -c

      1

     33 mage

     32 reboot

     67 root

      1 wtmp

wc命令用来计算数字。


-c或--bytes或——chars:只显示Bytes数;

-l或——lines:只显示列数;

-w或——words:只显示字数。

例题一

说一下/etc/man_db.conf 里面到底有多少相关的字,行,字符数

[[email protected] ~]# cat /etc/man_db.conf | wc

    131     723    5171

例题

我们知道用last可以输出登陆者,但是last最后二行并非账号内容,如何以一行的命令取得这个月登陆系统的总人次

[[email protected] ~]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l

132

由于last会输出空白行与wtmp字样在最下面二行,因此我利用grep取出非空白行,以及除去wtmp那一行,在计算行数。

如果你想知道你目前账号里面有多少个账号时,就用cat /etc/passwd | wc -l

tr命令

可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大

-c或——complerment:取代所有不属于第一字符集的字符;

-d或——delete:删除所有属于第一字符集的字符;

-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;

-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。

技术分享图片

技术分享图片


以上是关于linux命令实战的主要内容,如果未能解决你的问题,请参考以下文章

linux基本功系列之sort命令实战

linux基本功系列之kill命令实战

linux工作实战中的常用命令

Linux基础之man帮助命令实战

Linux vmstat命令实战详解

Linux实战常用的系统命令和操作