linux常用命令大全(实例简介)

212 阅读8分钟

本文特点 授之以渔:了解命令学习方法、用途:不再死记硬背,拒绝漫无目的;

准确无误:所有命令执行通过(环境为centos7),拒绝复制粘贴;

实用性高:命令多为实际工作中用到的,实例讲解,拒绝纯理论;

条理清晰:分类归纳,快速找到想要的命令,拒绝天马行空;

总结性强:只列常用语法,易错情况强调,拒绝照搬照套。

学前须知 适用人群:开发、测试、运维等等 文档用途:linux入门学习、命令备忘录、面试复习 学习途径:书籍(鸟哥的Linux私房菜)、视频:慕课网等、百度谷歌搜索、qq群等 学习环境:虚拟机VirtualBox+centos7 学习记录:多动手,多联想,多记录,特别是遇到问题时 遇到问题:百度谷歌搜索、系统日志(/var/log/)、qq群 学前理论 linux主要特征 :一切且文件(目录、硬盘等都是文件);硬件都在/dev 目录,如硬盘、U盘为/dev/sd[a-d]; /dev/sr0(/dev/cdrom)是光驱的设备名(df命令查看),为设备文件,代表的是光驱本身,得把这个设备挂载到目录下(一般为/mnt)(文件系统的临时挂载点),才能对设备上的文件进行读写等操作;

不懂的命令 :man 命令(查用法、全称),只记得关键词,可用man -k 关键词;

Linux命令常用结构 :Command [-option] [argument] Command:即是要运行的命令的本身,说白了就是一个软件(程序); Option:是选项(可选),选项是控制命令运行状态和行为的(可多个选项一起,如df -hT); Argument:是参数(可选),是命令要操作对象如文件、路径、数据、目录等; 在指令的第一部分按[tab]键一下为[命令补全],两下为所有命令选择,在非第一部分按[tab]键两下为[文件补全];

linux命令区分大小写;

开关机 sync :把内存中的数据写到磁盘中(关机、重启前都需先执行sync) shutdown -r now或reboot :立刻重启 shutdown -h now :立刻关机 shutdown -h 20:00 :预定时间关闭系统(晚上8点关机,如果现在超过8点,则明晚8点) shutdown -h +10 :预定时间关闭系统(10分钟后关机) shutdown -c :取消按预定时间关闭系统 系统信息 who am i :查看当前使用的终端 who 或 w : 查看所有终端 uname -m :显示机器的处理器架构(如x86_64) cat /proc/version :查看linux版本信息 uname -r :显示正在使用的内核版本 lsb_release -a :查看系统发行版本(如CentOS7)(没这个命令先安装yum install -y redhat-lsb-core) rpm -qa | grep kernel-devel :查看kernel-devel版本(安装软件时编译内核用,故需要保持内核版本一致性) yum install -y "kernel-devel-uname-r == $(uname -r)":安装和Linux内核版本匹配的kernel-devel hostnamectl set-hostname 主机名:修改主机名(包括静态、瞬态和灵活主机名,如有域名解析记得手动更新/etc/hosts) date :显示系统日期 (date +%Y/%m/%d : 显示效果如2018/01/01) date 070314592018.00 :设置时间(格式为月日时分年.秒 ) clock -w :将时间修改保存到 BIOS cal 2018 :显示2018年的日历表 clear :清空命令行 ifconfig :显示或设置网卡(查ip等)(类似windows中ipconfig) ping -c 3 www.baidu.com :测试百度与本机的连接情况( -c 3表示测试3次) cat /proc/cpuinfo :显示CPU的信息 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l :查看物理CPU个数 cat /proc/cpuinfo| grep "cpu cores"| uniq :查看每个物理CPU的核数 cat /proc/cpuinfo| grep "processor"| wc -l :查看逻辑CPU个数即线程数 系统性能 top :动态实时显示cpu、内存、进程等使用情况(类似windows下的任务管理器) top -d 2 -p 7427 :-d为画面更新的秒数,默认5秒,-p为指定进程pid的信息 vmstat 2 10 :每隔2秒采集一次服务器状态,采集10次(查看内存、io读写状态、cpu) free -h :查看系统内存及虚拟内存使用情况 df -h :显示磁盘的空间使用情况 iostat :可查io读写、cpu使用情况 sar -u 3 5 :查看cpu使用情况(3秒一次,共5次) sar -d 2 3 :评估磁盘性能 ps aux|grep firefox :获取火狐的进程号(PID)(可查看进程占用cpu、内存百分比及进程触发指令的路径) kill -9 进程号 :强制杀死进程 systemctl :查看正在运行的服务 文件和目录 ​ cd:是Change Directory的缩写,用来切换工作目录,语法:cd [相对或绝对路径或特殊符号]

