1cp

(复制文件或目录)

cp语法:

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

cp [options]suouce

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

Image.png


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


blob.png


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


blob.png

2rm

(移除文件和目录)

rm[fir]

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

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

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


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


blob.png

3mv

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

mv [-fiu]source destination

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

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

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

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


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


blob.png


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


blob.png

4cat

[AbEnTv]

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


blob.png

5tac

(反向列示)


blob.png

6nl

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


blob.png


可翻页查看的有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行之后的数据那


spacer.gifblob.png

9mtime:


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

10Stime


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

11atime

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


12touch [-acdmt]文件

-a 仅修改访问时间

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

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

-m 仅修改mtime

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


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


blob.png


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


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


blob.png


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


blob.png


在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,并压缩。然后解压。


blob.png


注意一点,如果你系统上没有安装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来协助。


blob.png

14 选取命令:cut 和grep


cut命令

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

cut 选项 参数


选项:

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

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

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

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

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

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

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

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

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


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


例题一:

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

[root@localhost ~]# echo $PATH

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

[root@localhost ~]# echo $PATH | cut -d ':' -f 5

/root/bin

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


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

[root@localhost ~]# echo $PATH | cut -d ':' -f 3,5

/usr/sbin:/root/bin


例题二:


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

[root@localhost ~]# export | cut -c 12-

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


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

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

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

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

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

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

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

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

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

-q 不显示任何信息

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


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


blob.png


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


blob.png


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


blob.png

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

首先我们查看这个文件


blob.png


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

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


blob.png


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


blob.png


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

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


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

blob.png


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


blob.png


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


sort命令


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

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

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

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

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

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

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

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

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

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

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

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

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

例题:

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


[root@localhost ~]# 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


[root@localhost ~]# 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将输出的数据账号仅取出账号,并加以排序。

[root@localhost ~]# 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将账号列出,仅取出账号列,进行排序后进去出第一位

[root@localhost ~]# last | cut -d ' ' -f1 | sort | uniq

mage

reboot

root

wtmp

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

[root@localhost ~]# 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 里面到底有多少相关的字,行,字符数

[root@localhost ~]# cat /etc/man_db.conf | wc

    131     723    5171

例题

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

[root@localhost ~]# 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:先删除第一字符集较第二字符集多出的字符。

blob.png

spacer.gif

linux中主要是敲一些命令,我们可以通过做题来了解我们有没有掌握这些命令:

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

ls -d /var/l*[0-9]*[[:lower:]]

2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录

ls -d /etc/[0-9]*[^0-9]

3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录

ls -d /etc/[^a-Z][a-Z]*

4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录

ls -d /etc/rc[0-6]*

5、显示/etc目录下,所有以.d结尾的文件或目录

ls -d /etc/*.d

6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录

ls -d /etc/[mnrp]*.conf

7、只显示/root下的隐藏文件和目录

ls -a --ignore=[^.]*  /root

ls -a -I "[^.]*"  /root

ls -d .*  /root

8、只显示/etc下的非隐藏目录

ls -d /etc/*/

上面这八道题很简单,基本都是用了文件的通配符和ls的命令来完成的,

ls -a 列出所有文件和目录 

ls -d  显示目录名称而非其内容

. 表示隐藏文件

* 表示0或多个任意字符

? 表示任意一个单一字符

[0-9] 表示数字范围

[a-Z]表示所有字母

[bais]表示包含b或a或i或s

[^bais]表示不包含b或a或i或s

[:digit:] 表示任意数字

[:upper:] 表示大写

[:lower:] 表示小写

[:alpha:] 表示任意字母包含大小写

[:alum:] 表示任意字母或数字

[:space:] 表示空格或换行

[:blank:] 表示空格

[:punct:] 表示符号

下面这七道题也是相同类型的,需要注意一下~ 代表“目前用户身份”所在的主文件夹,其他题参靠通配符都能做出来


1、显示/etc目录下所有以k开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

ls -d /etc/k*[[:digit:]]*[[:lower]]

2、显示/proc目录下名字由任意三位数字组成的文件或目录

ls -d /proc/[0-9][0-9][0-9]

3、显示/var/log目录下文件名包含符号及数字的文件或目录

ls -d /var/log/*[[:punct:]]*[0-9]*

4、显示/usr/share/man目录下所有以m开头,以一个数字和x结尾的文件或目录

ls -d /usr/share/man/m*[0-9]x

5、显示/etc目录下,所有以一个大写字母开头,以两个数字结尾的文件或目录

ls -d /etc/[[:upper]]*[0-9][0-9]

6、显示/etc目录下,文件名至少包含一个小写字母和一个数字并以.conf结尾的文件或目录

ls -d /etc/*[[:lower]]*[0-9]*.conf

7、只显示用户家目录下的非隐藏目录

ls -d ~/*/

下面这八道题主要主要考察了管道符 | 和 tr以及输入输出重定向

   Linux系统中的命令可以将标准输入读取数据,还能将这些数据送到标准输出中去,这种功能被系统进一步的利用,从而产生出一种新的特性,称之为管道符“|”,      这     个符号可以将一个命令的标准输出管道为另外一个命令的标准输入。

     需要注意的是管道符的使用有两个条件:

    1、管道命令只能处理前一个命令的标准输出,而不能处理标准错误;

    2、管道命令右边命令必须能够接收标准输入。

    标准输入(stain):代码为0,使用<或<<,

    标准输出(stdout);代码为1,使用>或>>.

    标准错误输出(stderr):代码为2,使用2>或2>>

    1>:以覆盖的方法将正确的数据输出到指定的文件或设备上

    1>>:以累加的方法将正确的数据输出到指定的文件或设备上

    2>: 以覆盖的方法将错误的数据输出到指定的文件或设备上

    2>>:以累加的方法将错误的数据输出到指定的文件或设备上

tr 用来标准输入中通过替换或删除操作进字符转换。常用命令:

-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII

-d 删除字符串1中所有输入字符

-s 删除所有重复出现字符序列,只保留第一个,即将重复出现字符串压缩为一个字符串。

今天先更新到这里把,改天再写,长时间面对电脑也不好。