Linux基本指令

发布时间:2024年01月19日

前言:什么是指令?

指令本质上就是程序,和Windows系统中的.exe可执行程序一样。

在Windows系统中,可以通过桌面快捷方式快速的找到这些可执行程序,从而运行;那么在Linux系统中这些指令存放在什么位置呢?

答案是:/usr/bin ,如下图(太多指令,截图不下)

因此安装/卸载就是:将 可执行程序 拷贝到系统路径 / 从系统路径中删除

1. pwd:显示当前我们在Linux系统中所处路径

pwd?

当前所处路径为 /root/linux

2. ls:显示当前路径下所有目录、文件名称

ls?

显示出linux路径下,有linux1、linux2目录和test.txt文件

3. ls -l (ll):显示当前路径下所有目录、文件的更多属性,包括创建时间等

ls -l?

显示出了linux1、linux2目录和test.txt文件的更多属性

4. ls -a (ls -la / la -al):显示显示当前路径下的隐藏文件

ls -a?

显示当前路径下的所有文件和目录,包括隐藏文件和目录(在Linux环境下,以 . 开头的文件叫做隐藏文件/目录,Linux系统中任何一个目录下都默认有两个隐藏文件 . 和 ..)

?我们可以自己创建一个隐藏文件,如.file.txt ,仅使用ls就看不见隐藏文件,使用ls -a才能查看到

再创建一个隐藏目录 .file

5. mkdir :在当前路径下新建一个目录

mkdir?

在 /root/linux 路径下,新建了一个名为 linux3 的目录

6. touch:在当前路径下新建普通文件

touch 文件名

在 /root/linux 路径下,新建了一个名为 Text.txt 的普通文件

7. cd :进入目录

cd 目录

进入 linux1 目录中后,可以看到我们当前所处路径为?/root/linux/linux1?

cd + 路径 可以直接通过路径进入到某个目录中

起初我们处在根目录下,然后通过cd + 路径进入到目录 linux1 中

8. cd .. :返回上一级目录

cd ..?

起初所在路径为 /root/linux/linux1 ,经过逐步回退,最终回退到根目录?/?

可以连续回退,最终回退到根目录 /

9. ls 目录?:显示该目录下的目录/文件

ls linux 显示linux目录下的目录和文件,linux目录下有目录linux1、linux2、linux3,文件test.txt、Text.txt

ls 目录文件名

10. ls -ld 目录:只显示该目录的属性

ls -ld 目录文件名

11. cd - :跳转到最近一次所处的路径

cd -

最开始我们处于路径 /root/linux/linux1 ,通过连续回退,回退到根目录 / ,然后通过 cd - 返回到刚刚所处的路径,即 /root/linux/linux1

12. whoami :查看当前登录的用户是谁

whoami

Linux和Windows系统一样,都是多用户操作系统

使用whoami查看到当前Linux系统登录的用户为root

13. cd ~ :进入用户家目录

cd ~

当前登录的用户是root用户,该用户的家目录是 /root

14.什么是家目录?

用于存放与当前登录用户强相关的所有数据的文件夹。

在Windows系统中也有家目录的存在,在系统盘中可以找到Users文件夹,在Users文件夹中就可以找到有哪些用户,例如我只有一个名为小米的用户的。继续打开小米文件夹,会找到一个桌面文件夹,他是用于存放桌面上所有文件的。

因此,如果我们有多个用户,当登录Windows操作系统时,操作系统首先会确认登录用户是谁,再打开对应的用户的家目录下的桌面文件夹,最后再将桌面文件夹中的内容显示为图形化界面。

?在Linux操作系统中,也存在家目录:

对于root(超级管理员账号),其默认的家目录是 /root?

对于普通用户(普通账号),其默认的家目录是 /home/xxx(xxx为用户名)

任何一个用户首次登录,默认所处路径都是其对应的家目录。

15. which :查看某个可执行程序在系统中的路径

which 可执行程序

ls可执行程序在 /usr/bin/ls 路径下

pwd可执行文件在 /usr/bin/pwd路径下

既然可以找到可执行程序的路径,那么直接通过路径也可以执行该程序

例如执行ls可执行程序,既可以通过指令ls,也可以通过其路径 /usr/bin/ls

但是其效果上,有颜色的差异 ,为什么呢?见下一指令alias

16. alias :给指令起别名

alias 指令名='新指令名'

