Linux 命令总结

nginx 重新加载配置文件   nginx -s reload

过滤某个端口   netstat -antp |grep 8000

让某一个文件变成可执行   chmod +x 文件名

php7+mysql5.7+nginx   需要手动改密码  临时密码在      /var/log/mysqld.log 里面

修改mysql密码  mysql_secure_installation

查看PHP的用户和用户组  /etc/php-fpm.d/www.conf


linux 中 查看文件大小为  ls -lth


分配数据库权限  GRANT all on *.* to "root"@"192.168.1.33" IDENTIFIED by "root";

linux下执行mysql的sql文件

         mysql -uroot -proot

         进入到mysql

          然后执行source /var/ftp/pub/sogoodsoft.sql;


以下是Linux6.4的一些命令

配置网络:

cd /etc/sysconfig/network-scripts/ifcfg-eth0--à device=eth0

                                                                                                                 Onboot=yes

                                                                                                                 Ipaddr=ip地址

                                                                                                                 Netmask=默认网关

                                                                                                                 Gateway=子网掩码

                                                                                                                 Dns1=dns服务器

查看防火墙:

iptables -L

关闭防火墙

iptables  –F / service iptables stopà中夹杂着Enforcing为开启///不夹杂Ebforcing为关闭

查看selinux

getenforce->Enforcingà开启状态//Permissiveà关闭状态

关闭selinux

setenforce 0

开启selinux

setenforce 1

进入目录:

cd

查看目录:

ls

创建文件夹:

mkdir 文件名

创建多级文件夹:

mkdir 文件名/{文件名,文件名} –p

创建文件:

touch 文件名

删除文件:

rmdir 文件名

删除多级文件:

rm –rf 文件名  

复制:

cp 源文件 目标文件的目录

移动:

mv 源文件 目标文件的目录

测试网络是否通畅:

ping ip地址

查看现在所在的位置:

pwd

添加新的用户:

useradd 用户名

更改root的密码:

passwd

更改其他用户的密码:

passwd 用户名

关机:

init 0/shutdown –hnow/power off

重启:

reboot

启动/关闭/重启远程控制:

service sshd stare/stop/restart

远程控制其他电脑:

ssh root@需要控制的电脑的IP地址 (需要输入密码控制的那台电脑的密码)

编辑文件:

vim 文件名

Vim中的复制:

yy  (数字yyà复制数字行)

Vim中的粘贴:

p

Vim中的不/显示行号:

set nonu/nu

 

Vim中跳到首行:

gg

Vim中跳到最后一行:

G

Vim中的删除:

dd

Vim中的多行删除:

数字ddà删除数字行

Vim中的保存是:

w   àw!-强制的保存

Vim中的退出时:

q   àq!—强制的退出

Vim中的保存并退出是:

wq!

Vim中删除多了撤销是:

         u

获取文件后10行。

    tail   -10    文件名

查看占用系统资源比较多的进程

      top

查看关键字出现函数

    grep -n ‘我是要查找的关键字’   文件名 | cut  -d “:” - f1

统计文件中关键字分别出现的哪一行:

        grep -n"关键字"    “文件路径” | cut -d":"  -f1

统计文件中关键字出现的最后一行行号:

        grep -n"关键字"    “文件路径” | tail -n 1| cut -d ":"  -f1

在/root/目录下搜索带有关键字“www”的文件,在终端下运行命令:

          find /root/ –type f | xargs grep “www

统计文件 行数

         wc -l a.txt

统计demo目录下,js文件数量:

        finddemo/ -name "*.js" |wc -l

统计demo目录下所有js文件代码行数:

        finddemo/ -name "*.js" |xargs cat|wc -l 

         wc-l `find ./ -name "*.js"`|tail -n1

统计demo目录下所有js文件代码行数,过滤了空行:

        find/demo -name "*.js" |xargs cat|grep -v ^$|wc -l

实时监控一个文件

    tail -f a.log

nginx日志中访问最多的100个ip及访问次数

         awk '{print $1}' /opt/software/nginx/logs/access.log|sort | uniq -c | sort -n -k 1 -r | head -n 100




                           Yum安装

挂载:

mount /dev/cdrom/mnt

取消挂载点:

umount /mnt

查看有无挂载点:

dfà显示/mnt为挂载成功

过滤文件:

ls|grep 文件名称

查看软件是否安装:

Rpm –qa|grep 软件名称

进入yum文件进行配置:

cd  /etc/yum.repos.dàà保留一个以.repos.d结尾的文件àààvim 剩下的文件ààà 

[随便写,没有规定]

                   name=随便写,无规定

                   baseurl=file:///mnt---------------à死规定

                   enabled=1--------------------------à死规定

                   gpgcheck=0------------------------à死规定

清除yum缓存:

yum claen all

检测yum是否搭建成功:

yumlist-------------------à显示好长的位搭建成功

进入挂载目录:

cd  /mnt/Packages

安装软件:

yum  install 软件名(常用的有{apacheàhttpd},{数据库àmysql},{php},{svn上线àsubversion},{ftp上线àvsftp},{缓存àmem…})

重新安装软件:

yum  reinstall 软件名称

卸载软件:

yum  remove /软件名称

启动服务:

service 服务名称 start  {(apacheàhttpd),(mysql[数据库]àmysqld),(ftpàvsftp)}

重新启动服务:

service 服务名称 restart  {(apacheàhttpd),(mysql[数据库]àmysqld),(ftpàvsftp)}

开机自启/取消自启:

chkconfig  服务名称 on/off  {(apacheàhttpd),(mysql[数据库]àmysqld)}

查看权限:

ll

上线后报---Runtime----.php需要把root的权限改为Apache

         Chown apache:apache Runtime/ -R à递归改权限,把Runtime关联权限全部改过来

Linux中进入数据库:

mysql  –hlocalhost -uroot  -pà回车 

如果回车不能进入的话à-p后面打root再次回车即可进入

查看LinuxMySQL中有哪些库:

show databases;

Linux中的mysql给其他地址赋权限:(需要先进入数据库)

grant all on 需要赋权的数据库(*代表所有的数据库).需要赋权的表(*代表所有的表) to "连接名"@"需要赋权限的IP地址" identified by "密码(根据自己的喜好随便写à没有死规定)";     ---->显示Query ok  为成功

当想要把单个数据库赋权给其他用户要加上 FLUSH   PRIVILEGES; 刷新一下赋过的权限

linux中更改数据库密码:{{先进入数据库}}

         setpassword for “root”@”localhost” = password(‘你需要设置的密码’);

