🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏1: 🍔🍟🌯C语言初阶
🐻推荐专栏2: 🍔🍟🌯C语言进阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:
介绍linux下的基本指令,移动文件,复制文件,大文本查看,管道,指令的本质等等.
前言
linux
基础指令比较多,这里分多篇文章讲解.
目录
- 前言
- 一、[mv]指令
- 1.1 重命名文件
- 1.2 剪切文件/目录
- 二、[echo]指令与[cat]指令
- (1) echo指令
- ①输入重定向 "<"
- ②追加重定向 "<<"
- ③输出重定向 ">"
- (2) cat指令
- 三.查找文件指令
- 3.1 [which]指令
- 3.2 [whereis]指令
- 3.3 [find]指令
- 四、大文本查看
- 4.1 [more]指令
- 4.2 [less]指令
- 4.3 [head]指令(重点)
- 4.4 [tail]指令(重点)
- 4.5 管道的介绍(重点)
- 五、时间/日期指令
- 5.1 [date]日期指令
- 5.2 [cal]日历指令
- 六、指令本质是什么?
- [alias]指令
一、[mv]指令
mv
命令全称:move
作用:
可以用来移动文件(剪切文件)或者将文件改名,是Linux
系统下常用的命令,经常用来备份文件或者目录。
格式:mv+ 源文件或目录 +目标文件或目录
功能:
- 根据
mv
命令中第二个参数类型的不同
目标文件;mv命令将文件重命名.
目标目录:将其移至这个,目标目录中。 - 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它
将所给的源文件或目录重命名为给定的目标文件名。 - 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至
目标目录中。
常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
1.1 重命名文件
格式: mv+ 文件名 +新文件名
示例:
将文件
test.txt
文件重命名为tmp.txt
.
1.2 剪切文件/目录
格式: mv+ 文件名/目录名 +目的地
剪切文件:
示例:
将当前目录下的
tmp.txt
文件拷贝至上级目录.
指令: mv tmp.txt ..
操作:
剪切目录 :
示例:
将
dir1
目录下的dir2
目录拷贝至dir4
目录下
指令: mv dir1/dir2 dir4
操作:
二、[echo]指令与[cat]指令
(1) echo指令
echo
指令用来在终端窗口上打印输出一段文本。它可以用于输出变量的值、常量、字符串等内容,以及在脚本中进行调试时输出一些信息。在不带任何参数的情况下,echo
指令会输出一个空行。语法为:
echo
[选项] [字符串]
示例:
将
hello cjn
显示在显示器中. 指令:echo "hello cjn"
将hello CSDN
显示在显示中. 指令:echo "hello CSDN"
①输入重定向 “<”
标准输入:键盘
输入重定向是指将一个文件的内容作为程序的输入,而不是只规定从键盘输入。所以被称为输入重定向.
示例1:
假设有一个名为“input.txt
”的文件,想把它作为输入传递给cat
命令,可以使用命令:
指令:
cat < input.txt
这将把“input.txt
”文件中的内容作为cat
命令的输入,而不是从键盘输入。
②追加重定向 “<<”
如果我们对同一个文件进行多次输出重定向时.
(图中写错了,是输出重定向)
很明显,结果只有最后一次向文件写入的结果,为什么呢?
向目标文件进行写入时,会将目标文件中的内容先全部清除,也就是覆盖写入.
(1)清空文件.
(2)写入新内容.
这里也就出现了最新的那一次内容:
追加重定向: “<<”:
示例:
向
test.txt
文件后追加,星期一
到星期七
.
③输出重定向 “>”
输出重定向: '“>”
定义:
在Linux
下,输出重定向指的是将程序的标准输出(屏幕)重定向到文件或者其他输出设备中,可以使用符号“>
”或“>>
”来实现。
例如,假设要将ls
命令输出结果保存到文件“file.txt
”中,可以使用命令:
ls > file.txt
这将把ls
命令的输出结果重定向到一个名为“file.txt
”的文件中.
- 如果文件不存在,则会自动创建一个新文件.
- 如果文件已经存在,则会覆盖原有内容。
另外,如果想把输出结果追加到文件中而不是覆盖原有内容,可以使用“>>”符号,例如:
指令:
ls >> file.txt
示例2:
将字符串:"
欢迎来到CSDN! --初阶牛
"写入到test5.txt
中.
指令:
echo "欢迎来到CSDN! --初阶牛" > test5.txt
(2) cat指令
cat
指令功能: 查看目标文件的内容
格式:
cat+文件名
子选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行(即多行空行只输出一行)
示例:
如果cat
指令后面什么都不跟,则是默认从输入设备(键盘等)获取数据,显示到显示器中.
示例:
指令:cat
三.查找文件指令
3.1 [which]指令
一般是在指定路径(/usr/bin
)下搜索指令位置.
功能:
用于查找指令所在处目录
示例:
分别查询
ls
、ll
、pwd
指令所处目录
3.2 [whereis]指令
在系统的特定路径下查找,既可以查找可执行程序,又可以查找手册,安装包,压缩包等.
3.3 [find]指令
Linux
下的find
指令是一种强大的搜索工具,它可以在指定目录及其子目录中查找指定名称、时间、大小、权限等属性的文件或目录。
内容及其强大,在磁盘上查找任何文件(权限足够的话)
常用的find
命令格式为:
find [path] [options] [expression]
其中,path
指定要搜索的目录;options
用于指定搜索的条件;expression
为指定要搜索的文件名或类型等表达式。
示例:
查找当前目录下所有的txt
文件,可以使用如下命令:
find ./ -name "*.txt"
这个命令中,“.
“表示当前目录,”-name
"表示按照文件名进行搜索,”*.txt
"表示要搜索的文件名是以".txt
"结尾的。
另外,还有一些常用的选项,如:
-type:按照文件类型进行搜索,常见的包括f(普通文件)、d(目录)、l(符号链接)、s(套接字)等;
-size:按照文件大小进行搜索,可用的单位有b(字节)、k(千字节)、M(兆字节)等;
-mtime:按照文件修改时间进行搜索,可用的单位有-代表小于、+代表大于、空代表等于;
-user、-group:按照文件所属用户或组进行搜索;
-exec:对搜索到的文件进行操作,例如执行一个命令等。
需要注意的是,find
命令比较复杂,建议在使用前查阅相关文档或者使用man
命令查看命令的详细用法。Linux
下的find
指令是一种强大的搜索工具,它可以在指定目录及其子目录中查找指定名称、时间、大小、权限等属性的文件或目录。
四、大文本查看
4.1 [more]指令
格式:more+ [选项] +[文件]
功能:more
命令,功能类似 cat ,只不过是cat是适合查看小文本.
子选项:
-n 对输出的所有行编号
使用方法:
more
+文件名
搜索: /+数字
向下滚动搜索: Enter键(more指令只有向下搜索键)
退出:more
指令 :q
4.2 [less]指令
格式: less
+ [参数]+ 文件
功能:
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
more
指令一般很少使用,因为less
指令更加强大.
less
指令相比于more
指令,它既可以向上搜索(‘↑’),也可以向下搜索(‘↓’).
less
工具也是对文件或其它输出进行分页显示的工具,应该说是linux
正统查看文件内容的工具,功能极其强大。
less
的用法比起 more
更加的有弹性。在 more
的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less
时,就可以使用 [pageup
][pagedown
] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
选项:
-i :忽略搜索时的大小写
-N :显示每行的行号/字符串:向下搜索“字符串”的功能
?:字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q: quit
4.3 [head]指令(重点)
tail
和head
是Linux
系统下常用的命令。
head
命令会默认显示文本文件的前10
行内容,并将结果输出到终端屏幕上。用户可以通过选项-n
来指定输出的行数。
示例:head -20 test5.txt
可以输出test5.txt
文件的前20
行。
4.4 [tail]指令(重点)
而tail
命令会默认显示文本文件的最后10行内容,并将结果输出到终端屏幕上。用户同样可以通过选项-n
来指定输出的行数。
示例: tail -20 test7.txt
可以输出test7.txt
文件的最后20
行。
tail
和head
命令还可以用于实时监控日志文件,例如,可以使用tail -f
命令来实时监控日志文件的变化,新的日志信息将会实时输出到终端屏幕上。tail
和head
是Linux
系统下常用的命令。
4.5 管道的介绍(重点)
管道(pipe)是一种在Linux
操作系统下,将多个命令连接在一起来实现数据传输和处理的机制。通过管道,一个命令的输出可以成为另一个命令的输入,从而可以实现对数据的处理。在Linux
中,管道使用竖线符号“|
”来表示。
基本使用方法:命令1 | 命令2
其中,命令1的输出会作为命令2的输入,命令2会处理命令1输出的数据。
示例:
对于大文本,如果我们不是需要头和尾的数据,而是要中间数据该怎样获取呢?
例如:
获取866行到888行的数据
指令: head -889 test7.txt | tail -23
五、时间/日期指令
5.1 [date]日期指令
date
指令用于显示当前的日期和时间.
date
指定格式显示时间: date +%Y:%m:%d
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
2.在设定时间方面(了解就行,不需要记住,可以当做查阅资料)
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″ //这样可以设置全部时间
3.时间戳
时间戳是指一个特定时间点的标识,通常是一个整数,表示该时间点与某个特定时间点(通常是1970年1月1日 00:00:00 UTC)之间的时间差。在计算机领域中,时间戳被广泛应用于记录事件或计算时间间隔。常见的时间戳格式有Unix时间戳(以秒为单位)和JavaScript时间戳(以毫秒为单位)。时间戳是指一个特定时间点的标识,通常是一个整数,表示该时间点与某个特定时间点(通常是1970年1月1日 00:00:00 UTC)之间的时间差。
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
时间戳是一串数字,表示从1970年的1月1日 00:00:00,下面操作中是8点开始,那是因为北京是东八区,相对早八个小时.
5.2 [cal]日历指令
在Linux
系统中,cal
是一个简单的命令行工具,用于显示当前月份的日历或指定月份的日历。
语法:cal [month] [year]
常用子选项:
-3 显示系统前一个月,当前月,下一个月的月历.
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
如果省略了月份和年份,则默认显示当前月份的日历。
示例1:
输入“cal”命令,将显示当前月份的日历:
如果指定了月份和年份,则会显示该月份的日历。
示例:
“
cal 10 2023
”命令,则会显示2023年10月份的日历:
October 2023
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
指令:cal -3
- 显示当前月份的上一个月份.
- 显示当前月份.
- 显示当前月份的下一个月份.
指令:cal+年份
示例:显示2023
年的日历
六、指令本质是什么?
在root
账户下,我们可以查看一个特别的目录
指令: ls /usr/bin
指向过后,会发现很多指令,其中就有我们经常使用的cat
、cd
、rm
、tree
指令等等都将在里面被找到.
目录:usr/bin
就是一个用于存放指令的特殊目录.
如果我们自己写了一个C
代码,编译过后形成了一个可执行程序.
将自己编写的可执行程序放入这个用于存放指令的目录(usr/bin
)下:
示例:
将
a.out
文件移动到/usr/bin
路径底下
(注意这条操作只能在root账户下执行)
指令:mv a.out /usr/bin
所以看到这里就知道指令和我们平常写的代码生成的可执行程序没有本质区别,指令本身也是由python/c
等等语言写的.
其实安装软件就是类似于这类行为.
指令的本质就是可执行程序 |
强烈不建议随意将自己写的可执行程序放入/usr/bin
目录下,如果放多了,会很乱的,自己都可能不记得,还会与自带的指令混淆.
实验过后记得及时删除:
[alias]指令
alias
指令可以给系统指令取别名.
示例:
将
ll
指令取别名为_cjn
指令:alias _cjn='ll'
大家也不用担心会导致命名混乱,因为退出xshell
客户端后,下次进来这些别名都将失效了,这只是临时别名.