linux 基础命令

1、ls:

  ls命令是linux下最常用的命令,是list的缩写。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。 

  命令格式:ls [选项] [目录名]

  命令实例:

  ①列出/home/test文件夹下的所有文件和目录的详细资料:ls -lR /home/test

  ②列出当前目录中所有以 “p” 开头的目录的详细内容:ls -l t*

  ③只列出文件下的子目录,列出 /opt/soft 文件下面的子目录:ls -F /opt/soft/ | grep /$

    列出 /opt/soft 文件下面的子目录:ls -l /opt/soft | grep "^d"

  ④列出当前目录下所有名称 s 开头的文件,时间正序排列:ls -ltr s*

  ⑤计算当前目录下文件和目录数:

    ls -l * |grep “^-“|wc -l —文件个数

    ls -l * |grep “^d”|wc -l    —目录个数

  ⑥在 ls 中列出文件的绝对路径:ls | sed "s:^:`pwd`/:"

  ⑦递归列出当前目录下的所有文件(包括隐藏文件)的绝对路径:find $PWD | xargs ls -ld

2、cd:目录切换

  命令格式:cd [目录名]

3、pwd:查看”当前工作目录“的完整路径

4、mkdir :

  用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。

  命令格式:mkdir [选项] 目录…

  命令实例:①递归创建多个目录:mkdir -p test2/test22

    ②创建权限为777的目录:mkdir -m 777 test3

    ③一个命令创建项目的目录结构: mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}

    输出:

    mkdir: 已创建目录 “scf”

    mkdir: 已创建目录 “scf/lib”

    mkdir: 已创建目录 “scf/bin”

    mkdir: 已创建目录 “scf/doc”

    mkdir: 已创建目录 “scf/doc/info”

    mkdir: 已创建目录 “scf/doc/product”

    mkdir: 已创建目录 “scf/logs”

    ......

5、rm:

  删除一个目录中的一个或多个文件或目录,对于链接文件,只是删除了链接,原有文件均保持不变。

  命令格式:rm [选项] 文件…

  部分常用命令:

  ①删除test目录及子目录中的所有文件,且不用一一确认:rm -rf  test2

  ②删除以 -f 开头的文件:rm -- -f

6、rmdir:

  删除空目录,一个目录被删除之前必须是空的。(注意,rm – r dir命令可代替rmdir,但是有很大危险性。)删除某目录时也必须具有对父目录的写权限。

  命令格式:rmdir [选项]… 目录…

  命令实例:递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除,删除logs包含的空目录:rmdir -logs

7、mv:

  可以用来移动文件或者将文件改名,视mv命令中第二个参数类型的不同(是目标文件还是目标目录)

  命令格式:mv [选项] 源文件或目录 目标文件或目录

  命令参数:

  -b :若需覆盖文件,则覆盖前先行备份。

  -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

  -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

  -u :若目标文件已经存在,且 source 比较新,才会更新(update)

8、cp:

  将源文件复制至目标文件,或将多个源文件复制至目标目录。

  命令格式:cp [选项]… [-T] 源 目的 或 :cp [选项]… 源… 目录  或:cp [选项]… -t 目录 源…

  部分常用命令:

  ①复制整个目录(目标目录存在与否结果是不一样的):cp -a test test1

  ②复制一个log.log 建立一个log_link.log(log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』): cp -s log.log log_link.log

9、touch:

  更改文档或目录的日期时间,包括存取时间和更改时间

  命令格式:touch [选项]... 文件...

  命令实例:

  ①创建不存在的文件:touch log2012.log log2013.log

  ②更新log.log 时间 和 log2.log时间戳相同:touch -r log.log log2.log

  ③设定文件的时间戳:touch -t 201211142234.50 log.log

10、cat:

  连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

  其他功能:

    1.一次显示整个文件:cat filename

    2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.

    3.将几个文件合并为一个文件:cat file1 file2 > file

  命令格式:cat [选项] [文件]...

  命令实例:

  ①把log1文件内容加上行号输入到log2文件:cat -n log1.log log2.log 

  ②把log1和log2文件内容加上行号(空白行除外),输入到log文件:cat  -b  log1.log  log2.log  log.log

  注:tac:是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,而 tac 则是由最后一行到第一行反向在萤幕上显示出来!

