linux 合并 cd ls,Linux命令(一)ls,cd,pwd,mkdir,rm,mv,cp,cat,nl

本篇记录了9个命令,分别是ls,cd,psw,mkdir,rm,mv,cp,cat,nl

参考链接:https://www.cnblogs.com/peida/archive/2012/10/26/2740521.html

一.ls,cd,psw

1.1ls命令

作用: list(显示列表)

格式:

ls [options]

option

functuion

-a

显示全部路径,包括文件,文件夹

-l

显示文件详细信息

-d

显示directory而不是里面的文件

-h

以人类能理解的语言显示文件详细信息

-t

按修改的时间排序

使用例子:

1.寻找所有的文件并显示所有的详细信息:

ls -a -l

或者

ls -al

2.寻找以xx开头的文件

ls d*

1.2 cd命令

作用: change directory

格式:

cd [Directory]

parameter

function

/

返回根目录

..

返回父级目录

~

返回home directory(是一个特定的目录,与根目录有所不同)

-

上一次的目录,类似于windows的返回上一级

补充:关于斜杠,Linux用正斜杠表示路径,反斜杠表示转义字符,所以在路径的时候不要使用反斜杠,而windows则相反,它用反斜杠表示本地路径,正斜杠表示参数

1.3 pwd命令

作用: 在进入了环境但是不知道这个环境属于哪一个目录的时候,可以用这个命令来获取当前目录

parameter

function

-P

显示真实的物理路径而不是链接路径

-L

当这个路径是连接路径就会显示(只显示链接路径)

目前没有发现两者的不同

使用例子:

7ce4ddde704ac5fc87981d7384bfbdcf.png

interlude: 如果删了某个文件还是会显示原来的目录,可以看到这里的zhou文件被删了,但是用pwd还是会显示原本的路径

二.mkdir,rm,mv,cp,cat,nl

2.1 mkdir

作用: make directory(创建路径,不是文件噢)

格式:

mkdir [options] directory

parameter

function

-m

设定权限

-p

如果父目录不存在会自动创建父目录

-v

每次创建新目录就会显示信息

使用例子:

1.在home的环境下,一条指令创建路径/ling/me,并指定权限是777,显示创建信息,ling不存在

4144982347371b43a6a0b20eb60f26ab.png

修改权限出现问题,可能是没有登录

2.2 rm

作用: remove(删除)

格式:

rm [options]

parameter

function

-r

递归地删除这个文件以及它内部的子文件或子文件夹

-f

强制性删除,不询问

-i

interative,互动式的,删之前会询问

使用例子:

1.删除文件file,系统会先询问是否删除。

rm -i log.file

默认状态的模式下是不提示的,只有不存在才会提示

2.强行删除file,系统不再提示,就算不存在也不提示

rm -f file

3.删除任何.log文件;删除前逐一询问确认

rm -i *.log

4.将 test1子目录及子目录中所有档案删除,不用-r 是无法删除目录的

rm -r test1

5.将 test2 子目录及子目录中所有档案删除,并且不用一一确认

rm -rf test1

6.实现回收站功能,即在删除的时候不直接删掉,而是将文件放到一个目录中,当用户后悔的时候可以来这里回恢复(移动操作)

步骤A: 先定义一个函数

myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }

这个函数的意思是:

1.先定义D是根目录下tmp路径中的一个子路径(文件夹),路径以日期来命名

2.用mkdir来创建这个路径

3.用mv命令将当前的文件移动到路径D下

4.最后回应显示:move to D ok

步骤B: 定义好函数之后,将rm的功能改一下:

$alias rm='myrm'

步骤C: 使用rm函数,示例如下

d22dc9120a33e38d61accb66979af5db.png

这里我们可以看到,删除的功能变成了将文件加入回收站的功能,当需要恢复文件时,可以从这里移动回去

这里引入一个思考:如何将rm函数重置?在上面的步骤中我们将rm函数定义成了myrm(),如果我们需要把它换回原来的函数,应该怎么操作?

我的办法是:

$alias rm='rm'

亲测有效,如下图所示:

8e643db52070f1ca3a8cb36e10415201.png

2.3 mv

作用: move(移动文件或者重命名)

格式:

mv [options] 源路径/文件 目标路径/文件

如果是文件–>文件就是重命名或者覆盖,如果是文件–>路径就是移动

parameter

funcrion

-i

interactive,如果存在目标文件,询问是否覆盖

-f

force,如果存在目标文件,直接执行不询问

-b

backup,如果覆盖,先备份

-u

如果存在目标文件,并且源文件比目标文件更新,才会询问并更新,否则不询问也不更新

-t

target,这个命令使用时,目标目录在前,源路径/文件在后

使用例子:

