Linux指令:cp、mv、echo、cat、printf、which、alias、more、less、head、tail、|

目录

1.cp

2.mv

3.echo

4.cat

-n

 -b

-s 

5.printf

6.which

7.alias

8.more

9.less

10.head

11.tail

1.|


1.cp

语法:cp [选项] 源文件或目录 目标文件或目录

功能: 复制文件或目录

说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存 在的目录,则会出现错误信息

常用选项

  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

cp如果什么选项都不加的话就只能拷贝文件,

在源为文件的情况下:

  • 如果目标不存在,则会在目标路径创建一个和源文件相同的文件。
  • 如果目标是一个文件,则会把目标文件清空,把源文件的内容拷贝进目标文件。
  • 如果目标是一个目录,则会把源文件拷贝到目标目录下。

cp如果想拷贝目录就需要加-r选项,会把目录和目录的子目录或文件一并拷贝。

在源为目录的情况下:

  • 如果目标不存在,则会在目标路径建立一个和目标名字相同的目录,并把源目录的子目录和子文件拷贝进去
  • 如果目标是一个文件,则会报错。
  • 如果目标是一个目录,则会在该目录下建立一个和源目录完全相同的目录,(包括子目录和子文件)

2.mv

语法: mv [选项] 源文件或目录 目标文件或目录

功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的 目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至 目标目录中。

常用选项:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

在源为文件的情况下:

  • 如果目标不存在,则在目标路径下创建一个与目标同名,与源文件内容相同的文件,并把源文件删除(如果源和目标在同一路径,则就相当于改名)
  • 如果目标是一个文件,则会把目标文件清空,把源文件的内容拷贝进目标文件,并删除源文件。
  • 如果目标是一个目录,则在目标目录下创建一个与源文件相同的文件,并把源文件删除。

在源为目录的情况下:

  • 如果目标不存在,则会在目标路径下创建一个与目标名相同的目录,并把源目录的子目录和子文件拷贝进去,然后删除源目录
  • 如果目标是一个文件,则报错。
  • 如果目标是一个目录,则会把源目录拷贝到目标目录下,并删除源目录。

大家不难发现,其实mv就是cp加上删除源文件或目录。

大家思考一下,在Windows上删除实际上是干啥?

实际上是把被删除的文件或目录(也就是Windows下的文件夹)mv到垃圾桶目录下。

大家注意:在Linux下rm删除就是真正删除了,是找不回来的,所以大家可以把在根目录创建个垃圾桶目录,把rm指令改成rm到垃圾桶目录。

将rm改造成mv
vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
    mv -i ~/.trash/\$@ ./
}
trash() {
    mv $@ ~/.trash/
}

3.echo

这里只讲echo的一个最基本的用法。

echo hello Linux > test1

echo+字符串+>+目标文件

1.如果目标文件不存在则创建一个该路径下的目标文件,并把字符串写入文件。

 

 这里cat+文件,是打印文件内容的意思,接下来会讲

2.如果目标文件存在,则会把目标文件清空,再把字符串写入目标文件。

那这里会出现一个问题,如果我不想把目标文件清空,想在目标文件里追加内容怎么办?

这里可以把>换成>>,>这个是覆盖的意思,>>这个则是追加的意思。

注意: echo写入目标文件会默认在写入结束时换行,所以追加写入时会在第二行写入。

如果echo+字符串,后面啥都不加会怎么样呢?

这里就要提一个概念,在Linux系统下,一切皆文件,不管是屏幕还是键盘,还是指令,都是一个文件,

如果echo 字符串,后面啥都不加的话,则会默认写入到屏幕文件。也就是讲字符串打印出来

那如果不写字符串,echo >> test会怎么样?

会啥都不输入,但是前面说过,echo在输入结束时会加个换行,所以不写字符串就相当于给文件加个换行

4.cat

语法:cat [选项][文件]

功能: 查看目标文件的内容

常用选项

  • -b 对非空输出行编号
  • -n 对输出的所有行编号
  • -s 不输出多行空行

cat是查看目标文件的内容,

-n

对所有行编号

 -b

对非空行编号

-s 

把连续的空行只输出一行

这三个选项可以组合使用

  

注意:cat如果后面什么都不加,则默认从键盘读取数据,打印到屏幕上。 

这时你输入什么它跟着打印什么,不会结束,如果你想停止,键盘按Ctrl+c就可以停止了。 

5.printf

和echo功能类似,不同的几点列在下面:

1.echo会在结束时换行,printf不会换行

3. printf的字符串不能为空,如果想写入空字符需要加''单引号,如果想换行就写入\n,和c语言中printf换行一样。

 

4.如果printf想写入含有空格的字符串,需要把字符串放在''单引号里,因为如果不带单引号,printf读到空格就结束了,空格后面的字符串就不会写入了。

5.printf不带目标文件的话,会默认打印到屏幕上,也就是输入到屏幕文件。 

6.which

 前面说过Linux一切皆文件,包括指令也是一个文件,那既然是文件就肯定有一个路径,如何查看指令文件的路径?就可以用which加对应指令来查看路径。

7.alias

 alias是给系统指令取别名,使用方法alias 别名='系统指令'

举个例子:

这是我给a取了个别名,a就相当于ls -a -i -n -l

自己起的别名指令也可以用witch查看。

 

注意如果xshell关了,自己起的别名会清除。  

8.more

语法 more [ 选项 ][ 文件 ]
功能 more 命令,功能类似 cat
常用选项
  • q 退出more

more和前面的cat功能类似,都是打印文件内容到屏幕上,但是对于大文件,cat有个缺陷,就是cat会一次性把文件的所有内容都打印出来,不方便查找大文件的内容,

如果使用more打印大文件,more会在打印满屏幕后停止打印,此时按一次回车就向下打印一行。

 

more查看期间

  • 按enter向下打印一行, 
  • 按n向下打印一整页,
  • 按h可以查看所有键对应的功能,
  • /后面跟字符,代表在文件中向后查找该字符并停留在第一次出现该字符的位置。
  • 如果不想查看了按q键就会退出。 

也可以这样写:more -x 文件 表示跳到文件的第x行,x为数字

9.less

  • less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
  • less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
  • 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用
  • 来查看一个文件的内容!
  • 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法: less [ 参数 ] 文件
功能
less more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
选项
  • -i  忽略搜索时的大小写
  • -N  显示每行的行号
  • /字符串:向下搜索字符串的功能
  • ?字符串:向上搜索字符串的功能
  • n:重复前一个搜索(与 /  ? 有关)
  • N:反向重复前一个搜索(与 /  ? 有关)
  • q:quit

less不但包含more的所有功能,还比more的功能更加完善好用,比如说可以上下翻行(键盘上和下),向上或者向下查找(/向下查找,?向上查找),所以一般都使用less很少使用more。

10.head

head   tail  就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head  用来显示档案的开头至标准输出中,而 tail  想当然尔就是看档案的结尾。
语法:
head [ 参数 ]... [ 文件 ]... 
功能
head  用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。 
选项
  • -n<行数显示的行数

11.tail

tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f fifilename会把fifilename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容.
语法:
tail[ 必要参数 ][ 选择参数 ][ 文件
功能:
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

选项:

  • -f 循环读取
  • -n<行数显示行数

 

1.|

这里扩展一下,这里有个test文件有一万行数据,如果我想提取5000行到5030行中间的数据打印到屏幕,应该怎么做?

这是就需要用到管道|,

 可以理解为管道左边的输出经过管道输入给管道右边。

以上就是全部内容,如有错误请一定指出!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值