1

01Linux常用指令

 2 years ago
source link: https://blog.csdn.net/qq_52670477/article/details/120489104
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

所有的指令不要强制记忆,选项要多多查一下,多多练习使用即可。


一、Linux简单介绍

Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲, Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。

linux是一个开源、免费操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目(c/c++/php/python/java/go)都会部署到Linux/unix系统上。
目前市面上常见的操作系统有Linux、Windows、iOS、Android等。

linux在服务器领域的应用是最强的。因为linux免费、稳定、高效等特点在这里得到了很好的体现,尤其在一些高端领域(C++/Java等)尤为广泛。
同时在嵌入式领域、个人桌面领域、大数据/云计算也有广泛的应用。

Linux安装:Linux可以采用虚拟机或云服务器的方式来运行,并用Xshell远程登录。网上教程很多,在此省略。

在这里插入图片描述

1.1.Linux的目录结构

不同于Windows,linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。这些目录的名字是不可以更改的。
在这里插入图片描述

目录结构和命令行对Linux的学习非常重要,因为在实际生产中是没有图形化界面的,只有一个控制台窗口,如果对目录结构不熟悉很容易蒙圈。

Linux下一切皆是文件,对于硬件,Linux也会映射成文件来进行管理。

1.2.常见的具体目录结构

是binary的缩写,这个目录下存放着Linux下最经常使用的命令。

/sbin

s就是super user的意思,这个目录下存放的是权限比较高的指令,也就是系统管理员(root)使用的指令。

/root

该目录为系统管理员,也称作超级权限者(root)的用户主目录。

系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

所有的系统管理所需要的配置文件和子目录,安装的所有程序的配置文件默认放在这个目录下面。

这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。

/boot

存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

用来存放一些临时文件。

类似于windows的设备管理器,把所有的硬件用文件的形式存储

/media

linux系统会自动识别一些设备,例如U盘、光驱等等,当识别I后,linux会把识别的设备挂载到这个目录下.

系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。

这是给主机额外安装软件所存放的目录。可以将安装文件放在这个目录中,便于程序的管理。默认为空。

/usr/local

这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。

这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。

1.3.路径

在Linux下目录用分割符/分隔开来,就像Windows下用\将文件夹分割开来。

在这里插入图片描述
在这里插入图片描述

同时,Linux下也存在绝对路径和相对路径,任何一个目录都有从根目录开始的唯一的绝对路径,而相对路径是有多个的。

1.4.空文件的大小

空文件也是占用磁盘空间的,文件由文件内容和文件属性(文件大小,文件名称等)组成,对于一个空文件,文件属性是存在的,所以这个空文件也会占用磁盘空间。
所以,即使一个文件的大小为0,它也是要占磁盘空间的。


二、常用的指令

whoami

语法: whoami
功能: 显示用户当前的身份。
在这里插入图片描述

ls的作用是显示当前目录的文件和子目录
语法: ls 选项 目录或文件
功能: 对于目录,该命令列出该目录下的所有子目录与文件;对于文件,该命令列出文件名以及其他信息。
常用选项:

  • -a 列出目录下的所有文件,包括以 . 开头的隐含文件。

在这里插入图片描述
每个目录下默认存在两个隐含文件 . 和 . . ( . 代表当前目录 . . 代表上级目录)。

  • -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录

在这里插入图片描述

  • -i 输出文件的 i 节点的索引信息。

在这里插入图片描述

  • -l 列出文件的详细信息。
    ls -l可以简写为ll

在这里插入图片描述

  • -n 用数字的 UID,GID 代替名称。
    UID和GID相当于用户和所属组的身份信息,就像身份证一样,在系统中是唯一的。

在这里插入图片描述

  • -F 在每个文件名后附上一个字符以说明该文件的类型,(“*”表示可执行的普通文件,“/”表示目录,“@”表示符号链接,“|”表示FIFOs,“=”表示套接字sockets)

在这里插入图片描述

  • -r 对目录反向排序。

在这里插入图片描述

  • -t 以时间排序。
    在这里插入图片描述

在t前面加r即可实现正序排序
在这里插入图片描述

  • -s 在文件名前输出该文件的大小。
    在这里插入图片描述

  • -R 列出所有子目录下的文件。
    在这里插入图片描述

  • -1 一行只输出一个文件。
    在这里插入图片描述

语法: pwd

功能:显示用户当前从根目录开始的所在目录
在这里插入图片描述

语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。

目录名可以按照绝对路径或者相对路径来写,例如:

