指令本质上就是程序,和Windows系统中的.exe可执行程序一样。
在Windows系统中,可以通过桌面快捷方式快速的找到这些可执行程序,从而运行;那么在Linux系统中这些指令存放在什么位置呢?
答案是:/usr/bin ,如下图(太多指令,截图不下)
因此安装/卸载就是:将 可执行程序 拷贝到系统路径 / 从系统路径中删除
pwd?
当前所处路径为 /root/linux
ls?
显示出linux路径下,有linux1、linux2目录和test.txt文件
ls -l?
显示出了linux1、linux2目录和test.txt文件的更多属性
ls -a?
显示当前路径下的所有文件和目录,包括隐藏文件和目录(在Linux环境下,以 . 开头的文件叫做隐藏文件/目录,Linux系统中任何一个目录下都默认有两个隐藏文件 . 和 ..)
?我们可以自己创建一个隐藏文件,如.file.txt ,仅使用ls就看不见隐藏文件,使用ls -a才能查看到
再创建一个隐藏目录 .file
mkdir?
在 /root/linux 路径下,新建了一个名为 linux3 的目录
touch 文件名
在 /root/linux 路径下,新建了一个名为 Text.txt 的普通文件
cd 目录
进入 linux1 目录中后,可以看到我们当前所处路径为?/root/linux/linux1?
cd + 路径 可以直接通过路径进入到某个目录中
起初我们处在根目录下,然后通过cd + 路径进入到目录 linux1 中
cd ..?
起初所在路径为 /root/linux/linux1 ,经过逐步回退,最终回退到根目录?/?
可以连续回退,最终回退到根目录 /
ls linux 显示linux目录下的目录和文件,linux目录下有目录linux1、linux2、linux3,文件test.txt、Text.txt
ls 目录文件名
ls -ld 目录文件名
cd -
最开始我们处于路径 /root/linux/linux1 ,通过连续回退,回退到根目录 / ,然后通过 cd - 返回到刚刚所处的路径,即 /root/linux/linux1
whoami
Linux和Windows系统一样,都是多用户操作系统
使用whoami查看到当前Linux系统登录的用户为root
cd ~
当前登录的用户是root用户,该用户的家目录是 /root
用于存放与当前登录用户强相关的所有数据的文件夹。
在Windows系统中也有家目录的存在,在系统盘中可以找到Users文件夹,在Users文件夹中就可以找到有哪些用户,例如我只有一个名为小米的用户的。继续打开小米文件夹,会找到一个桌面文件夹,他是用于存放桌面上所有文件的。
因此,如果我们有多个用户,当登录Windows操作系统时,操作系统首先会确认登录用户是谁,再打开对应的用户的家目录下的桌面文件夹,最后再将桌面文件夹中的内容显示为图形化界面。
?在Linux操作系统中,也存在家目录:
对于root(超级管理员账号),其默认的家目录是 /root?
对于普通用户(普通账号),其默认的家目录是 /home/xxx(xxx为用户名)
任何一个用户首次登录,默认所处路径都是其对应的家目录。
which 可执行程序
ls可执行程序在 /usr/bin/ls 路径下
pwd可执行文件在 /usr/bin/pwd路径下
既然可以找到可执行程序的路径,那么直接通过路径也可以执行该程序
例如执行ls可执行程序,既可以通过指令ls,也可以通过其路径 /usr/bin/ls
但是其效果上,有颜色的差异 ,为什么呢?见下一指令alias
alias 指令名='新指令名'
例如给指令ls -a -l 起别名为 lisi ,那么只需使用 lisi 即可
同理,这也就是为什么 ls -l 指令也可以写成 ll 的原因?
stat 目录名
?例如,分别查看目录 linux1 的更详细属性和普通文件 test.txt 的更详细属性
值得注意的是,在更详细属性中有三种时间属性,分别是Access、Modify、Change
Access:访问时间
Modify:修改时间
Change:改变时间?
mkdir -p 连续路径
例如,在 /root/linux 路径下,创建一串路径 a/b/c/d/e
tree 目录名
如果tree命令未安装,先用 yum -y install tree 指令安装(仅限root用户)
例如,显示目录a(tree a)结构如下:
显示当前所在目录(tree .)结构如下:
ctrl + c同时按键
例如,当使用 tree / 展示根目录的树状结构时,程序会运行很久停不下来,就需要使用 ctrl + c指令终止
rmdir 空目录名
例如,linux4为一个空目录,使用rmdir指令删除掉linux4
rm 普通文件名
例如,删除普通文件 test.txt?
root账号下需要确认:确认删除输入y,不删除输入n
如果误输其他字符需要使用 ctrl+back 键来删除?
rm -f 普通文件名
例如,删除普通文件Text.txt?
rm -r 目录名
例如,删除目录1中的所有内容,目录1中包含目录2,目录2中包含目录3,删除时需要确认
rm -rf 目录名
(注意:不可强制递归式删除根目录,否则相当于系统格式化,系统就“挂掉了”)
例如,删除目录a,目录a的树状结构如下
ls data*1 就是显示以data开头,1结尾的文件目录
ls * 就是显示所有文件目录
rm -f * 就是删除所有文件目录
man 指令名
例如,man ls:查看ls指令的用法
使用 上下箭头键/回车键 进行翻阅,使用q进行退出
man是有多个手册的,查看时需要加上数字来确定具体查看哪一个手册(如果不加数字,默认小号手册开始查找,直到查找到)
1号手册可查各类指令(可执行程序)
2号手册可查系统调用相关的接口
3号手册可查C语言库函数
man 3 printf:printf 是C语言库函数中的一条函数
man printf: printf 也是 linux 系统中的一条指令
printf “打印内容”
例如,使用printf打印 "hello Linux"
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?
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
mv 原文件名 新文件名
例1,将普通文件 test.c 和目录 a 分别重命名为 TEST.c 和 A?
例2,将文件TEST.c 剪切到根目录下
mv 文件名 目标路径
?例3,将目录A剪切到根目录下并重命名为AAA
nano
使用 yum install -y nano 进行安装
例如,用nano记事本打开code.c 文件,并在记事本中写C语言代码
cat 文件名
从文件中读取数据
例如,打印出 code.c 文件中的内容
cat -n 文件名
例如,打印出 code.c 文件中的内容并带上行号
cat -s 文件名
例如,现将code.c的内容改为如下,再用cat -s 打印,对比发现连续的空行被压缩为了一行
tac 文件名
echo 字符串
字符串可以带双引号,也可以省略双引号
echo 字符串 > 文件名
?如果该文件存在且已有内容,则删除其内容后输入字符串;如果该文件不存在,则新建文件输入字符串
例如,code.c文件中已有内容 hello linux ,删除其内容存放字符串12345
例如,test.c 文件不存在,新建test.c 文件存放字符串 hello linux?
> 新创建的文件名
利用 > file.txt :创建文件
> 需要清空的文件名
根据输出重定向的特性,每一次重定向都会先清空文件,再存储数据,因此可以直接利用输出重定向清空文件
相比于Windows系统不仅有软件等文件,还有许多硬件,如键盘、显示器、鼠标……
Linux系统中,一切皆文件。
例如键盘是文件,可以从键盘中读数据就叫读文件,但是不可以向键盘中写数据,所以写数据的时候就是空文件
例如显示器是文件,可以写数据到显示器上就叫写文件,但是不可以从显示器上读数据,所以读据的时候显示器就是空文件
因此 输出重定向 > 将原本要写入到显示器的数据,写入到了普通文件中,所以 > 叫输出重定向
echo 字符串 >> 文件名
cat?
直接使用 cat 指令,其后不加文件名,默认从键盘中读取数据,再写入到显示器文件中
cat < 文件名
?例如,使用 cat < code.c ,将原本从键盘中读取数据重定向为从code.c文件中读取数据
more 文件名
不同于cat,使用cat查看较大的文件会覆盖整个屏幕
而使用more查看文件,文件内容覆盖完屏幕后不会继续显示内容,需要使用回车键逐行阅读,还可以使用 q 键退出阅读,还可以使用 /关键字 进行关键字检索
但是,more命令有个致命缺点,就是不能进行向上阅读,因此更推荐使用 less 指令
如下,先创建一个大文件big.txt,然后使用more进行查看文件
less 文件名
less指令 和 more指令有着相同的功能,也可以逐行查看文件,也可以进行关键字检索
但是最重要的是 less指令可以使用上下箭头键进行上下翻阅文件,这是 more指令不曾有的
因此在查看大文件时,更加推荐使用 less指令
head 文件名
例如,查看 big.txt 前十行
查看 big.txt 前5行?
tail 文件名
例如,查看big.txt 文件的倒数十行
查看big.txt 文件的倒数5行
例如,要查看大文件big.txt 的中间部分第491-500 行
先将查看前500行,并输出重定向到tmp.txt文件中,再查看tmp.txt的倒数十行,即可查看到大文件big.txt 的中间部分第491-500 行
和生活中的管道一样,都是用来输送资源的。计算机的资源就是数据,因此该管道是用来输送数据的。
我们可以将数据输送到管道中,再从管道中输出。
例如查看大文件的中间部分第491-500 行(无需再创建临时文件),先将big.txt 文件中的前500行输送到管道中,再从管道中查看数据倒数十行
再例如,想爱你将大文件big.txt的前500行输送到管道中,再从管道中读取倒数十行的数据,在输送到另一个管道中,最后从该管道中逆序读取数据
例如,先将big.txt文件中的前500行数据输送到管道中,再从该管道中提取倒数十行输送到另一个管道中,再统计该管道中数据行数
date
直接输入date,显示时间(但是该时间不符合日常习惯,因此可以格式化显示时间)
date +%Y:年? ??date +%m:月? ?date +%d:日? ?date +%H:时? ?date +%M:分? ?date +%S:秒
date +%F:相当于%Y-%m-%d? ?date +%X:相当于%H:%M:%S
时间戳是记录从1970年1月1日0时到目前为止的秒数
利用date +%F_%X -d x秒数可以显示从1970年1月1日0时开始计时x秒后的时间
将x改为0时,显示的时间是1970年1月1日8时,因为我们所在时区是东八区
cal 年份
?cal + 年份 :查看该年份12个月的日历
cal -3 :查看当前年份当前月份,以及前后一个月的日历
find 路径 -name 文件名
查找根目录下 big.txt 文件
?查找根目录下以 .c 结尾的文件
grep 关键字 文件名
grep 关键字 文件名(关键字需要用单引号或双引号包含)
例如,查找code.c文件中包含关键字bit的行
grep -n 关键字 文件名
还可以使用 -n 带上行号:grep -n
grep -v 关键字 文件名
显示不包含关键字的行
同样,也可以带上 -n,显示行号:grep -nv
n、v、i 可以自由组合
忽略大小写,查看包含关键字bit的行
zip -r 新压缩包名 需要打包压缩的文件目录 (只能打包一个目录文件)
将目录文件linux打包压缩为 压缩包 linux.zip?
zip -r 新压缩包名 * (打包全部目录、文件)?
打包dir1目录中的 目录a、文件file1、文件file2?、文件file3?,形成压缩包test.zip
?zip -r 新压缩包名 多个指定目录名、文件名 (打包压缩指定的几个目录和文件)
打包压缩目录a和文件file1,形成压缩包test2.zip?
unzip 压缩包文件 (默认解压到当前目录)
为了便于测试,我们新建一个目录文件test,将压缩包linux.zip剪切到该目录下,然后解压
unzip 压缩包文件 -d 指定目录
?将dir1.zip解压到dir3目录中
tar -cvzf 新压缩包名.tgz 要打包压缩的文件目录(形成.tgz后缀的压缩包)
-v的含义是压缩过程中显示文件,可用可不用
?将目录文件dir1打包压缩,形成dir1.tgz压缩包
tar -xvzf 压缩包文件(默认解压到当前目录)
-v的含义是压缩过程中显示文件,可用可不用
解压压缩包dir1.tgz?
?
?tar -xvzf 压缩包文件 -C 指定目录(解压到指定目录)
将压缩包dir1.tgz解压到目录dir2中?
sz 文件
将dir1.tgz压缩包文件传输到Windows系统上?
rz + 回车?
?
?
scp 压缩包文件 用户名@另一台Linux机器的IP地址:需要拷贝到的路径
将当前Linux机器中的压缩包文件dir.tgz 以root用户的身份传输到另一台IP地址为43.138.218.218.166的机器中
bc + 回车
使用Linux系统的计算器计算87/10和6+9?
?退出计算器使用 quit + 回车
uname -r :查看操作系统内核版本和机器架构
查看我的Linux系统版本3.10.0-1160.99.1.el7? ?机器架构为x86_64?
(el7表示为CentOS7系统)