欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Linux学习】(3)Linux的基本指令操作

【Linux学习】(3)Linux的基本指令操作

2024/12/1 5:26:35 来源:https://blog.csdn.net/wangjiushun/article/details/138426063  浏览:    关键词:【Linux学习】(3)Linux的基本指令操作

前言

  1. 配置Xshell登录远程服务器
  2. Linux的基本指令——man、cp、mv、alias&which、cat&more&less、head&tail、date、cal、find、grep、zip&tar、bc、uname
  3. Linux常用热键

一、配置Xshell登录远程服务器

以前我们登录使用指令:

ssh 用户名@你的公网IP

其实可以不用指令登录,通过Xshell新建会话也可以登录。

配置步骤如下:

  • 选择左上角的+号(新建)在这里插入图片描述

  • 在窗口配置你的公网IP,配置完成之后确定即可在这里插入图片描述

  • 配置成功之后:点击文件——》打开 就可以看到我们刚才新建的会话了在这里插入图片描述

  • 选择我们要登录的用户,点连接,第一次登录需要输入用户名(输入存在的用户名,并点击记住用户名)
    在这里插入图片描述

  • 现在就全部配置完成了,以后打开Xshell它就会弹出会话窗口,选择你要登录的会话即可在这里插入图片描述

    tip:今后我们学习一般都是使用普通账号登录了,不再使用root了,因为①root权限高没有什么报错,你的误操作他也不提示你;②你以后公司使用也一般是普通用户等。

二、Linux的基本指令

1、man指令

引入:Linux的命令有很多参数,我们不可以全记住,我们可以通过man指令查看联机手册获取帮助。

语法: man [选项] 命令

常用选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • -a 将与命令匹配的所有章节文档的都显示出来(缺省从第一章开始搜索,搜到就停止,按q它会继续往后面搜索,直到所有章节都搜索完)


tip:

  1. 左上角的命令(num)中的num表示命令在num号手册查到的在这里插入图片描述
  2. man手册是有编号的,分为1~8章,我们做应用开发一般只用到1 ~3章(第3章是查库函数的,我们一般只有来查C语言的库函数。为什么一般只查C语言——①Linux操作系统本身是由C语言写的,所以它带C语言的标准文档;②man说是在线的,其实是有点离线)在这里插入图片描述
  3. 如果man不能查2~8章的命令,我们就需要安装man
    • 例如:查不到C语言库函数printf在这里插入图片描述
    • 安装man:在root账号下输入指令安装:install -y man-pages
  4. 当我们不太清楚man手册的使用时,也可以man man来查(man也是一条指令)
  5. 按q退出man手册

使用示例:

  • 一般我们使用就不携带选项了,直接man后面跟命令即可在这里插入图片描述
  • man num 命令:在指定的num章下搜索命令,使用场景:例如printf即是Linux的一条基本指令在第1章也是C语言的库函数在第3章,如果我们直接man printf想查的是它作为C语言库函数的文档是查不到,查到的是它作为Linux命令的文档,因为man默认从第1章开始查,查到就停止,想查printf作为C语言库函数的文档,需要指定在第3章查找在这里插入图片描述

2、cp指令

前置准备:在讲解cp指令之前,我们先了解几条指令

  1. echo 字符串:在显示器打印字符串
  2. echo 字符串 > 目标文件:输出重定向——把本来应该打印到显示器的内容,打印到目标文件中
  3. cat 文件:在显示器打印文件内容
  4. 示例:在这里插入图片描述

有了前置准备,我们正式开始学习cp指令

语法: cp [选项] 源文件或目录 目标文件或目录

功能: 复制文件或目录

常用选项:

  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -f 或 --force 强行复制文件或目录(不要询问我), 不论目的文件或目录是否已经存在
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

