Linux命令大全----经常使用文件操做命令

          林炳文Evankaka原创做品。转载请注明出处http://blog.csdn.net/evankakahtml

        摘要:本文主要讲了Linux命令大全----经常使用文件操做命令,并附有实例linux

lsless

这个命令是常常用到的,用来显示当前目录下有哪些文件 ,ls最经常使用的参数有三个: -a -l -F。
ls -a
说明:Linux上的文件以“.”开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 通常文件名外,连隐藏文件也会显示出来。工具

ls -l(这个参数是字母L的小写,不是数字1)
说明:这个命令可使用长格式显示文件内容,若是须要察看更详细的文件资料,就要用到ls -l这个指令。

 第一个栏位,表示文件的属性。Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。可是这里有十个格子能够添(具体程序实现时,其实是十个bit位)。第一个小格是特殊表示格,表示目录或连结文件等等,d表示目录,例如drwx------;l表示连结文件,如lrwxrwxrwx;若是是以一横“-”表示,则表示这是文件。其他剩下的格子就以每3格为一个单位。由于Linux是多用户多任务系统,因此一个文件可能同时被许多人使用,因此咱们必定要设好每一个文件的权限,其文件的权限位置排列顺序是(以-rwxr-xr-x为例):
  rwx(Owner)r-x(Group)r-x(Other)
  这个例子表示的权限是:使用者本身可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。另外,有一些程序属性的执行部分不是X,而是S,这表示执行这个程序的使用者,临时能够有和拥有者同样权力的身份来执行该程序。通常出如今系统管理之类的指令或程序,让使用者执行时,拥有root身份。
  第二个栏位,表示文件个数。若是是文件的话,那这个数目天然是1了,若是是目录的话,那它的数目就是该目录中的文件个数了。
  第三个栏位,表示该文件或目录的拥有者。若使用者目前处于本身的Home,那这一栏大概都是它的帐号名称。
  第四个栏位,表示所属的组(group)。每个使用者均可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员但愿给予某使用者特殊权限时,才可能会给他另外一个组。
  第五栏位,表示文件大小。文件大小用byte来表示,而空目录通常都是1024byte,你固然能够用其它参数使文件显示的单位不一样,如使用ls –k就是用kb来显示一个文件的大小单位,不过通常咱们仍是以byte为主。
  第六个栏位,表示建立日期。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。
  第七个栏位,表示文件名。咱们能够用ls –a显示隐藏的文件名。

ls –F(注意,是大写的F)
说明:使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是由于使用了-F这个参数。可是如今基本上全部的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,咱们也能看到各类分辨符号。
ui

固然,以上命令还能够一块儿用,以下

cd
 Linux cd 命令能够说是Linux中最基本的命令语句,其余的命令语句要进行操做,都是创建在使用 cd 命令上的。切换当前目录至dirName
cd /  spa

说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了 .net


cd .. 或者 cd .. // 

说明:进入系统根目录可使用“ cd .. ”一直退,就能够到达根目录 3d


cd ../.. //
说明:使用cd 命令实现进入当前目录的父目录的父目录。 
日志


mkdir、rmdir
  mkdir命令用来创建新的目录,rmdir用来删除已创建的目录code

mkdir建立目录,若是目录存在会报错

rmdir删除目录


注意,若是linlin内容非空


rmdir 命令只能删除空的文件夹,若是文件夹非空,将不能删除,它也没有-f选项,因此你的命令都是错的。
要删除非空的文件夹,可使用rm命令,加rf两个选项,如:


cp

    cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它能够将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,不然将出现错误。

-a:此参数的效果和同时指定"-dpR"参数相同;
 -d:当复制符号链接时,把目标文件或目录也创建为符号链接,并指向与源文件或目录链接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
 -i:覆盖既有文件以前先询问用户;
 -l:对源文件创建硬链接,而非复制文件;
 -p:保留源文件或目录的属性; 
-R/r:递归处理,将指定目录下的全部文件与子目录一并处理;
 -s:对源文件创建符号链接,而非复制文件;
 -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
 -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
 -b:覆盖已存在的文件目标前将目标文件备份; -v:详细显示命令执行的操做

具体用法是:cp –r 源文件(source)  目的文件(target)。 参数r是指连同源文件中的子目录一同拷贝。

以下,将/home/linlin1下的linlin.c复制到/home/linlin2下


以下,将/home/linlin1下的linlin.c复制到/home/linlin2下并更名为hello.c


咱们在Linux下使用cp命令复制文件时候,有时候会须要覆盖一些同名文件,覆盖文件的时候都会有提示:须要不停的按Y来肯定执行覆盖。文件数量很少还好,可是要是几百个估计按Y都要吐血了,因而折腾来半天总结了一个方法:

cp aaa/* /bbb 复制目录aaa下全部到/bbb目录下,这时若是/bbb目录下有和aaa同名的文件,须要按Y来确认而且会略过aaa目录下的子目录。
cp -r aaa/* /bbb 此次依然须要按Y来确认操做,可是没有忽略子目录。
cp -r -a aaa/* /bbb 依然须要按Y来确认操做,而且把aaa目录以及子目录和文件属性也传递到了/bbb。 
cp -r -a aaa/* /bbb 成功,没有提示按Y、传递了目录属性、没有略过目录。

把一个文件夹下的内容所有复制到另外一个文件夹下



rm
  这个命令是用来删除文件的,和dos下面的rm(删除一个空目录)是有区别的,你们千万要注意。rm命令经常使用的参数有三个: -i,-r,-f。
  

-f, --force    忽略不存在的文件,从不给出提示。
    -i, --interactive 进行交互式删除
    -r, -R, --recursive   指示rm将参数中列出的所有目录和子目录均递归地删除。
    -v, --verbose    详细显示进行的步骤
      	--help     显示此帮助信息并退出
      	--version  输出版本信息并退出
  rm –r 目录名:这个操做能够连同这个目录下面的子目录都删除,功能上和rmdir类似。
  rm –f 文件名(目录名):这个操做能够进行强制删除。

通常将r和f组合-rf一块儿使用

以下,交互删除


所有强制删除



mv
  这个命令的功能是移动目录或文件,引伸的功能是给目录或文件重命名。当使用该命令来移动目录时,他会连同该目录下面的子目录也一同移走。

-b :若需覆盖文件,则覆盖前先行备份。 
-f :force 强制的意思,若是目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t  : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的状况,此时目标目录在前,源文件在后。
文件更名

mv 原文件(目录)名 新的文件(目录)名。 


文件 移动



du,df
  du命令能够显示目前的目录所占的磁盘空间,df命令能够显示目前磁盘剩余的磁盘空间。若是du命令不加任何参数,那么返回的是整个磁盘的使用状况,若是后面加了目录的话,就是这个目录在磁盘上的使用状况

查看当前目录以及子目录的大小:


查看整个磁盘大小


cat

     cat主要有三大功能:
1.一次显示整个文件。$ cat filename
2.从键盘建立一个文件。$ cat > filename
只能建立新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:

-n 或 --number 由 1 开始对全部输出的行数编号
-b 或 --number-nonblank 和 -n 类似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting

它的用法以下:

  cat text 显示text这个文件;

  cat file1 file2 依顺序显示file1,file2的内容;

  cat file1 file2>file3 把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。
  “〉”是一个很是有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,而后输入到file3这个文件中。这里要注意一点是file3是在重定向之前还未存在的文件,若是file3是已经存在的文件,那么它自己的内容被覆盖,而变成file1+file2的内容。若是〉左边没有文件的名称,而右边有文件名,例如:

把 text.c和 text1.c的档案内容加上行号(空白行不加)以后将内容附加到 text2.c 里。

  另外,若是你使用以下的指令:
  cat file1>>file2:这将变成将file1的文件内容“附加”到file2的文件后面,而file2的内容依然存在,这种重定向符〉〉比〉经常使用,能够多多利用。 


more,less
  这是两个显示通常文本文件的指令。若是一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就能够试试more和less两个指令。More指令可使超过一页的文件临时停留在屏幕,等你按任何的一个键之后,才继续显示。而less除了有more的功能之外,还能够用方向键往上或往下的滚动文件,因此你随意浏览,阅读文章时,less是个很是好的选择。 

more:选项 文件名

+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每一个档案显示前搜寻该字串(pattern),而后从该字串前两行以后开始显示
-c 从顶部清屏,而后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 经过清除窗口而不是滚屏来对文件进行换页,与-c选项类似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉

在每一个档案显示前搜寻该字串lin,而后从该字串前两行以后开始显示 


less

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,咱们并无办法向前面翻, 只能日后面看,但若使用了 less 时,就可使用 [pageup] [pagedown] 等按键的功能来往前日后翻看文件,更容易用来查看一个文件的内容!除此以外,在 less 里头能够拥有更多的搜索功能,不止能够向下搜,也能够向上搜。

less 选项 文件名

选项

-b <缓冲区大小> 设置缓冲区的大小
-e  当文件显示结束后,自动离开
-f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g  只标志最后搜索的关键词
-i  忽略搜索时的大小写
-m  显示相似more命令的百分比
-N  显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q  不使用警告音
-s  显示连续空行为一行
-S  行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b  向后翻一页
d  向后翻半页
h  显示帮助界面
Q  退出less 命令
u  向前滚动半页
y  向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]:   向上翻动一页

退出按Q

向下搜索含lin的字符串


在Linux系统中有三种命令能够用来查阅所有的文件,分别是cat、more和less命令。它们查阅文件的使用方法也比较简单都是 命令 文件名 ,可是三者又有着区别。
1.cat命令能够一次显示整个文件,若是文件比较大,使用不是很方便;
2.more命令可让屏幕在显示满一屏幕时暂停,此时可按空格健继续显示下一个画面,或按Q键中止显示。
3.less命令也能够分页显示文件,和more命令的区别就在于它支持上下键卷动屏幕,当结束浏览时,只要在less命令的提示符“: ”下按Q键便可。
另外,多数状况下more和less命令会配合管道符来分页输出须要在屏幕上显示的内容。

tail

    也是用于用于查看文件内容 

tail语法格式:
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
或者
tail [ -r ] [ -n Number ] [ File ]
使用说明:
tail 命令从指定点开始将 File 参数指定的文件写到标准输出。若是没有指定文件,则会使用标准输入。 Number 变量指定将多少单元写入标准输出。 Number 变量的值能够是正的或负的整数。若是值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。若是值的前面有 -(减号),则从文件末尾指定的单元数开始将文件写到标准输出。若是值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件。
主要参数:
-b Number 从 Number 变量表示的 512 字节块位置开始读取指定文件。
-c Number 从 Number 变量表示的字节位置开始读取指定文件。
-f 若是输入文件是常规文件或若是 File 参数指定 FIFO(先进先出),那么 tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续从输入文件读取和复制额外的单元(当这些单元可用时)。若是没有指定 File 参数,而且标准输入是管道,则会忽略 -f 标志。tail -f 命令可用于监视另外一个进程正在写入的文件的增加。
-k Number 从 Number 变量表示的1KB 块位置开始读取指定文件。
-m Number 从 Number 变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果。
-n Number 从首行或末行位置来读取指定文件,位置由 Number 变量的符号(+ 或 - 或无)表示,并经过行号 Number 进行位移。
-r 从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式显示整个文件。

若是文件大于 20,480 字节,那么-r标志只显示最后的 20,480 字节。 -r 标志只有 与 -n 标志一块儿时才有效。不然,就会将其忽略。

tail -f 命令可用于监视另外一个进程正在写入的文件的增加。 特别是在看日志时很是有用,你实时更新了日志,它就实时显示出来



pwd
  pwd [--help][--version]
  说明:执行pwd指令可马上得知您目前所在的工做目录的绝对路径名称。 

clear
  这个命令是用来清除屏幕的,它不须要任何参数

grep
  用于查找文件中符合字符串的哪行。
  参数说明:

-a :将 binary 文件以 text 文件的方式搜寻数据
  -c :计算找到 '搜寻字符串' 的次数
  -i :忽略大小写的不一样,因此大小写视为相同
  -n :顺便输出行号
  -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
如。显示包含st的行,及其行号

将没有出现st的给显示出来


根据文件内容递归查找目录

# grep ‘energywise’ *           #在当前目录搜索带'energywise'行的文件
# grep -r ‘energywise’ *        #在当前目录及其子目录下搜索'energywise'行的文件
# grep -l -r ‘energywise’ *     #在当前目录及其子目录下搜索'energywise'行的文件,可是不显示匹配的行,只显示匹配的文件

以下


grep功能是很强大的,这里只简单说明了一下,有兴趣的同窗本身下来研究下吧!

find

  $ find  -name "*.txt" -print 用于查找全部的‘ *.txt’文件在当前目录及子目录中
  $ find  -name "[A-Z]*" -print 用于当前目录及子目录中查找文件名以一个大写字母开头的文件
  $ find /etc -name "host*" -print 在/etc目录中查找文件名以host开头的文件
  $find  -name "[a-z][a-z][0--9][0--9].txt" -print 在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件
  如,当前目录中查找以.c结尾的文件


1.在某目录下查找名为“elm.cc”的文件
find /home/lijiajia/ -name elm.cc
 
2.查找文件名中包含某字符(如"elm")的文件
find /home/lijiajia/ -name '*elm*'
find /home/lijiajia/ -name 'elm*'
find /home/lijiajia/ -name '*elm'
 
3.根据文件的特征进行查询
find /home/lijiajia/ -amin -10        #查找在系统中最后10分钟访问的文件
find /home/lijiajia/ -atime -2        #查找在系统中最后48小时访问的文件
find /home/lijiajia/ -empty           #查找在系统中为空的文件或者文件夹
find /home/lijiajia/ -group cat       # 查找在系统中属于groupcat 的文件(试了,命令不对。)
find /home/lijiajia/ -mmin -5         # 查找在系统中最后5 分钟里修改过的文件
find /home/lijiajia/ -mtime -1        #查找在系统中最后24 小时里修改过的文件
find /home/lijiajia/ -nouser          #查找在系统中属于做废用户的文件(不明白是什么意思)
find /home/lijiajia/ -amin 10         #查找在系统中最后10分钟访问的文件
find /home/ftp/pub -user lijiajia     #查找在系统中属于lijiajia这个用户的文件
(PS:以上都是在 /home/lijiajia/文件夹下进行的操做)
 
4.使用混合查找方式查找文件
find /tmp -size +10000000c -and -mtime +2      #查找/tmp目录中大于10000000字节而且在48小时内修改的某个文件
find /tmp -user tom -or -user george           #查找/tmp目录中属于tom或者george这两个用户的文件
find /tmp ! -usr fred                          #查找/tmp目录中不属于fred的文件
 
5.查找并显示文件
find /home/lijiajia/ -name 'elm.cc' -ls        #在目录下查找名为“elm.cc”的文件,并显示这些文件的信息