Linux-常用命令精讲(Shell,Linux命令的分类、格式及使用方法,Linux常用命令)


前言

  • Linux命令是对Linux系统进行管理的命令
  • 对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件(万物皆文件),Linux系统管理的命令是它正常运行的核心
  • linux命令在系统中有两种类型:内置Shell命令和Linux命令

一、Linux命令基础

  • 在Linux系统中,凡是在字符操作界面中输入的能够完成特定操作和任务的字符串,都可以称之为“命令”
  • 严格一点来说,“命令”通常只代表了实现某一功能的指令或者程序的名称

1.Shell概述

  • Linux命令的执行必须依赖于Shell命令解释器

mark

  • 用户:我们输入命令的界面
  • shell实际上是在Linux系统中运行的一种特殊程序,在用户和内核之间充当"翻译官"的角色,负责接收用户输入的命令并进行解释,将需要执行的操作(翻译成二进制计算机语言)传递给系统内核执行
  • 用户登录Linux系统时,Shell程序会自动加载,以便给用户提供可以输入操作命令的操作系统
  • Bash是Linux系统中默认使用的Shell程序,文件位于/bin/bash
  • 内核:是构成Linux操作系统最关键的组成部分,执行翻译后的命令,用于实现CPU和内存分配、进程调度、设备驱动等核心操作,面向硬件为主

2.Linux命令的分类

2.1 内部命令与外部命令的区别

  • 根据Linux命令和Shell程序的关系,一般分为以下两种类型
内部命令 外部命令
集成于Shell解释器程序(如Bash)内部的一些特殊指令 Linux系统中能够完成特定功能的脚本文件或者二进制文件
属于Shell的一部分 属于Shell解释器程序之外的命令
没有单独对应的系统文件 每个外部命令对应了系统中的一个文件
自动载入内存,无需从硬盘中重新读取文件,用户可以直接使用 Linux系统必须知道外部命令对应的文件位置,才能够由Shell加载并执行
  • Linux默认会将存放外部命令、程序的目录(如/bin、/usr/bin、/usr/local/bin等)添加到用户的“搜索路径”中,当使用位于这些目录的外部命令时,用户不需要指定具体的位置,方便使用并增加效率
  • 大多数情况下,不用刻意的去分辨内部命令和外部命令,其使用方法是类似的

2.2 Linux命令行的格式

  • 在使用内部命令或外部命令时,参照一个通用的命令行格式使用格式,可方便理解Linux命令行的作用和工作方式
  • 通用的命令行格式:
    命令字 [选项] [参数]
  • Linux的命令(也包括文件名等等)对大小写是敏感的,也就是说,如果你输入的命令大小写不对的话,系统是不会做出你期望的响应的,所以英文要区别大小写
  • 在实际使用Linux命令行的过程中,“选项”和“参数”的称谓经常混淆,甚至前后顺序也允许颠倒,但一般不会影响命令的执行效果,所有很多时候并不做严格区分

2.2.1命令字

  • 命令字即命令名称,是整条命令中最关键的一部分
  • 唯一确定一条命令,一定要确保输入正确没有错,如大小写等
    执行的是操作,比如新建、删除、重命名等

2.2.2 选项

  • 选项的作用是调节命令的具体功能,决定这条命如何执行
  • 短格式选项:一般在选项前使用“-”符号引导,如“-”
    多个单字符选项可以组合在一起使用,如“-al”等同于“-a -l”
  • 长格式选项:使用多个字符的选项时,一般在选项前使用“–”符号引导,如“–help”
  • 长格式的选项意义明确,容易记忆,短格式的选项结构简单、输入快捷,且两种格式可以混用
  • 若不使用选项,将执行命令字的默认功能

2.2.3 参数

  • 命令字的处理对象
  • 可以是文件名、目录(路径)名或用户名等内容
  • 根据所使用的命令字的不同,命令参数的个数可以是零到多个

3.编辑Linux命令行

编辑Linux命令的时候,可以使用一下几个辅助操作,以提高输入效率

3.1 编辑Linux命令行的辅助操作

按键 作用
Tab 键 自动补齐(命令字、文件或目录),按两次系统将输出可用的列表
反斜杠“\” 如果输入的一行命令太长,终端会自动换行,有时为了显示美观及方便查看,可以使用“\强制换行(注:可能不能Tab),在下一行出现的“>”提示符后继续输入内容(+空格+\)作为上一行的延续
Ctrl+U 清空至行首
Ctrl+K 清空至行尾
Ctrl+L 清屏
Ctrl+C 取消本次命令编辑
Ctrl+a 切换到行首
Ctrl+e 切换到行尾