使用示例:

  • 拷贝一个普通文件,可以拷贝到当前目录下,也可以拷贝到其他任意目录下。(注意:拷贝到同一目录下时,源文件名与目标文件必须不一样)
    • 同一目录下的拷贝在这里插入图片描述
    • 不同目录下的拷贝在这里插入图片描述
    • 常识告诉我们不管是Linux还是Windows,同一个目录下,都不能存在同名文件(从应用角度解释:名字一样就不能标识该目录下的唯一性了)
  • 拷贝一个目录:因为目录是递归定义的,所以不能直接拷贝目录,需要携带-r选项在这里插入图片描述
  • cp携带-i选项时,当目标文件不为空覆盖目标文件之前会先询问用户在这里插入图片描述
  • 复制多个文件到目录:如果你同时指定两个以上源文件或目录,并且目标是一个已经存在的目录,则 cp 会将前面指定的所有源文件复制到目标目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。(拷贝一个文件或目录是,目标文件或目录可以不存在)在这里插入图片描述

3、mv指令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move(rename)files),是Linux系统下常用的命令,经常用来备份文件或者目录。

语法: mv [选项] 源文件或目录 目标目录或文件名

功能: ①重命名文件或目录;②剪切文件或目录

常用选项:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

使用示例:

  • 重命名:mv 源文件或目录 新文件名或目录名(即不存在)
    • 重命名文件在这里插入图片描述
    • 重命名目录在这里插入图片描述
  • 剪切:mv 源文件或目录 路径
    • 剪切文件在这里插入图片描述
    • 剪切目录在这里插入图片描述
  • 剪切并重命名:mv 源文件或目录 路径+新文件名或目录名
    • 剪切并重命名文件在这里插入图片描述
    • 总结:可以认为所有的mv行为都是剪切并重命名,没有指定新名字就默认使用你自己原来的名字,路径后跟了新名字就使用你新的名字。

4、alias&which指令

补充:

  1. 如何看待指令?
    • 指令和可执行程序都是可以被执行的——指令就是可执行程序!
  2. 我们在执行指令之前我们应该先做什么?
    • 先在系统中查找对应的指令,指令一定是在系统的某一个位置存在的(存在于/usr/bin/目录下)。在这里插入图片描述


tip:

  • 指令是在系统中特定的路径下存在的,一定是某种可执行程序——C/C++/Python/shell……
  • 指令的本质就是可执行程序和我们自己写的代码编译好的程序,没有本质区别


总结:指令的本质就是文件——可执行文件,直接安装到了系统的某种路径下

alias&which指令:

  1. alias给指令取别名。

    • 语法: alias 别名=‘命令’
    • tip: ①alias在shell会话中定义的别名只会在当前会话有效,即alias具有临时性;②单纯的alias可以查看当前定义的所有别名;③别名持久化:为了使别名在每次新的 shell 会话中自动加载,你需要将 alias 命令添加到你的 shell 配置文件中,如 .bashrc 或 .bash_profile(对于 Bash shell)。
  2. which查看命令在哪(它用于查找并显示给定命令的完整路径。当你在终端输入一个命令时,操作系统会根据环境变量 PATH 来查找命令的可执行文件。which 命令正是用来显示这个搜索过程的结果。)

    • 语法: which [选项] 命令
    • 一般我们使用不携带选项

使用示例:

  • 之前我们学过ls -l等价于ll,这个ll就是ls -l的别名在这里插入图片描述
  • 取别名演示(虽然指令可以取别名,但是学习阶段尽量少用,因为我们是目的学习指令)在这里插入图片描述

5、cat&more&less指令