cd :进入该用户的主目录 ~(root用户为/root,其他用户为/home/用户名)

cd .. :返回上一级目录(注意要空格)

cd - :返回上次所在目录

cd / :返回根目录 (绝对路径)

cd ./目录1/目录2 :进入当前目录下的子目录(相对路径)

pwd :显示工作路径(Print Working Directory 的缩写)

​ls:是List的缩写,用于列出目录下的文件,语法:ls [选项][目录或文件名]

ls -a :列出文件下所有的文件,包括以“.“开头的隐藏文件

ls -lh *.log :列出文件的详细信息(.log结尾,*为通配符代表任意多个字符)

file 文件或目录 :显示文件的类型(目录、text、zip、shell脚本等)

mkdir dir1 :创建目录(dir1)(mkdir为make directory的缩写)

mkdir -p ./dir1/dir2 :递归创建目录(-p:父目录不存在时,同时建立)

touch a.txt :创建文件a.txt

​rm:可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉; 语法:rm (选项)(参数)(注:如果参数中含有目录,则必须加上-r选项);

rm 文件 :删除文件

rm -r 目录或文件 :删除目录(及目录下所有文件)(非空也可以)

rm -rf 目录或文件 :强制删除,如:rm -rf * 为删除当前目录下所有文件

find -inum 1842601 -exec rm -rf {} ; :删除乱码文件或目录(会提示找不到此文件或文件夹但其实已经删除了)(上传中文文件会乱码,rm命令删除不了)(先使用ls -i命令找到inode,即文件或目录前面的数字字符串,如1842601;)

​mv:是move的缩写,可以用来剪切移动文件、目录或者将文件改名;

语法:mv 源文件 目标文件(改名)或目录(移动);

mv a b :移动或者重命名一个文件或者目录(存在即移动目录或覆盖文件,不存在即改名)

mv /opt/git/g /opt/a :移动g到opt目录下并改名为a(a目录不存在,若存在则为移动g到a目录下)

mv -t ./test a.txt b.txt :移动多个文件到某目录下

​cp:复制文件或目录;cp命令可以将单个或多个文件复制到一个已经存在的目录下;

常用:cp -ai 文件或目录 目标目录;

cp -ai /opt/abc /opt/git/ :复制abc目录(或文件)到git目录下(选项a表示文件的属性也复制、目录下所有文件都复制;i表示覆盖前询问)

​ln:link的缩写,用于建立硬(软)链接,常用于软件安装时建软链接(类似快捷方式)到PATH;

语法:ln [-s] 源文件 目标文件

ln -s /opt/a.txt /opt/git/ :对文件创建软链接(快捷方式不改名还是a.txt) ln -s /opt/a.txt /opt/git/b :(快捷方式改名为b)(下面的一样可以改名) ln -s /opt/mulu /opt/git/ :对目录创建软链接 ln /opt/a.txt /opt/git/ :对文件创建硬链接 文件权限 chmod [-R] 777文件或目录 :设置权限(chmod a+rwx a=chmod ugo +rwx a=chmod 777 a) ​注: r(read)对应4,w(write)对应2,x(execute)执行对应1; -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改)

chmod [{ugoa}{+-=}{rwx}][文件或目录] :如chmod u-w,g+x,o=r test.txt为user(拥有者)去掉写权限,group(所属组)加上执行权限,other(其他人)权限等于只读; chown [-R] admin:root /opt/ :变更文件及目录的拥有者和所属组(-R递归处理所有文件和文件夹,admin为拥有者,root为所属者) 文件查找 locate a.txt :在系统全局范围内查找文件名包含a.txt字样的文件(比find快); ​locate:原理是updatedb会把文件系统中的信息存放到数据库databases中(但一般一天才执行一次,所以locate找不到新创建的文件,需要先手动执行updatedb,再执行locate),locate从数据库中读数据;

