【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登录远程服务器

以前我们登录使用指令:

bash 复制代码
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。
相关推荐
CP-DD24 分钟前
Linux 进程
linux
铁手飞鹰28 分钟前
[linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11
linux·服务器·驱动开发
wangsir.28 分钟前
线程的同步
linux·服务器·线程·同步
2739920291 小时前
ubuntu gcc、g++升级
linux·ubuntu
blessing。。2 小时前
__attribute__ ((__packed__))
linux·c语言·arm开发
JioJio~z2 小时前
Linux之nfs服务器和dns服务器
linux·运维·服务器
聪明的墨菲特i2 小时前
Vue组件学习 | 二、Vuex组件
前端·vue.js·学习·前端框架·1024程序员节
东林知识库2 小时前
2024年10月HarmonyOS应用开发者基础认证全新题库
学习·华为·harmonyos
团儿.2 小时前
KVM磁盘配置:构建高效虚拟环境的基石
linux·运维·centos·kvm·kvm磁盘
随便取个六字2 小时前
C++学习:类和对象(二)
c++·学习