Linux文件和目录管理常用命令(上)

时间:2022-11-01 16:28:08

cd 命令

描述:cd命令用来切换工作目录至dirname。其中dirname表示方法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的家目录(也就是刚登录时所在的目录)。另外,“~”也表示为家目录的意思,“.”则是表示目前所在的目录,“..”则表示目前目录位置的上一层目录。
语法:cat(选项)(参数)

常用选项:

-p  如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录;

-L  如果要切换的目标目录是一个符号连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录;

-   当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录;
用法举例:
cd     进入用户主目录;

cd ~    进入用户主目录;

cd -    返回进入此目录之前所在的目录;

cd ..    返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);

cd ../..  返回上两级目录;

cd !$    把上个命令的参数作为cd参数使用。


cp 命令

描述:cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制到一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
语法:cp(选项)(源文件)(目标文件)

源文件:指定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R/r选项;

目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

常用选项:

-a   此参数的效果和同时指定"-dR"参数相同;

-d   当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;

-f   强行复制文件或目录,不论目标文件或目录是否已存在;

-I   覆盖既有文件之前先询问用户;

-l   对源文件建立硬连接,而非复制文件;

-p   保留源文件或目录的属性;

-R/r   递归处理,将指定目录下的所有文件与子目录一并处理;

-s   对源文件建立符号连接,而非复制文件;

-u   使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;

-S   在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;

-b   覆盖已存在的文件目标前将目标文件备份;

-v   详细显示命令执行的操作。

用法举例:

如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到"."或".."的形式。

例如,下面的命令将指定文件复制到当前目录下:

cp ../sine/homework/job .

所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。将文件file复制到目录/usr/new/tmp下,并改名为file1

cp file /usr/new/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/old中

cp -r /usr/new /usr/old

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/old中

cp -i /usr/new m*.c /usr/old

在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要疯掉了,下面来个试验看看方法:

cp 1/* /2         复制目录1下所有到/2目录下,这时如果/2目录下有和1同名的文件,需要按Y来确认并且会略过1目录下的子目录。

cp -r 1/* /2      这次依然需要按Y来确认操作,但是没有忽略子目录。

cp -r -a 1/* /2   依然需要按Y来确认操作,并且把1目录以及子目录和文件属性也传递到了/2。

\cp -r -a 1/* /2  成功,没有提示按Y、传递了目录属性、没有略过目录。


ls 命令

描述:ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。如不想对输出结果采用彩色显示,可使用/bin/ls命令。

语法:ls(选项)(参数)

常用选项:

-a     显示所有档案及目录(ls内定将档案名或目录名称为“.”的设为隐藏,不会列出);

-A     显示除隐藏文件“.”和“..”以外的所有文件列表;

-C     多列显示输出结果。这是默认选项;

-l     与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;

-F     在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;

-b     将文件中的不可输出的字符以反斜线“\”加字符编码的方式输出;

-c     与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的依据是文件的状态改变时间;

-d     仅显示目录名,而不显示目录下的内容列表或显示符号链接文件本身,而不显示其所指向的目录列表;

-f     此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;

-i     显示文件索引节点号(inode)。一个索引节点代表一个文件;索引节点(index inode简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。

--file-type:  与“-F”选项的功能相同,但是不显示“*”;

-k      以KB(千字节)为单位显示文件大小;

-l      以长格式显示目录下的内容列表。

-m      用“,”号区隔每个文件和目录的名称;

-n      以用户识别码和群组识别码替代其所属者、组名称;

-r      以文件名反序排列并输出目录内容列表;

-s      显示文件和目录的大小,以区块为单位;

-t      用文件和目录的更改时间排序;

-L      如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;

-R      递归处理,将指定目录下的所有文件及子目录一并处理;

--full-time   列出完整的日期与时间;

--color[=never、always、auto] 使用不同的颜色高亮显示不同类型的。

用法举例:

ls      显示当前目录下非隐藏文件与目录
ls -a    显示当前目录下包括隐藏文件在内的所有文件列表
ls -1 (这里是数字1)   输出长格式列表
ls -i    显示文件的inode信息

ls -m    水平输出文件列表

ls �Ct   按照文件编辑的最后修改时间降序排列列表

ls �CR   显示递归文件

ls �Cn   打印文件的GID和UID

ls �Cl   显示文件或目录的详细信息

ls �Clh   列出可读文件和目录的详细信息

ls �Cld   显示目录的信息

ls �Clt   按照时间显示文件和目录的详细信息

ls �Cltr   按修改时间显示文件和目录的详细信息

ls �CF    按照字符对文件进行分类

ls �Ccolor=auto/always/never   列出文件并标记颜色分类


pwd 命令

描述:pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。

语法:pwd(选项)

常用选项:

--help    显示帮助信息;

--version  显示版本信息。

用法举例:

[root@localhost ~]# pwd

/root


touch 命令

描述:touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

语法:touch(选项)(参数)

常用选项:

-a或--time=atime、access、use     只更改存取时间;

-c或--no-create  不建立任何文件;

-d          <时间日期> 使用指定的日期时间,而非现在的时间;

-f          此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;

-m或--time=mtime、modify     只更该变动时间;

-r         <参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;

-t         <日期时间>使用指定的日期时间,而非现在的时间;

--help      在线帮助;

--version    显示版本信息。

用法举例:

在当前目录下创建空文本文件abc.txt   touch abc.txt   


cat 命令

描述:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于shell下的type命令。 

注:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

语法:cat(选项)(参数)

常用选项:

-n或-number           从1开始对所有输出的行编号; 

-b或--number-nonblank    和-n相似,但对空白行不编号; 

-s或--squeeze-blank     当遇到有连续两行及以上的空白行时,就用一行的空白行替换; 

-A                 等价于"-vET"选项,显示不可打印字符,行尾显示“$”; 

-e                 等价于"-vE"选项; 

-t                 等价于"-vT"选项;
用法举例:

假定a1和a2是当前目录下的两个非空文件

cat a1           (在屏幕上显示文件a1的内容)

cat a1 a2        (同时显示文件a1和a2的内容)

cat a1 a2 > file    (将文件a1和a2合并后放入文件file中)

whereis 命令

描述:whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

语法:whereis(选项)(参数)

常用选项:

-b        只查找二进制文件;

-B<目录>    只在设置的目录下查找二进制文件;

-f         不显示文件名前的路径名称;

-m        只查找说明文件;

-M<目录>    只在设置的目录下查找说明文件;

-s         只查找原始代码文件;

-S<目录>         只在设置的目录下查找原始代码文件;

-u        查找不包含指定类型的文件。

用法举例:

例如需要查找某个陌生的命令tree所在的文件路径   whereis tree


which 命令

描述:which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

说明:which是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!

语法:which(选项)(参数)

常用选项:

-n<文件名长度>       制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名; 

-p<文件名长度>      与-n参数相同,但此处的<文件名长度>包含了文件的路径; 

-w                         指定输出时栏位的宽度; 

-V                         显示版本信息。
用法举例:
查找文件,显示命令路径    which pwd


mv 命令

描述:mv命令用来对文件或目录重命名,或者将文件从一个目录移到另一个目录中。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:

1.  如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。

2.  如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。

注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
语法:mv(选项)(参数)

常用选项:

--backup=<备份模式>   若需覆盖文件,则覆盖前先行备份;

-b          当文件存在时,覆盖前,为其创建一个备份;

-f             若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;

-I          交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。

--strip-trailing-slashes   删除源文件中的斜杠“/”;

-S<后缀>               为备份文件指定后缀,而不使用默认的后缀;

--target-directory=<目录>   指定源文件要移动到目标目录;

-u              当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

用法举例:

将文件a改名为b        mv a b

将目录/usr/new中的所有文件移到当前目录(用.表示)中    mv /usr/new/* .


rename 命令

描述:rename命令用字符串替换的方式批量改变文件名。

语法:rename(参数)

用法举例:

将a1.txt重命名为a.txt        rename a1.txt a.txt a1.txt

支持通配符和正则表达式,? 可替代单个字符 * 可替代多个字符 [charset] 可替代charset集中的任意单个字符

把文件名中的AA替换成aa                 rename "s/AA/aa/" *    
把.html 后缀的改成 .php后缀              rename "s//.html//.php/" * 
把所有的文件名都以txt结尾               rename "s/$//.txt/" *  
把所有以.txt结尾的文件名的.txt删掉
       rename "s//.txt//" *


rm 命令

描述:rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

语法:rm(选项)(参数)

常用选项:

-    直接把欲删除的目录的硬连接数据删除成0,删除该目录;

-f     强制删除文件或目录;

-i     删除已有文件或目录之前先询问用户;

-r或-R   递归处理,将指定目录下的所有文件与子目录一并处理;

--preserve-root   不对根目录进行递归操作;

-v     显示指令的详细执行过程。

用法举例:

交互式删除当前目录下的文件test和example     rm -i test example

删除当前目录下除隐含文件外的所有文件和子目录  rm -r *


vi 命令

描述:vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。

vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。

vi编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入。常用内置命令如下:

Ctrl+u:向文件首翻半屏; Ctrl+d:向文件尾翻半屏;Ctrl+f:向文件尾翻一屏;Ctrl+b:向文件首翻一屏;

Esc:从编辑模式切换到命令模式;ZZ:命令模式下保存当前文件所做的修改后退出vi;

:行号:光标跳转到指定行的行首;:$:光标跳转到最后一行的行首;

x或X:删除一个字符,x删除光标后的,而X删除光标前的;

D:删除从当前光标到光标所在行尾的全部字符;dd:删除光标行正行内容;

ndd:删除当前行及其后n-1行;

nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;

p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;

P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;

/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;

?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;

a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;

a:在当前字符后添加文本;A:在行末添加文本;i:在当前字符前插入文本;I:在行首插入文本;

o:在当前行后面插入一空行;O:在当前行前面插入一空行;

:wq:在命令模式下,执行存盘退出操作;:w:在命令模式下,执行存盘操作;

:w!:在命令模式下,执行强制存盘操作;:q:在命令模式下,执行退出vi操作;

:q!:在命令模式下,执行强制退出vi操作;:e文件名:在命令模式下,打开并编辑指定名称的文件;

:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;

:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;

:set number:在命令模式下,用于在最左端显示行号;:set nonumber:在命令模式下,用于在最左端不显示行号;

语法:vi(选项)(参数)

常用选项:

+<行号>       从指定行号的行开始显示文本内容;

-b           以二进制模式打开文件,用于编辑二进制文件和可执行文件;

-c<指令>       在完成对第一个文件编辑任务后,执行给出的指令;

-d           以diff模式打开文件,当多个文件编辑时,显示文件差异部分;

-l           使用lisp模式,打开“lisp”和“showmatch”;

-m           取消写文件功能,重设“write”选项;

-M           关闭修改功能;

-n           不实用缓存功能;

-o<文件数目>    指定同时打开指定数目的文件;

-R           以只读方式打开文件;

-s           安静模式,不显示指令的任何错误信息。

用法举例:

打开网络配置文件进行相关参数的配置   vi /etc/sysconfig/network-scripts/ifcfg-eth0

本文出自 “DreamScape” 博客,请务必保留此出处http://dyqd2011.blog.51cto.com/3201444/1730145