1.将文件a.txt,b.txt,c.txt移动到目录test3中

mv -t test3 a.txt b.txt c.txt

或者:mv a.txt b.txt c.txt test3

2.将文件aa改名为bb,如果bb已经存在,则询问是否覆盖

mv -i aa bb

3.将文件aaa改名为bbb,即使bbb存在,也直接覆盖掉。

mv -f aaa bbb

4.将目录ling移动到ling1,跟windows资源管理器是一样的移动目录

mv ling ling1

5.移动当前文件夹下的所有文件到上一级目录

mv * ../(注意不是mv * ..)

6.把当前目录的一个子目录test1里的所有文件移动到另一个子目录test2里,

mv -r test1 test2

备注:如果test2存在就是改名

7.文件log1.txt被 log2.txt覆盖,被覆盖前做简单备份,注意-b的位置

mv log2.txt-b log1.txt

关于重命名,它并不检查你的后缀名是否有改动,你可以将1.txt重命名为test,而这个test不是路径,而是文件,可以通过文件颜色判断

2.4 cp

作用: copy(复制),将源文件复制至目标文件,或将多个源文件复制到目标目录

格式:

cp [options]

parameter

function

-a

archive,此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpr参数组合

-b

backup

-d

复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。

-f

force,如果目标文件无法打开,则将其移除并重试(-n出现时不再需要此选项)

-i

interactive,覆盖前询问(使-n无效)

-l

link,链接文件而不复制

-L

总是跟随符号链接

-r

若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

-n

不要覆盖已存在的文件(使前面的 -i 选项失效)

-p

除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

使用例子:

1.复制单个文件file到目标目录tdir,文件在目标文件中不存在

cp file tdir

2.目标文件存在时,会询问是否覆盖

cp -i file tdir

不加-i 也可以,目标文件存在时,会询问是否覆盖。这是因为cp是cp -i 的别名。目标文件存在时,即使加了-f 标志,也还会询问是否覆盖。

3.复制整个目录sdir到tdir(当目标目录存在,当目标目录不存在两种情况下操作不同)

cp -a sdir tdir

当目标目录存在时,是将sdir整个放到tdir里面,当目标目录不存在时,直接将sdir复制一份 改名成tdir(复制并重命名)

4.复制的 log.log 建立一个连结档 log_link.log

cp -s log.log log_link.log

这个连结档相当于一个快捷方式

2.5 cat

作用: concat(拼接)

有合并,显示,创建三大功能:

1.一次显示整个文件:cat filename

2.从键盘创建一个文件:cat > filename (只能创建新文件,不能编辑已有文件)

3.将几个文件合并为一个文件:cat file1 file2 > file

格式:

cat [options] filename

parameter

function

-a

–show-all ,显示所有,相当于vET

-E

–show ends,每行结束的地方显示$

-n

–number,对输出的所有行编号,由1开始对所有输出的行数编号

-b

–number-nonblank ,对非空输出行编号

-s

–squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行

-v

–show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外

-T,

–show-tabs ,相当于-vT将跳格字符显示为 ^I

-t

与 -vT 等价

-e

与-vE等价

使用例子:

1.把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

cat -n log2012.log log2013.log

2.把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加

到 log.log 里。

cat -b log2012.log log2013.log log.log

3.把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里

cat -n log2012.log log2013.log

4.使用here doc来生成文件,文件内容hello world

cat >hello.txt <

heredoc>hello world

heredoc>EOF

是重写的意思,换成>>是追加

54158e9baf23cb6c4fa88ffe66191d14.png

5.反向列示log.txt

tac log.txt

2.6 nl

作用: n the line(连接,显示)

格式:

nl [options] [document]

options主要有两个参数b与n

parameter

function

-b

指定行号指定的方式

-n

列出行号表示的方法

-w

辅助n rz,用于指定行号栏位的占用位数(几个0)

具体参数:

parameter

function

-b a

表示不论是否为空行,也同样列出行号(类似 cat -n)

-b t

如果有空行,空的那一行不要列出行号(默认值)

parameter

function

-n ln

行号在萤幕的最左方显示

-n rn

行号在萤幕的最右方显示,不加0

-n rz

行号在萤幕的最右方显示,加0

使用例子:

1.用 nl 列出a.txt 的内容

nl a.txt

c836778889700fd000c5597af71cb1fb.png

此操作空文本不加行号

2.用 nl 列出 log2012.log 的内容,空本行也加上行号

nl -ba a.txt

c00eef322cde1affe7d60e718ff27226.png

3.让行号前面自动补上0,统一输出格式,调整行号位数为3位。

nl -rz -w 3 a.txt

ce602c0a1e7167cf3bcb78cd7c826347.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值