linux一些稍微高级的命令

cut 命令:提取文件中指定的字段(列)、字符内容。单词的默认分隔符为空格。

cut [选项]... [文件]...

选项:

-b  按照字节切

-c  按照字符切

-d  指定分割符

-f   指定以分割符分割的哪个字段

head  -5  /etc/passwd  >  /tmp/pass   将passwd文件中的前5行覆盖写入/tmp/pass文件中

cat    /tmp/pass    显示/tmp/pass的全文内容

cut  -d :  -f  6  /tmp/pass   显示/tmp/pass文件中以:分隔的第6列的内容,家目录内容

cut  -d :  -f  1,7 /tmp/pass   显示/tmp/passwd文件中的第1列(用户名)和第7列(shell解释器)的内容

cut  -d :  -f  1,4-7 /tmp/pass   取1 4 5 6 7列

cut  -d :  -f  -3 /tmp/pass  取第1列至第3列

cut  -d :  -f  3- /tmp/pass  取第3列至最后一列

cut  -c  1-3  /tmp/pass     取每行的前3个字符

 

sort  排序(升序、降序)

-n, --numeric-sort      根据数值比较,默认是按单个字符来比较

-r, --reverse      逆序输出排序结果

-t    指定分割符

-k   排序键(即排序的列字段)

-u   去掉重复行

 

准备阶段:用cat命令创建一个a.txt文件。

说明:以下是用cat命令将EOF...EOF之间的内容覆盖写入(>)到a.txt文件中

cat   > a.txt <

root:1:0:bin

bin:2:200:bash

jim:10:300:bash

tom:102:10:bash

EOF

 

查看a.txt文件内容:cat   a.txt

sort  a.txt      //默认顺序排序(按第1列排升序) 

bin:2:200:bash

jim:10:300:bash

root:1:0:bin

tom:102:10:bash

 

sort -r a.txt   //逆序输出排序结果(按第1列排降序)

tom:102:10:bash

root:1:0:bin

jim:10:300:bash

bin:2:200:bash

 

sort -t : -k 2 a.txt    //按:分割开的以第2部分的第一个字符排序

tom:102:10:bash

jim:10:300:bash

root:1:0:bin

bin:2:200:bash

 

sort -t : -k 2 -n a.txt   //按:分割开的以第2列的数值大小排序(用得最多)

root:1:0:bin

bin:2:200:bash

jim:10:300:bash

tom:102:10:bash

 

sort -t : -k 1.2  a.txt    按:分割开的以第1列的第2个字符排序

bin:2:200:bash

jim:10:300:bash

root:1:0:bin

tom:102:10:bash

 

将/etc/passwd 文件中第3列按数值大小排降序

sort -n -r -t : -k 3 /etc/passwd

 

# echo "bin:2:200:bash"  >> a.txt   将echo命令后的文本追加到a.txt文件中

 

# cat a.txt    显示a.txt全文内容

root:1:0:bin

bin:2:200:bash

jim:10:300:bash

tom:102:10:bash

bin:2:200:bash

 

# sort  a.txt   将a.txt排序输出

bin:2:200:bash

bin:2:200:bash

jim:10:300:bash

root:1:0:bin

tom:102:10:bash

 

# sort -u a.txt   去掉重复行

bin:2:200:bash

jim:10:300:bash

root:1:0:bin

tom:102:10:bash

 

1.查看/etc/passwd文件的前2行内容。然后取出本系统中所有的用户名、uid、用户的shell信息将结果保存在/tmp/users.txt文件中?最后用cat查看users.txt文件。

head   -2  /etc/passwd    查看前2行

cut  -d :  -f  1,3,7  /etc/passwd  > /tmp/users.txt

cat   /tmp/users.txt  

说明:-d  指定分隔符,-f 指定字段(即列)

 

2.统计系统中有多少个用户?

whatis   wc    显示命令功能简介

wc   /etc/passwd   统计passwd文件中的行数、单词数、字符数

wc   -l    /etc/passwd   统计行数,即用户数量(每行一个用户账号)

说明:wc是统计单词数量、行数、字符数。-l 是统计行数,-c是统计字符数,-w显示单词计数

 

3.显示/根目录下的文名件名列表,然后统计根目录下的文件数量?

ls  /    显示根目录下的文件名列表

ls  / | wc -l    将ls  /命令结果用wc  -l进行统计

