Linux第三节课(基本指令)

一、补充

1. *表示可执行程序,例如:

------ ls *(显示当前目录下的所有的可执行程序)

------ ls *.c(显示当前目录下的所有的可执行的C语言程序)

------ ls test*.c(显示当前目录下的以test命名开头的所有的可执行的C语言程序)

2.rm -i 被删文件 --- 删除文件之前会进行询问

二、man指令

语法  man+【接口】指令   ->  生成指导手册

一共有9种手册,常用前3个。

前3个库-分别为:

       1   Executable programs or shell commands  可执行程序或shell命令
       2   System calls (functions provided by the kernel)  系统调用(内核提供的函数)
       3   Library calls (functions within program libraries)  
库调用(C程序库中的函数)

man man 可查看man这个指令的作用(q退出)

  • 例如1、

printf在Linux中也是一条指令(与C语言中的printf无关!)

通过

man 3 printf

我们可以查看printf在C语言库中的函数的介绍。

  • 例如2、

查看fork在系统中的调用

man 2 fork 

 默认从1号还是查,如果1号没有,然后从2、3、4...依次查看

三、cp拷贝命令

1、Linux系统中的echo可以将字符串原封不动的显示出来,例如:

echo "hello Linux"

(默认在显示器中打印)

echo "hello Linux" > mytest.txt

可以将对应文本写入 到 mytest.txt 文件中

cat可以将文件中的内容打印出来。

将 > 定义为输出重定向!

输出重定向:将本来应该显示到显示器的内容,打印到文件中!

 cp +[源文件名] [目的文件名]   ---在当前目录下,将源文件名拷贝一份到目的文件名。

cp mytest.txt ../mytest.txt

拷贝一个同名文件到上级目录中!(在同一个目录中如果同名会报错!)

如果源文件是一个目录文件(内置多层目录)

cp -r lesson3 lesson3_backup

cp -f 强制复制不询问(在普通用户下)

cp - i 询问后复制(普通用户下)

若cp -fi 则依旧询问

四、mv指令(重命名+剪切)

1、重命名

mv mytest_backup.txt mytest1.txt

在当前目录下将mytest_backup.txt 重命名为mytest1.txt

2、剪切

mv mytest.txt ../

将mytest.txt移动到上级目录中

mv ../mytest.txt .

将上级目录下的mytest.txt 移动至当前目录

总结:

  • mv + 【源文件名】【目标文件名】  --- 重命名
  • mv + 【源文件名】【目录】 --- 剪切
  • mv + 【源文件名】【目录】【目标文件名】 --- 剪切 + 重命名

且所有的文件操作都可以看作是剪切 + 重命名!

如果mv + 【源文件夹】【目录】【目标文件夹】中,在目录下已经存在了目标文件夹(同名),则会将源文件名移动至目标文件夹之下。

ctrl + c 终止因为程序或者指令异常,从而导致我们无法进行指令输入!

  • 指令是什么?

指令和可执行程序都是可以被执行的! ------ 指令就是可执行程序!

  • 在执行指令之前,我们应该先做什么?

在系统中查找对应的指令!(指令一定是在系统的某一个位置存在的)

指令存放于/usr/bin下面!(一定是某种可执行程序,可能是C/C++等写的)

那么如果我们通过gcc编译.c文件生成可执行程序,将其cp到/usr/bin路径下,那么我们最终可以得到自定义的指令!--- 安装软件

五、指令which

which ll

可以查看ll指令存放的位置 

alias对指令进行重命名!

alias 108_cmd='ls -l -i -a -n';

此后alias 108_cmd的作用等同于ls -l -i -a -n

自定义的alias重命名是临时的,重启后会消失;但是ll不是;

六、Linux下一切皆文件

例如显示器、键盘、普通文件...

显示器(显示器中可以写入数据但是不能读取数据,有fwrite,没有fread());

键盘    (键盘中可以读取数据但是写入数据,有fread,没有fwrite());