例如给指令ls -a -l 起别名为 lisi ,那么只需使用 lisi 即可

同理,这也就是为什么 ls -l 指令也可以写成 ll 的原因?

17. stat :查看一个文件/目录的更详细属性信息

stat 目录名

?例如,分别查看目录 linux1 的更详细属性和普通文件 test.txt 的更详细属性

18. ACM时间

值得注意的是,在更详细属性中有三种时间属性,分别是Access、Modify、Change

Access:访问时间

Modify:修改时间

Change:改变时间?

19. mkdir -p :在当前路径下创建一串路径(连续的目录)

mkdir -p 连续路径

例如,在 /root/linux 路径下,创建一串路径 a/b/c/d/e

20. tree :以树状结构显示目录结构

tree 目录名

如果tree命令未安装,先用 yum -y install tree 指令安装(仅限root用户)

例如,显示目录a(tree a)结构如下:

显示当前所在目录(tree .)结构如下:

21. ctrl + c :终止异常指令

ctrl + c同时按键

例如,当使用 tree / 展示根目录的树状结构时,程序会运行很久停不下来,就需要使用 ctrl + c指令终止

22. rmdir: 删除空目录

rmdir 空目录名

例如,linux4为一个空目录,使用rmdir指令删除掉linux4

23. rm:删除普通文件

rm 普通文件名

例如,删除普通文件 test.txt?

root账号下需要确认:确认删除输入y,不删除输入n

如果误输其他字符需要使用 ctrl+back 键来删除?

?24. rm -f :强制删除普通文件,无需确认

rm -f 普通文件名

例如,删除普通文件Text.txt?

25.? rm -r :递归式删除目录,删除目录中所有内容

rm -r 目录名

例如,删除目录1中的所有内容,目录1中包含目录2,目录2中包含目录3,删除时需要确认

?26. rm -rf:强制递归式删除目录,无需确认

rm -rf 目录名

(注意:不可强制递归式删除根目录,否则相当于系统格式化,系统就“挂掉了”)

例如,删除目录a,目录a的树状结构如下

?27. * :通配符:用于匹配任意文件名

ls data*1 就是显示以data开头,1结尾的文件目录

ls * 就是显示所有文件目录

rm -f * 就是删除所有文件目录

28. man :查看某个指令的用法

man 指令名

例如,man ls:查看ls指令的用法

使用 上下箭头键/回车键 进行翻阅,使用q进行退出

man是有多个手册的,查看时需要加上数字来确定具体查看哪一个手册(如果不加数字,默认小号手册开始查找,直到查找到)

1号手册可查各类指令(可执行程序)

2号手册可查系统调用相关的接口

3号手册可查C语言库函数

man 3 printf:printf 是C语言库函数中的一条函数

man printf: printf 也是 linux 系统中的一条指令

?29. printf :打印

printf “打印内容”

例如,使用printf打印 "hello Linux"

?30. cp :拷贝文件

cp 文件名 目标路径

cp + src?+ dst :src是源文件,dst是目标路径

dst可以是路径:将源文件拷贝到该路径下

dst也可以是路径+文件名: 将源文件拷贝到该路径下并进行重命名

例1,在 /root/linux/linux1 路径下有一个普通文件test.c,将它拷贝到上级目录,cp ..?

例2,在 /root/linux/linux1 路径下有一个普通文件test.c,将它拷贝到上级目录并重命名为Test.c,cp ../Test.c?

31. cp -rf :拷贝目录

cp -rf 目录名 目标路径

cp -rf + src + dst :src是源目录,dst是目标路径

dst可以是路径:将源目录拷贝到目标路径下

dst也可以是路径+目录名:将源目录拷贝到目标路径下并重命名

例1,在 /root/linux 路径下有目录a,cp -rf a / 将该目录拷贝到根目录下

例2,在 /root/linux 路径下有目录a,cp -rf a / 将该目录拷贝到根目录下并重命名为A

?32. mv :重命名 / 剪切文件和目录

mv 原文件名 新文件名

例1,将普通文件 test.c 和目录 a 分别重命名为 TEST.c 和 A?

例2,将文件TEST.c 剪切到根目录下

mv 文件名 目标路径

?例3,将目录A剪切到根目录下并重命名为AAA

?33. nano:记事本

nano

使用 yum install -y nano 进行安装

