引言:Linux是一种自由和开放源码的类Unix操作系统,由最初的Unix演变而来。如今Linux有很多种类,但大都可分为两个版本:基于redhat的版本和基于debian的版本。
一、预备知识
1、文件命名规则
1)除了/外,所有字符均合法
2)不建议使用某些特殊字符,如空格、制表符、退格符和字符@#$&()-等
3)避免使用.作为普通文件名的第一个字符(Linux隐藏文件名都以.开头)
4)大小写敏感(Windows大小写不敏感)
2、特殊介绍
1).(一个点)表示当前目录
2)..(两个点)表示父目录
3)执行命令时,任何时候按ctrl+c都会结束命令
3、命令执行权限
1)管理员root执行的命令,命令存放路径/sbin或/usr/sbin
2)所有用户可执行的命令,命令存放路径/bin或/usr/bin
二、Linux常用命令
-----------------------------------------------------------文件处理命令--------------------------------------------------------------------
(一)文件处理命令
1、显示目录文件,ls命令(英文:list)
语法:ls选项[-ald][文件或目录]
选项:1)-a显示所有文件,包括隐藏文件(英文:all)。
2)-l详细信息显示,长格式(英文:long)。详细信息格式如:drwxr-xr-x2hduhanshduhansAug2204:04Desktop,格式说明:
①详细信息第一列10个字符格式如:drwxr-xr-x。
⑴其中第一个字母说明文件类型。文件类型:①d目录文件directory②-二进制文件③l软链接文件link
⑵将剩余的9个字符每三个分组,如:rwxr-xr-x
Ⅰ)权限分类:a、r-read读权限;b、w-write写权限;c、x-execute执行权限
Ⅱ)Linux用户分为:a、所有者u(英文:user);b、所属组g(英文:group);c、其他人o(英文:others)
Ⅲ)分组后的字符分别代表所有者、所属组和其他人的权限
⑶结合上述,drwxr-xr-x表示:此文件是一个目录文件,他的所有者拥有读写和执行权限,他的所属组拥有读和执行权限,其他人拥有读和执行权限
3)-d查看目录属性(英文:directory)
4)-R递归显示目录及目录下的所有子文件
2、切换目录,cd命令(英文:changedirectory)
语法:cd[目录]
范例:$cd/--切换至根目录
$cd..--切换到上一级目录
3、显示当前所在的工作目录,pwd命令(英文:printworkingdirectory)
4、创建空文件,touch命令
语法:touch[文件名]
5、创建新目录,mkdir命令(英文:makedirectories)
语法:mkdir[目录名]
mkdir-p[目录名1/目录名2]--一次性创建多级目录
6、复制文件或目录,cp命令(英文:copy)
语法:cp-R[源文件或目录][目的目录]
cp-a拷贝目录并设置相同的属性(权限等)
注:1)复制目录是必须加-R参数
2)可同时复制多个文件或目录,最后一个位目的目录
7、移动文件、更改文件名,mv命令(英文:move)
语法:mv[源文件或目录][目的目录]
范例:mvxmlmyxml--将xml文件重命名为myxml
8、删除文件,rm命令(英文:remove)
语法:rm-r[文件或目录]
注:1)删除目录必须加-r参数
2)rmdir是删除空目录,目录中有内容则无法删除,rmdir命令使用很少
9、显示文件内容,cat命令(英文:concatenateanddisplayfiles)
语法:cat[文件名]
10、分页显示文件内容,more命令与less命令
语法:more|less[文件名]
(空格)或f显示下一页
(Enter)回车显示下一行
q或Q退出显示
less命令不仅能向下翻,也支持向上翻,通过PageUp和PageDown键
11、查看文件的前几行,head命令
语法:head-num[文件名]
范例:head-20/ect/services--查看/etc/services文件的前20行
12、查看文件的后几行,tail命令
语法:tail-num[文件名]
-f动态显示文件内容
13、创建链接文件,ln命令(英文:link)
语法:ln[源文件][目标文件]
-s创建软链接
范例:ln-smyfilemyfile.soft--创建myfile文件的软链接(超链,源文件删除后软链接无法访问,可以跨分区创建)
lnmyfilemyfile.hard--创建myfile文件的硬链接(硬链接所有属性与源文件一致,类似于源文件的副本,源文件删除后仍可以访问,不能跨分区创建)
-----------------------------------------------------------权限管理命令--------------------------------------------------------------------
(二)权限管理命令
1、改变文件或目录权限,chmod命令(英文:changethepermissionsmodeofafile)
语法:chmod[{ugo}{+-=}{rwx}][文件或目录]
范例:chmodg+wxmyfile--给文件myfile增加所属组的写和执行的权限
chmodo=rmyfile--给文件myfile赋予其他人读权限
chmod661myfile(推荐方法)--给文件myfile快捷设置权限,对所有者和所属组权限为读写权限,对其他人只有执行权限
注:1)ugo分别是所有者、所属组和其他人,详见ls命令
2)rwx分别是读、写和执行权限,对应权限数字分别为4、2和1
rwxr-xr--=》754
7->读写执行6->读写5->读执行4->只读3->写执行2->只写1->只执行
3)rwx对于文件和目录的含义是不一样的,设置权限时需注意。
a、对文件,r-可以查看文件内容,w-可以修改文件内容,x-可以执行文件
b、对目录,r-可以列出目录中内容,w-可以在目录中创建删除文件,x-可以进入目录
2、改变文件或目录的所有者,chown命令(英文:changefileownership)
语法:chown[用户][文件或目录]
-R--改变文件和文件下的所有子文件
范例:chownnobodymyfile--改变文件myfile的所有者为nobody
3、改变文件或目录的所属组,chgrp(英文:changefilegroupownership)
语法:chgrp[用户组][文件或目录]
4、显示和设置文件的默认权限,umask命令
语法:umask
范例:①umask--获取当前文件设置的默认值,显示值为4位,如0002,第一位是特殊权限位,后三位表示ugo的权限掩码值,用最大的权限值666-002=664,即文件对ugo的权限分别为664,目录对ugo的权限分别为775(777-002=775)
②umask000--更改文件和目录的默认权限,000位权限掩码值,实际值应当最大权限对应值-000
注:1)linux权限规则定创建的文件不能授予可执行权限
2)目录最大权限777,文件最大权限为666
-----------------------------------------------------------文件搜索命令--------------------------------------------------------------------
(三)文件搜索命令
1、显示系统命令所在目录,which命令
语法:which[命令名称]
范例:whichls--显示ls命令所在的目录
注:whereis命令与which类似,均可以显示命令所在的目录,区别是which可以额外显示命令的别名信息,whereis可以额外显示命令的帮助信息
2、查找文件或目录,find命令
语法:find[搜索路径][搜寻关键字]
范例:①find/test-namehans--查找/test目录下名为hans的文件或目录(相等查询)
find/test-namehans*--通配符,*匹配任意字符,包括0个字符
find/test-namehans--通配符,匹配单个字符
②find/test-size+2--查找/test目录下文件大小大于1K的文件或目录(这里数字表示数据库,1个数据库=512字节=0.5K)
find/test-size-2048--查找小于1M的文件或目录
③find/test-userhduhans--查找/test目录下文件所有者为hduhans的文件或目录
④find/test-cmin-120--查找/test目录下2个小时内被修改过属性的文件或目录
参数:1)单位:天。ctime,atime,mtime
2)单位:分钟。cmin,amin,mmin
3)c-change,文件属性被修改过;a-access,文件被访问过;m-modify,文件内容被修改过
4)-小于+大于
⑤find/test-namehans*-a-size+2048--查找/test目录下名称以hans开头并且大小大于1M的文件或目录
参数:1)-a逻辑与2)-o逻辑或
⑥find/test-typef--查找/test目录下所有的二进制文件
参数:1)f-二进制文件2)d-目录文件3)l-软链接文件
⑦find/test-namehans-execls-l{}\;--查找/test目录下名称位hans的目录或文件并执行命令ls-l
格式:-exec命令{}\;--固定格式{}表示find查询的结果,\转义符,符号命令使用本身的含义,;表示结束
⑧find/test-namehans-okls-l{}\;--作用同exec,区别是执行命令时会询问是否执行
⑨find.-inum267811-execrm{}\;--查找当前目录下文件inode=267811的文件并将其删除
说明:ls-i--显示文件的inode
3、寻找文件或目录,locate命令
语法:locate[搜索关键字]
注:1)locate命令查询速度非常快,是因为它检索的是文件系统数据库,因此新建的文件可能会搜不到
2)locate命令只在linux中使用,unix不包含此命令
4、建立系统目录文件的数据库,updatedb命令
语法:updatedb
注:此命令可与locate命令结合使用
5、在文件中搜索字符串匹配的行并输出,grep命令
语法:grep[指定字符串][源文件]
范例:grepftp/etc/services--在文件/etc/services中搜索包含字符串ftp的行并输出
-----------------------------------------------------------帮助命令--------------------------------------------------------------------
(四)帮助命令
1、获得命令帮助信息,man命令(英文:manual)
语法:man[命令或配置文件]
范例:manls--查看ls命令的帮助信息
2、获得命令帮助信息,info命令(英文:information)
语法:info[任何关键字]
注:info使用与man类似
3、获得索引的简短说明信息,whatis命令
语法:whatisapropos[任何关键字]
范例:whatisls--查看ls命令的简短说明信息
-----------------------------------------------------------压缩解压命令--------------------------------------------------------------------
(五)压缩解压命令
1、压缩解压gz格式文件,gzip命令(英文:GNUzip)
语法:gzip选项[文件]
范例:gzipmyfile--压缩myfile文件,压缩后myfile.gz
gzip-dmyfile.gz--解压缩myfile.gz文件
gunzipmyfile.gz--家也所myfile.gz文件,同gzip-d
注:1)linux常见压缩文件格式:①.gz②.tar.gz(源码文件)③.zip(windows和linux通用文件格式)④.bz2(与gz类似)⑤⑥⑦
2)gzip命令只能压缩文件,不能压缩目录
3)gzip命令压缩完不保留原文件
2、打包.tar.gz目录,tar命令
语法:tar选项[cvf][目录]
-c产生.tar打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩;解压缩
-x解包.tar文件
范例:1)tar-cfzfile.tar.gzfile--将当前目录下的file目录打包并压缩成file.tar.gz文件
2)tar-zxffile.tar.gz--将file.tar.gz文件解压缩到当前目录
注:1)互联网下载的.tar.gz文件一般为源码文件,源码打包压缩后生成,安装时需解压并编译
2)可随意指定压缩后的文件名,但建议后缀为.tar.gz,使用file命令可判断文件类型是否属于.tar.gz类型,如filefile.tar.gz
3、压缩解压zip格式文件或目录,zip命令
语法:zip选项[-r][压缩后文件名称][文件或目录]
-r压缩目录
范例:1)zipmyfile.zipmyfile--压缩文件myfile
2)zip-rfile.zipfile--压缩目录file(压缩目录如果不加-r参数,则只压缩目录文件夹,目录内的文件不会参与压缩)
3)unzipmyfile.zip--解压缩myfile.zip文件
注:1).zip压缩文件格式windows与linux通用
2)zip压缩后保留原文件
3)解压缩使用命令unzip
4、压缩解压.bz2文件,bzip2命令
语法:bzip2选项[-k][文件]
-k压缩后保留原文件
-d解压缩
范例:1)bzip2newfile--压缩newfile文件,压缩后文件newfile.bz2,压缩后不保留原文件newfile,此时bzip2命令与gzip命令几乎一样
2)bzip2-knewfile--同上,但压缩后保留原文件newfile
3)bzip2-dnewfile.bz2--解压缩newfile.bz2
注:bzip2命令与gzip命令几乎一致,区别是bzip2压缩时加-k参数压缩后可保留原文件
-----------------------------------------------------------网络通信命令--------------------------------------------------------------------
(六)网络通信命令
1、向另一个用户发信息,write命令
语法:write<用户名>--信息以Ctrl+D作为结束
2、向所有用户广播信息,wall命令
语法:wall[message][文件名]
3、测试网络连通性,ping命令
语法:ping选项IP地址
-c发送数据包次数
注:1)ping命令不会自动结束,只有按Ctrl+C才会结束,并显示统计结果(注意一下丢包率packageloss)
4、查看网络设置信息,ifconfig命令
语法:ifconfig选项[-a][网卡设备标识]
-a显示所有网卡信息
范例:1)ifconfig-a--查看所有网卡信息
2)ifconfigeth0192.168.1.1--将网卡eth0的IP地址更改为192.168.1.1
注:if是interface的简写
-----------------------------------------------------------常用shell技巧--------------------------------------------------------------------
(七)常用shell技巧
1、命令补齐,tab键
范例:1)ls-lmylearingtestfile--输入部分文件名后按tab键,系统可自动补全文件名
2、常用快捷键
1)清屏Ctrl+l
2)删除当前命令行Ctrl+U
3、浏览输入历史命令,history命令,系统会显示执行过的所有命令记录,输入!+对应命令编号,可执行对应的命令
范例:1)history--列出所有历史命令
2)!5--执行第5个命令
4、命令别名,alias命令和unalias命令
语法:alias
范例:1)alias--查看系统所有的别名
2)aliascopy=cp--定义copy为cp的别名
3)aliasxrm="rm-i"--定义xrm为命令组合rm-i的别名
4)unaliascopy--删除别名copy
5、重定向,输出(>和>>)、输入(<)和错误输出重定向(2>)
范例:1)ls-l>newfile--将ls-l命令执行的结果重定向输出到文件newfile中(写入方式:覆盖)
2)ls-l>>newfile--同上,区别是此时写入方式为追加
3)cp-R/user/backup/usr.back2>/back.error--将/user拷贝至/backup/usr.back,并将错误信息写入文件/back.error
注意:1)>写入方式是覆盖,>>写入方式是追加
2)0-STDIN,标准输入;1-STDOUT,标准输出;2-STDERR,标准错误输出
6、管道,将一个命令的输出传送给另一个命令,作为另一个命令的输入
范例:1)ls-l/etc|more--将ls-l/etc命令执行的结果作为more命令的参数输出
2)ls-l/etc|grepinit--在ls-l/etc命令执行的结果中查找包含init字符串的行
7、命令连接符
1);--用分号间隔的各命令按顺序依次执行
2)&&--前后命令执行存在逻辑与关系
例:command1&&command2,当command1命令执行成功后,command2命令才会执行,否则command2不执行
3)||--与&&对应,逻辑或
8、命令替换,将一个命令的输出作为另一个命令的参数
格式:命令1`命令2`
范例:ls-l`whichtouch`--查看touch命令所在文件的详细信息
注意:此处`是命令发替换符(键盘上数字1左边的键),并不是单引号
9、信息提取命令,文件内容提取特定的信息,awk命令
格式:awk-F分隔符
范例:1)awk-F:'$3==0{print$1}'/etc/passwd--查看所有系统管理员,/etc/passwd一行信息如:root:x:0:0:root:/root:/bin/bash
2)awk-F:'length($2){print$1}'/etc/shadow--查看密码长度长度为0的用户
-----------------------------------------------------------其他命令--------------------------------------------------------------------
(八)其他命令
1、显示日历,cal命令。
2、centos7开启防火墙端口例外
firewall-cmd--zone=public--add-port=80/tcp--permanent(--permanent永久生效,没有此参数重启后失效)
firewall-cmd--reload
firewall-cmd--zone=public--list-ports--查看开启端口
systemctlstopfirewalld.service--关闭防火墙
systemctlstartfirewalld.service--关闭防火墙
systemctlrestartfirewalld.service--重启防火墙
3、命令行下
Ctrl+a移至行首Ctrl+e移至行尾Ctrl+d删除光标所在处字符
4、top命令按内存和CPU排序
Shift+P或(大写开启下)P--按CPU使用率从上到下排序
Shift+M或(大写开启下)M--按内存使用率从上到下排序
5、shell下使用计算变量,需要转码
0008***sh/root/bin/test.sh>/root/bin/data-$(date+\%F).txt