linux中数据库的备份:{{{{不用进入数据库 }}}}

         mysqldump你需要备份的数据库的库名–u 你的用户名[一般用root作为用户名] –p >你要备份的数据库的名字(建议与前面一致)à需要备份到文件夹中,要进入文件夹   回车 显示Enter 的时候输入你数据库的密码就可以了

退出mysql

exit/ctrl+c/ctrl+z

开机自启

vim /etc/rc.local

                               mount/dev/cdrom /mnt à-----------------------------à挂载

                               iptables –F/service iptables stop à-----------à关闭防火墙

                               chkconfig  httpd onà-----------------àApache开机自启

                               chkconfig mysqld  onà----------------à数据库开机自启

                               setenforce 0à------------------------------------à关闭selinux

                               service sshd restartà--------------------------à重启sshd服务

配置虚拟机

进入httpd的配置文件:

vim/etc/httpd/conf/httpd.conf

         把NamevirtualHost前面的#去掉

         下面的<Vir>标签的所有的#去掉

         ServerAdminà随便写

         DocumentRootà虚拟机文件的位置与名称

         ServerNameà你需要配置的域名

         其他的不用改

复制310多行以<Dir>开头的à共计6行

<Dir>开始位置”/你的虚拟机的文件的名称”

改配置文件需要重新启动服务

Svn

Svn的目录在:/usr/local/svnà(刚安装好的svn是没有svn这个文件夹的需要自己手动创建)

创建svn版本库:svnadmin create 你想要的版本库的名称

更改svn的配置:cd /版本库的名称/conf  àls查看

进入文件更改配置(按顺序)

vim  svn开头的文件

                   把12行的#和空格去掉(切记是全面无空格,必须顶头)并把登号后面改成none

                   把13行的#和空格去掉(切记是全面无空格,必须顶头)

                   把20行的#和空格去掉(切记是全面无空格,必须顶头)

                   把27行的#和空格去掉(切记是全面无空格,必须顶头)

         Vim  au开头的文件(切记是全面无空格,必须顶头)

                   在24行写组和用户(组=用户1,用户2【不限个数】)

                   把25行的东西删除只留[/]

                   把26行等号前面改成@你创建的组名

                   把28行的改成* = r

         Vimpasswd中给你配置的个个用户配置密码(切记是全面无空格,必须顶头)

                   用户=密码

Linux上的svn自动检出

         cd  /usr/local/svnàhooksàcp post-commit.tmpl post-commitàchmod777 post-commit

         vimpost-commità里面除了第一行以外的行全部删除àexport LANG=en_US.UTF-8 回车换行à/usr/bin/svnupdate ./版本库的名称–username (你在/usr/local/svn/conf/au开头的文件中配置的用户名) –password (你在/usr/local/svn/conf/passwd文件中配置的密码)

更改配置需要创新

Svn与其他的不一样需要查看进程。先杀死进程

查看进程号:

ps aux|grep svn

杀死进程:

kill -9 进程号  à显示有/usr/local/svn 的那个进程

启动svn

svnserve  -d -r  /usr/local/svn

Linuxsvn的检出:

svn  checkut svn://linux的ip地址/版本库的名称  ./虚拟机的名称

Linux上的更新:

svn  update

Linux上的添加:

svn  add

Linux上的提交:

svn  up


安装phpstudy  

wget -c http://lamp.phpstudy.NET/phpstudy.bin     #下载安装包

chmod +x phpstudy.bin    #权限设置

./phpstudy.bin     #运行安装

phpstudy start | stop | restart        开启 | 停止 | 重启数据库

phpstudy add | del | list                    添加虚拟主机 | 删除虚拟主机 | 查看虚拟主机列表

apache配置文件:/phpstudy/server/httpd/conf/httpd.conf

PHP配置文件:/phpstudy/server/php/etc/php.ini

/phpstudy/mysql/bin/mysql -uroot -proot


UBUNTU中 散装的环境 进入数据库: mysql    ->ent

进入单利模式修改密码(登录密码忘记)

在开机倒计时的时候按下键盘字母 “e” 出现界面在按下键盘 “e” 出新的界面选择第2个出现新的界面按空格一下然后按下键盘b键 出现新的界面(password)这时候输入你新的密码点下回车然后输入reboot就进入了。。

man

格式:man [-afpM] [命令]

作用:用来提供在线帮助,使用权限是所有用户

选项:

-a:在所有的man帮助手册中搜索

-f:等价于whatis指令,显示给定关键字的简短描述信息

-P:指定内容时使用分页程序

-M:指定man手册搜索的路径


示例一:使用man命令来查看ifconfig的使用方法

[root@vhxct67test1 ~]# man ifconfig|more

IFCONFIG(8)                Linux Programmer’s Manual               IFCONFIG(8)

NAME

       ifconfig - configure a network interface

SYNOPSIS

       ifconfig [interface]

       ifconfig interface [aftype] options |address ...

NOTE

       This program  is obsolete!  For replacement check ip addr and ip link.

       For statistics use ip -s link.

ls

格式:ls [-alicfbd] [文件或目录]

作用:显示目录列表

选项:

-a:显示所有档案及目录

-A:显示除影藏文件“.”和“..”以外的所有文件列表

-c:多列显示输出结果。这是默认选项

-f:在每个输出项后追加文件的类型标识符,其中

“*”表示具有可执行权限的普通文件

 “/”表示目录,“@”表示符号链接

“|”表示命令管道FIFO

“=”表示sockets 套接字

当文件为普通文件时,不输出任何标识符

-b:将文件中的不可输出的字符以反斜线加字符编码的方式输出

-d:仅显示目录名,而不显示目录下的内容列表

-i:显示文件索引节点号(inode)。一个索引节点代表一个文件

-k:以KB(千字节)为单位显示文件大小

-l:以长格式显示目录下的内容列表

-m:用“,”号区隔每个文件和目录的名称

-n:以用户识别码和群组识别码替代其名称

-s:显示文件和目录的大小,以区块为单位

-t:用文件和目录的更改时间排序

-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录

-r:递归处理,将指定目录下的所有文件及子目录一并处理

--full-time:列出完整的日期与时间

--color[=WHEN]:使用不同的颜色高亮显示不同类型的


示例一:ls –a 显示当前目录中的所有文件,包含隐藏文件

[root@vhxct67test1 ~]# ls -a

.                .bash_profile  Desktop   .gconfd          install.log         Public         .xsession-errors

..               .bashrc        Documents  .gnome2         install.log.syslog  .pulse

.abrt            .cache         Downloads  .gtk-bookmarks   .local             .pulse-cookie

anaconda-ks.cfg  .config       .esd_auth  .gvfs            Music               .tcshrc

.bash_history    .cshrc         expect     .ICEauthority    .nautilus           Templates

