本篇记录了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
当这个路径是连接路径就会显示(只显示链接路径)
目前没有发现两者的不同
使用例子:
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不存在
修改权限出现问题,可能是没有登录
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函数,示例如下
这里我们可以看到,删除的功能变成了将文件加入回收站的功能,当需要恢复文件时,可以从这里移动回去
这里引入一个思考:如何将rm函数重置?在上面的步骤中我们将rm函数定义成了myrm(),如果我们需要把它换回原来的函数,应该怎么操作?
我的办法是:
$alias rm='rm'
亲测有效,如下图所示:
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
是重写的意思,换成>>是追加
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
此操作空文本不加行号
2.用 nl 列出 log2012.log 的内容,空本行也加上行号
nl -ba a.txt
3.让行号前面自动补上0,统一输出格式,调整行号位数为3位。
nl -rz -w 3 a.txt