Linux第二章

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数C初学者入门训练题解CC的使用文章「初学」C++linux

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

输出重定向

创建的文件和清空文件

 linux下一切皆文件

默认程序运行的时候,会打开三个输入输出流

输入重定向

切换账号

管道

echo指令

cat 指令

more命令

head指令

tail 指令

wc 指令

uniq指令

sort指令

date指令

 时间戳

cal指令

which指令

grep指令

history指令


输出重定向

[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

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸 

  • 37
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基础命令 pwd :显示当前工作目录 cd :切换目录路径 有绝对路径(以/开头)和相对路径(相对当前目录)两种 cd~ :进入宿主目录或cd cd~ 用户名:进入其他用户宿主目录 cd - :进入上一次目录 cd .. :进入上一级目录 ls :显示目录内容 -a :全部内容,包括隐藏文件 -l :长格式方式显示目录详细信息 -d :目录本身 * :代表任意多个字符 ?:代表任意一个字符 -R :递归显示子目录内容 -h :显示单位 alias :设置别名 alias 别名=“ls -l -a -h” du :统计目录(文件)的大小 -h :显示单位 -s :总大小 mkdir :创建目录 -p :递归创建 touch :创建空文件并更改时间 ln :链接文件 软链接:加-s选项,只是快捷方式 硬链接:增加一个链接数,不能对目录做硬链接,必须同分区 cp :复制文件或目录 -r :复制目录 rm :删除文件或目录 -r :删除目录 -f :强制 mv :移动或改名 which :查找外部命令路径 按照PATH变量指定路径 find :查找文件或目录 格式: find 查找路径范围 查找方式 查找内容 查找方式分类: -name 查找文件名称 -user 查找文件所有者 -size 查找文件大小 +10m大于10m -10m小于 -type 查找文件类型:f文件 d目录 b ,c设备文件 -a 多个条件同时满足 -o 其中一个条件满足即可 例子: find /boot/ -size +1024k -a -name "vmlinuz*" find /boot/ -size +1024k -o -name "vmlinuz*"

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值