.bash_logout     .dbus          .gconf     .imsettings.log  Pictures           Videos

示例二:ls –l 显示文件及其详细信息

[root@vhxct67test1 ~]# ls -l /mnt

total4

lrwxrwxrwx  1 root root  11 Nov 24 08:13 b.txt -> /test/b.txt

drwx------.2 root root 4096 Aug  2 04:34 hgfs

tree

格式:tree [-aACdDfFgilnNpqstux] [目录]

作用:tree以树状图样式列出目录的内容

 

选项:

-a:显示所有文件和目录

-A:使用ASNI绘图字符显示树状图而非以ASCII 字符组合

-C:在文件和目录清单加上色彩,便于区分各种类型

-d:先是目录名称而非内容

-D:列出文件或目录的更改时间

-f:在每个文件或目录之前,显示完整的相对路径名称

-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号

-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码

-i:不以阶梯状列出文件和目录名称

-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录

-n:不在文件和目录清单加上色彩

-N:直接列出文件和目录名称,包括控制字符

-p:列出权限标示

-q:用“?”号取代控制字符,列出文件和目录名称

-s:列出文件和目录大小

-t:用文件和目录的更改时间排序

-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码

-x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该

目录予以排除在寻找范围外

   
示例一:

在/home下创建test目录并在目录下创建一些测试目录和文件,用tree查看:

 [root@vhxrhel7test ~]# tree /test

/test

├── a

│   ├── b

│   │   └── c

│   └── No.one.txt

├── aa.txt

├── bb.txt

├── cc.txt

├── dd.txt

└── test.txt

 

pwd

格式:pwd

作用:命令以绝对路径的方式显示用户当前工作目录


示例一:显示当前目录

[root@vhxct67test1 ~]# pwd

/root

表示在root目录下。

示例二:cd到/home目录下并显示当前目录

[root@vhxct67test1 ~]# cd /home

[root@vhxct67test1 home]# pwd

/home

 

mkdir

格式:mkdir  (选项) (参数)

作用:创建文件夹

选项:

r -m               设置文件夹权限

r -p                如果父目录不存在,则连同父目录一起创建

r -v                显示详细

r -Z                设置创建的目录SELinux为默认类型

r --context     

r --help          显示帮助并退出

r --version      现实版本信息并退出

参数:

    目录:指定要创建的目录列表,多个目录之间用空格隔开
示例:

在/home下创建test目录,设置权限为644

[root@localhost ~]# ls /home

hfx

 

[root@localhost ~]# mkdir -m 644 /home/test

[root@localhost ~]# ll /home/

total 0

drwx------. 3hfx  hfx 74 Oct 21 18:04 hfx

drw-r--r--  2 root root 6 Nov  7 15:45 test

在/mnt目录下创建连续目录/mnt/test1/test2/test3

[root@localhost ~]# ls /mnt/

[root@localhost ~]# mkdir /mnt/test1/test2/test3

mkdir: cannot create directory‘/mnt/test1/test2/test3’: No such file or directory

[root@localhost ~]# mkdir -p /mnt/test1/test2/test3

[root@localhost ~]# tree /mnt/

/mnt/

└── test1

    └── test2

        └── test3

3directories, 0 files

显示mkdir的版本信息

[root@localhost ~]# mkdir --version

mkdir (GNUcoreutils) 8.22

Copyright (C)2013 Free Software Foundation, Inc.

LicenseGPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.

This is freesoftware: you are free to change and redistribute it.

There is NOWARRANTY, to the extent permitted by law.

Written byDavid MacKenzie.

rmdir

格式:rmdir (选项) (参数)

作用:用来删除空目录

选项:

r-p或—parents 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除

r--ignore-fail-on-non-empty 此选项使rmdir命令忽略由于删除非空目录时导致的错误信息

r-v或-verboes  显示命令的详细执行过程

r--help              显示命令的帮助信息

r--version         显示命令的版本信息

参数:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开

示例:

删除空目录/mnt/test1/test2/test3

[root@localhost ~]# rmdir -p/mnt/test1/test2/test3/

rmdir: failedto remove directory ‘/’: Device or resource busy

[root@localhost ~]# ls /mnt

ls: cannotaccess /mnt: No such file or directory

◆可以看到上面把我们的/mnt目录也一起删掉了,这就是-p选项的威力。

删除/mnt/test/非空目录

[root@localhost ~]# mkdir /mnt/test/

[root@localhost ~]# echo "test"> /mnt/test/a.txt

[root@localhost ~]# ll /mnt/test/

total 4

-rw-r--r-- 1root root 5 Nov 7 16:09 a.txt

[root@localhost ~]# rmdir /mnt/test/

rmdir: failedto remove ‘/mnt/test/’: Directory not empty

[root@localhost ~]# rmdir--ignore-fail-on-non-empty /mnt/test/

[root@localhost ~]# ll /mnt/test/

total 4

-rw-r--r-- 1root root 5 Nov 7 16:09 a.txt

◆虽然不能删除但是也不会报错了

 

使用-v选项删除/mnt下./test1/test2/test3目录

[root@localhost ~]# mkdir -p /mnt/test1/test2/test3

[root@localhost ~]# rmdir -p -v/mnt/test1/test2/test3/

rmdir:removing directory, ‘/mnt/test1/test2/test3/’

rmdir:removing directory, ‘/mnt/test1/test2’

rmdir:removing directory, ‘/mnt/test1’

rmdir:removing directory, ‘/mnt’

rmdir: failedto remove directory ‘/mnt’: Directory not empty

[root@localhost ~]# ll /mnt/

total 0

drwxr-xr-x 2root root 18 Nov 7 16:09 test

cd

格式:cd  (选项) (参数)

作用:切换工作目录

选项:

r-p如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录

r-L如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。

r-  当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。

参数:

   需要切换到的工作目录,可以是绝对路径和可以是相对路径

r~   当前用户的家目录

r..    当前目录的上级目录

r.     当前目录

示例:

切换到/etc/sysconfig/network-scripts/目录下

[root@localhost ~]# pwd

/root

[root@localhost ~]# cd/etc/sysconfig/network-scripts/

[root@localhost network-scripts]# pwd

/etc/sysconfig/network-scripts

返回上级目录

[root@localhost network-scripts]# pwd

/etc/sysconfig/network-scripts

[root@localhost network-scripts]# cd ..

[root@localhost sysconfig]# pwd

/etc/sysconfig

返回上两级目录

[root@localhost sysconfig]# pwd

/etc/sysconfig

[root@localhost sysconfig]# cd ../..

[root@localhost /]# pwd

/

进入当前用户主目录