cd .. : 返回上一级目录
/home/hjl/9.24_test : 绝对路径
cd ../9.25_test/ : 相对路径 
cd ~:进入用户家目录(主工作目录)
cd -:返回最近访问目录
普通用户的家目录(主工作目录)默认为 /home/xxx,root用户的家目录(主工作目录)默认为 /root。

touch

该命令只能用来创建普通的文本文件,其中文件的后缀与文件的属性无关,但为了符合人的习惯还是应该加上文件后缀,比如.c .txt等。

语法: touch 选项 文件
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

常用选项

  • -a 更改Access和Change的时间。

在这里插入图片描述

其中stat命令可以显示文件或文件系统的详细信息。
Access:表示最后一次访问(仅仅是访问,没有改动)文件的时间
modify:表示最后一次修改文件的时间
change:表示最后一次对文件属性改变的时间,包括权限,大小,属性等等。

  • -c 或 --no-create 不建立任何文档。
  • -d 使用指定的日期时间,而非现在的时间。

在这里插入图片描述

  • -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  • -m 或 --time=mtime 或–time=modify 只更改变动时间。
  • -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  • -t 使用指定的日期时间,而非现在的时间。

mkdir

该命令可以用来创建目录
语法: mkdir 选项 dirname
功能: 在当前目录下创建一个名为“dirname”的目录。

常用选项

  • -p dirname可以是一个路径名称,此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以递归建立多个目录。

在这里插入图片描述

rmdir

rmdir是一个与mkdir相对应的指令,mkdir是建立目录,而rmdir是删除目录。这个命令只能删除空目录。

语法: rmdir 选项 dirname
功能: 删除空目录
常用选项

  • -p 当子目录被删除后如果父目录也变成空目录的话,就连同父目录一起删除。

rm可以删除所有目录和文件。对于目录一般加上-r才能删除。

语法: rm 选项 dirname
功能: 删除文件或目录。
常用选项

  • -f 即使文件属性为只读(即写保护),也直接删除,不进行询问
    在这里插入图片描述

  • -i 删除前逐一询问确认

在这里插入图片描述

  • -r 递归式删除目录及其下所有文件和目录

rm -rf /则是从根目录下不询问式递归删除所有文件和目录,这是一条删库跑路的指令,一定要慎用。

在这里插入图片描述

man命令可以在man手册中查看具体的命令用法。
语法: man 选项 指令
功能: 查看指令的使用规则等。
常用选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • -a 将所有章节的都显示出来

man手册是英文的,还有中文的手册cman,man和cman都需要自己安装。

手册分为8章:

  1. 普通的命令
  2. 系统调用(内核提供的函数),如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
  3. 库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
  4. 特殊文件设备文件
  5. 文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
  6. 是给游戏留的,由各个游戏自己定义
  7. 杂项。是附件还有一些变量,比如向environ这种全局变量在这里就有说明
  8. 系统管理命令(通常仅限于root用户),这些命令只能由root使用,如ifconfi

cp指令可以将文件或目录拷贝到另一个地方。
语法: cp 选项 源文件或目录 目标文件或目录
功能: 复制文件或目录。
常用选项

  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在

  • -i 或 --interactive 如果文件已经存在,则拷贝覆盖文件之前先询问用户
    在这里插入图片描述

  • -r或-R递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
    在这里插入图片描述

当拷贝的文件为多个或者全部时,可以用到通配符进行拷贝。

通配符是一种特殊语句,主要有星号 (*)和问号 (?),用来模糊搜索文件。 当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。

在这里插入图片描述

在这里插入图片描述

mv类似于剪切功能,讲一个文件或目录移动到另一个目录中。
语法: mv 选项 源文件或目录 目标文件或目录
功能
(1)当第二个参数是不存在的名称时,mv指令完成文件重命名或目录重命名。
在这里插入图片描述

(2)当第二个参数是已存在目录名称时,mv指令将文件移动置该目录中。
在这里插入图片描述

这个指令可以将字符串显示到显示器或者重定向输入到文件中。
语法: echo 字符或字符串

在这里插入图片描述

另外,在后面加上 >(格式化追加)文件名或者 >>(在文件末尾追加) 文件名可以将字符或字符串写入文件中:
在这里插入图片描述

cat命令可以将文件的内容显示到显示器中。
语法: cat 选项 文件
功能: 查看目标文件的内容。
常用选项

  • -b 对非空输出行编号。
    在这里插入图片描述

在这里插入图片描述

  • -n 对输出的所有行编号