说明:|是管道符,作用是将左边命令的结果传给右边的命令继续处理。

 

4.统计系统现在有多少个进程?

ps -elf | wc -l

 

wc  统计行数 单词数 字节数

wc   /etc/passwd

 

-l   统计行数

wc -l a.txt

 

-c  统计字节数

wc  -c   /etc/passwd

 

-w 统计单词数

wc  -w   /etc/passwd

 

-m 统计字符数

wc  -m   /etc/passwd

 

统计/bin目录下有多少个命令

ls /bin | wc -l

 

uniq   合并连续重复的行

-u  只显示没有连续重复的行

-c  统计连续重复行的次数

-d  只显示连续重复行一次,哪一行连续重复了就显示哪行

-i   忽略大小写

 

# cat  > a.txt <

jim tom root

aa bb cc

aa bb cc

jim 

aa bb cc

tom

tom abc

tom

tom abc

EOF

 

# uniq -c a.txt     统计连续出现的次数

      1 jim tom root

      2 aa bb cc

      1 jim 

      1 aa bb cc

      1 tom

      1 tom abc

      1 tom

      1 tom abc

 

#  sort a.txt|uniq -c     请跟上一条命令的结果对比

 

# uniq  a.txt     对a.txt文件中连续重复的行只显示一次

jim tom root

aa bb cc

jim 

aa bb cc

tom

tom abc

tom

tom abc

 

# uniq -u a.txt     不显示连续重复的行

jim tom root

jim 

aa bb cc

tom

tom abc

tom

tom abc

 

# uniq -d a.txt   仅显示连续出现的内容一次

aa bb cc

 

显示连续重复、未重复的内容,都只显示一次

sort  a.txt | uniq

 

sort a.txt | uniq  -c   同上,并统计次数,结果如下

      3 aa bb cc

      1 jim

      1 jim tom root

      2 tom

      2 tom abc

 

显示没有重复的行

sort a.txt | uniq -u

jim 

jim tom root

 

diff 文件差异的对比

diff   文件1   文件2

 

准备要比较差异的文件:

head  -3  /etc/passwd   >  /tmp/pas3

head  -5  /etc/passwd   >  /tmp/pas5

vimdiff比较两个文件的差异,不同涂红色

cd  /tmp    切换到/tmp目录

vimdiff   pas3  pas5     说明:  用:q退出

注:在vimdiff中可以按i键进入vim的编辑模式修改文件内容。按Esc键退出编辑模式,用:wq保存并退出vim编辑器。(用ctrl+w+w在窗口之间切换)

      

安装patch软件:rpm  -ivh  /dvd/Packages/patch-2.7.1-8.el7.x86_64.rpm

yum   install   -y   patch

 

patch 打补丁

用法:patch    原文件   补丁文件

 

实例:35.patch和53.patch补丁文件是diff命令练习生成的。

cd   /tmp

patch  pas3   35.patch    给pas3文件打补丁,提示如下

patching  file  pas3

 

cat  -n  pas3    读pas3文件并显示行号,发现文件中多了2行内容

 

patch  pas3   53.patch    给pas3文件打补丁,提示如下

cat  pas3   发现文件中少了2行内容

 

whatis 查看命令的描述信息

例:whatis    whatis

       whatis    pwd

       whatis    useradd

       whatis    which

       whatis   whereis

       

which   查看二进制命令的绝对路径、别名

# which  ls

alias ls='ls --color=auto'

/usr/bin/ls

 

alias  查看或定义命令别名(即快捷键)

alias  查看现有的命令别名

alias   h3='head  -3'     临时定义head  -3命令的别名为h3

h3   /etc/passwd    用h3命令别名查看/etc/passwd文件内容

unalias   h3     取消h3别名

注:命令别名可以写到/etc/bashrc、/etc/profile、/etc/rc.d/rc.local等环境配置文件。

 

whereis   根据关键字搜索binary二进制(即命令)、源文件、man手册

 

stat命令:查看文件的状态信息(即详细属性),包括文件的路径、大小、访问时间(atime)、修改时间(mtime)、属性修改时间(ctime)、索引号(inode)等属性。

 

实例:

stat  /etc/passwd

Access  (最近访问atime)文件最后一次被访问的时间(cat、head查看文件内容)

Modify  (最近更改mtime)文件最后一次被修改内容的时间(用vim修改文件内容)

