代码改变世界

Linux常用命令

2013-08-26 19:28  hduhans  阅读(385)  评论(0)    收藏  举报

  引言: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-x 2 hduhans hduhans Aug 22 04:04 Desktop,格式说明:

        ① 详细信息第一列10个字符格式如:drwxr-xr-x。

          ⑴ 其中第一个字母说明文件类型。文件类型:① d 目录文件directory ② - 二进制文件 ③ l 软链接文件link

          ⑵ 将剩余的9个字符每三个分组,如:rwx r-x r-x

            Ⅰ) 权限分类:a、r-read读权限;b、w-write写权限;c、x-execute执行权限

            Ⅱ) Linux用户分为:a、所有者u(英文:user);b、所属组g(英文:group);c、其他人o(英文:others)

            Ⅲ) 分组后的字符分别代表所有者、所属组和其他人的权限

          ⑶ 结合上述,drwxr-xr-x表示:此文件是一个目录文件,他的所有者拥有读写和执行权限,他的所属组拥有读和执行权限,其他人拥有读和执行权限

        ② 第二列数字(本例:2)代表硬链接数,第三列(本例:hduhans)是文件所有者,第四列(本例:hduhans)是文件所属组,第五列(本例:4096)代表文件大小(此处文件大小数字并不是非常准确,查看文件大小一般通过其他方式),第六列(本例:Aug 22 04:04)代表文件创建或最近修改时间,第七列(本例:Desktop)代表文件名称

      3) -d 查看目录属性(英文:directory)

      4) -R 递归显示目录及目录下的所有子文件

2、切换目录,cd命令(英文:change directory)

    语法:cd [目录]

  范例:$ cd /    --切换至根目录

     $ cd ..   --切换到上一级目录

3、显示当前所在的工作目录,pwd命令(英文:print working directory)

4、创建空文件,touch命令

   语法:touch [文件名]

5、创建新目录,mkdir命令(英文:make directories)

   语法:mkdir [目录名]

      mkdir -p [目录名1/目录名2]   --一次性创建多级目录

6、复制文件或目录,cp命令(英文:copy)

   语法:cp -R [源文件或目录][目的目录]

             cp -a 拷贝目录并设置相同的属性(权限等)

注:1) 复制目录是必须加-R参数

  2) 可同时复制多个文件或目录,最后一个位目的目录

7、移动文件、更改文件名,mv命令(英文:move)

   语法:mv [源文件或目录] [目的目录]

   范例:mv xml myxml  --将xml文件重命名为myxml

8、删除文件,rm命令(英文:remove)

   语法:rm -r [文件或目录]

注:1) 删除目录必须加-r参数

  2) rmdir是删除空目录,目录中有内容则无法删除,rmdir命令使用很少

9、显示文件内容,cat命令(英文:concatenate and display files)

   语法:cat [文件名]

10、分页显示文件内容,more命令与less命令

   语法:more|less [文件名] 

      (空格)或f      显示下一页

      (Enter)回车  显示下一行

      q或Q           退出显示 

  less命令不仅能向下翻,也支持向上翻,通过Page Up和Page Down键

11、查看文件的前几行,head命令

   语法:head -num [文件名]

   范例:head -20 /ect/services   --查看/etc/services文件的前20行

12、查看文件的后几行,tail命令

   语法:tail -num [文件名]

             -f 动态显示文件内容

13、创建链接文件,ln命令(英文:link)

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

         -s  创建软链接

       范例:ln -s myfile myfile.soft  --创建myfile文件的软链接(超链,源文件删除后软链接无法访问,可以跨分区创建)

       ln myfile myfile.hard     --创建myfile文件的硬链接(硬链接所有属性与源文件一致,类似于源文件的副本,源文件删除后仍可以访问,不能跨分区创建)

-----------------------------------------------------------权限管理命令--------------------------------------------------------------------

(二) 权限管理命令

1、改变文件或目录权限,chmod命令(英文:change the permissions mode of a file)

   语法:chmod [{ugo}{+-=}{rwx}] [文件或目录]

   范例:chmod g+wx myfile  --给文件myfile增加所属组的写和执行的权限

      chmod o=r myfile  --给文件myfile赋予其他人读权限

      chmod 661 myfile (推荐方法)  --给文件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命令(英文:change file ownership)

   语法:chown [用户] [文件或目录]

        -R    --改变文件和文件下的所有子文件

   范例:chown nobody myfile   --改变文件myfile的所有者为nobody

3、改变文件或目录的所属组,chgrp(英文:change file group ownership)

   语法:chgrp [用户组] [文件或目录]

