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命令实战的主要内容,如果未能解决你的问题,请参考以下文章