Change  (最近改动ctime)文件最后一次被修改过属性的时间(chmod、chown改文件权限、属性)

 

updatedb  //手动更新查找数据库

说明:安装新软件,创建的新文件,必须updatedb后,才能用locate命令查到。

 

------------------------------------

locate 搜索  

命令格式:locate  关键字

特点:

    a.可以模糊匹配

    b.快速查找

    c.基于数据库 

说明:必须安装mlocate软件才能使用locate命令。  

实例:locate   hosts.allow    查找tcpwraper防火墙白名单文件

          locate   ifcfg-e    查找网卡配置文件及其相关的文件

 

使用通配符需要把通配符的内容用引号引起来

"*.conf" 

 

scp命令:

功能:用于远程发送、下载文件。

用法:scp   -rv   源    目标

发文件给对方:scp    /etc/hosts    [email protected]:/opt/

从对方电脑下载文件:scp   [email protected]:/etc/hosts   /tmp/

注:[email protected]中的root是对方电脑的用户账号,@后面是ip地址。

 

find语法:

    find  路径 选项  动作

    find  查询的路径  查询的条件 条件相关的参数 动作

    路径

        不指定路径 默认查找当前目录的文件  在查找的时候是递归查找(目录及其子目录下查找) 

    动作

          对find找到的文件执行指定的操作,可以是复制、删除等     

    选项(蓝字为常用选项)

     选项的作用:定义以名称、类型、大小、时间、权限、用户、组等各种条件来查找。

         -name  文件名     //按文件名查找,实例如下

                find  /etc  -name  host*    在/etc目录下查找名称以host开头的所有文件

                find  /  -name  *.conf      在/根目录下查找名称以.conf结尾的所有文件                

         -iname 文件名      //按文件名查找 不区分大小写

                  find  /etc  -iname  HOST*                       

         -size 大小[cwbkMG]    //按文件大小查找

                   +3G  大于3G的文件

                   -3G   小于3G的文件

                    3G   等于3G的文件

                 find / -size +3G   //在根目录下查找文件大于3G的文件

                 find  /boot  -size  +10M   //在/boot目录下查找文件大于10M的文件   

              

                 多条件查找  逻辑表达式

                 expr1 -and  expr2   逻辑与    -and == -a

                 expr1 -or   expr2     逻辑或    -or == -o

                 !expr              取反

                 -not expr        不是

                 

                  文件大小大于3G且小于4G的文件

                  find / -size +3G -a  -size -4G                   

                  

         -amin  访问时间     //min 分钟

         -atime 访问时间     //time  天数

         -cmin  改动时间

         -ctime 改动时间

         -mmin  修改时间

         -mtime  修改时间

         

           find / -atime 2 

           n       2   在2天之前的“一天之内”被访问过的文件

           +n    +2 列出2天之前被访问过的文件

           -n      -2  列出2天之内被访问过的文件         

         -perm

                find / -perm -4000   查找文件权限设置了suid的文件

                find / -perm -2000   查找文件权限设置了sgid的文件

                find / -perm 0755    查找权限等于0755的文件                

         -type  根据文件类型查找

              d  目录(即文件夹)

              f   普通文件,即word文档、txt文本文档、jpg图片、mp3音乐、avi视频。find   /etc   -type  f

              b  块设备文件,即硬盘、u盘、硬盘分区,例:find   /dev  -type   b

              c  字符设备文件,即终端tty,例:find   /dev  -type   c

              p  管道文件

              l   符号链接(也称软链接),即快捷方式,例:find   /   -type   l

              s   套接字,ip+port。例:find   /   -type   s

 

              find /etc  -type  d    在/etc目录下查找类型为d目录的文件          

              find / -type c -a -user root   在/根目录下查找类型为c且属主为root的文件

              

         -gid  用户的gid     //文件的所属组

         -group  用户组名   //文件的所属组

         -uid  用户的uid     //文件的所有者

         -user  用户的名字  //文件的所有者

         -inum  inode号      //查找指定inode号是多少的文件,inode是文件的索引号,显示索引号ls   -li   /etc/hosts   

                find /   -uid  1000    在根目录下查找uid(属主)为1000的文件

                find / -inum  16777341

                