在这里插入图片描述

  • -s 不输出多行空行,只会保留一行空行
    在这里插入图片描述

tac与cat相反,tac可以方向查看文件的内容。
语法: cat 文件
功能: 反向查看目标文件的内容。

在这里插入图片描述

注意: cat指令会将目标文件内容全部打印到屏幕上。若是目标文件内容过多,则会导致刷屏(直到将文件内容全部打印到屏幕上)。因此cat和tac指令一般仅适用于查看内容较少的文件

cat适合查看内容较少的文件,而more适合查看内容较多的文件,因为它不会一下子全部显示出来,而是可以进行翻页。
语法: more 文件
功能: 查看目标文件的内容。
常用选项

  • -n 对输出的所有行编号
  • q 退出more

在这里插入图片描述

more指令只能通过按回车键进行下翻操作,无法进行上翻操作,并且more指令在查看之前会先加载整个文件。

相比于more,less指令可以同时支持上翻和下翻操作。

语法: less 选项 文件
功能: 既有查看目标文件的内容的功能,又有搜索功能。

less指令可以通过按上下键进行上翻和下翻操作,并且less指令在查看之前不会加载整个文件。

常用选项

  • -i 忽略搜索时的大小写。
  • -N 显示每行的行号。
  • /字符串 向下搜索“字符串”的功能。
  • ?字符串 向上搜索“字符串”的功能。
  • n 重复前一个搜索(与/或?有关)。
  • N 反向重复前一个搜索(与/或?有关)。

从头开始查看指定行数的文本。
语法: head 选项 文件
功能: 用于显示文件的开头至标准输出中,默认head指令打印其相应文件的开头10行。
选项

  • -n<行数> 显示的行数
    在这里插入图片描述

从尾开始查看指定行数的文本。
语法: tail 选项 文件
功能: 用于显示文件的末尾至标准输出中,默认tail指令打印其相应文件的末尾10行。
选项

  • -n<行数> 显示的行数
    在这里插入图片描述

提取中间的行数:
在这里插入图片描述

|叫做管道,作用是将前面head -5010 file.txt的输出写到管道中,再将管道中的数据拿出来执行tail -10,这样就可以输出前5010行的后10行了。

date 指定格式显示时间: date +%Y:%m:%d

1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下

  • %H : 小时(00…23)
  • %M : 分钟(00…59)
  • %S : 秒(00…61)
  • %X : 相当于 %H:%M:%S
  • %d : 日 (01…31)
  • %m : 月份 (01…12)
  • %Y : 完整年份 (0000…9999)
  • %F : 相当于 %Y-%m-%d

在这里插入图片描述

2.在设定时间方面

  • date -s //设置当前时间,只有root权限才能设置,其他只能查看。
  • date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
  • date -s 01:01:01 //设置具体时间,不会对日期做更改
  • date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
  • date -s “01:01:01 20080523″ //这样可以设置全部时间
  • date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
  • date -s “20080523 01:01:01″ //这样可以设置全部时间

3.时间戳

  • date +%s 显示当前时间的时间戳。
  • date -d @时间戳 将时间戳转换为时间。

在这里插入图片描述

cal指令可以用于显示公历(阳历)日历。
语法: cal 选项 月份 年份
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1~9999),如有两个参数,则表示月份和年份。

常用选项

  • -3 显示系统前一个月,当前月,下一个月的月历,年份和月份不用输入。
    在这里插入图片描述

  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

在这里插入图片描述

  • -y 显示当前年份的日历
    在这里插入图片描述

语法: find 路径 选项 …
功能: 用于在文件树中查找文件,并作出相应的处理(可能访问磁盘->效率比较低)。

路径不写默认为当前路径
常用选项

  • -name 按照文件名查找文件。
  • -size 按照文件大小查找文件。-50M 小于50M +50M 大于50M
  • -ctime 按最新修改的时间查找 -5位最近五天
  • -type 根据文件类型查找

在这里插入图片描述

which

查找某一条命令所在的路径。
语法: which 指令
功能: 用于查找某一指令的程序文件所在路径。
命令实际上也是一个可执行程序,它所在的目录可以不用让执行这些命令时加路径,直接使用命令即可。
在这里插入图片描述

其中,alias的作用是起别名,ls是ls --color=auto的别名

因此如果把我们自己写的可执行程序放到这个目录下,也可以使用名字直接执行:

在这里插入图片描述

在这里插入图片描述

grep是文本行过滤工具,它在过滤时以行为基本单位。将符合条件的行显示出来。
语法: grep 选项 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来。
在这里插入图片描述