3.2 命令行提示字符

例:[root@localhost~]#

  • root:当前登录系统的用户
  • @:分隔符
  • localhost:主机名称
  • ~:当前所在的目录
  • #:表示为管理员登录($:表示为普通用户登录)

二、Linux命令帮助

1.概述

  • help提供内部命令的帮助
  • man或info提供外部命令的帮助
  • 如果你的英文足够好,那完全可以不靠任何人就精通linux,只要你会用man
  • man实际上就是查看指令用法的help,学习任何一种UNIX类的操作系统最重要的就是学会使用man这个辅助命令
  • man是manual(手册)的缩写字,它的说明非常的详细,但是因为它都是英文,看起来非常的头痛
  • 建议大家需要的时候再去看man,平常嘛,记得一些基本用法就可以了

2.使用help命令

  • help命令是Linux Shell中的一个内建指令,其用途是查看Shell内部命令的帮助信息
  • 使用help命令时,只需要添加内部指令的名称作为参数即可
  • 例如:直接输入“help pwd”指令可以查看Shell内部命令pwd的帮助信息(pwd命令用于显示当前用户所在的工作目录)
[root@localhost ~]# help pwd
pwd: pwd [-LP]
    打印当前工作目录的名字。
    
    选项:
      -L	打印 $PWD 变量的值,如果它命名了当前的
    	工作目录
      -P	打印当前的物理路径,不带有任何的符号链接
    
    默认情况下,`pwd' 的行为和带 `-L' 选项一致
    
    退出状态:
    除非使用了无效选项或者当前目录不可读,否则
    返回状态为0。

2.使用“- -help”选项

  • 对于大多数Linux外部命令,可以使用一个通用的命令选项“- -help”,用于显示对应命令字的格式及选项等帮助信息
  • 若该命令字没有“- -help”选项,一般只会提示简单的命令格式
  • 例如:输入“ls --help”命令可以查看ls命令的帮助信息(ls命令用于显示文件或目录列表信息)
