目录

铺垫:先快速认识四五个指令 

1、ls指令

1.1 ls -l(可简写为ll指令)

1.2 ls -a     ls -al(也可以写成ls -a-l) 

2.pwd命令:显示用户当前所在目录 

3.cd 指令 

3.1 cd 目录名

3.2  cd .. : 返回上级目录 

3.3 cd的其他操作

4.touch命令 

①创建普通文件   第一个字符以“-”开头是普通文件

5.mkdir指令(重要):

6.rmdir指令 && rm 指令(重要):

7.man命令(重要*)

8.cp指令 (拷贝粘贴指令)

 8.1补充nano命令 

8.2 cp命令

9.mv命令(剪切命令) 

接下来要开始操作文件内容的指令了:

11.cat命令

指令:cat -n 文件名   给每一行加上行号显示

指令:cat -s 文件名  输出有多行连续空行时,只输出一行空行

指令:tac 文件名   逆向输出文件内容

 cat的其他用法:

12.more命令

13.less命令

14.head命令  查看一个文件的头部内容

15.tail指令:打印文件的后n行内容

tail  文件名

16.时间相关的指令

16.1 data显示

17.cal   查看日历

cal  年份   打印一年的日历

cal 月份 年份  打印某年某月的日历 ,也可在前面加日

18.find 指令(重要)

19.grep指令(常用)

grep是大小写敏感严格匹配的,但是可以通过i选项来忽略:

-n选项,打印行号

-v选项

过滤选项,包含就不打印,不包含的就打印

 ​编辑

 20、sort将文件内容按照ACSII码值排序

21.打包压缩命令:

 22.tar指令:打包、解包,不打开直接看内容

23 查看体系结构  uname -

24.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d

25关机

26.linux与windows下互传文件工具:lrzsz

结语


说明:本篇文章演示使用远程登录软件Xshell.使用xshell登录远程服务器,和其他各种方式比如虚拟机和windws命令行方式登录指令一样:

使用: root 用户:ssh root@主机ip     普通用户:ssh @ip

进入今天的主题,LInux下基本指令的讲解(基本指令不用刻意去记住,后续使用次数多了自然就会了) 

补充:关于指令的理解

现有的指令才有的图形化界面(现有键盘后续才有的鼠标,鼠标是对图形化界面进行点击)

指令操作和图形化操作本质上没有不同,只有形式化的不同。(形式不同也只是针对我们小白而言)

铺垫:先快速认识四五个指令 

  • ①whoami ---- 查看当前登录系统的用户身份
  • ②查看当前在系统中的所有用户:who命令
  • ③pwd ---查看当前所处目录
  • ④ls ----显示当前目录下的文件名
  • ⑤ls -l  显示当前文件目录下的文件的详细信息(包括文件名,修改时间等等)
  • ⑥ clear --- 清屏命令 
  • ⑦添加用户指令:一般在root用户可以创建

adduser 用户名

passwd  用户名  输入设置密码(这里,默认不会回显)

⑧删除用户指令:deluser 用户名

1、ls指令

指令作用:显示当前工作目录下所有的文件名属性(就是文件名)

1.1 ls -l(可简写为ll指令)

如何理解上述两个指令的区别:

首先:我们要理解,假如在windows上创建一个空的文件或者文件夹需要占用我们磁盘空间吗?


 答案是肯定的,文件名,修改日期和文件大小等都是文件的属性,是我们找到或者系统维护这个文件或者文件夹的重要数据,本身是要被计算机存储下来的,所以看待文件不要光狭隘的只看到文件的内容,文件的属性等都是二进制的数据,都要被存储

也就是说:
文件 = 文件内容+文件属性

那么我们以前学习的或者未来将要学习的所有文件操作,本质是:

1.对文件内容进行操作

2.对文件属性进行操作

所以ls 指令是显示当前目录下所有的文件名属性

ls -l(也可以简写为ll指令)是显示当前目录下所有的文件属性。

1.2 ls -a     ls -al(也可以写成ls -a-l) 

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

 首先对比一下以下指令

在linux中,隐藏文件通常以‘.’开头 。

一个点表示文件在点前路径,两个点表示在上一级路径。

在windows中也是有隐藏文件的:

2.pwd命令:显示用户当前所在目录 

