🐶博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux
🔥座右铭:“不要等到什么都没有了,才下定决心去做”
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
目录
输出重定向
[root@ALY lesson1]# echo "hello world" >test.txt
这里将字符串输入到字符串中,>这就是输出重定向
在 Linux 中,输出重定向是一种将程序的输出流重定向到文件或其他设备的方式。
有两种常用的输出重定向操作符可以使用:
1. ">" 符号:将程序的标准输出重定向到一个文件中,如果文件不存在,则创建该文件并写入输出内容。如果文件已存在,则会覆盖原有内容。 例如:将命令的输出重定向到一个文件中:command > file.txt
2. ">>" 符号:将程序的标准输出追加到一个文件中,如果文件不存在,则创建该文件并写入输出内容。如果文件已存在,则在文件末尾追加内容。 例如:将命令的输出追加到一个文件中:command >> file.txt
创建的文件和清空文件
创建文件的新方法
使用语法:
> 文件名
例如:
[root@ALY lesson1]# >mytest.txt//大于符号加文件名 [root@ALY lesson1]# ls mytest.txt mytest.txt文件就创建好了
清空文件
> 文件名(该文件是已创建的文件)
例如
[root@ALY lesson1]# >mytest.txt//大于符号加已知的文件名
linux下一切皆文件
在 Linux 中,"一切皆文件" 是一个常用的说法,它指的是 Linux 系统中几乎所有的资源都以文件的形式进行操作和管理。
在 Linux 中,文件不仅仅指普通的文本文件,还包括其他类型的文件,如目录、设备、套接字等。这种统一的文件系统抽象使得对这些资源的访问和管理更加统一和方便。
一些常见的例子包括:
- 普通文件:包含文本、二进制数据等信息。
- 目录:用于组织和存储文件和其他目录。
- 设备文件:用于访问硬件设备,如硬盘、键盘、鼠标等。
- 套接字:用于进程间的通信。
- 管道:用于进程间的通信。
- 符号链接(软链接和硬链接):用于创建文件或目录的别名。
这种一切皆文件的思想使得在 Linux 中,对不同资源的操作可以使用统一的文件系统接口,如读取、写入、复制、删除等。同时,也为系统管理员提供了更灵活和强大的管理工具和技术。
默认程序运行的时候,会打开三个输入输出流
标准输入:键盘 stdin
标准输出:显示器 stdout
标准错误:显示器 stdcerr
其实这三个也是文件指针(FILE*)
输入重定向
本来应该从键盘文件读取数据
现在从普通文件读取数据
例如:
[root@ALY lesson1]# cat <test.txt hello world hello world hello world hello world
切换账号
root切换到普通账号
su 账号名
普通账号切换到root
su
管道
Linux中的管道是一种特殊的命令行功能,用于将一个命令的输出作为另一个命令的输入。管道使用竖线符号(|)来连接两个或多个命令,将前一个命令的标准输出传递给后一个命令的标准输入。
例如,使用管道可以将一个命令的输出结果传递给另一个命令进行处理,如下所示:
command1 | command2
这里,command1 是第一个命令,它的输出会通过管道传递给 command2来进行处理。
使用管道可以实现很多有用的功能。例如,你可以使用 ls 命令列出当前目录中的文件,并将结果通过管道传递给 grep 命令来过滤只显示包含特定字符串的文件,如下所示:
ls | grep keyword 这样,只有文件名中包含关键字 "keyword" 的文件会被显示出来。
管道是 Linux 命令行中非常强大和灵活的功能,可以将多个命令组合起来以实现更复杂的任务。
echo指令
在 Linux 中,echo 是一个常用的命令,用于在终端输出文本或变量的内容。
基本语法如下:
echo [选项] [字符串/变量]
常见的选项包括:
-n:不换行输出。
-e:解释特殊字符,如 ‘\n’ 表示换行符。
示例:
1. 输出字符串: echo "Hello, World!" 输出结果:Hello, World! 2. 输出变量: name="John" echo "My name is $name" 输出结果:My name is John 3. 使用选项: echo -n "Hello, " echo "World!" 输出结果:Hello, World! 4. 解释特殊字符: echo -e "Line 1\nLine 2" 输出结果: Line 1 Line 2
cat 指令
查看目标文件的内容
语法:
cat[选项][文件]
常见用法:
1、cat filename,查看filename内容。 2、cat -n filename,查看文件的内容,并对所有输出行进行编号(包括空白行)。 3、cat -b filename ,用法和 -n 差不多,但是不对空白行编号。 4、cat -s filename,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行。 5、cat -e filename,在输出内容的每一行后面加一个$符号(包括空白行)。
cat -n filename,查看文件的内容,并对所有输出行进行编号(包括空白行)
[root@ALY lesson1]# cat -n test.txt 1 2 hello world 3 hello world 4 hello world 5 hello world 6
cat -s filename,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行
hello world hello world hello world hello world
Cat 不跟文件的话,默认在键盘文件读取内容
[root@ALY lesson1]# cat bch bch
tac也是指令
他和cat指令用法一样,只不过tac可以反向查看文件
more命令
more命令,功能类似cat
语法:
more [选项][文件]
常用选项:
+n 从笫n行开始显示。 -n 定义屏幕大小为n行。 +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示。 -c 从顶部清屏,然后显示。 -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能。 -l 忽略Ctrl+l(换页)字符。 -p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似。 -s 把连续的多个空行显示为一行。 -u 把文件内容中的下画线去掉。
注意:在终端输入q,退出more
less指令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法:
less [参数] 文件
常用选项:
-b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o <文件名> 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x <数字> 将“tab”键显示为规定的数字空格
注意:cat一般用于查看小文件,less查看大文件
head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结。
语法:
head [参数]... [文件]...
功能:
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
常用选项:
-n N 显示文件前N行的内容 -c N 显示文件前N字节的内容
tail 指令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容
语法:
tail[必要参数][选择参数][文件]
功能:
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
常用选项:
-f 循环读取 -n<行数> 显示行数
截取数据的中间部分
[root@ALY lesson1]# head -20 big.txt | tail -10 big.txt |:管道 使用管道可以将一个命令的输出结果传递给另一个命令进行处理 就可以查看big文件的11-20行数据
wc 指令
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
语法:
wc [选项] 文件...
常用选项:
-c :统计字节数 -l :统计行数 -m :统计字符数。这个标志不能与 -c 标志一起使用 -w :统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串 -L :打印最长行的长度
事例:
[root@XILEN xl]# wc a.txt 行数 单词数 字节数 文件名 2 2 22 a.txt Wc -l 文件名 :统计行号
uniq指令
在Linux中,uniq是一个用于去除重复行的命令。它可以从输入中过滤出连续或非连续的重复行,并将唯一的行输出到终端或另一个文件中。
语法:
uniq[选项][参数]
常用选项:
uniq:将标准输入的内容去除相邻的重复行,并将结果输出到标准输出。 uniq -d:只显示重复的行。 uniq -u:只显示不重复的行。 uniq -c:在每行前面显示该行在输入中出现的次数。 uniq -i:忽略大小写进行比较。 uniq -f n:忽略前n个字段进行比较。默认情况下,字段以空白字符分隔。 uniq -s n:跳过前n个字符进行比较。 uniq -w n:只比较前n个字符。 uniq -z:以null字符作为行结束符,而不是默认的换行符。
例如,假设我们有一个名为file.txt的文件包含如下内容:
apple apple banana orange banana 运行命令uniq file.txt将输出: apple banana orange banana 其中,第二个apple被去重了。
uniq命令在处理文本文件中的行重复问题时非常有用,它可以用来统计行的重复次数、过滤排序后的数据等。使用不同的选项可以实现更精确的功能,具体根据不同的需求来选择合适的选项。
sort指令
sort将文件的每一行作为一个单位相互比较,比较原则是从首字符向后依次按ASCII码进行比较,最后将它们按升序(默认)输出。
语法:
sort[选项][参数]
常用选项:
-b:忽略每行前面开始出的空格字符; -c:检查文件是否已经按照顺序排序; -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符; -f:排序时,将小写字母视为大写字母; -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符; -m:将几个排序号的文件进行合并; -M:将前面3个字母依照月份的缩写进行排序; -n:依照数值的大小排序; -o<输出文件>:将排序后的结果存入制定的文件; -r:以相反的顺序来排序; -t<分隔字符>:指定排序时所用的栏位分隔字符; +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
排序
sort 文件名
完全去重
sort 文件名 | uniq
date指令
date 打印或设置系统日期和时间
语法:
date [参数]... [+格式]
常用参数:
-d, --date=STRING:显示由STRING指定的时间,而不是当前时间戳; -f, --file=DATEFILE:显示DATEFILE文件中的每行时间; -I[TIMESPEC], --iso-8601[=TIMESPEC]:以ISO 8601规范格式按照指定精度[TIMESPEC]显示时间。TIMESPEC默认取值为"date",亦可取值'hours', 'minutes', 'seconds', 或 'ns'; -r, --reference=FILE:显示文件的最后修改时间 -R, --rfc-2822:以RFC-2822规定格式显示时间,例如:Wed, 05 Dec 2018 22:10:34 +0800 --rfc-3339=TIMESPEC:以RFC 3339规定格式显示时间,可以由TIMESPEC指明精度,TIMESPEC可取值'date', 'seconds', or 'ns'。例如:2018-12-05 22:09:59.230994842+08:00 -s, --set=STRING:设置系统时间为STRING指定的时间 -u, --utc, --universal:显示或设定为协调世界时(UTC,Coordinated Universal Time)时间格式 --help:显示date命令的帮助信息 --version:显示date命令的版本信息
常用格式:
%% 字符% %a 星期的简称(Sun~Sat) %A 星期的全称(Sunday~Saturday) %b 月的简称(Jan~Dec) %B 月的全称(January~December) %c 日期和时间(Thu 06 Dec 2018 09:43:53 AM CST)。只输入date指令也会显示同样的结果。 %C 世纪。和%Y比较像,但不显示最后两个数字,如20 %d 一个月的第几天(01~31) %D 日期,等同于%m/%d/%y,如12/06/18 %e 一个月的第几天(1~31),单数字以空格填充,等同于%_d %F 日期,等同于%Y-%m-%d,如2018-12-06 %g 年的最后两个数字(yy),比如2018则输出18,等同于%y %G 年份(yyyy) %h 月的简称(Jan~Dec),等同于%b %H 小时,24小时制(00~23) %I 小时,12小时制(01~12) %j 一年的第几天(001~366) %k 小时,24小时制(0~23)。单数字填充空格,等同于%_H %l 小时,12小时制(1~12)。单数字填充空格,等同于%_I %m 月份(01~12) %M 分钟(00~59) %n 换行符newline %N 纳秒nanoseconds(000000000..999999999) %p 显示出AM或PM %P 显示出am或pm %r 显示时间,12小时制(hh:mm:ss %p) %R 显示小时与分钟,24小时制,等同于%H:%M %s 从1970年1月1日00:00:00到目前经历的秒数 %S 显示秒(00~59) %t Tab符 %T 显示时间,24小时制(hh:mm:ss),等同于%H:%M:%S %u 一周的第几天(1..7)。1表示星期一 %U 一年的第几周,周日为每周的第一天(00..53) %V 一年的第几周,周一为每周的第一天(01..53) %w 一个星期的第几天(0~6),0代表星期天 %W 一年的第几周,周一为每周的第一天(00..53) %x 日期(mm/dd/yyyy),如12/06/2018 %X 时间,等同于%H:%M:%S %y 年的最后两个数字(2018则是18) %Y 年(yyyy) %z 以+hhmm格式显示时区(如+0800) %:z 以+hh:mm格式显示时区(如+08:00) %::z 以+hh:mm:ss格式显示时区(如+08:00:00) %Z 缩写显示时区名称,如CST(China Standard Time) %h,%b 月的简称(Jan~Dec) 填充字符说明:默认地,date命令以0填充数字域,以下填充字符的控制符可以跟在%后使用: - (hyphen,连字符):不进行填充 _ (underscore,下划线):以空格填充 0(zero)以0填充 ^ 尽可能地使用大写输出
时间戳
在Linux系统中,时间戳通常指的是自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来经过的秒数。这个时间戳也称为 Unix 时间戳或 Epoch 时间戳。你可以使用
date
命令来获取当前时间戳,示例如下:(1)获取Unix时间戳。 [root@ALY lesson1]# date +%s 1693724281 (2)将Unix时间戳转换为可读时间。 [root@ALY lesson1]# date -d @1693724281 2023年 09月 03日 星期日 14:58:01 CST 注意:-d后需跟合法格式的日期,所以时间戳需要添加@符以示区别。 (3)格式化输出当前时间。 [root@ALY lesson1]# date +"%Y-%m-%d %H:%M:%S" -d @1693724281 2023-09-03 14:58:01
cal指令
Linux cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
语法:
cal [参数] [月份] [年份]
注意:用于查看日历等时间信息,如果参数后面跟一个值,则表示年份(1-9999),如有参数后面跟两个值,则表示月份和年份,如果参数后面没有值,则显示本月日历。
常用参数:
-1 显示一个月的月历。 -3 显示系统前一个月,当前月,下一个月的月历。 -s 显示星期天为一个星期的第一天,默认的格式。 -m 显示星期一为一个星期的第一天。 -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)。 -y 显示当前年份的日历。
事例:
(1)显示当前月份日历 命令:cal (2)显示指定月份的日历 命令 cal 7 2023 (3)显示2023年日历 命令: cal 2023 (4)显示当年自1月1日的天数 命令:cal -j (5)星期一显示在第一列 命令:cal -m
which指令
which 命令用于查找并显示给定命令的绝对路径,使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
语法:
which(选项)(参数)
常用选项:
-n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名; -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径; -w:指定输出时栏位的宽度; -V:显示版本信息。
事例:
(1)查看命令的位置 命令: which find [BCH@ALY lesson]$ which find /usr/bin/find (2)显示命令的别名 命令:which ll [BCH@ALY lesson]$ which ll alias ll='ls -l --color=auto' /usr/bin/ls
grep指令
文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行,行过滤工具
语法:
grep [选项] 搜寻字符串 文件 功能: 在文件中搜索字符串,将找到的行打印出来 常用选项: -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
history指令
用于显示历史记录和执行过的指令命令,当登录shell或者是退出的时候会自动进行读取和存储
语法:
history 选项 参数
常用参数:
-n #显示最近的n条记录 -a #将历史命令缓冲区中命令写入历史命令文件中 -c #将目前的shell中的所有 history 内容全部消除 实际为假删除 -r #将历史命令文件中的命令读入当前历史命令缓冲区 -w #将当前历史命令缓冲区命令写入历史命令文件中 -d #删除历史记录中指定的行
事例:
(1)获取历史记录的最新2两条 命令:history -2 [BCH@ALY ~]$ history 2 72 history -2 73 history 2 (2)清空当前历史记录(只是清空缓存中的历史记录,伪删除) [BCH@ALY ~]$ history -c [BCH@ALY ~]$ history 1 history
🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