[root@localhost /]# pwd

/

[root@localhost /]# cd ~

[root@localhost ~]# pwd

/root

或者用另一种写法直接cd

[root@localhost /]# pwd

/

[root@localhost /]# cd

[root@localhost ~]# pwd

/root

返回进入此目录之前所在的目录
[root@localhost /]# pwd

/

[root@localhost /]# cd ~

[root@localhost ~]# pwd

/root

[root@localhost ~]#

[root@localhost ~]# cd -

/

touch

格式:touch (选项) (参数)

作用:

一、是用来创建新的空文件

二、是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;

选项:

r-a:   或--time=atime或--time=access或--time=use 只更改存取时间

r-c:   或--no-create 不建立任何文件

r-d:  <时间日期> 使用指定的日期时间,而非现在的时间

r-f此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题

r-m:或--time=mtime或--time=modify 只更该变动时间

r-r<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同

r-t<日期时间> 使用指定的日期时间,而非现在的时间; --help:在线帮助; --version:显示版本信息

参数:

一、指定要创建的空文件名称

二、指定要设置时间属性的文件名称

示例:
在目录/mnt下创建空文件 a.txt b.txt

[root@localhost mnt]# touch a.txt b.txt

[root@localhost mnt]# ll

total 0

-rw-r--r-- 1 root root 0 Nov 716:59 a.txt

-rw-r--r-- 1 root root 0 Nov 716:59 b.txt

复制/etc/passwd文件到/mnt目录下,使用 touch –a 修改文件passwd的存取时间

[root@localhost mnt]# cp -a /etc/passwd .

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2016-11-07 18:36:43.441999782 +0800

Modify: 2016-10-21 18:15:07.082976185 +0800

Change: 2016-11-07 17:03:09.395040011 +0800

Birth: -

[root@localhost mnt]# touch -a passwd

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2016-11-07 17:04:09.175035587 +0800

Modify: 2016-10-21 18:15:07.082976185 +0800

Change: 2016-11-07 17:04:09.175035587 +0800

Birth: -

使用touch –d 修改文件passwd
[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2016-11-07 17:04:09.175035587 +0800

Modify: 2016-10-21 18:15:07.082976185 +0800

Change: 2016-11-07 17:04:09.175035587 +0800

Birth: -

[root@localhost mnt]# touch -d2018-10-12 passwd

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2018-10-12 00:00:00.000000000 +0800

Modify: 2018-10-12 00:00:00.000000000 +0800

Change: 2016-11-07 17:04:35.739033621 +0800

Birth: -
使用touch –m 修改文件passwd

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2018-10-12 00:00:00.000000000 +0800

Modify: 2018-10-12 00:00:00.000000000 +0800

Change: 2016-11-07 17:04:35.739033621 +0800

Birth: -

[root@localhost mnt]# touch  -m passwd

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/    root)

Access: 2018-10-12 00:00:00.000000000 +0800

Modify: 2016-11-07 17:05:07.385031279 +0800

Change: 2016-11-07 17:05:07.385031279 +0800

Birth: -

使用touch –r修改文件passwd

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2018-10-12 00:00:00.000000000 +0800

Modify: 2016-11-07 17:05:07.385031279 +0800

Change: 2016-11-07 17:05:07.385031279 +0800

Birth: -

[root@localhost mnt]# touch -r /etc/passwdpasswd

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2016-11-07 18:36:43.441999782 +0800

Modify: 2016-10-21 18:15:07.082976185 +0800

Change: 2016-11-07 17:06:45.478024019 +0800

Birth: -

[root@localhost mnt]# stat /etc/passwd

File: ‘/etc/passwd’

Size: 2264         Blocks: 8          IO Block: 4096   regular file

Device: fd00h/64768d       Inode:19973395    Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2016-11-07 18:36:43.441999782 +0800

Modify: 2016-10-21 18:15:07.082976185 +0800

Change: 2016-10-21 18:15:07.084976185 +0800

Birth: -

使用touch –t修改文件passwd

[root@localhost mnt]# touch -t201912221344.42 passwd

[root@localhost mnt]# stat passwd

File: ‘passwd’

Size: 2264         Blocks: 8         IO Block: 4096   regular file

Device: fd00h/64768d       Inode:4558657     Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2019-12-22 13:44:42.000000000 +0800

Modify: 2019-12-22 13:44:42.000000000 +0800

Change: 2016-11-07 17:18:55.136970019 +0800

Birth: -

◆Time 使用指定时间而不是当前时间。Time 变量以十进制形[[CC]YY]MMDDhhmm[.SS] 指定

cp

格式:cp [-abdfilpPrRsuv] [源文件列表] [目的文件列表]

作用:将一个或多个源文件或者目录复制到指定的目的文件或目录

 

参数选项:

r -a:此参数的效果和同时指定"-dpR"参数相同

-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录

-f:强行复制文件或目录,不论目标文件或目录是否已存在

-i:覆盖既有文件之前先询问用户

-l:对源文件建立硬连接,而非复制文件

-p:保留源文件或目录的属性

-R/r:递归处理,将指定目录下的所有文件与子目录一并处理

-s:对源文件建立符号连接,而非复制文件

-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时才复制文件

-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀

-b:覆盖已存在的文件目标前将目标文件备份

-v:详细显示命令执行的操作


示例一:复制文件

 [root@vhxct67test ~]# touch test.txt     //创建一个测试文件

[root@vhxct67test ~]# cp test.txt /mnt  //把test.txt文件复制到/mnt目录下

[root@vhxct67test ~]# ll /mnt         //在/mnt目录下查看复制的文件

total8

drwx------.2 root root 4096 Aug  2 04:34 hgfs

-rw-------  1 root root 2122 Nov 22 03:17 passwd

-rw-------  1 root root   0 Nov 24 03:14 test.txt

示例二:递归方式复制目录下的文件

[root@vhxct67test ~]#mkdir -p /cptest/a/c  //创建测试目录

[root@vhxct67test ~]#touch /cptest/a/b.txt  //在a目录下创建测试文件

[root@vhxct67test ~]#touch /cptest/a/c/cc.txt  //在b目录下创建测试文件

[root@vhxct67test ~]#cp -rf /cptest/ /mnt  //使用rf参数递归的方式把cptest目录的所以文件和目录都复制到mnt下

[root@vhxct67test ~]#ll /mnt    /查看mnt目录下的cptest目录是否复制成功

total12

drwx------  3 root root 4096 Nov 24 03:22 cptest

drwx------.2 root root 4096 Aug  2 04:34 hgfs

-rw-------  1 root root 2122 Nov 22 03:17 passwd