普通文件 (一般普通文件都具有写入数据和读取数据的方法

凡是能被读取和写入的,即便方法为空,也都可以看作是文件!

echo 默认将字符串写入到显示器文件当中!(且字符串不一定非要按照C的标准来写,可以不加"")

输出重定向 > 的特点:(因为每次使用 > 进行输出重定向的时候,原来的旧的内容会被清空!)

  • 清空文件
  • 写入新内容

如果我们想要清空文件的内容,可以使用

>out.txt

那么源文件(out.txt)的内容会被清空(左边为空,将空值传入至out.txt)

扩展:

追加重定向>>

例如:

echo "108 good good" >> out.txt

原始内容不会被覆盖,多次调用内容会一直增加。

  • 打开文件后不清空内容
  • 在上一次文件的结尾处继续增加新内容

如果使用printf指令替代echo指令,则输出的内容不换行(echo默认自带换行)

(输出重定向和追加重定向的文件如果默认不存在,则会自动新建该文件!)

cat默认什么都不跟,则打印从键盘中获得的数据

输入重定向 < 

cat < out.txt

本来默认的如果什么都不跟,则默认打印从键盘中获得的数据

但是加上输入重定向后打印 out.txt中的文件内容

暂定!

cat < out.txt  与  cat out.txt

无区别!(只是引入输入重定向!)

七、cat指令

  1. cat + 【指定文件】  ----  会打印该文件的内容
  2. cat -n [指定文件]    ---- 每行标序号打印文件内容(包括空行)
  3. cat -b [指定文件]    ---- 每行标序号打印文件内容(不包括空行)
  4. cat -s [指定文件]    ---- 将多个空行压缩为一行输出
cat -n test.txt

八、more指令

cat指令不适合大文本;more指令适合大文本!

more打开后自动占满整个屏幕;然后按回车会向下浏览。

用法:

more [选项][文件]
  • -n 对输出的所有行编号
  • q退出more
more -500 test.txt

查看屏幕内最后一行是第五百行的包含之前的数据(到500行打满)。

九、less指令

less与more类似,但是less可以随意浏览文件,more只能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。

选项:

  • -i 忽略搜索时的大小写;
  • -N 显示每行的行号;
  • /字符串:向下搜索“字符串”的功能;
  • ?字符串:向上搜索“字符串”的功能;
  • n:重复前一个搜索(与/或?有关的)
  • q:quit表示退出

十、head指令

head + 文本 ------ 默认打印文本的前10行

常用用法:

head [数字] [文本]

打印文本的前n行;

十一、tail指令

tail + 文本 ------ 默认打印文本的后10行

常用用法:

tail [数字] [文本]

打印文本的后n行内容;

如果有一个大文本(几万行),我们需要看其中的1000~1020行(共21行),怎么使用head和tail获得呢?

方法一:

head -1020 log.txt > temp.txt
tail -20 temp.txt

创建一个临时文件temp来保存temp的前1020行,再通过tail取后21行;

方法二:(管道)

head -1020 log.txt | tail -21

(|被称为管道文件,也叫管道 ------ 内存级的,存放在内存中,没有真实存在)

(将左边程序的输出交给管道文件,然后右边的文件再从管道中把数据读取到自己的程序当中)

要对文件进行修改,先将文件加载到内存中,然后修改,修改完后再存入磁盘中;(不是直接从磁盘中修改)

(所有的文件在某段时间内都是内存级的,都需要加载到内存中用来处理)

在Linux中,wc-l是一个用于统计文本文件行数的命令。

例如:

cat log.txt | head -50 | tail -20

最后获得log.txt文本的31~50行取出来;

cat log.txt | head -50 | tail -20 | wc-l

最后显示结果为20(直接按照最后一个管道右边的程序显示行数)

(管道通常支持流水线工作:数据不断向后面加工,最终得到我们想要的数据)

拷贝多个文件时,建议先全部打包再拷贝。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一道秘制的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值