p----process  进程

w----work   工作

d ---- directory 目录

那么在windows中:

3.cd 指令 

3.1 cd 目录名

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

在windows中如果我们要进入某一个目录我们只用点击即可

在linux中通过cd 命令执行:

3.2  cd .. : 返回上级目录 

补充知识:Linux的目录结构的认识

在ls中我们说,

在linux中,隐藏文件通常以‘.’开头 。

那么“.”也可以是文件名,比如上图中的.youcanseeme.txt文件,一个点表示文件在点前路径,两个点表示在上一级路径。

不断回退,路径越来越短,直到回退到根目录。

那么什么叫路径,为什么叫做路径?为什么要有路径,我们就来看一下:

那么路径就可以理解为:有路径分隔符分隔起来的一串的由文件夹构成的字符串

liNux喜欢将文件夹叫做目录

ls /目录名显示这个目录里面的信息

ls -ld/目录名   显示当前目录

几乎所有操作系统的文件组织方式都是树状结构

绝对路径和相对路径:

  • 绝对路径:从根目录(/)开始,定位一个叶子文件或者路径文件的方式形成的路径叫做绝对路径,无论当前处于那个位置窦娥冤唯一定位一个文件,配置文件常用方法。
  • 相对路径:相对于自身当前所处的目录为参考点,我们定义一个文件的路径,叫做相对路径。

 

cd /home/litao/linux/ : 绝对路径

cd ../day02/ : 相对路径

3.3 cd的其他操作

cd ~:进入用户家目

家目录:

一类用户root用户在centos下: 家目录为/root

普通用户为:/home/xxx

在ubutu:
一类用户和普通用户都为:home/xxx

何为家目录:

家目录就是默认登录的时候所处的路径,就是当前用户的家目录

在windows下,一台设备可以有多个账号登录,每一个账号下的桌面、下载东西都是不一样的。这个用户文件夹就是windows下的家目录。那么我们的linux也是有桌面的,只是远程将其省略了,windows本质也没有桌面的概念,桌面的本质也是文件夹,用户登录的时候,用户的家目录里面有桌面的文件夹,windows这个操作系统把这个文件夹中的所有文件用图标的形式展现在显示器上就有了桌面。我们可以是由虚拟机看linux的桌面:

cd -:返回最近访问目录 

4.touch命令 

①创建普通文件   第一个字符以“-”开头是普通文件

5.mkdir指令(重要):

语法:mkdir [选项] dirname...

功能:在当前目录下创建一个名为 “dirname”的目录 

 mkdir -p 路径    一次性在当前目录下穿件路径

6.rmdir指令 && rm 指令(重要):

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

语法:rmdir [-p][dirName] 适用对象:具有当前目录操作权限的所有使用者

功能:删除空目录(只能删除空目录)

常用选项: -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

rm命令可以同时删除文件或目录(建议使用这个)

语法:rm [-f-i-r-v][dirName/dir]

适用对象:所有使用者

功能:删除文件或目录 

我们的文件创建本身来说就是递归式创建,如果目录不为空,可能目录里面还有目录,目录里面还有目录,那么我们删除的时候就应该深度优先,递归返回一个一个删除。

那么递归删除指令就是:rm -r(递归的意思) 文件名

只不过每次删除一个节点都会向用户确认

 rm -rf 文件名:强制删除。不会询问

  • 常用选项:
  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -r 删除目录及其下所有文件
  • -i 删除前逐一询问确认

要不要-r取决于要删除的是不是目录

要不要-f取决于要删除的要不要询问用户。(一般是root用户)普通用户几乎不问,使用-i会进行询问。

rm -f默认不删除隐藏文件

rm -rf *   :*叫做通配符,删除当前路径下所有文件