4、显示和设置文件的默认权限,umask命令

   语法:umask 

   范例:① umask   --获取当前文件设置的默认值,显示值为4位,如0002,第一位是特殊权限位,后三位表示ugo的权限掩码值,用最大的权限值666-002=664,即文件对ugo的权限分别为664,目录对ugo的权限分别为775(777-002=775)

      ② umask 000   --更改文件和目录的默认权限,000位权限掩码值,实际值应当最大权限对应值-000

注:1) linux权限规则定创建的文件不能授予可执行权限

  2) 目录最大权限777,文件最大权限为666

-----------------------------------------------------------文件搜索命令--------------------------------------------------------------------

(三) 文件搜索命令

1、显示系统命令所在目录,which命令

   语法:which [命令名称]

   范例:which ls  --显示ls命令所在的目录

注:whereis命令与which类似,均可以显示命令所在的目录,区别是which可以额外显示命令的别名信息,whereis可以额外显示命令的帮助信息

2、查找文件或目录,find命令

   语法:find [搜索路径] [搜寻关键字]

   范例:① find /test -name hans  --查找/test目录下名为hans的文件或目录(相等查询)

      find /test -name hans*  --通配符,*匹配任意字符,包括0个字符

      find /test -name hans?  --通配符,?匹配单个字符

      ② find /test -size +2  --查找/test目录下文件大小大于1K的文件或目录(这里数字表示数据库,1个数据库=512字节=0.5K)

      find /test -size -2048   --查找小于1M的文件或目录

      ③ find /test -user hduhans  --查找/test目录下文件所有者为hduhans的文件或目录

      ④ find /test -cmin -120   --查找/test目录下2个小时内被修改过属性的文件或目录

      参数:1) 单位:天。 ctimeatimemtime

         2) 单位:分钟。cminaminmmin

           3) c-change,文件属性被修改过;a-access,文件被访问过;m-modify,文件内容被修改过

         4) -小于 +大于

      ⑤ find /test -name hans* -a -size +2048   --查找/test目录下名称以hans开头并且大小大于1M的文件或目录

      参数:1) -a 逻辑与  2) -o 逻辑或

      ⑥ find /test -type f   --查找/test目录下所有的二进制文件

      参数:1) f-二进制文件 2) d-目录文件  3)l-软链接文件

      ⑦ find /test -name hans -exec ls -l {} \;   --查找/test目录下名称位hans的目录或文件并执行命令ls -l

      格式:-exec 命令 {} \;   --固定格式 {}表示find查询的结果,\ 转义符,符号命令使用本身的含义,;表示结束

      ⑧ find /test -name hans -ok ls -l {} \;  --作用同exec,区别是执行命令时会询问是否执行

      ⑨ find . -inum 267811 -exec rm {} \;  --查找当前目录下文件inode=267811的文件并将其删除

      说明:ls -i  --显示文件的inode 

3、寻找文件或目录,locate命令

   语法:locate [搜索关键字]

注:1) locate命令查询速度非常快,是因为它检索的是文件系统数据库,因此新建的文件可能会搜不到

  2) locate命令只在linux中使用,unix不包含此命令

4、建立系统目录文件的数据库,updatedb命令

   语法:updatedb

注:此命令可与locate命令结合使用 

5、在文件中搜索字符串匹配的行并输出,grep命令

   语法:grep [指定字符串] [源文件]

   范例:grep ftp /etc/services   --在文件/etc/services中搜索包含字符串ftp的行并输出

 -----------------------------------------------------------帮助命令--------------------------------------------------------------------

(四) 帮助命令

1、获得命令帮助信息,man命令(英文:manual)

   语法:man [命令或配置文件]

   范例:man ls   --查看ls命令的帮助信息

2、获得命令帮助信息,info命令(英文:information)

   语法:info [任何关键字]

注:info使用与man类似

3、获得索引的简短说明信息,whatis命令

   语法:whatis apropos [任何关键字]

   范例:whatis ls   --查看ls命令的简短说明信息

-----------------------------------------------------------压缩解压命令--------------------------------------------------------------------

(五) 压缩解压命令

1、压缩解压gz格式文件,gzip命令(英文:GNU zip)

   语法:gzip 选项 [文件]

   范例:gzip myfile  --压缩myfile文件,压缩后myfile.gz

      gzip -d myfile.gz   --解压缩myfile.gz文件

      gunzip myfile.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 -cfz file.tar.gz file   --将当前目录下的file目录打包并压缩成file.tar.gz文件

      2) tar -zxf file.tar.gz   --将file.tar.gz文件解压缩到当前目录

注:1) 互联网下载的.tar.gz文件一般为源码文件,源码打包压缩后生成,安装时需解压并编译

  2) 可随意指定压缩后的文件名,但建议后缀为.tar.gz,使用file命令可判断文件类型是否属于.tar.gz类型,如file file.tar.gz