-rw-------  1 root root   0 Nov 24 03:14 test.txt

[root@vhxct67test ~]# cd /mnt   //进入mnt目录下

[root@vhxct67test mnt]# tree cptest/    //使用tree命令查看cptest目录下的文件和目录是否全部复制完成

cptest/

└── a

    ├── b.txt

    └── c

        └── cc.txt

 

mv

格式:mv [-bfiuv] [源文件列表] [目标文件]

作用:对文件或目录重新命名,或者将文件从一个目录移到另一个目录中

 

 

选项:

--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份

-b:当文件存在时,覆盖前,为其创建一个备份

-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录

-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动.这样可以避免误将文件覆盖

--strip-trailing-slashes:删除源文件中的斜杠“/

-S<后缀>:为备份文件指定后缀,而不使用默认的后缀

--target-directory=<目录>:指定源文件要移动到目标目录

-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作


示例一:移动文件

[root@vhxct67test1 ~]# touch test.txt

[root@vhxct67test1 ~]# mv test.txt /mnt

[root@vhxct67test1 ~]# ll /mnt

drwx------. 2 root root 4096 Aug 2 04:34 hgfs

-rw-------  1 root root    0 Nov 24 06:01 test.txt

示例二:文件改名

[root@vhxct67test1~]# touch test1.txt

[root@vhxct67test1~]# mv test1.txt /mnt/test11.txt

[root@vhxct67test1~]# ll /mnt

drwx------.2 root root  4096 Aug  2 04:34 hgfs

-rw-------  1 root root   0 Nov 24 06:03 test11.txt

-rw-------  1 root root   0 Nov 24 06:01 test.txt

示例三:移动多个文件到/mnt目录下

[root@vhxct67test1 ~]# touch test.txttest1.txt test2.txt

[root@vhxct67test1 ~]# mv test.txt test1.txttest2.txt /mnt/

[root@vhxct67test1 ~]# ll /mnt

drwx------.2 root root 4096 Aug  2 04:34 hgfs

-rw-------  1 root root   0 Nov 24 06:06 test1.txt

-rw-------  1 root root   0 Nov 24 06:06 test2.txt

-rw-------  1 root root   0 Nov 24 06:06 test.txt

示例四:将文件file1改名为file2,如果file2已经存在,则询问是否覆盖

 

[root@vhxct67test1 ~]# touch test.txt

[root@vhxct67test1 ~]# mv -i test.txt /mnt/

mv:overwrite `/mnt/test.txt'? y

示例五:目录的移动

[root@vhxct67test1 ~]# mkdir -p /test/a

[root@vhxct67test1 ~]# touch /test/test1.txt

[root@vhxct67test1 ~]# touch /test/a/aa.txt

[root@vhxct67test1 ~]# mv /test /mnt

[root@vhxct67test1 ~]# ll /mnt/test/

drwx------2 root root 4096 Nov 24 06:12 a

-rw-------1 root root    0 Nov 24 06:12 test1.txt

rm

格式:rm [-dfirv] [文件]

作用:删除一个目录中的一个或多个文件或目录

选项:

-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录

-f:强制删除文件或目录

-i:删除已有文件或目录之前先询问用户

-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理

--preserve-root:不对根目录进行递归操作

-v:显示指令的详细执行过程


示例一:删除指定文件

[root@vhxct67test1 ~]# cd /mnt

[root@vhxct67test1 mnt]# ls

hgfs  test test1.txt  test2.txt  test.txt

[root@vhxct67test1 mnt]# rm test.txt

[root@vhxct67test1 mnt]# ls

hgfs  test test1.txt  test2.txt

示例二:删除文件显示运行时详细信息

[root@vhxct67test1 mnt]# rm -v test1.txt

removed`test1.txt'

[root@vhxct67test1 mnt]# ls

hgfs  test test2.txt

示例三:交互模式下删除文件

[root@vhxct67test1 mnt]# ls

hgfs  test test2.txt

[root@vhxct67test1 mnt]# rm -iv test2.txt

rm:remove regular empty file `test2.txt'? y

removed`test2.txt'

示例四:递归删除某个目录下的文件和子目录

[root@vhxct67test1 mnt]# ls

hgfs  test

[root@vhxct67test1 mnt]# tree test

test

├── a

│   └── aa.txt

└── test1.txt

 

1directory, 2 files

[root@vhxct67test1 mnt]# rm -rf test/

[root@vhxct67test1 mnt]# ls

hgfs

ln

格式:ln [-bdfinsv] [源文件列表] [目标文件]

作用:为文件创建连接,连接类型分为硬链接和软连接(符号链接)两种,默认是硬链接,如果要创建软连接必须使用“-s”选项

选项:

-b或--backup:删除,覆盖目标文件之前的备份

-d或-F或——directory:建立目录的硬连接

-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在

-i或——interactive:覆盖既有文件之前先询问用户

-n或--no-dereference:把符号连接的目的目录视为一般文件

-s或——symbolic:对源文件建立符号连接,而非硬连接

-S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它

-v或——verbose:显示指令执行过程

-V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串


示例一:硬链接

将/test/a.txt的文件链接到/mnt下

[root@vhxct67test1 ~]# mkdir /test

[root@vhxct67test1 ~]# touch /test/a.txt

[root@vhxct67test1 ~]# ll /mnt

total4

drwx------.2 root root 4096 Aug  2 04:34 hgfs

[root@vhxct67test1 ~]# ln /test/a.txt /mnt

[root@vhxct67test1 ~]# ll /mnt

total4

-rw-------  2 root root   0 Nov 24 08:06 a.txt

drwx------.2 root root 4096 Aug  2 04:34 hgfs

示例一说明:在执行ln命令之前,目录mnt中是不存在a.txt文件的,在执行ln命令后,目录mnt下才有a.txt这个文件,(注意,二者在物理上是同一文件)。

 

示例二:软链接

[root@vhxct67test1 ~]# touch /test/b.txt

[root@vhxct67test1 ~]# ln -s /test/b.txt /mnt

[root@vhxct67test1 ~]# ll /mnt

total4

-rw-------  2 root root   0 Nov 24 08:06 a.txt

lrwxrwxrwx  1 root root  11 Nov 24 08:13 b.txt -> /test/b.txt

drwx------.2 root root 4096 Aug  2 04:34 hgfs

find

格式:find [选项] [参数]

作用:在指定目录下查找文件

选项:

-daystart:从本日开始计算时间

-mtime   -n ,+n按文件更改时间来查找文件,-n指n天以内,+n指n天以前

-atime       -n ,+n按文件访问时间来查, -n指n天以内,+n指n天以前

-ctime    -n ,+n按文件创建时间来查找文件,-n指n天以内,+n指n天以前