例如,用nano记事本打开code.c 文件,并在记事本中写C语言代码

34. cat :打印出文件的内容

cat 文件名

从文件中读取数据

例如,打印出 code.c 文件中的内容

35. cat -n :打印文件内容并带上行号

cat -n 文件名

例如,打印出 code.c 文件中的内容并带上行号

?36. cat -s :打印文件内容并将连续的空行压缩为一行

cat -s 文件名

例如,现将code.c的内容改为如下,再用cat -s 打印,对比发现连续的空行被压缩为了一行

?37. tac :逆序打印文件内容

tac 文件名

38. echo + 字符串 :将字符串写入到显示器文件

echo 字符串

字符串可以带双引号,也可以省略双引号

39. echo + 字符串 > 文件名 :将字符串内容写入普通文件中

echo 字符串 > 文件名

?如果该文件存在且已有内容,则删除其内容后输入字符串;如果该文件不存在,则新建文件输入字符串

例如,code.c文件中已有内容 hello linux ,删除其内容存放字符串12345

例如,test.c 文件不存在,新建test.c 文件存放字符串 hello linux?

?40. 输出重定向 > :创建文件

> 新创建的文件名

利用 > file.txt :创建文件

41. 输出重定向 > :清空文件

> 需要清空的文件名

根据输出重定向的特性,每一次重定向都会先清空文件,再存储数据,因此可以直接利用输出重定向清空文件

?42. Linux系统中,一切皆文件

相比于Windows系统不仅有软件等文件,还有许多硬件,如键盘、显示器、鼠标……

Linux系统中,一切皆文件。

例如键盘是文件,可以从键盘中读数据就叫读文件,但是不可以向键盘中写数据,所以写数据的时候就是空文件

例如显示器是文件,可以写数据到显示器上就叫写文件,但是不可以从显示器上读数据,所以读据的时候显示器就是空文件

因此 输出重定向 > 将原本要写入到显示器的数据,写入到了普通文件中,所以 > 叫输出重定向

43. >> 追加重定向: 不清空文件,在文件的末尾追加写入数据

echo 字符串 >> 文件名

44. cat :从键盘中读取数据

cat?

直接使用 cat 指令,其后不加文件名,默认从键盘中读取数据,再写入到显示器文件中

45.? < 输入重定向?

cat < 文件名

?例如,使用 cat < code.c ,将原本从键盘中读取数据重定向为从code.c文件中读取数据

46. more :逐行查看文件(用于阅读大文件)

more 文件名

不同于cat,使用cat查看较大的文件会覆盖整个屏幕

而使用more查看文件,文件内容覆盖完屏幕后不会继续显示内容,需要使用回车键逐行阅读,还可以使用 q 键退出阅读,还可以使用 /关键字 进行关键字检索

但是,more命令有个致命缺点,就是不能进行向上阅读,因此更推荐使用 less 指令

如下,先创建一个大文件big.txt,然后使用more进行查看文件

47. less : 逐行查看文件(通常用于查看大文件)

less 文件名

less指令 和 more指令有着相同的功能,也可以逐行查看文件,也可以进行关键字检索

但是最重要的是 less指令可以使用上下箭头键进行上下翻阅文件,这是 more指令不曾有的

因此在查看大文件时,更加推荐使用 less指令

48. head :查看文件的前n行(默认为前10行)

head 文件名

例如,查看 big.txt 前十行

查看 big.txt 前5行?

?49. tail :查看文件的倒数n行(默认为倒数十行)

tail 文件名

例如,查看big.txt 文件的倒数十行

查看big.txt 文件的倒数5行

50. 如何查看文件中间部分?

例如,要查看大文件big.txt 的中间部分第491-500 行

先将查看前500行,并输出重定向到tmp.txt文件中,再查看tmp.txt的倒数十行,即可查看到大文件big.txt 的中间部分第491-500 行

?51. 管道 |

和生活中的管道一样,都是用来输送资源的。计算机的资源就是数据,因此该管道是用来输送数据的。

我们可以将数据输送到管道中,再从管道中输出。

例如查看大文件的中间部分第491-500 行(无需再创建临时文件),先将big.txt 文件中的前500行输送到管道中,再从管道中查看数据倒数十行

再例如,想爱你将大文件big.txt的前500行输送到管道中,再从管道中读取倒数十行的数据,在输送到另一个管道中,最后从该管道中逆序读取数据