补充:

  1. Linux下一切皆文件,凡是具有读写方法(方法为空也可以)的都可以视为文件。 例如:显示器——显示器只负责写,不负责读,所以它的读方法为空;键盘——键盘只负责读,不负责写,所以它的写方法为空;普通文件——一般都具有读写方法
  2. echo 字符串:默认把字符串写入到显示器文件中(tip:echo指令默认带回车换行,如果不想换行可以使用printf指令)
  3. 输出重定向:
    • echo 字符串 > 目标文件:输出重定向——把本来应该写入到显示器文件的内容,写入到了普通文件中,这种行为我们称之为输出重定向。
    • 注意:向目标文件进行写入的时候,覆盖写入(即分为两步:①清空文件;②写入新内容)在这里插入图片描述
    • 清空目标文件:> 目标文件
  4. 追加重定向:
    • echo 字符串 >> 目标文件:追加重定向——打开文件,向文件尾追加写入,不会清空文件在这里插入图片描述
  5. 输入重定向:
    • 单纯的cat指令,后面什么都不写,它默认从键盘文件读取内容在这里插入图片描述
    • cat < 目标文件:输入重定向——本来应该从键盘文件读取,现在不用从键盘文件读取,从指定的文件读取在这里插入图片描述
  6. 无论是输出重定向还是追加重定向时,如果写入的目标文件不存在,它会默认帮你创建文件。(输入重定向不可以)在这里插入图片描述
  7. 生成大文本文件的脚本:
    $ cnt=1; while [ $cnt -le 100000 ]; do echo "Hello! $cnt"; let cnt++; done > large.txt

cat指令:

语法: cat [选项] [文件]

功能: 查看目标文件的内容

常用选项:

  • -b 对非空输出行编号
  • -n 对输出的所有行编号
  • -s 不输出多行空行


tip:

  • 区分echo&cat&ls
    • echo:向显示器文件写入字符串
    • cat:向显示器文件写入文件内容
    • ls:向显示器文件写入文件属性
  • cat不适合看大文本,适合看小文本

使用示例:

  • 常用选项使用示例在这里插入图片描述
  • cat不适合看大文本,因为cat会将文件所有内容一下全打印,会造成刷屏,不方便我们查看在这里插入图片描述

more指令:

语法: cat [选项] [文件]

功能: 查看大文本的内容

常用选项:

  • -n 跳到文件的前 n 行,如 more -5 会显示文件的前 5 行
  • q 退出more


tip:

  • more打印占满一屏就停止,然后,你可以按空格键向下滚动一页,或者按回车键向下滚动一行
  • more 只能向后单向滚动(tip:针对文件可以按b返回上一页,但对管道无用)

使用示例:

  • more打印占满一屏就停止,按回车继续向下打印在这里插入图片描述
  • 可以通过/子串从文件当前位置向后定位子串这个关键字在这里插入图片描述

less指令:

语法: less [选项] [文件]

功能: less与more类似,也可以查看大文本的内容,但使用less可以随意浏览文件,而more仅能向后单向滚动,而且less在查看之前不会加载整个文件

常用选项:

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


tip:

  • more VS less:
    • 加载方式:more是一次性全部把文件加载,只是一部分一部分的显示,而less在查看之前不会全部加载,而是根据用户的需要动态的加载内容,因此less在查看大文件时的初始响应熟读通常比more快
    • 翻页:more可以向下翻页、翻行,但不支持向上翻页、翻行。less不仅可以使用上下方向键逐行滚动内容,还可以使用pageup和pagedown或空格键进行上下翻页。
    • 搜索:more只能向下搜索,而在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
    • 阅读到文件结束时,less不会退出,而more会
    • less提供了更多的功能和更好的用户体验,所以一般在查看大文本时我们使用less
  • less工具也是对文件或其它输出进行分页显示的工具,应该说是Linux正统查看文件内容的工具,功能及其强大

6、head&tail指令

head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾

head指令:

  • 语法: head [选项] [文件]
  • 功能: head用来来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
  • 选项:
    • -n<行数> 指定显示的行数


tail指令:

  • 语法: tail [选项] [文件]
  • 功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
  • 选项:
    • -n<行数> 指定显示的行数(如果不指定 行数,则默认显示最后 10 行)
    • -f 循环读取(实时跟踪文件的新增内容,类似于 tail -n 1 -f,常用于日志文件)

使用示例:

  • head的使用示例:在这里插入图片描述
  • tail后指定文件,打印指定文件末尾内容:在这里插入图片描述
  • tail后不指定文件,管道的使用——假设你想查看某个命令的最后几行输出,可以将该命令的输出通过管道传递给 tail。例如我想查看d.txt文件中间行1000~1020内容。
    • 临时文件法:

      在这里插入图片描述
    • 管道使用:在这里插入图片描述

