黑马linux命令在线,linux编程基础黑马-成都快上网建站

黑马linux命令在线,linux编程基础黑马

linux常用命令及用法

linux常用命令及用法如下:

大邑县网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联建站自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站

pwd 显示工作路径

shutdown -h now 关闭系统   /halt 关闭系统

shutdown -r now 重启 / reboot 重启

systemctl stop firewalld关闭防火墙

ip addr查看ip地址

1、cd命令:这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:

cd /home    进入根目录下面的home目录 

cd home    进入当前目录下的home目录 

cd ..   返回上一层目录 

cd ../.. 返回上两级目录

cd / 返回跟目录

cd - 返回上次所在的目录

2、ls命令:这是一个非常有用的查看文件与目录的命令,list之意,它的参数非常多,下面就列出一些我常用的参数吧,如下:

ls  查看目录中的文件 

ls -a列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来

ls -l   显示文件和目录的详细资料 

3、mkdir命令:创建

mkdir dir1 创建一个叫做 'dir1' 的目录'

mkdir dir1 dir2 同时创建两个目录

4、rm命令:删除

rm -f file1 删除一个叫做 'file1' 的文件'

rmdir dir1 删除一个叫做 'dir1' 的目录' (空目录才能删除)

rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容

rm -rf dir1 dir2 同时删除两个目录及它们的内容

5、mv命令:该命令用于移动文件、目录或更名,move之意,它的常用参数如下:-f 如果目标文件已经存在,不会询问而直接覆盖

mv file1 file2   把文件file1重命名为file2

mv file1 file2 dir   把文件file1、file2移动到目录dir中

6、cp命令:该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下, 它的常用参数如下:

cp  -a file1 file2  连同文件的所有特性把文件file1复制成文件file2