[root@localhost ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all			不隐藏任何以. 开始的项目
  -A, --almost-all		列出除. 及.. 以外的任何项目
      --author			与-l 同时使用时列出每个文件的作者

......//省略部分内容(太多了,可以自己再打一遍慢慢看)

3.使用man手册页

  • man手册页(Manual Page)是Linux系统中最为常用的一种在线帮助形式,绝大部分的外装软件在安装时为执行程序、配置文件提供了详细的帮助手册页
  • 这些手册页中的信息按照特点的格式进行组织,通过统一的手册页浏览程序man进行阅读
  • 例如:输入“man 命令”可以查看所输入命令的手册页信息(超级多,真特么详细看,这里就不列出来)
  • 阅读man手册页时将以全屏的文本方式显示,并且提供了交互式的操作环境
按键 功能
“↑”或者“↓” 向上或者向下滚动一行文本内容
“Page up”和“Page Dowd(或空格键)” 可以向上或者向下翻页显示
“Q”或者“q” 退出手册页的阅读环境
"/"键 查找内容,例如“/-v”可以查找到“-v”选项的帮助信息,若找到内容过多,还可以按“n”键或者“N”键分别向下、向上进行定分选择

三、目录与文件基本操作

1.显示当前工作目录-pwd

  • 显示用户当前所在的工作目录位置
##示例:
[root@localhost ~]# pwd
/root        ##当前工作目录为管理员目录
[root@localhost ~]# cd /
[root@localhost /]# pwd
/        ##当前工作目录为根目录

2.切换工作目录-cd

  • 将用户的工作目录更改到其他位置
格式 说明
cd 目标位置 切换到目标位置
cd ~(家目录) 若不指定目标位置,则切换到当前用户的宿主目录(家目录)
cd 同上
cd - 切换到上一次执行cd命令之前所在的目录
  • 通常使用需要切换到的目标位置(文件夹路径)作为参数
  • 若不指定目标参数,默认将切换到当前用户的宿主目录(家目录)
  • 宿主目录是Linux用户登录系统后默认的工作目录
  • 在Linux操作系统中表示某个目录(或文件)的位置时,根据其参照的起始目录不同可以使用两种不同的形式,被称为绝对路径和相对路径

2.1 绝对路径

  • 指明了文件在整个文件系统中的确切位置,不会有什么歧义,从文件系统的根目录"/"开始
  • 因为Linux操作系统中的根目录只有一个,所以不管出于哪个目录中,使用绝对路径都可以非常准确地表示一个目录(或文件)所在的位置
  • 但如果路径较长,输入的时候会比较繁琐

2.2 相对路径

  • 由调用时的上下文给出(当前所在位置),在开头不使用“/”符号
    因此使用的时候更加简单、便捷
  • 相对路径主要包括如下几种形式:
表现形式 说明
直接使用目录名或文件名 表示当前工作目录中的子目录、文件的位置
以一个点号“.”开头 表示以当前的工作目录作为起点
以两个点号“…”开头 表示以当前目录的上一级目录(父目录)作为起点
以“~用户名”形式开头 表示以指定用户的宿主目录作为起点

2.3 小结

  • 相对而言,使用相对路径表示目录(文件)的路径形式灵活多变,通常用来标识当前目录“附近”的目录(文件)位置
  • 而绝对路径常用来表示Linux操作系统中目录结构相对稳定(不经常改变)的目录
  • 在选择相对路径或绝对路径时,应根据实际情况进行选择

3.列表显示目录内容-ls

  • 显示目录中的内容,包括子目录和文件的相关属性信息等
    ls [选项] [文件或目录…]

3.1常用选项

选项 作用
-l 显示文件(目录)的详细信息
-a 查看隐藏文件(目录)
-A 查看隐藏文件,除了表示当前目录“.”和父目录“. .”
-d 显示目录本身的属性,而不是显示目录中的内容
-h 更人性化的显示文件(目录)大小的单位信息
-R 递归显示(如果有子目录,则会把子目录中的文件依次展现)
–color 以颜色区分文件类型

黑色:数据文件
白色:一般文件
蓝色:目录/文件
红色:压缩包
绿色;可执行的文件/命令文件/脚本
淡蓝色:链接文件/快捷方式
黄色:设备文件/磁盘文件

执行不带任何选项、参数的ls命令,可以显示当前目录中包含的子目录、文件列表信息(不包含隐藏目录、文件)
ls

执行“ls -ld”命令可以只显示当前目录的详细属性,而不显示目录下的内容

执行“ls -lh”可以以更易读(带单元格式)的长格式来查看文件信息

3.2结合通配符

  • 使用ls命令时,还可以结合通配符“?”或“*”等以提高命令编写效率
  • "?"∶ 代表任意一个字符,且至少1个
  • "*"∶代表任意数个字符,可以是0个或者1个或者多个
  • "[]"∶表示可以匹配字符组中的任意一个字符
    [abc]、[a-f]
例:以下操作将以长格式列出/etc/目录下以“ns”开头、“.conf”结尾的文件信息

[root@localhost ~]# ls -lh /etc/ns*.conf
-rw-r--r--. 1 root root 1.8K 11月 25 18:47 /etc/nsswitch.conf

4.设置别名-alias

  • 通过别名机制来简化常用的、比较长的命令,以提高使用效率
    alias 命令别名=‘命令’(“=”两边不能有空格)
  • 示例:
    • 设置myls为ls -alh的别名
      alias myls=‘ls -alh’
    • 可以定义一个名为myls的命令别名,以后再执行“myls”时即等同于执行“ls-alh”命令
    • 这个相当于以前玩魔兽的改建,懂的都懂
  • 取消别名
    • unalias 命令别名

5.统计目录及文件空间占用情况-du

  • 统计指定目录(或文件)所占用磁盘空间的大小
    du [选项] [文件或目录….]

5.1 常用选项

选项 说明
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s 只统计所占用空间总的大小,而不是统计每个子目录、文件的大小(选项-a和-s不可同时使用)
–max-depth=n 统计所有小于等于第n层的目录的总大小

5.2 示例:

如果需要统计出这个文件夹内所有文件总共占用的空间大小,可以结合“-sh”选项,将要统计的目录“/var/log”为参数,
[root@localhost ~]# du -sh /var/log        
7.6M	/var/log/

如果需要分别统计多个文件所占用的空间大小,可以结合“-ah”选项
使用目录作为参数时,最后将列出该目录总共占用的空间大小

6.创建新目录-mkdir

  • 创建新的空目录
    mkdir [选项] 目录位置及名称…
  • 如果需要一次性创建嵌套的多层目录,必须结合“-p”选项,否则只能在已经存在的目录中创建一层子目录
  • 示例
##在当前目录下创建名为 public_html 的子目录
[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
[root@localhost ~]# mkdir public_html
[root@localhost ~]# ls
anaconda-ks.cfg       公共  图片  音乐
initial-setup-ks.cfg  模板  文档  桌面
public_html           视频  下载


##创建目录/aa,在/aa目录下创建子目录bb,在/aa/bb目录下创建子目录cc
[root@localhost ~]# mkdir -p /aa/bb/cc
[root@localhost ~]# cd /aa/bb/cc/
[root@localhost cc]# pwd
/aa/bb/cc

7.创建空文件-touch

  • touch命令本来用于更新文件的时间标记,但在实际使用中经常用于创建新的测试文件
  • 使用文件名作为参数,可以同时创建多个文件
  • 当目标文件已存在时,将更新该文件的时间标记,否则将创建指定名称的空文件
  • 格式
    touch 文件…
  • 示例
##创建两个空文件,文件名分别为aa.txt和bb.txt
[root@localhost /]# touch aa.txt bb.txt
[root@localhost /]# ls
aa.txt  boot  home   media  proc  sbin  tmp
bb.txt  dev   lib    mnt    root  srv   usr
bin     etc   lib64  opt    run   sys   var

##或
##touch {a,b}.txt

8.创建链接文件-ln

  • 为文件或目录建立连接文件,类似于windows系统的快捷方式
  • 链接文件类型
    • 软链接(又称为符号链接)
    • 硬链接
      软链接相当于快件方式
      硬链接相当于给文件起了个别名
  • 格式:
    ln [-s] 源文件或目录… 链接文件或目录位置
  • 示例:
    mark
    (链接文件颜色为淡蓝色)

拓展

  • 在Linux中,文件名和文件的数据是分开存储的,所以可能你只是删除了它,但是它还任然存在着
  • 当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名
    但是删除一个文件名,不会影响别的文件名的访问,只会使得"硬链接数"减 1
  • 需要注意的是不能对目录做硬链接,且在日常工作中几乎不会建立文件的硬链接,了解即可
文件类型 软链接文件 硬链接文件
删除源文件后 失效 仍然可用(文件占用空间与源文件相同)
使用范围 适用于文件目录 仅适用于文件
保持位置 与源文件可在不同的文件系统中 必须与源文件在同一个文件系统(即同一个分区)中
与源文件的关系 相当于快捷方式 相当于给文件起了一个别名
inode号码 inode号不同 inode号相同

9.复制文件或目录-cp

  • cd命令用于复制文件或目录,将需要复制的文件或目录(源)重建一份并保存为新的文件或目录(可保存在其他目录中)
  • 格式:
    cp [选项] …源文件或目录 …目标文件或目录…
  • 常用选项
选项 作用
-f 覆盖目标同名文件或目录时不进行提醒,而直接强制复制
-i 覆盖目录同名文件或目录时提醒用户确认
-p 复制时保持源文件的权限、属主及时间标记等树形不变
-r 复制目录时必须使用此选项,表示递归复制所有文件及子目录
  • 注∶复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在

10.删除文件或目录-rm(慎用!)

  • 删除指定的文件或目录
  • 格式
    rm [选项] 要删除的文件或目录…
  • 常用选项
选项 作用
-f 删除文件或目录时不进行提醒,而直接强制删除
-i 删除文件或目录时提醒用户确认(y表示删除,n表示不删除)
-r 删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)
  • 注∶ 不要直接删除系统中已有的目录或配置文件,以避免出现意外故障
  • rm -rf:删除目录下文件最好先切换到目录下再执行该命令
  • 使用rm相关命令一定要谨慎!

11.移动文件或目录-mv

  • mv命令用于将指定的文件或目录转移位置,如果目标位置与源位置相同,则效果相当于为文件或目录改名
  • 格式
    mv [选项] … 源文件或目录 … 目标文件或目录
  • 需要移动多个文件或目录时,目标位置必须是目录,而且目标目录必须已存在
  • 如果在同一个目录下移动文件或者目录,则相当于执行重命名操作
[root@localhost ~]# ls
anaconda-ks.cfg       公共  图片  音乐
initial-setup-ks.cfg  模板  文档  桌面
yum_bak               视频  下载
[root@localhost ~]# mv yum_bak/ yum-bak
[root@localhost ~]# ls
anaconda-ks.cfg       公共  图片  音乐
initial-setup-ks.cfg  模板  文档  桌面
yum-bak               视频  下载
  • mv命令只能对单个文件重命名,可使用rename命令批量修改文件名
    • 格式:rename 旧格式 新格式 .旧格式
      其中“
      .txt”表示以“.txt”结尾的所有文件
    • 例∶
      mark

12.查找命令文件存放目录-which

  • which命令用于查找Linux命令程序并显示所在的具体位置,其搜索范围主要由用户的环境变量PATH决定(可执行“echo $PATH"命令查看),这个范围也是Linux系统在执行命令或程序时的默认搜索路径
[root@localhost /]# echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  • which命令使用要查找的命令或者程序名作为参数,默认当找到第一个目标后即不再继续查找,若希望在所有搜索路径中查找,则可以添加“-a”选项
  • 使用which查找内部命令时,将找不到对应的程序

13.查找文件或目录-find

  • find命令时Linux系统中功能非常强大的查找命令,可根据目标的名称、类型、大小等不同属性进行精细查找
  • find命令在查找时采用递归的方式,其使用形式相当灵活,也可以相当复杂
  • 格式:
    find [查找范围] [查找条件表达式]
    • 查找范围对应在其中查找文件或者子目录的目录位置(可以有多个)
    • 查找条件决定了find命令根据哪些属性、特征来进行查找

13.1 常用的几种查找条件类型

查找类型 关键字 说明
按名称查找 -name 根据目标文件的名称进行查找,允许使用“*”及“?”通配符
按文件大小查找 -size 根据目标文件的大小进行查找,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件
按文件属主查找 -user 根据文件是否属于目标用户进行查找
按文件类型查找 -type 根据文件的类型进行查找:文件类型包括普通文件(f)、目录(d)、块设备文件(b;成块读取数据的设备,如硬盘、内存和光驱)、字符设备文件(c;按单个字符读取数据的设备,如键盘和鼠标)等
  • 设置find命令的查找条件时,若需要使用“*”“?”通配符,最好将文件名用双引号括起来,避免当前目录下符合条件的文件干扰查找结果
    例如,以下操作将在/etc目录中递归查找名称以“resol”开头、以“.conf”结尾的文件
[root@localhost ~]# find /etc/ -name "resol*.conf"
/etc/resolv.conf
  • 使用“-type”查找条件可以过滤出指定类型的文件
    例如,在以下目录中查找出所有的文件夹(对应类型为d),而忽略其他类型的文件
[root@localhost ~]# find /boot/ -type d
/boot/
/boot/efi
/boot/efi/EFI
/boot/efi/EFI/centos
/boot/grub2
/boot/grub2/i386-pc
/boot/grub2/locale
/boot/grub2/fonts
/boot/grub

  • 系统管理员还可以根据文件属主(-user)查找,也就是根据文件是否属于目标用户进行查找
    例如,执行以下命令即可递归查找/var/目录中属主为apache用户的文件
[root@localhost ~]# find /var/ -user apache 
/var/lib/dav
/var/cache/httpd
/var/cache/httpd/proxy

13.2 使用find命令实现多个查找条件

  • 各表达式之间使用逻辑运算符
    • "-a"表示而且(and),即两个条件都需满足
    • "-o"表示或者(or),即只需满足其一条件即可
  • 示例
[root@localhost ~]# find /boot/ -size +1024k -a -name "vmlinuz"
[root@localhost ~]# find /boot/ -size +1024k -o -name "vmlinuz"
/boot/grub2/fonts/unicode.pf2
/boot/System.map-3.10.0-693.el7.x86_64
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/initramfs-0-rescue-ebfb6260d8404c749ff81bfdbdf7a3be.img
/boot/vmlinuz-0-rescue-ebfb6260d8404c749ff81bfdbdf7a3be
/boot/initrd-plymouth.img
/boot/initramfs-3.10.0-693.el7.x86_64.img
/boot/initramfs-3.10.0-693.el7.x86_64kdump.img

13.3 find之exec用法

  • find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了
  • -exec参数后面跟的是Linux命令,它是以分号";“为结束标志,由于各个系统中分号会有不同的意义,因此在分号前面加上反斜杠转义符”\"
    {}代表前面find查找出来的文件名
  • 例:find 命令匹配到了当前目录下的所有普通文件,并在“-exec”选项中使用“ls -l”命令将它们列出
[root@localhost ~]# find ./ -type f -exec ls -l {} \;

猜你喜欢

转载自blog.csdn.net/weixin_51486343/article/details/110318359