动作:对查找到的文件做额外的操作(可以cp复制、mv移动、rm删除、ls  -l等)

          [-exec | -ok  要操作的命令  {}  \;]   //非交互式  或  交互式

          [ | xargs  -i 动作 ]       //非交互式的  -i支持使用{}

解释:{}代表用find命令找到的文件,\;是动作的结束符号

          -exec  操作时无提示

          -ok      操作是有提示

 

要操作的命令

        ls -l {} \;

        cp -rv {} /tmp/  \;

                

例:find    /etc    -name   host*   -exec   ls  -ld  {}  \;    在/etc目录下查找host*文件,将找到的文件用ls  -ld查看属性

       find    /etc    -name   host*   -exec   cp  -rv  {}   /tmp/   \;      将找到的文件复制到/tmp目录中

 

例:仅在/etc目录下查找类型为d(即目录)的文件,不在其子目录中查找。

find  /etc  -maxdepth  1  -type  d     注:-maxdepth指定最大查找深度

 

tr  替换字符    被替换的字符与替换的字符数必须是相等的

用法:tr   旧字符   新字符

 

# cat  > a.txt  <

root:1:0:bin

bin:2:200:bash

jim:10:300:bash

tom:102:10:bash

bin:2:200:bash

EOF

 

# cat a.txt | tr  20   89    将cat  a.txt结果中的20替换成89。  

root:1:9:bin

bin:8:899:bash

jim:19:399:bash

tom:198:19:bash

bin:8:899:bash

 

# cat a.txt | tr "a-z" "A-Z"    在替换的时候是一一对应的替换

ROOT:1:0:BIN

BIN:2:200:BASH

JIM:10:300:BASH

TOM:102:10:BASH

BIN:2:200:BASH

 

# cat a.txt | tr  0-4   5-9  

root:6:5:bin

bin:7:755:bash

jim:65:855:bash

tom:657:65:bash

bin:7:755:bash

 

\n      换行符

# cat a.txt | tr "\n"  "+"     将换行符换成+号

root:1:0:bin+bin:2:200:bash+jim:10:300:bash+tom:102:10:bash+bin:2:200:bash+

 

# cat a.txt | tr -s "o0"  把连续重复的字符替换成一个字符

rot:1:0:bin

bin:2:20:bash

jim:10:30:bash

tom:102:10:bash

bin:2:20:bash

 

# cat a.txt | tr -s "\n"  去掉空白行

 

tar包管理:

作用:实现将文件或目录进行打包压缩、解包解压缩。

windows的压缩软件:WinRaR、好压haozip、360压缩等

 

为何要压缩?

1、节省空间

2、方便在网络上传输

 

打包压缩:tar   -czvf    包名.tar.gz    要打包的文件

例:tar -czvf etc.tar.gz  /etc

      du  -hs   /etc   etc.tar.gz    统计文件大小(disk use)

解释:

tar后面的-c是打包(create),z是采用gzip压缩,v显示过程,f是指定包文件名。

du后的-h是显示容量单位,-s是sum统计总大小(通常用于目录)

 

解包解压缩:tar  -xvf   包名.tar.gz   -C   解压到的目录

例:tar  -xvf   etc.tar.gz   -C   /opt/

      ls   /opt     显示/opt目录中的文件名列表

      rm   -rfv   /opt/etc    强制删除/opt目录下的etc目录  

解释:tar后面的-x是解包解压。

         rm是删除文件,-r是递归删除目录,-f强制(即不提示yes/no),-v显示过程。

 

tar:可以实现打包并压缩,解包解压缩这两种功能。

查看帮助:tar  --help | more

 

tar打包并压缩:tar   -czvf    etc.tar.gz    /etc

说明:-c是打包    -z是用gzip压缩   -v显示过程    -f是指定压缩包文件包    -j是用bzip2压缩

 

tar解包解压缩:tar   -xzvf    etc.tar.gz   -C   /tmp/

说明:-x是解包     -C是指定解压到的目录

 

查看tar包中的文件列表:tar   -tf  etc.tar.gz

 

往tar包中添加新文件、删除文件:

tar   -cvf   host.tar    /etc/host*      打包

tar  -tf  host.tar    查看tar包中的文件列表

tar  -rvf  host.tar  /etc/passwd  /etc/group   往tar包中追加passwd、group文件

tar  -vf  host.tar  --delete   etc/host*    从tar包中删除host*文件

 

你可能感兴趣的:(centos,虚拟机,linux,Linux基础)