目录
3. ls -l (ll):显示当前路径下所有目录、文件的更多属性,包括创建时间等
4. ls -a (ls -la / la -al):显示显示当前路径下的隐藏文件
19. mkdir -p :在当前路径下创建一串路径(连续的目录)
36. cat -s :打印文件内容并将连续的空行压缩为一行
39. echo + 字符串 > 文件名 :将字符串内容写入普通文件中
43. >> 追加重定向: 不清空文件,在文件的末尾追加写入数据
56. find 路径 -name 文件名:查找指定路径下的文件
58.grep -v :行文本逆向过滤,过滤出不包含关键字的行
63. sz :将Linux系统中的压缩包文件传输到Windows系统中
64. rz :将Windows系统中压缩包文件传输到Linux系统中
前言:什么是指令?
指令本质上就是程序,和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系统)