11、nl:

  计算文件中行号,nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。nl 命令读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。 在输出中,nl 命令根据您在命令行中指定的标志来计算左边的行。 输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。 除非使用 -p 标志,nl 命令在每个逻辑页开始的地方重新设置行号。 可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。

  命令格式:nl [选项]... [文件]...

     命令实例:

  ①用nl 列出log.log的内容:nl log.log

  ②用nl 列出log.log的内容,包括空行:nl -b a log.log

  ③用nl 列出log.log的内容,行号前面自动补0,统一输出格式:nl -b a log.log;nl -b a -n rz -w 3 log.log 

  nl -b a -n rz 命令行号默认为六位,要调整位数可以加上参数 -w 3 调整为3位。

12、more:

  功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。

  命令格式:more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ] 

  常用操作命令:

    Enter    向下n行,需要定义。默认为1行

    Ctrl+F   向下滚动一屏

    空格键  向下滚动一屏

    Ctrl+B  返回上一屏

    =       输出当前行的行号

  命令实例:

  ①从文件第三行读取:more +3 log.log

  ②从文件中找出第一次出现“day3”字符串的行,并从该处前两行显示输出: more +/day3 log2012.log

  ③设定每屏显示行数:more -5 log2012.log

  ④结合ls 显示目录:ls -l  | more -5

13、less:

  less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

  命令格式:less [参数]  文件 

  命令实例:

  ①ps 查看进程信息,并通过less分页显示:ps -ef |less

  ②查看命令历史,并通过less分页显示: history | less

  ③浏览多个文件:Less log1.log log2.log

  注:

  ctrl + F - 向前移动一屏

  ctrl + B - 向后移动一屏

  ctrl + D - 向前移动半屏

  ctrl + U - 向后移动半屏

14、head:

  head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行

  命令格式:head [参数]... [文件]...  

  命令实例:

  ①显示前 n 行文件:head -n 5 log.log

  ②显示文件前 n 个字节:head -c 20 log.log

  ③显示文件除了最后n个字节以外的内容:head -c -32 log.log

  ④显示文件除最后 n 行的全部内容:head -n -6 log.log

15、tail:

  用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件,使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新

  命令格式:tail[必要参数][选择参数][文件]  

  命令实例: 

  ①显示文件后几行的信息:tail -n 5 log2014.log

  ②循环查看文件内容:tail -f test.log

  ③从第五行开始显示文件:tail -n +5 log.log

16、which:

  在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

  命令格式:which 可执行文件名称

  命令参数:

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

    -p  与-n参数相同,但此处的包括了文件的路径。

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

    -V  显示版本信息

  命令实例:

  ①查找文件,显示命令路径:which lsmod

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

17、whereis:

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

  命令格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名

  命令参数:

    -b   定位可执行文件。

    -m   定位帮助文件。

    -s   定位源代码文件。

    -u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

    -B   指定搜索可执行文件的路径。

    -M   指定搜索帮助文件的路径。

    -S   指定搜索源代码文件的路径。

  命令实例:

  ①查找所有和 ** 相关的文件:whereis svn

  ②只将二进制文件查找出来:whereis -b svn

18、locate:

  locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)。locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*” 或”?”等)来指定范本样式。locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。

  命令格式:Locate [选择参数] [样式]

  命令实例:

  ①查找和pwd相关的所有文件:locate pwd

  ②搜索etc 目录下所有以sh开头的文件:locate /etc/sh

19、find:

  在目录结构中搜索文件,并执行指定的操作

  命令格式:find pathname -options [-print -exec -ok ...]

  特殊命令选项:

    -amin n   查找系统中最后N分钟访问的文件

    -atime n  查找系统中最后n*24小时访问的文件

    -cmin n   查找系统中最后N分钟被改变文件状态的文件

    -ctime n  查找系统中最后n*24小时被改变文件状态的文件

    -mmin n   查找系统中最后N分钟被改变文件数据的文件

    -mtime n  查找系统中最后n*24小时被改变文件数据的文件

  命令实例:

  ①查找48小时内修改过的文件:find -atime -2

  ②在当前目录查找 以.log结尾的文件:find -name "*.log"

  ③查找/opt/soft/test/目录下 权限为 777的文件:find /opt/soft/test-perm 777

  ④查找当目录,以.log结尾的普通文件:find -type -name "*.log"

  ⑤查找当前所有目录并排序:find -type sort

  ⑥查找当前目录大于1K的文件:find -size +1000c -print

  注:find命令之exec:

    find命令之xargs:

20、chmod:

  用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

  权限范围:

    u :目录或者文件的当前的用户
    g :目录或者文件的当前的群组
    o :除了目录或者文件的当前用户或群组之外的用户或者群组
    a :所有的用户及群组

  权限代号:

    r :读权限,用数字4表示
    w :写权限,用数字2表示
    x :执行权限,用数字1表示
    - :删除权限,用数字0表示
    s :特殊权限 

  命令实例:

  ①增加文件所有用户组可执行权限(设定文件log.log的属性为:文件属主(u) 增加执行权限;与文件属主同组用户(g) 增加执行权限;其他用户(o) 增加执行权限):chmod a+x log.log

  ②同时修改不同用户权限(设定文件text的属性为:文件属主(u) 增加写权限;与文件属主同组用户(g) 增加写权限;其他用户(o) 删除执行权限):chmod ug+w,o-x log.log

  ③删除文件权限(删除所有用户的可执行权限):chmod a-x log.log

  ④使用“=”设置权限(撤销原来所有的权限,然后使拥有者具有可读权限):chmod u=x log.log

  ⑤对一个目录及其子目录添加权限(递归地给test目录下所有文件和子目录的属主分配权限 ):chmod -R u+x test

21、df:

  用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

  显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示

22、du:

  du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是查看当前指定文件或目录(会递归显示子目录)占用磁盘空间大小

  命令实例:

  ①显示指定文件所占空间:du log.log

  ②以 M 单位展示文件大小:du -h test

  ③按照空间大小排序:du|sort -nr|more

23、chgrp:

  在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以。Chgrp命令就是change group的缩写!要被改变的组名必须要在/etc/group文件内存在才行。

  命令格式:chgrp [选项] [组] [文件]

  命令实例:

  ①改变文件群组属性:chgrp -v bin log.log

  ②根据指定文件改变文件的群组属性(改变文件log1.log 的群组属性,使得文件log1.log的群组属性和参考文件log2.log的群组属性相同):chgrp --reference=log2.log log1.log

  ③通过群组识别码改变文件群组属性(通过群组识别码改变文件群组属性,100为users群组的识别码,具体群组和群组识别码可以去/etc/group文件中查看):chgrp -R 100 test6

24、chown:

  将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

  命令格式:chown [选项]... [所有者][:[组]] 文件...

  命令实例:

  ①更改文件拥有者和群组:chown mail:mail log.log;chown mail: log2.log

  ②更改文件群组:chown :mail log2.log

  ③改变指定目录以及其子目录下的所有文件的拥有者和群组:chown -R -v root:mail test6

25、/etc/group:

  /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件。/etc/group文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中。具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中 /etc/gshadow是/etc/group的加密信息文件。

  将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段:组名:口令:组标识号:组内用户列表

  组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

  口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*

  组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.

  组内用户列表是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

26、in:

  为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

  链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

  ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

  命令实例:

  ①给文件创建软链接:ln -s log2.log link2

  ②给文件创建硬链接:ln log2.log ln2

  ③给目录创建软链接:ln -sv /opt/soft/test/test3 /opt/soft/test/test5

 

posted @ 2018-10-16 15:09  蚂蚁力量  阅读(243)  评论(0编辑  收藏  举报