补充:管道

  • | 是一种符号,后面会被系统解释称为管道文件(输入内存级)
  • 管道有一个入口一个出口,管道是用来传输资源的在这里插入图片描述
    管道可以级联多个命令,所以可以支持流水线工作在这里插入图片描述

7、date指令

在讲解date时间指令之前,我们先来了解一下日志:

平时我们生活中的日记就是日志记录着我们生活中的点点滴滴,其中时间最重要。

在计算机世界中时间也非常重要,因为时间他可以在我们出现问题时,可以根据产生问题的时间点——时间会记录下你对应的行为从而很好的复原(即从时间我们可以知道这个问题是什么原因导致的,是什么人导致的)

所以日志在计算机中很重要,程序运行到自己的每一个关键时候,都要自己打日志。

日志:时间+日志等级+日志具体信息+其他信息,日志信息以行位单位打印,写入到文件中,这个文件就是日志文件。

date 指定格式显示时间:date +%Y-%m-%d_%H:%M:%S

date用法:date [OPTION]… [+FORMAT]

  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
  1. 在设定时间方面
  • 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″ //这样可以设置全部时间
  1. 时间戳

Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的的午夜)开始所经过的秒数,不考虑闰秒。

  • 时间是人为定义的
  • 时间存在时差,例如美国和中国
  • 时间戳单调递增,方便范围查找

时间->时间戳:date +%s
时间戳->时间:date -d @1508749502

使用示例:

  • date显示当前时间,但是它显示的格式我们看着不太习惯,所以我们可以自己设定显示的格式,格式设定为一个加号后接数个标记(tip:标记之间不以空格做分隔符,会把它当做两个参数。一般年月日的分隔符我们喜欢用-时分秒的分隔符我们喜欢用:)在这里插入图片描述
  • 时间与时间戳之间的相互转换在这里插入图片描述

8、cal指令

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

命令格式: cal [参数][月份][年份]

功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

常用选项:

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
  • -y 显示当前年份的日历

使用示例:

  • cal查看当前月的日历,cal year查看当前年的日历在这里插入图片描述
  • -3 显示系统前一个月,当前月,下一个月的月历在这里插入图片描述

9、find指令

语法: find 路径 选项

功能: 用于在文件树中查找文件,并做出相应的处理(可能访问磁盘)

常用选项:

  • -name 按照文件名查找文件


tip:

  • Linux下find命令在目录结构中搜索文件,并执行指定的操作
  • Linux下find命令提供了相当多的查找条件,功能很强大、由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下
  • 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限
  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)
  • 注意:普通用户只能在自己家目录下查找自己的文件,不在自己家目录中查找时可能会受权限约束,不让你查找(可以切换root),因为目录是一棵多叉树,它的查找时深度优先遍历方式。
  • find&which&whereis
    • find可以在自己的家目录下(指定路径)找任意的文件
    • which只在系统指令所在路径下(/usr/bin/)找指令文件
    • whereis在系统特定的路径下查找,即可以找到可执行程序,又可以找到手册,安装包压缩包等之类(介于find与which之间)

使用示例:

  • find ~ -name 指定文件名:在家目录下查找所有与指定文件名相同的文件在这里插入图片描述
  • 普通用户只能在自己家目录下查找自己的文件,不在自己家目录中查找时可能会受权限约束,不让你查找(可以切换root),因为目录是一棵多叉树,它的查找时深度优先遍历方式在这里插入图片描述

10、grep指令

语法: grep [选项] 搜索字符串 文件

功能: 行过滤工具——把文件打开,按行为单位把这个文件的内容读取到显示器文件中,不过有条件。即在文件中搜索子串,将找到的行打印出来。

常用选项:

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