-depth:从指定目录下最深层的子目录开始查找

-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录

-exec<执行指令>:假设find 指令的回传值为True,就执行该指令

-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录

-gid<群组识别码>:查找符合指定之群组识别码的文件或目录

-group<群组名称>:查找符合指定之群组名称的文件或目录

-inum:查找符合指定的inode编号的文件或目录

-links<连接数目>:查找符合指定的硬连接数目的文件或目录

-iname<范本样式>:指定字符串作为寻找符号连接的范本样式

-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出

-maxdepth<目录层级>:设置最大目录层级

-mindepth<目录层级>:设置最小目录层级

name<范本样式>:指定字符串作为寻找文件或目录的范本样式

-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录

-nouser:找出不属于本地主机用户识别码的文件或目录

-path<范本样式>:指定字符串作为寻找目录的范本样式

-perm<权限数值>:查找符合指定的权限数值的文件或目录

-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行

-size<文件大小>:查找符合指定的文件大小的文件

-true:将find指令的回传值皆设为True

-typ<文件类型>:只寻找符合指定的文件类型的文件

-uid<用户识别码>:查找符合指定的用户识别码的文件或目录

-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算

-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录

-xdev:将范围局限在先行的文件系统中


示例一:查找指定时间内修改过的文件

[root@vhxct67test1 ~]# find -atime -2

./Music

./Templates

./.bashrc

./Downloads

./.gvfs

./.bash_profile

示例二:根据关键字查找

[root@vhxct67test1 ~]# find -name"*.log"

./.imsettings.log

./.local/share/gvfs-metadata/home-36bb4135.log

./.local/share/gvfs-metadata/label-VMware\x20Tools-4078a08d.log

./install.log

示例三:按照目录或文件的权限来查找文件

[root@vhxct67test1 ~]# find /opt/ -perm 644

/opt/glibc-2.14/etc/ld.so.cache

/opt/glibc-2.14/etc/rpc

/opt/glibc-2.14/lib/librpcsvc.a

/opt/glibc-2.14/lib/crtn.o

/opt/glibc-2.14/lib/librt.a

/opt/glibc-2.14/lib/gconv/gconv-modules

/opt/glibc-2.14/lib/libc_nonshared.a

/opt/glibc-2.14/lib/libutil.a

示例四:按类型查找

[root@vhxct67test1 ~]# find -type f -name"*.log"

./.imsettings.log

./.local/share/gvfs-metadata/home-36bb4135.log

./.local/share/gvfs-metadata/label-VMware\x20Tools-4078a08d.log

./install.log

示例五:按大小查找文件

[root@vhxct67test1 ~]# find -size +10M -print

./Desktop/VMwareTools-9.4.15-2827462.tar.gz

 

示例六:在/mnt目录中查找文件并使用-exec选项删除它

[root@vhxct67test1 ~]# cd /mnt

[root@vhxct67test1 mnt]# ls

a.txt  b.txt hgfs

[root@vhxct67test1 mnt]# cd

[root@vhxct67test1 ~]# find /mnt -name a.txt-exec rm -rf {} \; //注意{}和\;之间有空格

[root@vhxct67test1 ~]# ll /mnt

total4

lrwxrwxrwx  1 root root  11 Nov 24 08:13 b.txt -> /test/b.txt

drwx------.2 root root 4096 Aug  2 04:34 hgfs

 

rename

语法:rename from to file

              rename-V

作用:重命名文件

将a.txt,b.txt, c.txt批量修改为a.log,b.log,c.log

[root@xuegod66 rename]# touch a.txt b.txtc.txt

[root@xuegod66 rename]# ll

total 0

-rw-r--r--. 1 root root 0 Nov 16 21:39 a.txt

-rw-r--r--. 1 root root 0 Nov 16 21:34 b.txt

-rw-r--r--. 1 root root 0 Nov 16 21:34 c.txt

[root@xuegod66 rename]# rename .txt .log*.txt

[root@xuegod66 rename]# ll -a

total 8

drwxr-xr-x. 2 root root 4096 Nov 16 21:39 .

drwxrwxrwt. 4 root root 4096 Nov 16 21:35 ..

-rw-r--r--. 1 root root    0 Nov 16 21:39 a.log

-rw-r--r--. 1 root root    0 Nov 16 21:34 b.log

-rw-r--r--. 1 root root    0 Nov 16 21:34 c.log

示例2:查看版本

[root@xuegod66rename]# rename -V

rename(util-linux-ng 2.17.2)

cat

格式:cat (选项) (参数)

作用:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。

选项:

r-n或-number:有1开始对所有输出的行数编号;

r-b或--number-nonblank:和-n相似,只不过对于空白行不编号;

r-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;

r-A:显示不可打印字符,行尾显示“$”;

r-e:等价于"-vE"选项;

r-t:等价于"-vT"选项;

参数:指定要连接的文件列表

显示文件内容行号

[root@xuegod66 cat]# cat -n abc.txt

     1  abc

     2  def

     3  aaaaaa

     4  dddddd

     5  bbbbbb

     6  eee

查看两个文件内容

[root@redhat01 cat]# ll

total 8

-rw-r--r--. 1 root root 26 Oct 30 20:10 a.txt

-rw-r--r--. 1 root root 17 Oct 30 20:11 b.txt

[root@redhat01 cat]#

[root@redhat01 cat]# cat a.txt b.txt

kdjflaj

kfjdlafj

kkkkkkk

 

999999

00000

122

显示不可打印的字符

[root@redhat01 cat]# cat -A a.txt

kdjflaj$

kfjdlafj$

kkkkkkk$

$

more

格式:more  (选项)(参数)

作用:分页显示文本内容

选项:

r-<数字>:指定每屏显示的行数;

r-d:显示“[press space to continue,'q' to quit.]”和“[Press'h' for instructions]”;

r-c:不进行滚屏操作。每次刷新这个屏幕;

r-s:将多个空行压缩成一行显示;

r-u:禁止下划线;

r+<数字>:从指定数字的行开始显示。

参数:

文件:指定分页显示内容的文件。

 [root@redhat01 cat]# more a.txt

kdjflaj

kfjdlafj

kkkkkkk

more支持vi的很多选项,输入“?”就调出说明

[root@redhat01 tmp]# more event.sh

--More--(49%)

Most commands optionally preceded by integer argument k. Defaults in brackets.

Star (*) indicates argument becomes new default.

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

<space>                 Display next k lines of text [currentscreen size]

z                       Displaynext k lines of text [current screen size]*

<return>               Display next k lines of text [1]*

d or ctrl-D             Scroll klines [current scroll size, initially 11]*