常用选项

  • -i :忽略大小写的不同,所以大小写视为相同
  • -n :顺便输出行号
  • -v :反向选择,显示出没有 ‘搜寻字符串’ 内容的那一行

在这里插入图片描述

zip压缩和unzip解压

zip指令用于打包压缩目录或文件。
语法: zip 选项 压缩文件 .zip 待打包目录或文件
功能: 将目录或文件打包压缩成zip格式。
常用选项

  • -r 递归处理,将指定目录下的所有文件和子目录一并处理。

在这里插入图片描述

打包压缩目录的时候要加通配符/*,要不然并不会打包压缩目录下的文件,只是打包压缩目录。

语法: unzip 压缩文件.zip 选项 目录
功能: 将压缩文件解压到指定目录当中。

在这里插入图片描述

如果要解压到指定目录必须带上-d选项
在这里插入图片描述

tar指令也可以用来打包压缩和解压文件,并且还可以实现不解开压缩包,直接查看里面内容的操作,以及只打包不压缩等操作。

语法: tar 选项 压缩文件 …
功能: 打包/解包,不解开压缩包,直接查看里面内容。

常用选项

  • -c 建立一个压缩文件的参数指令(create的意思)。
  • -x 解开一个压缩文件的参数指令。
  • -t 查看tarfile里面的文件。
  • -z 是否同时具有gzip属性?即是否需要用gzip压缩?
  • -j 是否同时具有bzip2属性?即是否需要用bzip2压缩?
  • -v 压缩的过程中显示文件(常用)。
  • -f 使用档名,请留意,在f之后要立即接档名,不要再加参数。
  • -C 解压到指定目录。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

bc相当于Linux下的计算器
语法: bc进入计算器 输入表达式 按回车进行计算 Ctrl+C退出计算
功能: 进行运算。

在这里插入图片描述

uname

语法: uname 选项
功能: 用于获取电脑和操作系统的相关信息。可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

常用选项

  • -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

在这里插入图片描述

  • -r 输出电脑和操作系统相关信息。内核版本+CPU架构
    在这里插入图片描述

语法: file
功能: 查看文件的更多属性信息。

在这里插入图片描述

clear

语法:clear
功能:清空屏幕。


三、高频使用的按键(热键)

  • [Tab]按键—具有『命令补全』和『档案补齐』的功能
  • [Ctrl]-c按键—让当前的程序『停掉』
  • [Ctrl]-d按键—退出当前命令行。相当于exit
  • 上下按键。上下按键在Linux当中存储的是历史命令,通过按上下键我们可以查看我们最近敲的命令。也可以使用history指令查看历史命令。

四、关机和重启命令

关机语法: shutdown 选项
重启语法:reboot 选项
常见选项

  • -h 将系统的服务停掉后,立即关机。
  • -r 将系统的服务停掉之后就重新启动。
  • -t sec 经过sec秒后关机。
    注: 所有关机指令只能由root用户执行。所有的指令必须要在开机的情况下输入,所以没有开机命令。

五、扩展命令

  • 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last。
  • 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln。
  • 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab。
  • 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup。
  • 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who。
  • 其他命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

六、shell命令以及运行原理

Linux内核(kernel)有两种理解:

  1. 广义上的操作系统:shell+kernel+配套的软件(应用、驱动等)
  2. 狭义上的操作系统:指的就是内核,是纯粹的操作系统部分。

我们很难直接使用内核,因为学习成本太大,所以在内核外嵌套了一个“外壳程序”,帮助我们和内核进行交互,同时也可以保护内核。

Linux使用shell命令行界面,而在Windows下则使用图形化界面,这两者都是内核外的“外壳程序”,相当于用户和操作系统之间的媒介。

从技术角度, Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给内核(kernel)处理。同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

简单来讲,shell相当于内核的一层“外壳程序”,主要的功能是对我们的指令进行解析,解析指令完成后发给Linux内核。内核运行出结果后通过shell输出给用户。如果我们输入的命令是错误的或者不存在的,那么就不会将解析指令发给Linux内核。

所以,shell相当于用户和操作系统之间的媒介,用来和用户交互,提升用户的操作体验。同时用来保护操作系统。

在这里插入图片描述
Shell运行原理:

  1. 创建子进程,让子进程进行命令行解释。
  2. 子进程出现任何问题,都不影响父进程Shell。

另外, Shell只是所有外壳程序的统称,在centos 7当中的外壳程序名叫bash。bash相当于Shell的子集。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK