目录
1.cp
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存 在的目录,则会出现错误信息
常用选项:
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
- -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
cp如果什么选项都不加的话就只能拷贝文件,
在源为文件的情况下:
- 如果目标不存在,则会在目标路径创建一个和源文件相同的文件。
- 如果目标是一个文件,则会把目标文件清空,把源文件的内容拷贝进目标文件。
- 如果目标是一个目录,则会把源文件拷贝到目标目录下。
cp如果想拷贝目录就需要加-r选项,会把目录和目录的子目录或文件一并拷贝。
在源为目录的情况下:
- 如果目标不存在,则会在目标路径建立一个和目标名字相同的目录,并把源目录的子目录和子文件拷贝进去
- 如果目标是一个文件,则会报错。
- 如果目标是一个目录,则会在该目录下建立一个和源目录完全相同的目录,(包括子目录和子文件)
2.mv
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的 目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,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
- 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 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
less不但包含more的所有功能,还比more的功能更加完善好用,比如说可以上下翻行(键盘上和下),向上或者向下查找(/向下查找,?向上查找),所以一般都使用less很少使用more。
10.head
- -n<行数> 显示的行数
11.tail
选项:
- -f 循环读取
- -n<行数> 显示行数
1.|
这里扩展一下,这里有个test文件有一万行数据,如果我想提取5000行到5030行中间的数据打印到屏幕,应该怎么做?
这是就需要用到管道|,
可以理解为管道左边的输出经过管道输入给管道右边。
以上就是全部内容,如有错误请一定指出!