rm -rf  ./*:删除指定目录下的所有文件

注意:rm -f 默认不删除隐藏文件

如果不小心删除根目录可能会导致系统都被删掉,但是云服务器不要紧,可以恢复。如果在工作中不小心删除掉了的话,可以及时按住CTRL+c停止,但是吧

就是制止及时但是不可避免的还是会删除或者叫做损失一些东西。

7.man命令(重要*)

man命令是一个在线手册,我们不可能记住所有的命令,可以在搜索引擎上搜索相关命令,但是我们可以通过man命令来查看Linux的手册页

man手册分为八章,

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

man命令一样可以使用man命令查看:

  •  man 语法: man [选项] 命令 常用选项
  • -k 根据关键字搜索联机帮助 num 只在第num章节找
  • -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项

如果我们搜索printf这个指令,默认从第一章开始搜索,第一章没有找到然后往后去检索。

我们的prinf也是一条指令,执行打印输出功能:

当然由于printf是C语言函数,我们也可以通过 num直接在第三章中去找:

 命令  man 3 pirntf  

但是会由于某些手册不全问题显示找不到,大家可以执行下面的指令不全在找:

sudo apt-get install manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix-dev manpages-posix 
 

  • 当按 下q退出,

有些伙伴man  man命令执行没有效果,是因为没有安装对应插件,大家可以按照这个命令安装一下:当然有些时候由于权限问题只有root用户才可以安装

yum install -y man -pages

8.cp指令 (拷贝粘贴指令)

 8.1补充nano命令 

命令功能:相当于windows中创建一个记事本

命令形式:nano 文本文件名.txt

按下回车键就会弹出文本,大家可以在里面自由写入内容:

 退出后我们可以使用cat 查看我们的文本文件中的内容:

有些伙伴可能用不上这个命令,还是因为没有安装的问题,执行这个命令然后进行安装就可以用了:

yum install -y nano 

8.2 cp命令

同级文件或者同级目录中不可以出现同名文件或者目录。

拷贝并不会拷贝隐藏文件。

  • 语法:cp [选项] 源文件或目录 目标文件或目录
  • 功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存 在的目录,则会出现错误信息
  • 常用选项:
  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户 -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链 接,则一律视为普通文件处理
  • -r 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

那么我们当前目录下就有刚才用nano创建的test.txt,现在我们使用cp命令将其拷贝到我们的上一级目录里面:

当前路径和上级路径就都有这个文件了。

同名文件不能拷贝到一个目录,要拷贝到当前目录就换文件名。(就可以理解为文件重命名,但是原来文件依然存在)拷贝只用保证同级别目录不变就行。

拷贝目录:

我们在当前路径下创建一个目录:

mkdir 目录名

然后我们拷贝目录到上级目录:

拷贝目录使用cp -rf(强制递归) 文件名   拷贝到的目标目录

 如果,只想拷贝目录里面的内容不想拷贝目录,可以执行命令

cp -rf  被拷贝路径*  目标目录

9.mv命令(剪切命令) 

  • mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命 令,经常用来备份文件或者目录。
  • 如果拷贝的目标路径下没有这个目录,就会创建这个目录,也可以通过这个实现重命名。

  • 语法: mv [选项] 源文件或目录 目标文件或目录
  • 功能:
  • 1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的 目录中。
  • 2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。
  • 3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至 目标目录中。
  • 常用选项:
  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

10.对指令进行重命名:alias(别名)

当我们退出连接或者退出远程连接软件 就会自动删除因为这是我们命令行新起的别名。

如何查找指令在目录的什么位置:which +命令名字

命令的本质就是二进制或者其他脚本类的可执行文件,那么只要后续把可执行文件名拷贝到我们的usr/bin目录下到时候输入这个文件名就会呈现命令的效果,直接打印出结果。(这个过程就叫做安装)安装的本质就是把可执行程序拷贝到系统可以识别的路径下面。

卸载:使用rm

接下来要开始操作文件内容的指令了:

11.cat命令

打印显示文件的内容

上面我们知道了在一个文件的内容中去写入内容可以使用nano

现在补充echo   > (文件名可以存在或者不存在,不存在会创建一个) 输出重定向

输出默认带换行

echo默认向显示器打印(就是写入显示器这个文件),加上>就向指定文件去写入(所以叫做输出重定向)

那么我们读取数据,是从键盘读入,并不是从显示器读入,之所以显示器要显示,是因为这个数据既给了显示器一份,又给了程序一份,这个行为也被叫做回显。

所以。大部分的硬件都有读写方法,只是有些方法为空,比如对键盘只有读没有写,所以Linux下就可以将一切当做文件,统一的方法来做处理。减少了linux系统维护的成本

单独的“>”也可以用于创建新文件(新建空文件功能)

文件 = 内容+属性

写入内容的时候,改变了内容和属性,主要是改内容

那么我们来看一下这个细节:

那么每次写入都会清理上次的内容再写新内容,所以输出重定向每次都会清空原始文件,再写入

那么清空文件内容不删处文件(清空目标文件)

echo"">>就会追加内容,不会清空历史内容(追加重定向)

指令:cat -n 文件名   给每一行加上行号显示

指令:cat -s 文件名  输出有多行连续空行时,只输出一行空行

指令:tac 文件名   逆向输出文件内容

 cat的其他用法:

输入什么打印什么(默认不跟文件名的时候),按ctrlc停止

cat从键盘文件读取什么,就向显示器写入什么,默认读取的时候是从键盘文件读入,如果将键盘文件换成其他文件。

 cat 不从键盘读入而是从其他文件读入,向屏幕文件输出,这个“<”叫做输入重定向

cat用途:主要用于短小的文件

创建一个大文件:

12.more命令

功能:

当使用cat查看大文件的时候就会滚屏,我们想要一页一页的查看内容就要用到more命令

使用more命令,配合enter就可以一页一页的阅读(上下键没用,而且只能下翻动)所以引入less命令

13.less命令

可以上下滑动,可以配合回车,也可以在冒号处输入数字进行匹配查找

less作用:一般在不打开文件时查看文件源代码,后面读日志,cat会刷屏

14.head命令  查看一个文件的头部内容

head  文件名

默认打印文件前十行

head -n 文件名   打印前n行内容

15.tail指令:打印文件的后n行内容

tail  文件名

默认打印后十行

tail -n 文件名   打印后n行内容

 

思考:

如何打印文件中间部分的内容:提取8000-80010

这里先输出到了临时文件:temp.txt 

那么这里: head -80010 file.txt 输出作为 tail -10 file.txt 的输入 ,就可以这样写

head -80010 file.txt | tail -10 file.txt,把这个|竖划线连接两条指令叫做管道。上一个命令的输出作为下一个指令的输出。

不跑屏操作:

 

16.时间相关的指令

16.1 data显示

data指定格式显示时间:data +%Y.%m.%D 

查看当前系统时间;date

显示方式对于用户不友好:支持时间的格式化显示输出的

如图中的短斜杠和冒号这些分隔符可以由用户自己指定

date +%s 显示时间戳

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

对于计算机来说,时间很重要,(票据等),互联网统一,但是世界有时区概念,为了统一计算机时间也能够根据 不同的地区通过时区换算得到当地时间。

补充日志知识:不管什么样的公司,只要做软件开发,就必定要在自己的软件中写入日志(很重要)。像服务器,操作系统等软件跑起来就不会退出,比如直播软件,游戏软件,在这个过程中,在遇到某些关机节点的时候,这些关键信息需要被记录下来,比如某时某刻某某登录,发生登录验证请求,成功或者失败。记录是为了复盘可以找到。我们的Linux也是软件,运行时也会有日志:

cat /var/log/message

日志从后往前看,就是从最近的时间看,服务挂掉:关心三个问题:什么时候挂掉的?为什么挂掉的?该怎么解决?所以日志可以辅助程序员解决问题。

那么日志中看中的概念就是时间,可以带规范时间或者时间戳(递增的,具有时间唯一性,也能进行时间范围日志查找)

时间戳如何转变成我们人可以看懂的时间

date -d @秒数

转变格式就可以看懂,由于时区的概念我们这里显示就是8点,如果在欧美就是12点,那么在国际贸易等中就可以保持时间统一了。可能服务器时区没有配置,或者服务器在国外就会显示0分0秒。

17.cal   查看日历

cal  年份   打印一年的日历

cal 月份 年份  打印某年某月的日历 ,也可在前面加日

18.find 指令(重要)

查找多叉树目录中按照文件名、文件大小、文件属性、文件权限等进行查找

前后两次或者多次查找,第一次查找较慢原因是要去遍历,之后会将信息进行缓存,所以后续查找速度就会变快。

which 命令是给用户一个路径(只会查指令)

补充:想要查找自己曾经在系统中安装的一些文档,比如:我们对应的指令的文件,或者C语言需要的头文件的压缩包

whereis 

whereis 指令并不是为了查找命令 去设置的命令,可以搜索包含指令在内的所有文档。

19.grep指令(常用)

行文本过滤工具

更具指定关键字,在文件中以行为单位,包含关键字的整体保留,不包含的整体剔除。

grep是大小写敏感严格匹配的,但是可以通过i选项来忽略:

-n选项,打印行号

-v选项

过滤选项,包含就不打印,不包含的就打印

 

grep行过滤功能的应用

在进程当中: ps命令查看当前登录1用户启动的进程

命令: ps ajx显示所有的进程信息

这些都是以行为1单位的,那么如果我想查找其中的某一行就可以使用grep命令,同时可以运用管道一起:

再次补充日志知识:

日志等级:我们平时进行日志打印的时候,日志是由等级的,伴随输出可能有DEBUG  bug日志 NORMAL(常规的) WORING FATAL(致命的) ERROR等

 打印日志可以看到三月的8号21点时有一个异常

 20、sort将文件内容按照ACSII码值排序

sort -r 文件 逆向排序

uniq文件名:将文件内容中的相邻重复项合并为一项

uniq -d 文件名  只打印相邻重复行

 

 去重不彻底,只去除相邻的

最好的去重:sort (将重复的放在一块,再uniq

(

uniq -c 显示内容有几行重复:

 对文本行 一共有多少行进行统计:wc -l

21.打包压缩命令:

打包:把几个或者多个文件放在一个目录里面

压缩:用算法进行压缩

打包好处或者为什么要打包:①多个文件转为一个,防止文件丢失②更节省空间,(网络传输的时候更节省空间,减少用户下载成本)

linux中怎么压缩:不同的压缩方案根据不同的后缀区分

①zip后缀

zip  要形成的新文件  要打包的目标对象

如果试指令zip/unzip等显示not comand 就要下载一下yum install -y zip/unzip

我们在打包一个目录到另外一个目录1下解包:

 

 发现,解包没有内容:zip方式打包不会将目录及其里面的内容打包要使用-r选项

 

我们移动解包:此时就打包了目录和内容(隐藏文件不打包)

解压到指定路径下:unzip .zip -d 路径

 对于.rar的压缩包使用rar命令打包

 22.tar指令:打包、解包,不打开直接看内容

tgz后缀文件

tar 选项 目标文件名.tgz  原文件

-c   创建一个文件 z 是否要压缩 f 跟要创建的名字(当成一个指令用)

解包解压:

x 解包

z 解压

f要解开那个压缩包

-v 显示打包或者解压过程

 -C(大写)解压到指定目录下面:

23 查看体系结构  uname -

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

 cpu架构:  看见单独x86 默认32位,如果带64 就是 64位

umane -r 看计算机架构

cat /etc/redhat-release  查看当前是什么系统

 看cpU  cat /proc/cpuinfo

 看当前内存的使用情况:cat /proc/meminfo

24.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d

[Tab]按键---具有『命令补全』和『档案补齐』的功能

[Ctrl]-c按键---让当前的程序『停掉』

[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit

25关机

语法:shutdown [选项] **

常见选项:**

-h : 将系统的服务停掉后,立即关机。

-r : 在将系统的服务停掉之后就重新启动

-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思 

26.linux与windows下互传文件工具:lrzsz

安装指令:yum install -y  lrzsz

rz  将wondows文件加载到我们的linux中也可以直接拖拽

sz  进linux文件发送到windows中

两台linux下传输文件:scp 文件ming  用户名@主机地址:路径 

结语

以上就是linux的常见的命令,关于指令大家可以不用就是刻意去记住,要用可以查询,多用就会熟悉,大家可以多做了解,看一下linux下还有那些好玩的指令

比如sl:

当然也需要下载相关插件,大家可以多搜索尝试,本次文章耗时一个周,整理完毕,大家觉得有用就可以收藏。知识含量蛮多,大家可以配合解释和原码运行理解。创作不易,大家如果觉得还可以的话,欢迎大家三连,有问题的地方欢迎大家指正,一起交流学习,一起成长,我是Nicn,正在c++方向前行的奋斗者,数据结构内容持续更新中,感谢大家的关注与喜欢。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