​ find:在目录结构中搜索文件,并执行指定的操作 语法:find pathname -options [-print -exec ...] pathname :为 find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录(find查找范围为目标目录及其子目录所有文件及目录); -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和\;之间的空格; -print: find命令将匹配的文件输出到标准输出;

find /home -mtime -2 :在/home下查最近2*24小时内改动过的文件

find . -size +100M :在当前目录及子目录下查找大于100M的文件

find . -type f :f表示文件类型为普通文件(b/d/c/p/l/f 分别为块设备、目录、字符设备、管道、符号链接、普通文件)

find . -mtime +2 -exec rm {} ; :查出更改时间在2*24小时以前的文件并删除它**

find . -name '*.log' -exec grep -i hello {} ; -print :在当前目录及子目录下查出文件名后缀为.log的文件并且该文件内容包含了hello字样并打印,-exec 命令 {} \表示对查出文件操作,-i表示不区分大小写;

find . -name '*.log'|grep hello :在当前目录及子目录下查出文件名后缀为.log的文件并且文件名包含了hello字样(grep用来处理字符串);

grep -i 'HELLO' . -r -n :在当前目录及子目录下查找文件内容中包含hello的文件并显示文件路径(-i表示忽略大小写)

which java :在环境变量$PATH设置的目录里查找符合条件的文件,并显示路径(查询运行文件所在路径)

whereis java :查看安装的软件的所有的文件路径(whereis 只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令)

查看文件的内容 cat [-n] 文件名 :显示文件内容,连行号一起显示

less 文件名 :一页一页的显示文件内容(搜索翻页同man命令)

head [-n] 文件名 :显示文件头n行内容,n指定显示多少行

tail [-nf] 文件名:显示文件尾几行内容,n指定显示多少行,f用于实时追踪文件的所有更新,常用于查阅正在改变的日志文件(如tail -f -n 3 a.log 表示开始显示最后3行,并在文件更新时实时追加显示,没有-n默认10行)

sed -n '2,$p' ab :显示第二行到最后一行;

sed -n '/搜索的关键词/p' a.txt :显示包括关键词所在行

less a.txt |grep 搜索的关键词 :显示包括关键词所在行

cat -n a.txt |grep 搜索的关键词 :显示包括关键词所在行(连行号一起显示)

cat filename |grep abc -A10 :查看filename中含有abc所在行后10行(A10)、前10行(B10)内容

less a.txt|grep git :显示关键词所在行,管道符”|”它只能处理由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后传递给下一个命令,作为标准的输入;

cat /etc/passwd |awk -F ':' '{print $1}' :显示第一列

文本处理 ls -l>file :输出重定向>(改变原来系统命令的默认执行方式):ls -l命令结果输出到file文件中,若存在,则覆盖

cat file1 >>file :输出重定向之cat命令结果输出追加到file文件(>表示覆盖原文件内容,>>表示追加内容)

ls fileno 2>file : 2>表示重定向标准错误输出(文件不存在,报错信息保存至file文件);

cowsay <a.txt :重定向标准输入’命令<文件’表示将文件做为命令的输入(为从文件读数据作为输入)

sed -i '4,da.txt:删除第四行到最后一行(d' a.txt :删除第四行到最后一行(表示最后一行)(sed可以增删改查文件内容)

sed -i '$a 增加的字符串' a.txt :在最后一行的下一行增加字符串

sed -i 's/old/new/g' a.txt :替换字符串;格式为sed 's/要替换的字符串/新的字符串/g' 修改的文件

grep -o '关键词' test.log|wc -l :统计某个关键词在某个文件中出现的次数(如出现3次输出3)

vim 文件:编辑查看文件(同vi)

用户与权限 useradd 用户名 :创建用户

userdel -r 用户名 :删除用户:(-r表示把用户的主目录一起删除)

usermod -g 组名 用户名 :修改用户的组

usermod -aG 组名 用户名 :将用户添加到组

groups test :查看test用户所在的组

cat /etc/group |grep test :查看test用户详情:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

passwd [ludf] 用户名 :用户改自己密码,不需要输入用户名,选项-d:指定空口令,-l:禁用某用户,-u解禁某用户,-f:强迫用户下次登录时修改口令

groupadd 组名 :创建用户组

groupdel 用户组 :删除组

groupmod -n 新组名 旧组名 :修改用户组名字