cp dir/* .  复制一个目录下的所有文件到当前工作目录 

cp -a /tmp/dir1 .  复制一个目录到当前工作目录 

cp -a dir1 dir2  复制一个目录

7、find命令:find是一个基于查找的功能非常强大的命令

find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 

find / -user user1 搜索属于用户 'user1' 的文件和目录 

find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 

find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 

find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件

Linux常用的内容查看命令有哪些?

1、cat

用于显示小文件的内容,或者在shell脚本里显示文件内容,不支持翻页。

[root@localhost ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Fri Jun 14 18:02:15 2019

可以显示/etc/fstab的内容,如果想显示行号,只要加上 cat -n参数即可

2、less

当文件比较大,cat查看时并不方便,因为cat不支持翻页,是一次性显示完的。

所以cat更适合在shell脚本中使用,让机器自动读取文件,而不适合人类来看。

所以当我们在看大文件时,一般会会用less命令

这个文件 /etc/man_db.conf有一百多行,我们用less来翻页查看

[root@localhost ~]# less /etc/man_db.conf

上下翻页,q键退出

3、head

如果只想看一个文件的前几行,可以用head,比如,当我们查看ip地址时,其实只关注前2行就足够了

[root@localhost ~]# ifconfig eth0

eth0: flags=4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500

inet 172.20.10.3 netmask 255.255.255.240 broadcast 172.20.10.15

inet6 240e:c0:f4be:300:e64:6e3c:b445:efab prefixlen 64 scopeid 0x0global

inet6 fe80::b7ad:e2ed:832e:99a9 prefixlen 64 scopeid 0x20link

ether 00:0c:29:84:23:62 txqueuelen 1000 (Ethernet)

RX packets 1017 bytes 130078 (127.0 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 729 bytes 120983 (118.1 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

4、tail

和head相对,tail是只显示末尾几行,比如我们想查看一个文件的更新情况,只要看最后几行就可以了

[root@localhost ~]# tail -1 /etc/fstab

/dev/mapper/centos-swap swap swap defaults 0 0

[root@localhost ~]#

tail -数字,就是查看一个文件的最后几行

tail也可以自动监测文件的更新情况,如果有更新,立即在屏幕显示,使用tail -F参数,注意,使用大写-F

5、wc

可以查看一个文件有多少行,多少单词,多少字节

[root@localhost ~]# wc /etc/fstab

19 62 504 /etc/fstab

这个文件有19行,62个单词,504个字节 更多详细的介绍可查看“Linux命令大全”。

软件测试中常用的Linux命令有哪些?

软件测试必须掌握的----常用linux命令总结

Dotest测试学堂-董浩

命令 解释

cd 进入目录或退出至主目录;例:“cd /home” 表示进入home目录下

cd .. 退出至上一级目录

cp

ifconfig 查看linuxIP的命令;注:ipconfig是查询windowsIP的

修改IP即时生效:ifconfig eth0 192.168.1.155 netmask 255.255.255.0

rm -rf 强制删除目录或文件;r代表删除目录,f代表强制删除

mv 移动文件或改名;例:“mv test /home” 表示将test移动至home目录下;“mv test test1”表示将test改名为test1

mkdir 创建文件夹;例:“mkdir dodo”表示创建dodo文件夹

ps -ef 查看进程信息;ps -ef |grep ssh :查看ssh进程的信息

top 进程管理器;top -M

df 查看磁盘使用状况 df -m

tar -xzvf 解压安装包;tar -xzvf +软件包

apt-get install 下载并安装;apt-get install +软件包名

wget+网址 下载对应网址的软件包

yum install + 软件包 下载且安装

rpm -ivh +软件包 安装以rpm结尾的软件包;rpm -ivh +包名

./+可执行程序 ./jdk-6u31-linux-i586-rpm.bin:运行

find 查找系统中的文件;find / -name+文件名

find / -name apache:在当前目录下搜索以apache开头的文件

man 命令解析;“man find” 表示将find命令详解展示

ls -l\ll\ls -a ls -l 和ll 是一样的作用。ll是ls-l的别名。显示详细信息;ls -a:查看隐藏文件+详细信息

kill -9 结束进程;kill -9 +进程号;kill -15

clear 清屏操作

cat 查看文件内容

pwd 查看当前目录结构;绝对路径

vi 编辑文件;注:编辑进入文件后,“i”:代表输入;“a”:当前光标的下一位;“:wq”:代表退出并保存(在输入状态下,需按下Esc键);“:q!”:代表不保存退出;“x”:代表删除单个字符;“dd”代表删除一行数据。

shift+g:快速到最后一行

/+匹配的内容:退出编辑状态下,向下快速搜索匹配内容【n:寻找下一个】

?+匹配的内容:退出编辑状态下,向上快速搜索匹配内容【n:寻找下一个】

touch 表示创建文件;touch .dotest:创建隐藏文件

chmod 给文件以权限;2:写;4:读;1:运行;例:chmod 461 test;表示:给文件拥有用户写的权限,所在组读写权限,其它组用户运行权限。

chmod -R 777 wenjianjia:给我文件夹及文件夹下面的所有文件赋值权限

useradd useradd dotest:创建dotest用户

passwd passwd dotest :给用户设置密码;密码输入两次且不显示

su 切换用户;“su - root”切换至root账户

whoami 查看当前登录的是哪个用户

service 服务名 restart 重启某个服务;service mysql restart【重启数据库】\service network restart【重启网卡】

重启网卡 /etc/init.d/network restart

grep grep 1 dotest:搜索文件dotest中匹配包含1所有的信息并显示出来

history history查看历史命令

tail 滚动查看日志;tail + 数量 + 文件名

tail -f log【滚动查看日志】

tail -n 5 logs 【查看最后5行】

head 匹配前几行;head -n 4 log

重启系统 reboot

关机 shutdown 0

date 查看时间;

date -s "2018-03-05 9:00:00"

常用文件 /etc/rc.local;存放自启动命令的

/etc/profile;存放环境变量设置;

source /etc/profile 快速生效

/etc/sysconfig/network-scripts中的ifcfg-eth0;查看网卡信息的

/etc/crontab;定时任务;

* * * * * +要执行的脚本【完整路径】

o minute: 区间为 0 – 59

o hour: 区间为0 – 23

o day-of-month: 区间为0 – 31

o month: 区间为1 – 12. 1 是1月. 12是12月.

o Day-of-week: 区间为0 – 7. 周日可以是0或7

例子:

每个月的第一天 1:10 p.m 运行

10 13 1 * * /root/bin/full-backup.sh

查看主机名 hostname

修改主机名 vi /etc/hosts或者hostname + 主机名

软件包 --version 查看版本信息;

svnserve --version

java --version

linux常用命令

linux常用命令如下:

1、查看内核版本:uname -a。

2、控制台-》图形界面:init 5或者startx。

3、图形界面-》控制台: init3或者直接注销。

4、如何查看ip地址:ifconfig。

5、配置ip:ifconfig eth0 ip地址。

6、重启:reboot 或者 shutdown -r now。

7、普通用户切换到系统用户:su。

8、注销用户指令:logout。

linux的学习技巧:

如果你想系统的学习Linux,你必需清楚的认识到这一点。如果你真正想系统的学习linux,想用Linux有所作为,那么请忘记Windows的思维方式,思想性的转变比暂时性的技术提高更有用, 而思想上的改变往往是受到我们行动所影响的,有不懂的问题就自己思考,查资料, 实在不会再去找别人的电脑去查,这样就加深了我每次对问题的理解,慢慢感受和习惯Linux的操作方式。

Linux 常用命令(要求全而精)

1、linux分区

--在linux里面所有的设备、任何东西,在linux看来都是文件。

--文件在它看来,有两种形式:

第一种是字符型(键盘输入、打印机);

第二种是二进制型(硬盘、光驱、U盘)

--linux中所有硬件

--手动分区

--A、至少有两个分区

/ 根分区

SWAP 交换分区(物理内存大小的两倍)

--B、个人桌面分区

/

/boot 128MB is enough

/usr

SWAP

/tmp(用于光盘刻录)

2、linux目录说明

--/dev/xxyN

--xx (分区所在设备类型:hd--IDE硬盘 sd--SCSI硬盘)

--y (标明分区所在设备

例如:/dev/hda 第一个IDE硬盘 或 /dev/hdb 第二个IDE硬盘 或 /dev/sdb 第二个SCSI硬盘)

--N (数字代表分区:1-4--主分区或扩展分区;逻辑分区从5开始!

例如:/dev/hda3 第一个IDE硬盘上的第三个主分区或扩展分区

/dev/sdb6 第二个SCSI硬盘上的第二个逻辑分区)

3、linux目录结构

/ 根目录,最高级别

/bin 系统基本命令存放目录(/usr/bin)

/boot linux的内核及引导系统程序文件存放目录(如:vmlinuz、initrd.img)

一般情况下,GRUB或LILO系统引导管理也位于这个目录

/dev 设备文件存储目录,如声卡、光驱...

/ect 存放系统设置文件(如用户账号密码、服务器配置文件等)

/home 普通用户家目录,默认存放目录

/lib 库文件存放目录

/lost+found 在ext2或ext3文件系统中,当系统以外崩溃或机器意外关机,而产生一些文件碎片放在这里。

当系统启动的过程中,fsck工具会检查这里,并修复已经损坏的文件系统。

有事喜用发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或者移文件到原来的位置上。

/media 即插即用型存储设备的挂载点自动在这个目录下创建。

如USB盘系统自动挂在后,会在这个目录下产生一个目录;

类似cdrom的目录

/mnt 存放挂载存储设备的挂载目录,如cdrom等目录

/opt 表示可选的意思,有些软件包也会被安装在此,也就是自定义软件包,

比如OpenOffice,或者一些我们自己编译的软件包,也可安装此处。

/proc 操作系统运行时,进程(正在运行的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在此。

/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统

/root linux超级权限用户root的家目录

/sbin 大多是涉及系统管理的命令的存放,只有超级权限用户root才可执行命令存放,普通用户无权限执行此目录下的命令

与 /usr/sbin; /usr/X11R6/sbin; usr/local/sbin 目录相似

(sbin,只有root权限才能执行)

/tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。

/var/tmp目录和此目录相似

/usr 系统存放程序的目录,如命令、帮助文件等。这个目录下有很多的文件和目录。

大部分Linux发行版提供的软件包都安装在此,涉及服务器的配置文件就安装在/ect中。

/usr/share/fonts 字体目录

/usr/share/man 或 /usr/share/doc 帮助目录

/usr/bin 或 /usr/local/bin 或 /usr/X11R6/bin 普通用户可执行文件目录

/usr/sbin 或 /usr/local/sbin 或 /usr/X11R6/sbin 超级权限用户root可执行命令存放目录

/usr/include 程序头文件存放目录

/var (vary)此目录经常变动

/var/log 用来存放系统日志

/var/www 用来定义Apache服务器站点存放

/var/lib 用来存放一些库文件,如MySQL的,以及MySQL数据库的存放地。

4、基本命令

--查看帮助 *** --help *** --?

--查看详细帮助 man ***

--登录 login

--退出窗口 exit

--关机 shutdown

--重启 reboot

--初始化 init (run level -/etc/inittab),0-6看第六部分的g

--进入根目录 cd /

--回上层目录 cd ..

--相对路径 cd dev

--绝对路径 cd /dev

--查用户名 whoami

--查当前目录 pwd

--列出当前目录内容 ls

-l(树详细显示目录内容)

-m(横列显示目录内容,是屏幕长度显示)

-a(列出全部文件,包括隐藏文件)

-S(以文档大小排序)

--创建目录 mkdir dname

--删除目录 rmdir dname

rm -r *** -(递归删除该目录下所有内容,询问每个准备删除的文件)

rm -rf ***-(强制删除该目录下所有内容,不询问)

--创建空白文件 touch ***

(ps:从技术的角度来讲,linux的文件后缀名没有任何意义)

--复制 cp

cp -r **1 **2 (复制1到2中)

--移动 mv

mv -t **1 **2 (把2移动到1中)

--编辑文本 vi [文件名]

--查看文本 cat 由第一行开始显示文本内容

tac 从最后一行显示,可以看出 tac 是 cat 的倒着写

more 一页一页的显示文档内容

less 与 more 类似,可以往前翻页

head 只看头几行

-N(数字,可根据行数显示)

tail 只看后几行

-N(数字,可根据行数显示)

nl 显示的时候,顺序输出行号

od 以二进制位的方式读取档案内容

--查找文本 find [路径][查找类型][搜索文件名]

如查找rc.local find /etc -name *.local

--查找命令信息及其位置 whereis 命令

如 whereis ls

--查看环境变量 echo $SHELL

如 echo $PATH (分大小写:分隔符是:,windows是echo %path%;)

--链接 ln

如 ln joe.txt a (硬链接,如同复制一个新文件,joe.txt删除后,a还存在)

a是链接的名称,a和joe.txt同步,然后a的内容和joe.txt一样

joe.txt改变,a也跟着变

如 ln -s joe.txt b (软链接,如同创建一个快捷方式,joe.txt删除后,b不存在)

--wc 统计指定文本文件的行数、字数、字符数

--grep(很常用) 在指定的文本文件中查找指定的字符串

grep 字符串 文件名

--col 见管道..

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

----信息显示命令----

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

--date 显示和设置日期

--stat 显示指定文件的相关信息

--who、w 显示在线登录用户

--whoami 显示用户自己的身份

--id 显示当前用户的id信息

--hostname 显示主机名称

--uname 显示操作系统信息

--dmesg 显示系统启动信息

--du 显示指定的文件(目录)已使用的磁盘空间

--df 显示文件系统磁盘空间的使用情况

--free 显示当前内存和交换空间的使用情况

--fdisk -l 显示磁盘信息

--locale 显示当前语言环境

5、挂载点(mount 设备目录 挂载目录)

--访问设备 (那设备当成一个文件,和另外一个文件夹进行绑定)

--例如挂载光驱:步骤 [cd /mnt]---[mkdir cdr]---[mount /dev/cdrom /mnt/cdr]---[cd cdr]--OK!直接访问光驱内容

--卸载挂载设备(umount /dev/cdrom)--注意必须先退出挂载目录,否则出现"device is busy"错误.

6、startup-shutdown(linux启动流程)

--A、boot sequence(important) linux启动过程

a. load bios(hardware information)

b. read MBR's config to find out the OS

(MBR--Master Boot Record,硬盘第一个物理扇区,柱面0、磁头0、扇区1,包含主引导程序和硬盘分区表)

c. load the kernel of the OS

(加载为kernel核心的OS)

d. init process starts...

(启动linux第一个进程init)

e. execute /etc/rc.d/sysinit

(执行系统最重要的配置文件,后台启用进程)

(rc.d--run command)

f. start other modules(stc/modules.conf)

(开启各种模块,如内存管理模块、硬盘管理模块)

g. execute the run level scripts

(系统启动是分层次的,根据情况执行,每个层次之间没关系)

0 - 系统停机状态

1 - 单用户工作状态 root

2 - 多用户状态(没有NFS)

3 - 多用户状态(有NFS)

NFS - Network File System 网络文件系统,联网系统

4 - 系统未使用,留给用户

5 - 图形界面

6 - 系统正常关闭并重新启动

如:cd /etc -- 有rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d等多个文件夹,保存着各个层次执行的进程文件

h. execute /etc/rc.d/rc.local (重要)

(保存其它进程脚本,如tomcat自动启动,要修改此配置文件)

i. execute /bin/login

(登录界面)

j. shell started...

7、vi 文本编辑器

--两种模式:命令模式 编辑模式

--vi [文件名]

(切换到编辑模式)

a append-光标后添加

i insert-光标前插入

o open-另起一行编辑

esc (切换回命令模式)

:w 存盘

:wq 存盘退出

:q 退出

:q! 不存盘退出

dd 删除其中一行

dw 删除一个单词

(sudo gedit 文本 常用linux下的文本编辑器,比vi好用)

8、用户设置

--切换用户(switch user) su username

小技巧:直接exit切换

--添加用户 useradd username [-g] [组名](分配到某个用户组)

(创建后会自动在/home目录下创建该新用户的文件夹,如/home/username)

--设置密码 passwd username

--cd /etc

--查看用户信息 more password

如新增的用户信息:username:x:500:500::/home/username:/bin/bash

第一个数字,代表用户组,当添加用户没有指定用户组时,系统会创建一个和用户ID一样的组ID;

第二个数字:用户ID号;

用户的目录是/home/username;

用户的SHELL是/bin/bash

(命令---SHELL[解释命令]---kenrel内核)

SHELL有多种类型,如csh、bash(常用)、bsh、ksh、sh(最原始)

--添加用户组 groupadd groupname

--查看用户组信息 more group

--删除用户组 groupdel groupname

--修改用户 usermod [-g] [组名] [用户名]

--删除用户 userdel username

然后把/home的文件夹删除了 rm -rf 文件夹

9、权限file privilege

--linux把文件的权限分成四种:r:read w:write x:execute -:none

如:-rw-r--r--

lrwxrwxrwx

drwxr-xr-x

drwxr-xr-x

第一个数字'-'代表文件,其余是文件夹,后9位分为3组,每组有四种权限设置rwx-

第一位表示文件所有者

第二位表示和所有者在同一用户组的用户

第三位表示不在同一用户组的用户权限

--设置权限 (随意应用,灵活组合!)

1、普通用法

--添加权限 [chmod +x 文件]

如:-rw-r--r-- --- -rwxr-xr-x

--删除权限 [chmod -x 文件]

如:-rwxr-xr-x --- -rw-r--r--

--给自己添加权限 [chmod ?+x 文件]

如此类推,组--g,其他人--o

如:chmod u+x -rw-r--r-- --- -rwxr--r--

chmod g+x -rw-r--r-- --- -rw-r-xr--

chmod o+x -rw-r--r-- --- -rw-r--r-x

2、专业用法 chmod 755/777

--原理,八进制转二进制

如755,111 101 101, rwx r-x r-x

777,111 111 111, rwx rwx rwx

--修改所有者权限 chown (change owner)

如:chown 原来文件 file1 的所有者是 root,改成joe的

chown joe file1

10、管道(把上一个命令执行的结果交给下一个命令)

--使用方法:

命令1|命令2|命令3......|命令n

--使用举例

--$ls -Rl /etc | more

(如 ls -Rl /etc (在控制台模式下,无法返回前面过去的信息),因此需要管道执行该查询,实现分页的工作, ls -Rl /etc | more)

--$cat /etc/passwd | wc

(显示文件结果,再数数有多少行)

--$cat /etc/passwd | grep lrj

(显示文件结果,再查找包含lrj的行)

--#dmesg | grep eth0

(显示系统启动的信息,再查找包含eth0的行--真正含义,检查网卡执行信息是否正常)

--$man bash | col -b bash.txt

语法:col [-bfx][-l缓冲区列数]

补充说明:在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符""和"",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。

参数:

-b 过滤掉所有的控制字符,包括RLF和HRLF。

-f 滤除RLF字符,但允许将HRLF字符呈现出来。

-x 以多个空格字符来表示跳格字符。

-l缓冲区列数 预设的内存缓冲区有128列,您可以自行指定缓冲区的大小。

--$ls -l | grep "^d"

(用正则表达式筛选出目录列表中 头字母为'd' 的内容--目录)(^是正则表达式开头部分)

--$ls -l * | grep "^-" | wc -l

(列出目录列表中 头字符为'-'的内容--文件,并统计显示的行数wc -l)

11、其他命令

--wall(warning all) 通知所有人

a.命令替换

如 wall `date`、 cd 'pwd'、mkbootdisk $(uname -r)

b.重定向

重定向输出:

如 ls cmd.txt ,把文件写到cmd.txt,不输出在控制台

ls cmd.txt ,把文件追加写到cmd.txt

重定向输入:

如 wall cmd.txt,把文本内容发给所有人

12、修改系统的默认系统级别

常用3和5

3 - 多用户状态(有NFS)

NFS - Network File System 网络文件系统,联网系统

5 - 图形界面

PS.设置用户权限: sudo chmod 777 目录

4表示读,2表示写,1表示执行.

第一位表示文件所有者,第二位表示和所有者在同一用户组的用户,第三位表示不在同一用户组的用户权限.

755表示文件所有者可读写,执行.

第二位5表示与所有者在同一用户组的可读,可执行,不可写.

第三位5表示其它组可读,可执行,不可写. 转载于Joewalker在本人空间也有详细说明

测试人员,需要掌握的linux命令有哪些?

Linux 发行版本的命令大概有 200 多个,但是常用的命令只有 10 多个而已。只要掌握这些常用的即可。有些命令是非常不常用的,临时遇到,临时百度就可以。需要掌握的常用命令有这些:clear、pwd、ls、cd、touch、mkdir、rm、cp、mv、chmod、find、grep、重定向、软连接、tar、shut down、reboot、who、exit、passwd。2019年以来,企业对测试人员又新增了一些命令要求,比如有关端口的命令ps top,进程的命令netstat lsof,查看日志的命令 tali 。以上命令,只要找到合适视频8-9个小时就能掌握了。没有合适视频的可以查看黑马程序员软件测试linux视频。


当前文章:黑马linux命令在线,linux编程基础黑马
网页链接:http://kswjz.com/article/dsscgjc.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流