3、压缩解压zip格式文件或目录,zip命令

   语法:zip 选项[-r] [压缩后文件名称] [文件或目录]

      -r   压缩目录

   范例:1) zip myfile.zip myfile   --压缩文件myfile

      2) zip -r file.zip file   --压缩目录file(压缩目录如果不加-r参数,则只压缩目录文件夹,目录内的文件不会参与压缩)

      3) unzip myfile.zip   --解压缩myfile.zip文件

注:1) .zip压缩文件格式windows与linux通用

  2) zip压缩后保留原文件

  3) 解压缩使用命令unzip

4、压缩解压.bz2文件,bzip2命令

   语法:bzip2 选项 [-k] [文件]

          -k 压缩后保留原文件

          -d 解压缩

   范例:1) bzip2 newfile   --压缩newfile文件,压缩后文件newfile.bz2,压缩后不保留原文件newfile,此时bzip2命令与gzip命令几乎一样 

      2) bzip2 -k newfile   --同上,但压缩后保留原文件newfile

      3) bzip2 -d newfile.bz2   --解压缩newfile.bz2 

注:bzip2命令与gzip命令几乎一致,区别是bzip2压缩时加-k参数压缩后可保留原文件

-----------------------------------------------------------网络通信命令--------------------------------------------------------------------

(六) 网络通信命令

1、向另一个用户发信息,write命令

   语法:write <用户名>   --信息以Ctrl+D作为结束

注:write发送消息,接收方用户必须登录在线,否则无法发送

2、向所有用户广播信息,wall命令

   语法:wall [message] [文件名]

3、测试网络连通性,ping命令

   语法:ping 选项 IP地址

         -c  发送数据包次数

注:1) ping命令不会自动结束,只有按Ctrl+C才会结束,并显示统计结果(注意一下丢包率package loss)

4、查看网络设置信息,ifconfig命令

   语法:ifconfig 选项 [-a] [网卡设备标识]

            -a  显示所有网卡信息

   范例:1) ifconfig -a  --查看所有网卡信息

      2) ifconfig eth0 192.168.1.1   --将网卡eth0的IP地址更改为192.168.1.1

注:if是interface的简写

-----------------------------------------------------------常用shell技巧--------------------------------------------------------------------

(七) 常用shell技巧

1、命令补齐,tab键

   范例:1) ls -l mylearingtestfile    --输入部分文件名后按tab键,系统可自动补全文件名

      2) 输入shell命令时,按两次tab键会补全相关命令,若存在多个命令,则会列出所有命令

2、常用快捷键

   1) 清屏 Ctrl+l

   2) 删除当前命令行 Ctrl+U

3、浏览输入历史命令,history命令,系统会显示执行过的所有命令记录,输入!+对应命令编号,可执行对应的命令

   范例:1) history   --列出所有历史命令

      2) !5   --执行第5个命令

4、命令别名,alias命令和unalias命令

   语法:alias 

   范例:1) alias  --查看系统所有的别名

      2) alias copy=cp   --定义copy为cp的别名

      3) alias xrm="rm -i"   --定义xrm为命令组合 rm -i 的别名

      4) unalias copy   --删除别名copy

5、重定向,输出(>和>>)、输入(<)和错误输出重定向(2>)

   范例:1) ls -l > newfile   --将 ls -l 命令执行的结果重定向输出到文件newfile中(写入方式:覆盖)

      2) ls -l >> newfile   --同上,区别是此时写入方式为追加

      3) cp -R  /user  /backup/usr.back  2>  /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 | grep init    --在 ls -l /etc 命令执行的结果中查找包含init字符串的行

7、命令连接符

   1) ;   --用分号间隔的各命令按顺序依次执行

   2) &&   --前后命令执行存在逻辑与关系

      例:command1 && command2,当command1命令执行成功后,command2命令才会执行,否则command2不执行

   3) ||   --与&&对应,逻辑或

8、命令替换,将一个命令的输出作为另一个命令的参数

   格式:命令1 `命令2` 

   范例:ls -l `which touch`   --查看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、centos 7 开启防火墙端口例外

   firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)

   firewall-cmd --reload

   firewall-cmd --zone=public --list-ports   --查看开启端口

   systemctl stop firewalld.service --关闭防火墙

   systemctl start firewalld.service  --关闭防火墙

   systemctl restart firewalld.service   --重启防火墙

3、命令行下

   Ctrl + a 移至行首
   Ctrl + e 移至行尾
   Ctrl + d 删除光标所在处字符

4、top 命令按内存和CPU排序

   Shift + P 或 (大写开启下)P  --按CPU使用率从上到下排序

   Shift + M 或(大写开启下)M  --按内存使用率从上到下排序

 5、shell 下使用计算变量,需要转码

   00 08 * * * sh /root/bin/test.sh > /root/bin/data-$(date +\%F).txt