q or Q or <interrupt>   Exitfrom more

s                       Skipforward k lines of text [1]

f                       Skipforward k screenfuls of text [1]

b or ctrl-B             Skipbackwards k screenfuls of text [1]

'                       Go toplace where previous search started

=                       Displaycurrent line number

/<regular expression>  Search for kth occurrence of regular expression [1]

n                       Search forkth occurrence of last r.e [1]

!<cmd> or :!<cmd>       Execute <cmd> in a subshell

v                       Start up/usr/bin/vi at current line

ctrl-L                  Redrawscreen

:n                      Go to kthnext file [1]

:p                      Go to kthprevious file [1]

:f                      Displaycurrent file name and line number

.                       Repeatprevious command

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

less

格式:less (选项) (参数)

作用:向前或向后浏览文件

选项:

r-e:文件内容显示完毕后,自动退出;

r-f:强制显示文件;

r-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;

r-l:搜索时忽略大小写的差异;

r-N:每一行行首显示行号;

r-s:将连续多个空行压缩成一行显示;

r-S:在单行显示较长的内容,而不换行显示;

r-x<数字>:将TAB字符显示为指定个数的空格字符。

参数:

文件:指定要分屏显示内容的文件。

[root@redhat01 tmp]# less -N event.sh

      1 if [ -e/var/opt/resmon/log/event.log ]; then

      2 MONTH=`date | awk '{print$2}'`

      3 if [ $MONTH = Jan ] ; then

      4                 sed -n '/Dec 25/,/Dec 31/p'/var/opt/resmon/log/event.log

      5                 sed -n '/Jan  1/,/Jan 26/p' /var/opt/resmon/log/event.log

cat more less的区别:

cat         连续显示、查看文件内容

more      分页查看文件内容

less         分页可控制查看文件内容

cat一次性把文件内容全部显示出来,不能进行交互式操作,适合察看内容短小、不超过一屏的文件;

more比cat强大一点,支持分页显示,支持ctrl+B ctrl+F .....上下滚屏,但是不支持像shift+g(跳到文件尾)这种操作;

less比more更强大一点,支持各种命令,随便翻页、跳转、查找.....

head

格式:mkdir  (选项) (参数)

作用:文件内容查看用于显示文件的开头的内容

选项:

r-n         指定显示头部内容的行数

r-c         指定显示头部内容的字符数

r-v             总是显示文件名的头信息    

r-q                    不显示文件名的头信息

参数:           文件列表:指定显示头部内容的文件列表

示例:

在查看/etc/passwd用户文件的前十行内容

[root@localhost ~]# head –n 10 /etc/passwd

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

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

tail

格式:tail  (选项) (参数)

作用:从指定点开始将文件写到标准输出

选项:

r-retry:         即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;

r-c或--bytes=:输出文件尾部的N(N为整数)个字节内容;

r-f或;--follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;

r-F:                  与选项“-follow=name”和“--retry"连用时功能相同;

r-n或--line=: 输出文件的尾部N(N位数字)行内容。
r--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;

r-q或--quiet或--silent:当有多个文件参数时,不输出各个文件名;

r-s<秒数>或--sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;

r-v或--verbose:当有多个文件参数时,总是输出各个文件名;

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

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

参数:

    文件列表:指定要显示尾部内容的文件列表。
示例:

在/home下创建test目录,设置权限为644

[root@localhost ~]# tail -n 5 /etc/passwd

sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

rget1:x:500:500::/home/rget1:/bin/bash

rput1:x:501:501::/home/rput1:/bin/bash

apache:x:48:48:Apache:/var/www:/sbin/nologin[root@localhost ~]# mkdir -m 644 /home/test

[root@localhost log]# tail -f fail2ban.log 可以实时监控日志

2016-11-1717:46:32,773 fail2ban.database      [1209]: INFO    Connected tofail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'

2016-11-1717:57:28,130 fail2ban.server        [1209]: INFO    Stopping all jails

2016-11-1717:57:28,130 fail2ban.server        [1209]: INFO    Exiting Fail2ban

2016-11-1806:45:54,509 fail2ban.server        [1215]: INFO    Changed loggingtarget to /var/log/fail2ban.log for Fail2ban v0.9.4

2016-11-1806:45:54,538 fail2ban.database      [1215]: INFO    Connected tofail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'

cut

格式:cut  (选项) (参数)

作用:用来显示行中的指定部分,删除文件中指定字段

选项:

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

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

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

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

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

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

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

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

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

参数:

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

示例:

例如有一个学生报表信息,包含No、Name、Mark、Percent:

[root@localhost text]# cat test.txt

No  Name     Mark      Percent

01   tom     80      91

02   jack3     81          87

03   alex        68          98

使用 -f 选项提取指定字段:

[root@localhost text]# cut -f 1 test.txt

No

01

02

03

[root@localhost text]# cut -f2,3 test.txt

NameMark

tom 80
jack  81

alex 68

使用 -d 选项指定字段分隔符:

[root@localhost text]# cut -f2 -d";" test2.txt

Name

tom

jack

alex

 

paste

格式:paste  (选项) (参数)

作用:用于将多个文件按照列队列进行合并

 

选项:

r-d<间隔字符>或--delimiters=<间隔字符>:用指定的间隔字符取代跳格字符;

r-s或——serial串列进行而非平行处理。

参数:

    文件列表:指定需要合并的文件列表

示例:

[root@localhost ~]# cat per1

1

2

3

4

[root@localhost ~]# cat per2

a

b

c

d

[root@localhost ~]# paste per1 per2

1     a

2     b

3     c

4     d

[root@localhost ~]# paste per1 per2

1     2     3     4

a     b     c     d

[root@localhost ~]# ls | paste -d: - - -   #用:分隔,且每行显示三个文件

anaconda-ks.cfg:a.txt:a.txxt

fail2ban-0.9.4:fail2ban-0.9.4.tar.gz:inotify.sh

inotify-tools-3.13.tar.gz:install.log:install.log.syslog

per1:per2:xuegod63

sort

格式:sort  (选项) (参数)

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

选项:

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

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

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

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

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

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

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

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

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

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

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

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

参数:

文件:指定待排序的文件列表
示例:

sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[root@localhost ~]# cat sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

bbb:20:2.2

eee:50:5.5

eee:50:5.5

[root@localhost ~]# sort sort.txt

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

eee:50:5.5

忽略相同行使用-u选项或者uniq:

[root@localhost ~]#sort -u sort.txt

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

sort的-n、-r、-k、-t选项的使用:
[root@localhost ~]#cat sort.txt

AAA:BB:CC

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

bbb:20:2.2

eee:50:5.5

eee:50:5.5

将BB列按照数字从小到大顺序排列:
[root@localhost ~]# sort -nk 2 -t: sort.txt

 

AAA:BB:CC

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

eee:50:5.5

将CC列数字从大到小顺序排列:
[root@localhost ~]# sort -nk 2 -t: sort.txt

eee:50:5.5

eee:50:5.5

ddd:40:4.4

ccc:30:3.3

bbb:20:2.2

aaa:10:1.1

AAA:BB:CC

uniq

格式:uniq  (选项) (参数)

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

r -m               设置文件夹权限

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

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

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

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

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

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

参数:

输入文件:指定要去除的重复行文件。如果不指定此项,则从标准读取数据;

输出文件:指定要去除重复行后的内容要写入的输出文件。如果不指定此选项,

则将内容显示到标准输出设备(显示终端)。

示例:

删除重复行:

[root@localhost~]#cat file.txt

AAA

aaa

AAA

aaa

BBB

bbb

BBB

bbb

[root@localhost ~]# sort file.txt | uniq

aaa

AAA

bbb

BBB

统计各行在文件中出现的次数:

[root@localhost ~]#sort file.txt | uniq –c

2aaa

2AAA

2bbb

2BBB

在文件中找出重复的行:
[root@localhost ~]#sort file.txt| uniq -d

aaa

AAA

bbb

BBB

wc

作用

wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。对每个文件输出行、单词、和字节统计数,如果指定了多于一个文件则还有一个行数的总计。没有指定文件或指定的文件是名为“-”,则读取标准输入。

wc命令类似与word中的字数统计功能,可以统计字数、行数、页数、段落等。

格式

wc [选项列表]... [文件名列表]...

wc [-clw][--help][--version][文件...]

参数

r-c, --bytes, --chars        输出字节统计数。

r-l, --lines                       输出换行符统计数。

r-L, --max-line-length     输出最长的行的长度。

r-w, --words                   输出单词统计数。

r--help                            显示帮助并退出

r--version                       输出版本信息并退出

示例

统计passwd文件信息

[root@sail ~]# wc /etc/passwd

43   87 2267 /etc/passwd

第一列显示行数,第二列显示单词数,第三列显示字节数、第四列为文件名。

表示文件有43行、表示文件中有87个单词、2267表示文件字节数即文件的大小.

[root@sail ~]# ls -l /etc/passwd

-rw-r--r--. 1 root root 2267 Oct 23 01:26 /etc/passwd

[root@sail ~]# ls -lh /etc/passwd

-rw-r--r--. 1 root root 2.3K Oct 23 01:26 /etc/passwd

参数测试

[root@sail test]# wc -l /etc/passwd          统计行数

43 /etc/passwd

[root@sail test]# wc -w /etc/passwd         统计单词数

87 /etc/passwd

[root@sail test]# wc -c /etc/passwd         统计字节数

2267 /etc/passwd

[root@sail test]# wc -m /etc/passwd        统计字符数

2267 /etc/passwd

[root@sail test]# wc -L /etc/passwd          统计文件中最长行的长度(包含空格)

99 /etc/passwd

tss:x:59:59:Account used by the trousers package tosandbox the tcsd daemon:/dev/null:/sbin/nologin   

多个文件的统计

[root@sail test]# ls –l           

-rw-r--r--. 1 root root 2267 Nov 8 21:23 passwd

-rw-r--r--. 1 root root 2267 Nov 8 21:23 passwd2

-rw-r--r--. 1 root root 2267 Nov 8 21:23 passwd3

上面3个测试文件其同样的内容。

[root@sail test]# wc -clw passwd passwd2passwd3

  43   87 2267 passwd

  43   87 2267 passwd2

  43   87 2267 passwd3

  129  261 6801 total

多个文件一起统计时,按行显示每个文件的信息,输出结果最后一行就是将多个文件的统计结果汇总。

iconv

作用

对于给定文件把它的内容从一种编码转换成另一种编码。iconv程序把文本 从一种编码转换为另一种编码,更准确一点,他是把-f 指定的编码转换为-t指定的编码。这两种编码默认都是当前locale的编码,  所有inputfile 都依次  进行转换。如果没有指定 inputfile 则使用标准输入. 转换后的内容会输出到 标准输出。

格式

 iconv[-f encoding] [-t encoding] [inputfile ...]

参数

r-f   encoding 把字符从encoding编码开始转换。 

r-t  encoding :把字符转换到encoding编码。 

r-l  列出已知的编码字符集合 

r-o file指定输出文件 

r-c 忽略输出的非法字符 

r-s 禁止警告信息,但不是错误信息 

r--verbose 显示进度信息 

r-f和-t所能指定的合法字符在-l选项的命令里面都列出来了。 

示例

在windos用记事本编写的脚本文件,上传到linux服务器之后,经常会出现乱码,无法执行。而linux服务器上产生的脚本文件导出到windows常常也会发生乱码。乱码出现的原因就是linux和windows的编码不一致所产生的,可以使用iconv将文件转码输出成适合各自系统编码的文件,就不会出现乱码。

检查工具

[root@sail ~]# rpm -qf `which iconv`           #查看工具是否安装

glibc-common-2.17-105.el7.x86_64

如果没安装可以使用yum install –y glibc-common进行安装。

查看系统中常见的几种编码

[root@sail ~]# iconv -l |grep GB

CN-GB//

CSGB2312//

CSISO58GB1988//

EBCDIC-CP-GB//

GB//

GB2312//

GB13000//

GB18030//

GBK//

GB_1988-80//

GB_198880//

ISO646-GB//

[root@sail ~]# iconv -l |grep UTF

ISO-10646/UTF-8/

ISO-10646/UTF8/

UTF-7//

UTF-8//

UTF-16//

UTF-16BE//

UTF-16LE//

UTF-32//

UTF-32BE//

UTF-32LE//

UTF7//

UTF8//

UTF16//

UTF16BE//

UTF16LE//

UTF32//

UTF32BE//

UTF32LE//

实战iconv转码输出

在windows上编写一个记事本文件内容如下,上传到linux服务器:

windows上的文件,上传到linux服务器,出现乱码。

原因是:windows和linux系统使用的编码不一致导致的。

解决方案:使用iconv转码工具,转化成适合系统的编码,再次查看文件就不会出现乱码了。

[root@sail ~]# ls -lt

-rw-r--r--. 1 root root  181 11月  8 22:02 biamma.txt

[root@sail ~]# cat biamma.txt      #用cat查看文件内容显示乱码如下

windowsʏµŎļþ£¬ʏ´«µ½linux·þϱǷ£¬³

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值