su - 用户名:完整的切换到一个用户环境(相当于登录)(建议用这个)(退出用户:exit)

su 用户名 :切换到用户的身份(环境变量等没变,导致很多命令要加上绝对路径才能执行)

sudo 命令 :以root的身份执行命令(输入用户自己的密码,而su为输入要切换用户的密码,普通用户需设置/etc/sudoers才可用sudo)

SSH 免密登录 :

#使用OpenSSH生成密钥 ssh-keygen -t rsa #公钥信息写入authorized_keys文件中并设置权限 cd ~/.ssh cat id_rsa.pub >> authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys #生成putty的私钥(Putty使用的私钥格式和OpenSSH生成的有点不同,需要转换一下putty才能使用) 把私钥id_rsa下载到本地后后缀改成.ppk,如id_rsa_ip_commonuser.ppk 使用puttygen工具的“Load”读取id_rsa文件,点击“Save private key”保留私钥; putty关联私钥文件即可登陆服务器 磁盘管理 fdisk -l :查看磁盘信息(可查各个硬盘容量大小、可查各硬盘分区情况)(各硬盘或硬盘下分区必须挂载到某个目录才能被使用)

fdisk /dev/sdb :对硬盘sdb创建分区

mkfs.ext4 /dev/vdb1 :修改格式化硬盘分区vdb1的文件系统类型为ext4

df -TH :显示磁盘的空间使用情况、文件系统类型、挂载点(硬盘挂载了才会显示)

df -h /var/log :(显示log所在分区(挂载点)、目录所在磁盘及可用的磁盘容量)

du -sm /var/log/ | sort -rn* : 根据占用磁盘空间大小排序(MB)某目录下文件和目录大小

mount /dev/sda1 /mnt :硬盘sda1挂载到/mnt目录(mount 装置文件名 挂载点)

mount -t cifs -o username=luolanguo,password=win用户账号密码,vers=3.0 //10.2.1.178/G /mnt/usb :远程linux 共享挂载windows的U盘,G为U盘共享名,需设置U盘共享

mount -o loop /opt/soft/CentOS-7-x86_64-DVD-1708.iso /media/CentOS :挂载iso文件

umount /dev/sda1 :取消挂载(umount 装置文件名或挂载点)

压缩、解压和打包备份 ​ 单纯tar仅为打包(多个文件包成一个大文件),加上参数-j(bzip2格式.bz2)、-z(gzip格式.gz)可以备份、压缩(-c)、解压(-x),备份一般比压缩多加参数-p(保留原本文件的权限与属性),-C可以指定解压到特定目录;bzip2、gzip只能对单一文件压缩;

file 文件名 :查文件类型(可看是用哪一种方式压缩的)

tar -zxvf a.tar.gz -C ./test :解压tar.gz到当前目录下的test目录

tar -zcvf /opt/c.tar.gz ./a/ :压缩tar.gz(把当前目录下的a目录及目录下所有文件压缩为 /opt/目录下的c.tar.gz,这样tar -zxvf c.tar.gz解压出来带有目录a)

tar -jxvf a.tar.bz2 :解压tar.bz2(到当前目录)

tar -jcvf c.tar.bz2 ./a/ :压缩tar.bz2(把当前目录下的a目录及目录下所有文件压缩到当前目录下为c.tar.gz2)

unzip a.zip :解压zip(到当前目录)

unzip -o mdmtest.war -d /opt/mdm :推荐使用unzip解压war包(-o覆盖原有文件,-d指定文件解压后存储的目录)