使用示例:

  • -n 输出行号在这里插入图片描述
  • -i 忽略大小写的不同,即大小写视为相同在这里插入图片描述
  • -v 反向选择,即显示出没有‘搜索字符串’内容的那一行在这里插入图片描述
  • 与管道一起使用在这里插入图片描述
  • 多个文件过滤在这里插入图片描述

11、zip&unzip和tar指令

什么是打包和压缩?

打包:如我们大学生每次回家就需要将所有东西打包到一个行李箱中;压缩:把东西放到行李箱中时,我们会尽量将其放得有规律,多放一些行李。

为什么要打包压缩?

  • 能被打包压缩的,一定是一个整体,有多个文件组成的一个文件,不容易造成文件缺失
  • 打包压缩,文件体积变小,下载时间变短 (储存占据空间变小)

打包和压缩的方案有很多种,这里我们就介绍zip和tar两种。

zip&unzip:

语法: zip 压缩文件.zip(打包和压缩之后的文件名) 目录或文件(即打包的文件)(unzip 压缩文件.zip -d 指定解压路径)

功能: 将目录或文件压缩成zip文件(unzip将zip压缩文件解压和解包)

常用选项:

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


tar指令:

语法: tar [-cxtzjvf] 文件与目录 … 参数

功能: 打包/解包,不打开它,直接看内容——Linux最常用!

常用选项:

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

使用示例:

  • 注意:zip默认打包和压缩普通文件,不能直接打包和压缩目录
    • 错误示例:直接打包目录,解压之后只能得到一个空目录在这里插入图片描述
    • 正确示例:打包目录需要携带选项-r,并且可以同时打包多个文件在这里插入图片描述
    • 注意:当我们输入zip/unzip指令时,如果出现command not found,即OS没有安装zip/unzip,①以root方式登录;②su/su-+root密码——》yum install -y zip unzip
  • tar的选项很多,我们一般记住以下三个组合即可:
    • tar czf xxx.tgz 需要打包的目录和文件(.tar.gz可省略为.tgz,.tar打包后缀,.gz压缩后缀)——打包压缩
    • tar tzf xxx.tgz——预览
    • tar xzf xxx.tgz——解压与解包在这里插入图片描述
  • tar携带-C选项,解压到指定目录在这里插入图片描述

12、bc指令

Linux中可以使用bc命令很方便进行浮点数运算,相当与计算器

使用示例:

  • bc——》计算器——》quit退出
  • echo “运算” | bc
    在这里插入图片描述

13、uname -r指令

语法: uname [选项]

功能: uname用来获取电脑和操作系统的相关信息

补充说明: uname可显示Linux主机所用的操作系统的版本、硬件的名称等基本信息

常用选项:

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

tip:x86_64==x64,x86==32

使用示例:
在这里插入图片描述

了解:

  • free 查内存(-k以KB为单位,-m以MB为单位,-g以GB为单位)
  • df -h 查磁盘
  • lscpu 查CPU
    在这里插入图片描述

14、常用热键

  • [Tab]按键——具有命令补全和档案补齐的功能在这里插入图片描述
  • [Ctrl+c]按键——让当前的程序停掉
  • [Ctrl+r]按键——历史命令搜索在这里插入图片描述
  • [Ctrl+d]按键——退出终端登录或退出用户(可以用于取代exit)

补充:

  • nano:Linux下的记事本
    • nano – version:检测是否安装了nano
    • yum install -y nano:在root用户下安装nano
    • nano 文件名:打开文件,在记事本下编写
  • ctrl+r搜索历史命令,决定了,Linux系统一定记录了历史命令!history指令可以查看历史命令。
    • Linux会默认记录最新的1000条历史命令

15、关机

语法: shutdown [选项]

常用选项:

  • -h : 将系统的服务停掉后,立即关机
  • -r : 在将系统的服务停掉之后就重新启动
  • -t sec : -t 后面加秒数,亦即『过几秒后关机』的意思

tip:Linux操作系统(服务器),永远不关机!

16、以下命令作为扩展:(后期遇到再讲)

  • 安装和登录命令: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。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com