1,《你一定要知道的关于Linux文件目录操作的12个常用命令》是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建、拷贝、移动、删除、查看等,是开发人员操作Linux系统的常用命令,所以你一定要知道。
2,《你一定要知道的关于Linux文件目录操作的12个常用命令》适合初学者,对于Linux大神的请绕过,不过欢迎一起讨论学习!
3,此次收集,多谢来自http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html的分享,若需要更详细的资料请关注。
下面开始一起学习吧:
1, mkdir命令
mkdir用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
(1) 命令格式:mkdir [选项] 目录
(2) 命令功能:在指定位置创建指定文件名命名的文件夹或目录,要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限,且同一个目录下不能有重名的。
(3) 命令参数:
-m,--mode模式 设定权限<模式>(类似chmod),而不是rwxrwxrwx
-p,--parents可以是一个路径的名称,此时若路径中的某些目录不存在,加上此选项后系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
-v,--verbose创建当前新目录或文件时显示信息,如“已创建目录test6”
(4) 命令实例:
①创建一个空目录
mkdir lijl_bj1
②递归创建多个目录
mkdir –p ./lijl_bj1/test(./表示当前目录,../表示上级目录,/表示根目录)
③创建权限为777的目录
mkdir –m 777 test777
④创建新目录显示信息
mkdir –v test
⑤创建项目的目录结构
mkdir –vp
src/{com/sitech/{admin/{entity/,dao/,service,controller},common/util/},config/}
(5) 注意事项:
最后一个实例⑤对顺序是有要求的,即在-vp时才表示-v –p操作,而若是-pv则在上述语句中会默认为创建-vp目录。
2, ls命令
缺省下用来打印当前目录的清单,如果ls指定其他目录,那么就会显示指定目录的文件及文件夹清单。通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件)、查看目录信息等。
(1) 命令格式:ls [选项] [目录名]
(2) 命令功能:列出目标目录中所有的子目录和文件
(3) 命令参数:
-a,列出目录下的所有文件,包括以.开头的隐含文件
-c 配合-lt根据ctime排序及根据ctime(文件状态最后更改的时间)
配合-l 显示ctime但根据名称排序
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
-t 以文件的修改顺序排序
-u 配合-lt显示访问时间,而且依据访问时间排序
配合-l 显示访问时间,但根据名称排序
-v 依据版本进行排序
-x 逐行列出项目,而不是逐栏列出
-X 根据扩展名进行排序
-1 每行只列出一个文件
-F 可以在显示子目录的时候在它的文件名之后加一个“/”,而文件后面的“*”表示这是一个可执行程序
(4) 常用实例:
①列出 /lijl_bj1/com/src文件夹下的所有文件和目录的详细情况
进入lijl_bj1目录,ls –l –R(或-lR) src
②列出当前目录中所有以“s”开头的所有文件目录的信息,
ls –l s*
③只列出文件下的子目录:
ls -F ./src |grep /$ 列出src目录下面的子目录
结果:com/,config/
④列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档案名称后加"*"
ls –AF
3, cd命令
cd命令是Linux里面最基本的命令,很多其他命令都是建立在它的基础之上的
(1) 命令格式:cd [目录名]
(2) 命令功能:切换当前目录至dirName
(3) 常用范例:
①进入系统根目录
cd /
②进入当前目录的上一级目录:cd ..或者cd ..//
③进入当前用户的主目录
cd 或者 cd~
④跳转到指定目录
cd /echncms/lijl_bj1(根目录下进入)
跳转到指定目录,从根目录开始,目录名称前加“/”,当前目录的子目录写名称即可。
⑤返回进入此目录之前所在的目录
cd –
⑥把上个命令的参数作为cd参数使用
cd !$
(4) 注意事项:
跳转到指定目录,从根目录开始,目录名称前加“/”,当前目录的子目录写名称
4, pwd命令
使用“pwd”命令来查看“当前工作目录”的完整路径,每当你在终端进行操作时,都会有一个当前工作目录,在不太确定当前位置时,可以使用pwd命令来查看当前目录再文件系统里的确切位置。
(1) 命令格式:pwd [选项]
(2) 命令功能:查看“当前工作目录”的完整路径
常用参数:一般情况下不使用任何参数,如果目录是链接时,pwd –P 显示出实际路径,而非使用链接路径。若当前路径被删除了,pwd显示的仍是原路径。
5, rm命令
该命令的功能是删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其以下的所有文件及目录均删除,对于链接文件,只是删除了链接,原有文件保持不变。
(1) 命令格式:rm [选项] 文件
(2) 命令功能:删除指定目录中的一个或多个文件或目录,如果没有使用-r选项,则rm不会删除目录,如果使用rm来删除文件,通常仍可以将文件恢复原状。
(3) 命令参数:
-f,--force忽略不存在的文件,从不给出提示
-i,--interactive 进行交互式地删除
-r,-R,--recursive 指示rm将参数中列出的全部目录和子目录均递归地删除
-v,--verbose 详细显示进行的步骤
(4) 命令实例:
①删除文件file,系统会先询问是否删除,rm –i log.log,输入y之后就会删除
②强行删除file,系统不再提示 rm –f log1.log
③删除任何.log文件,删除前逐一询问 rm –i *.log
④将test1子目录及子目录中所有档案都删除 rm –r test
⑤将test2子目录及子目录中所有档案都删除,并且不用一一询问
rm –rf test2(常用)
⑥删除以-f开头的文件
rm -- -f
⑦自定义回收站功能:
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir –p $D; mv “$@” $D && echo “moved to $D ok”; }
6, rmdir命令
rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的。注意(rm –r dir命令可代替rmdir,但是有很大危险性),删除某目录时也必须对父目录有写权限。
(1) 命令格式:rmdir [选项]…目录…
(2) 命令功能:该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须对父目录有写权限。
(3) 命令参数:
-p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除,如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
-v,--verbose显示指令执行过程
(4) 命令实例:
①rmdir不能删除非空目录 rmdir lijl_bj1,该命令不能直接删除非目录
②rmdir –p 当子目录被删除后使它也一并成为空目录的话,则顺便一起删除
7, mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
(1) 命令格式:mv [选项] 源文件或目录 目标文件或目录
(2) 命令功能:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源 文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名时,源文件或目录参数可以有多个,mv命令将各参数指 定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链接该文件的链接也将丢失。
(3) 命令参数:
-b :若需要覆盖文件,则覆盖前先行备份
-f : force强制的意思,如果目标文件已存在,不会询问而直接覆盖
-i : 若目标文件已经存在时,就会询问是否覆盖。
-t : --target –directory,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
(4) 命令实例:
①文件改名:将文件test.log 改名为test1.txt
mv test.log test1.txt
②移动文件:将test1.log文件移至test3
mv test1.log test3
③将文件log1.txt,log2.txt,log3.txt移至目录test中
mv log1.txt log2.txt log3.txt test
mv –t /opt/soft/test/ log1.txt log2.txt log3.txt
④将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
mv –i log1.txt log2.txt
⑤将文件file1改名为file2,即时file2存在,也是直接覆盖掉
mv –f log3.txt log2.txt
log3.txt的内容直接覆盖了log2.txt内容,-f这是个危险的选项,使用时候一定要保持头脑清醒,一般情况下最好不用加上它。
⑥目录的移动
mv dir1 dir2
如果目录dir2不存在,将目录dir1改名为dir2,否则将dir1移动到dir2中
⑦移动当前文件夹下的所有文件到上一级目录
mv * ../
⑧把当前目录的一个子目录里的文件移动到另一个子目录里
mv test3/*.txt test5
⑨文件被覆盖前做简单备份,前面加参数-b
mv log1.txt –b log2.txt
说明:-b不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。--backup该选项指定如果目标文件存在时的动作,共有四种备份策略:
1.CONTROL=none或off : 不备份。
2.CONTROL=numbered或t:数字编号的备份
3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n:
执行mv操作前已存在以数字编号的文件log2.txt.~1~,那么再次执行将产生log2.txt~2~,以次类推。如果之前没有以数字编号的文件,则使用下面讲到的简单备份。
4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。
mv不会创建新目录,只能将源目录或源文件移入已创建好的目录,若目标文件或文件夹不存在时,将只会是改名,而不是移动文件或目录
8, cp命令
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行复制文件时,如果目标文件已存在,就会询问是否覆盖,不管你是否使用参数-i,但如果是在shell脚本中执行cp时,没有参数-i时不会询问是否覆盖,这说明命令行和shell脚本的执行方式有些不同。
(1) 命令格式: cp [选项]… [-T] 源 目的
或 cp [选项]… 源… 目录
或 cp [选项]… -t 目录 源…
(2) 命令功能:将源文件复制至目标文件,或将多个源文件复制至目标文件
(3) 命令参数:
-i ,--interactive 覆盖前询问(使前面的-n选项失效)
-n ,--no-clobber 不要覆盖已存在的文件(使前面的-i选项失效)
-R,-r,--recursive 复制目录及目录内的所有项目
(4) 命令实例:
①复制单个文件到目标目录,文件在目标文件中不存在
cp log.log test5
在没有带-a参数时,两个文件的时间是不一样的,在带来-a参数时,两个文件的时间是一致的。
②目标文件存在时,会询问是否覆盖。
cp log.log test5
目标文件存在时,会询问是否覆盖,这是因为cp 是cp –i 的别名,目标文件存在时,即时加了-f标志,也还会询问是否覆盖。
③复制整个目录
cp –a test3 test5
注意目标目录存在与否结果是不一样的,目标目录存在时,整个源目录被复制到目标目录里面。
④复制的log.log建立一个链接档案log_link.log
cp –s log.log log_link.log
⑤那个log_link.log是由-s的参数造成的,建立的是一个【快捷方式】,所以会看到在文件的最右边,会显示这个文件是链接到哪里去的。
9, touch命令
Linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。
(1) 命令格式: touch [选项]…文件…
(2) 命令功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间。
(3) 命令参数:
-a 或--time = atime--time =access或--time=use 只更改存取时间
-c 或--no-create 不建立任何文档
-d 使用指定的日期时间,而非现在的时间
-m 或--time=mtime或--time=modify 只更改变动时间
-r 把指定文档或目录的日期时间,统统设成和参考文档和目录的日期时间相同
-t 使用指定的日期,而非现在的时间
(4) 常用实例:
①创建不存在的文件:
touch log2015.log log2016.log
如果log2014.log不存在,则不创建文件
②更新log.log的时间和log2015.log时间戳相同
touch –r log2015.log log.log
③设定文件的时间戳
touch –t 201505191357.50 log.log
-t time 使用指定的时间值 time 作为指定文件相应时间戳记的新值.此处的 time规定为如下形式的十进制数:
[[CC]YY]MMDDhhmm[.SS]
这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch 将把年数CCYY限定在1969--2068之内.MM为月数,DD为天将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh 为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时 间.由于系统的限制,早于1970年1月1日的时间是错误的。
10, cat命令
cat命令的用途是连接文件或标准输入并打印,这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
(1) 命令格式:cat [选项] [文件]…
(2) 命令功能:cat主要有三大功能:
①一次显示整个文件:cat filename
②从键盘创建一个文件:cat>filename只能创建新文件,不能编辑已有文件
③将几个文件合并为一个文件:cat file1 file2>file
(3) 命令参数:
-A,--show-all 等价于-vET
-b,--number-nonblank 对非空输出行编号
-e 等价于 –vE
-E,--show-ends 在每行结束处显示$
-n,--number 对输出的所有行编号,由1开始对所有输出的行数编号
-s,--squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与-vT等价
-T,--show-tabs 将跳格字符显示为^I
(4) 使用实例:
①把log2012.log的文件内容加上行号后输入log2013.log这个文件
cat –n log2012.log log2013.log
②把log2012.log和log2013.log的文件内容加上行号(空白行不加)之后将内容附加到log.log里。
cat –b log2012.log log2013.log log.log
③把log2012.log的文件内容加上行号后输入log.log这个文件里
cat –n log2012.log>log.log
④注意tac是反向列示,tac是将cat反过来,所以它的功能就跟cat相反,cat是由第一行到最后一行连续显示在荧幕上,而tac则是由最后一行到第一行反向在银幕上显示。
11, more命令
more命令功能类似cat,cat命令是整个文件的内容从上到下显示在屏幕上,more会一起一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功能,more命令从前向后读取文件,因此在启动时就加载整个文件。
(1) 命令格式:
more [-dlfpcsu][-num][+/pattern][+linenum][file…]
(2) 命令功能:more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
(3) 命令参数:
+n 从第n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
(4) 常用操作命令:
Enter 向下n行,需要定义,默认为1行
Ctrl+F、空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
q 退出more
(5) 常用实例:
①显示文件中从第3行起的内容
more +3 log2012.log
②从文件中查找第一个出现”day3”字符串的行,并从该处前两行开始显示输出
more +/day3 log2012.log
③设定每屏显示行数
more -5 log2012.log
最下面显示了该屏展示的内容占文件总行数的比例,按Ctrl+F或者空格键将会显示下一屏5条内容,百分比也会跟着变化。
④列一个目录下的文件,由于内容太多,我们应该学会用more来分页,这得和管道|结合起来
ls –l | more -5
每页显示5个文件信息,按Ctrl+F或者空格键将会显示下5条文件信息
12, tail命令
tail命令从指定点开始将文件写到标准输出流,使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail –f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。(经常用来在查看服务器上的日志文件)
(1) 命令格式: tail [必要参数][选择参数][文件]
(2) 命令功能:
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理,常用查看日志文件。
(3) 命令参数:
-f 循环读取
-q 不显示处理信息
-v 系那是详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
(4) 命令实例:
①显示文件末尾内容
tail –n 5 log2014.log 显示文件最后5行的内容
②循环查看文件内容
tail -f test.log
③从第5行开始显示文件
tail –n +5 log2014.log