zip -r c.zip ./a/ :压缩zip(把当前目录下的a目录及目录下所有文件压缩到当前目录下为c.zip

bzip2 -k file1 : 压缩一个 'file1' 的文件(-k表示保留源文件)(bzip2格式,比gzip好)

bzip2 -d -k file1.bz2 : 解压一个叫做 'file1.bz2'的文件

gzip file1 : 压缩一个叫做 'file1'的文件(gzip格式)(不能保留源文件)

gzip -9 file1 : 最大程度压缩

gzip -d file1.gz : 解压缩一个叫做 'file1'的文件

软件安装 尽量用yum源(apt-get)安装,不行就rpm、deb包安装,能不手动编译的就不要手动编译; dpkg只能安装已经下载到本地机器上的deb包. apt-get能在线下载并安装deb包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是dpkg工具所不具备的; rpm 只能安装已经下载到本地机器上的rpm 包. yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的; yum、rpm安装文件分布在/usr的bin、lib、share不同目录,不用配置PATH,直接用命令,但可用命令卸载更新; 手动编译软件,默认位置为/usr/local下不同子目录下,不用配置PATH直接用命令(手动指定安装路径需要加PATH),使得软件更新和删除变得很麻烦。编译安装的软件没有卸载命令,卸载就是把所有这个软件的文件删除。 二进制(Binaries)包 yum安装 ​ 在线下载并安装rpm包,适用于CentOS、Fedora、RedHat及类似系统

yum install epel-releas :安装第三方yum源EPEL(企业版 Linux 附加软件包的简称) yum repolist enabled :显示可用的源仓库(/etc/yum.repos.d/目录下配置) yum install yum-fastestmirror :自动选择最快的yum源 yum list installed |grep java :列出已安装的软件(查看已安装的JDK) yum remove java-1.8.0-openjdk.x86_64 :卸载软件(卸载JDK) *yum list java ** :列出已安装和可安装的软件(查看yum库中的JDK包) yum install [-y] java-1.8.0-openjdk :安装软件JDK(-y自动安装)(推荐这种方式安装) yum install docker-ce-18.03.1.ce :安装指定版本的软件(已知docker-ce.x86_64 18.03.1.ce-1.el7.centos,则rpm包名为docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm) **yum check-update [kernel] ** :列出所有可更新的软件(检查更新kernel) yum update tomcat :更新软件(可所有) rpm -ql 软件名称 :查询yum安装路径(软件名称可通过rpm -qa|grep java) yum info kernel :查看软件(kernel)的信息 yum clean all :(清除缓存,使最新的yum配置生效) yum安装常用工具 yum install -y unzip zip :安装压缩、解压缩命令(zip、unzip) rpm包手动下载安装 ​ yum中没有时用,适用于CentOS、Fedora、RedHat及类似系统;

wget -P /opt https://网址 :下载到/opt目录

rpm -ivh wps-office-版本.x86_64.rpm :安装rpm包(包要先下载)(要先装依赖包)

rpm -e wps-office :卸载软件(注意不要软件名不要版本号)

rpm -qa |grep wps :查看安装的rpm包(可用于查询rpm包是否被安装)

rpm -ql 软件名称 :查看rpm包安装路径(软件名称可通过rpm -qa|grep java)

apt方式安装 ​ 安装deb包,类似yum安装,适用于Debian, Ubuntu 以及类似系统;

apt-get install aptitude :安装aptitude工具,实现依赖自动安装,依赖版本自动降级或升级

aptitude install 软件 :安装软件(推荐这种方式安装)

apt-cache search 软件 :搜索软件

apt-get install 软件 :安装软件

apt-get purge 软件 :卸载软件(包括配置文件,只删除软件purge换成remove)

apt-get upgrade :更新所有已安装的软件包

apt-get update :升级列表中的软件包

apt-get clean :从下载的软件包中清理缓存

deb包安装 ​ 适用于Debian, Ubuntu 以及类似系统;

dpkg -i package.deb :安装一个 deb 包 dpkg -r package_name :从系统删除一个 deb 包 dpkg -l |grep chrome :查询系统中所有已经安装的 deb 包 dpkg -L 软件名称 :查软件安装的文件 解压即用 ​ 大多数非开源的商业软件都采取这种办法;

​ 二进制(Binaries)包如apache-jmeter-3.3.tgz,下载复制解压到/opt,然后然后将该软件的 bin 目录加入到 PATH 中即可(vim /etc/profile export PATH=$PATH:/opt/apache-jmeter-3.3/bin);

软件自己的模块/包管理器 ​ 如python:系统的源中不可能包含该软件的所有模块; 系统的源中该软件的模块的更新要远远滞后于最新版本;手动安装python,并用Python 自带的 pip 安装模块(类似yum);

**pip install redis ** :安装python软件包redis **pip unstall redis ** :卸载 **pip show --files redis ** :pip查看已安装的包 pip list --outdated :检查更新 源代码(Source)包 编译安装 ​ 源代码包(一般有install文件)如hello-2.2.tar.bz2,下载复制到/opt;

tar -jxvf hello-2.2.tar.bz2 :解压 ./configure --prefix=/opt/软件目录名称 :为编译做好准备,加上 prefix 手动指定安装路径 make :编译 make install :安装 make clean :删除安装时产生的临时文件 vim /etc/profile export PATH=$PATH:/opt/目录/bin :手动指定安装路径需要加path hello :执行软件:看INSTALL和README文件(是否源码包、如何安装、执行都看这两个) rm -rf 软件目录名称 :卸载软件 服务与进程 netstat -ntlp :查看服务器所有被占用端口 netstat -lnp|grep 端口号/进程号/进程名 :根据查端口是否打开确认服务是否启动,配合ps命令可查服务占用的端口 常用参数: -p:获取进程名、进程号; -n:禁用域名解析功能,查出IP且速度快; -l:只列出监听中的连接; -t:只列出 TCP协议的连接。 示例:ps aux|grep tomcat netstat -lnp|grep 进程号 :查tomcat服务占用的端口; ps aux|grep 进程号/进程启动命令/服务名 :进程查看命令ps(可查进程状态;进程占用cpu、内存;配合netstat根据某服务端口查出进程号用于杀进程,查服务启动命令及服务路径 )

详解

一、日常使用命令/常用快捷键命令

开关机命令

        1、shutdown –h now:立刻进行关机

        2、shutdown –r now:现在重新启动计算机

        3、reboot:现在重新启动计算机

        4、su -:切换用户;passwd:修改用户密码

        5、logout:用户注销

常用快捷命令

        1、tab = 补全

        2、ctrl + l -:清屏,类似clear命令

        3、ctrl + r -:查找历史命令(history);ctrl+c = 终止

        4、ctrl+k = 删除此处至末尾所有内容

        5、ctrl+u = 删除此处至开始所有内容

常用工具命令

man:帮助命令     wc:文本统计统计         wordcount          3      5         29         a.txt          行数    单词数    字符数    文件名         常见参数:             -l:只查看行数             -w: 只查看单词数             -c:只查看字符数     du:文件大小统计         格式:du [选项参数] dir_path         常见参数:                 -s:只统计该文件目录的大小,不递归                 -h:人性化的显示单位     find:文件检索命令

语法

find path -option [ -print ] [ -exec -ok command ] {} ;

参数说明 :

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去n天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去n天内被修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。

d: 目录

c: 字型装置文件

b: 区块装置文件

p: 具名贮列

f: 一般文件

l: 符号连结

s: socket

-pid n : process id 是 n 的文件

你可以使用 ( ) 将运算式分隔,并使用下列运算。

exp1 -and exp2

! expr

-not expr

exp1 -or exp2

exp1, exp2 实例

将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

find . -name "*.c"

将目前目录其其下子目录中所有一般文件列出

find . -type f

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

find . -ctime -20

查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

find /var/log -type f -mtime +7 -ok rm {} ;

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

find . -type f -perm 644 -exec ls -l {} ;

为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

find / -type f -size 0 -exec ls -l {} ;

二、常用目录/文件操作命令

1.展示目录列表命令ls(list)

  ls             展示当前目录下的可见文件   ls -a         展示当前目录下所有的文件(包括隐藏的文件)   ls -l(ll)      展示当前目录下文件的详细信息   ll -a          展示当前目录下所有文件的详细信息   ll -h          友好的显示当前目录下文件的详细信息(其实就是文件的大小可读性更强了)

  pwd:显示目前的目录

2.切换目录命令cd(change directory)

  cd test         切换到test目录下   cd .. 切换到上一级目录   cd / 切换到系统根目录下   cd ~ 切换到当前用户的根目录下   cd - 切换到上一级所在的目录

3.目录的创建(mkdir)和删除(rmdir)命令

  mkdir test 在当前目录下创建一个test目录   mkdir -p test/a/b 在test目录下的a目录下创建一个b目录,如果上一级目录不存在,则连它的父目录一起创建   rmdir test 删除当前目录下的test目录(注意:该命令只能够删除空目录)

4.文件的创建(touch)和删除(rm)命令

  touch test.txt         在当前目录下创建一个test.txt的文件   rm test.txt 删除test.txt的文件(带询问的删除,需输入y才能删除)   rm -f test.txt 直接删除text.txt文件   rm -r test 递归删除,即删除test目录以及其目录下的子目录(带询问的删除)   rm -rf test 直接删除test目录以及其目录下的子目录

5.文件打包或解压命令tar

打包并压缩文件 Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。

而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。

命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件

其中:z:调用gzip压缩命令进行压缩

  c:打包文件

  v:显示运行过程

  f:指定文件名

示例:打包并压缩/test下的所有文件 压缩后的压缩包指定名称为xxx.tar.gz

tar -zcvf xxx.tar.gz aaa.txt bbb.txt ccc.txt

或:tar -zcvf xxx.tar.gz /test/*

解压压缩包(重点) 命令:tar [-xvf] 压缩文件

其中:x:代表解压

示例:将/test下的xxx.tar.gz解压到当前目录下

 

   

tar -xvf xxx.tar.gz

示例:将/test下的xxx.tar.gz解压到根目录/usr下

tar -xvf xxx.tar.gz -C /usr------C代表指定解压的位置

Linux的权限命令 权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限

 

文件的类型:

d:代表目录

-:代表文件

l:代表链接(可以认为是window中的快捷方式)

后面的9位分为3组,每3位置一组,分别代表属主的权限,与当前用户同组的     用户的权限,其他用户的权限

r:代表权限是可读,r也可以用数字4表示

w:代表权限是可写,w也可以用数字2表示

x:代表权限是可执行,x也可以用数字1表示

 

 

属主(user) 属组(group) 其他用户

linux中用户的分类         小李     小李对象    老王         所有者u    同组用户g    其他人o     linux中文件权限         读r        写w        执行x    没有权限-              文件详情信息:         -rw-r--r--. 1 root root       5 Aug 28 02:27 a.txt             d rwx r-x r-x. 2 root root    4096 Aug 27 08:52 test         第一位:d:目录,-:文件         rw-                r--                r--         所有者           同组用户        其他人         只有读写          只有读            只有读              1:该文件的链接数     root:文件所属者     root:文件所属组      5 Aug 28 02:27:最后的修改时间

修改文件/目录的权限的命令:chmod

示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,

其他用户只有读的权限

chmod u=rwx,g=rw,o=r aaa.txt

上述示例还可以使用数字表示:

chmod 764 aaa.txt

 

修改文件的所属用户和所属组 chown         chown username:groupName aa.txt         chown username: aa.txt         chown :groupName aa.txt              -R:递归子目录修改所属者和所属组

三、文件/文件夹的cp rm及文件的查看

cp (复制文件或目录)

cp 即拷贝文件和目录。

语法:

[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) [root@www ~]# cp [options] source1 source2 source3 .... directory 选项与参数:

-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)

-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;

-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);

-r:递归持续复制,用於目录的复制行为;(常用)

-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;

-u:若 destination 比 source 旧才升级 destination !

用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc

[root@www ~]# cp ~/.bashrc /tmp/bashrc [root@www ~]# cp -i ~/.bashrc /tmp/bashrc cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖 rm (移除文件或目录)

语法:

rm [-fir] 文件或目录 选项与参数:

-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息; -i :互动模式,在删除前会询问使用者是否动作 -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!   将刚刚在 cp 的实例中创建的 bashrc 删除掉!

[root@www tmp]# rm -i bashrc rm: remove regular file `bashrc'? y 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

mv (移动文件与目录,或修改名称)

语法:

[root@www ~]# mv [-fiu] source destination [root@www ~]# mv [options] source1 source2 source3 .... directory 选项与参数:

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会升级 (update) 复制一文件,创建一目录,将文件移动到目录中

[root@www ~]# cd /tmp [root@www tmp]# cp ~/.bashrc bashrc [root@www tmp]# mkdir mvtest [root@www tmp]# mv bashrc mvtest 将某个文件移动到某个目录去,就是这样做!

将刚刚的目录名称更名为 mvtest2

[root@www tmp]# mv mvtest mvtest2 Linux 文件内容查看

Linux系统中使用以下命令来查看文件的内容:

cat  由第一行开始显示文件内容 tac  从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl   显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似,但是比 more 更好的是,他可以往前翻页! head 只看头几行 tail 只看尾巴几行 你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

cat

由第一行开始显示文件内容

语法:

cat [-AbEnTv] 选项与参数:

-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已; -b :列出行号,仅针对非空白行做行号显示,空白行不标行号! -E :将结尾的断行字节 $ 显示出来; -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同; -T :将 [tab] 按键以 ^I 显示出来; -v :列出一些看不出来的特殊字符 检看 /etc/issue 这个文件的内容:

[root@www ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m tac

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:

[root@www ~]# tac /etc/issue

Kernel \r on an \m CentOS release 6.4 (Final) nl

显示行号

语法:

nl [-bnw] 文件 选项与参数:

-b :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出行号(类似 cat -n); -b t :如果有空行,空的那一行不要列出行号(默认值); -n :列出行号表示的方法,主要有三种: -n ln :行号在荧幕的最左方显示; -n rn :行号在自己栏位的最右方显示,且不加 0 ; -n rz :行号在自己栏位的最右方显示,且加 0 ; -w :行号栏位的占用的位数。 实例一:用 nl 列出 /etc/issue 的内容

[root@www ~]# nl /etc/issue 1 CentOS release 6.4 (Final) 2 Kernel \r on an \m more

一页一页翻动

[root@www ~]# more /etc/man.config

Generated automatically from man.conf.in by the

configure script.

man.conf from man-1.6d

....(中间省略).... --More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令 在 more 这个程序的运行过程中,你有几个按键可以按的:

空白键 (space):代表向下翻一页; Enter         :代表向下翻『一行』; /字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字; :f            :立刻显示出档名以及目前显示的行数; q             :代表立刻离开 more ,不再显示该文件内容。 b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。 less

一页一页翻动,以下实例输出/etc/man.config文件的内容:

[root@www ~]# less /etc/man.config

Generated automatically from man.conf.in by the

configure script.

man.conf from man-1.6d

....(中间省略).... : <== 这里可以等待你输入命令! less运行时可以输入的命令有:

空白键    :向下翻动一页; [pagedown]:向下翻动一页; [pageup]  :向上翻动一页; /字串     :向下搜寻『字串』的功能; ?字串     :向上搜寻『字串』的功能; n         :重复前一个搜寻 (与 / 或 ? 有关!) N         :反向的重复前一个搜寻 (与 / 或 ? 有关!) q         :离开 less 这个程序; head

取出文件前面几行

语法:

head [-n number] 文件 选项与参数:

-n :后面接数字,代表显示几行的意思 [root@www ~]# head /etc/man.config 默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

[root@www ~]# head -n 20 /etc/man.config tail

取出文件后面几行

语法:

tail [-n number] 文件 选项与参数:

-n :后面接数字,代表显示几行的意思 -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测 [root@www ~]# tail /etc/man.config

默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:

[root@www ~]# tail -n 20 /etc/man.config 系统常用操作命令

visudo:编辑sudo命令的配置         编辑第98行         ## Allow root to run any commands anywhere             root    ALL=(ALL)                               ALL             用户名  登录的主机=(以什么样的身份运行)  可以执行什么命令         如果想让huadian用户也居于root相关权限。。             huadian  ALL=(root)  NOPASSWD:service iptables status             huadian  ALL=(root)  NOPASSWD:service iptables start         推荐用法                 huadian  ALL=(root)  NOPASSWD:ALL                      使用权限:sudo     service iptables status  ----(检查防火墙状态)

网络管理:ping、ifconfig     服务管理命令:         service:必须掌握             格式:                 service s_name start|stop|status|restart             linux系统所有自带服务名称:/etc/init.d/                 常用:                     关闭防火墙服务                     service iptables stop                     重启网络服务:                     service network restart                     mysql数据库服务的名称:                         mysql版本低于5.5  mysqld                         mysql版本高于5.5  mysql                      chkconfig:设置是否开机启动           :必须掌握             判定是否开机启动                 chkconfig iptables --list                 2.3.4.5是on表示开机启动             设置                 chkconfig iptables on|off                          进程管理:ps         ps:查当前进程             查看java的进程             ps -ef | grep java         jps:==(ps -ef | grep java) 只有在linux中安装了JDK才能用         kill :杀死某个进程             kill -9 pid                  端口管理         nststat:查看端口开放情况             -a:表示列举所有的连接、服务器监听             -t:列出所有tcp协议的服务             -u:列出所有udp协议的服务             -n:使用端口号来显示             -l:列出所有的监听             -p:列出所有服务的进程id(pid)             常用:netstat -atunlp              redhat的selinux安全机制         关闭selinux安全机制             vim /etc/selinux/config                 SELINUX=disabled             重启机器生效