1cplinux
(复制文件或目录)git
cp语法:正则表达式
cp 源文件(source) 目标文件(destination)shell
cp [options]suoucebash
例题一:用root身份将主文件夹下的.bashrc复制到/tmp下,并改名为bashrcless
例题二:切换目录到/tmp。并将/var/log/wtmp复制到/tmp且查看属性ide
例题三:复制/etc/这个目录的全部内容到/tmp下面。工具
2rmui
(移除文件和目录)spa
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 变量取出,找出第五个路径
[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”的那行。
解析 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-九、10-9九、100-19九、200-24九、250-255
这些题都是很简单的主要就是来考察咱们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:先删除第一字符集较第二字符集多出的字符。
linux中主要是敲一些命令,咱们能够经过作题来了解咱们有没有掌握这些命令:
一、显示/var目录下全部以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
ls -d /var/l*[0-9]*[[:lower:]]
二、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]
三、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
ls -d /etc/[^a-Z][a-Z]*
四、显示/etc/目录下全部以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
ls -d /etc/rc[0-6]*
五、显示/etc目录下,全部以.d结尾的文件或目录
ls -d /etc/*.d
六、显示/etc目录下,全部.conf结尾,且以m,n,r,p开头的文件或目录
ls -d /etc/[mnrp]*.conf
七、只显示/root下的隐藏文件和目录
ls -a --ignore=[^.]* /root
ls -a -I "[^.]*" /root
ls -d .* /root
八、只显示/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:] 表示符号
下面这七道题也是相同类型的,须要注意一下~ 表明“目前用户身份”所在的主文件夹,其余题参靠通配符都能作出来
一、显示/etc目录下全部以k开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
ls -d /etc/k*[[:digit:]]*[[:lower]]
二、显示/proc目录下名字由任意三位数字组成的文件或目录
ls -d /proc/[0-9][0-9][0-9]
三、显示/var/log目录下文件名包含符号及数字的文件或目录
ls -d /var/log/*[[:punct:]]*[0-9]*
四、显示/usr/share/man目录下全部以m开头,以一个数字和x结尾的文件或目录
ls -d /usr/share/man/m*[0-9]x
五、显示/etc目录下,全部以一个大写字母开头,以两个数字结尾的文件或目录
ls -d /etc/[[:upper]]*[0-9][0-9]
六、显示/etc目录下,文件名至少包含一个小写字母和一个数字并以.conf结尾的文件或目录
ls -d /etc/*[[:lower]]*[0-9]*.conf
七、只显示用户家目录下的非隐藏目录
ls -d ~/*/
下面这八道题主要主要考察了管道符 | 和 tr以及输入输出重定向
Linux系统中的命令能够将标准输入读取数据,还能将这些数据送到标准输出中去,这种功能被系统进一步的利用,从而产生出一种新的特性,称之为管道符“|”, 这 个符号能够将一个命令的标准输出管道为另一个命令的标准输入。
须要注意的是管道符的使用有两个条件:
一、管道命令只能处理前一个命令的标准输出,而不能处理标准错误;
二、管道命令右边命令必须可以接收标准输入。
标准输入(stain):代码为0,使用<或<<,
标准输出(stdout);代码为1,使用>或>>.
标准错误输出(stderr):代码为2,使用2>或2>>
1>:以覆盖的方法将正确的数据输出到指定的文件或设备上
1>>:以累加的方法将正确的数据输出到指定的文件或设备上
2>: 以覆盖的方法将错误的数据输出到指定的文件或设备上
2>>:以累加的方法将错误的数据输出到指定的文件或设备上
tr 用来标准输入中经过替换或删除操做进字符转换。经常使用命令:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII
-d 删除字符串1中全部输入字符
-s 删除全部重复出现字符序列,只保留第一个,即将重复出现字符串压缩为一个字符串。
今天先更新到这里把,改天再写,长时间面对电脑也很差。