52. wc -l :统计文件行数

例如,先将big.txt文件中的前500行数据输送到管道中,再从该管道中提取倒数十行输送到另一个管道中,再统计该管道中数据行数

53. date :显示时间

date

直接输入date,显示时间(但是该时间不符合日常习惯,因此可以格式化显示时间)

date +%Y:年? ??date +%m:月? ?date +%d:日? ?date +%H:时? ?date +%M:分? ?date +%S:秒

date +%F:相当于%Y-%m-%d? ?date +%X:相当于%H:%M:%S

54. 时间戳

时间戳是记录从1970年1月1日0时到目前为止的秒数

利用date +%F_%X -d x秒数可以显示从1970年1月1日0时开始计时x秒后的时间

将x改为0时,显示的时间是1970年1月1日8时,因为我们所在时区是东八区

55. cal :查看日历

cal 年份

?cal + 年份 :查看该年份12个月的日历

cal -3 :查看当前年份当前月份,以及前后一个月的日历

56. find 路径 -name 文件名:查找指定路径下的文件

find 路径 -name 文件名

查找根目录下 big.txt 文件

?查找根目录下以 .c 结尾的文件

57.grep :行文本过滤工具,过滤出包含关键字的所有行

grep 关键字 文件名

grep 关键字 文件名(关键字需要用单引号或双引号包含)

例如,查找code.c文件中包含关键字bit的行

grep -n 关键字 文件名

还可以使用 -n 带上行号:grep -n

58.grep -v :行文本逆向过滤,过滤出不包含关键字的行

grep -v 关键字 文件名

显示不包含关键字的行

同样,也可以带上 -n,显示行号:grep -nv

59.grep -i :忽略大小写,过滤出关键字的行

n、v、i 可以自由组合

忽略大小写,查看包含关键字bit的行

59. zip -r :打包并压缩目录文件

zip -r 新压缩包名 需要打包压缩的文件目录 (只能打包一个目录文件)

将目录文件linux打包压缩为 压缩包 linux.zip?

zip -r 新压缩包名 * (打包全部目录、文件)?

打包dir1目录中的 目录a、文件file1、文件file2?、文件file3?,形成压缩包test.zip

?zip -r 新压缩包名 多个指定目录名、文件名 (打包压缩指定的几个目录和文件)

打包压缩目录a和文件file1,形成压缩包test2.zip?

?60. unzip :解压压缩包文件

unzip 压缩包文件 (默认解压到当前目录)

为了便于测试,我们新建一个目录文件test,将压缩包linux.zip剪切到该目录下,然后解压

unzip 压缩包文件 -d 指定目录

?将dir1.zip解压到dir3目录中

61. tar -cvzf?:打包并压缩目录文件

tar -cvzf 新压缩包名.tgz 要打包压缩的文件目录(形成.tgz后缀的压缩包)

-v的含义是压缩过程中显示文件,可用可不用

?将目录文件dir1打包压缩,形成dir1.tgz压缩包

62.??tar -xvzf:解压压缩包文件

tar -xvzf 压缩包文件(默认解压到当前目录)

-v的含义是压缩过程中显示文件,可用可不用

解压压缩包dir1.tgz?

?

?tar -xvzf 压缩包文件 -C 指定目录(解压到指定目录)

将压缩包dir1.tgz解压到目录dir2中?

63. sz :将Linux系统中的压缩包文件传输到Windows系统中?

sz 文件

将dir1.tgz压缩包文件传输到Windows系统上?

64. rz :将Windows系统中压缩包文件传输到Linux系统中

rz + 回车?

?

?

65. scp :两台Linux系统的压缩包文件互传

scp 压缩包文件 用户名@另一台Linux机器的IP地址:需要拷贝到的路径

将当前Linux机器中的压缩包文件dir.tgz 以root用户的身份传输到另一台IP地址为43.138.218.218.166的机器中

?66. bc :Linux系统的计算器

bc + 回车

使用Linux系统的计算器计算87/10和6+9?

?退出计算器使用 quit + 回车

67. uname :查看Linux操作系统的软硬件信息

uname -r :查看操作系统内核版本和机器架构

查看我的Linux系统版本3.10.0-1160.99.1.el7? ?机器架构为x86_64?

(el7表示为CentOS7系统)

文章来源:https://blog.csdn.net/2301_76197086/article/details/134323456
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。