Linux常用命令总结

Linux常用命令总结

一、cd命令(changeDirectory)

1. 命令语法:cd [目录名]  -- 说明:切换当前目录至dirName

2. 进入主要目录:cd /

3. 进入"家"目录:cd ~

4. 进入上一次工作路径:cd -

5. 把上个命令的参数作为cd参数使用:cd !$

二、pwd命令 -- 查看当前工作目录路径

1. 查看当前路径:pwd

2. 查看软链接的实际路径:pwd -P

三、ls命令(list)

1. ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等

2. 常用参数搭配:

①  ls -a 列出目录所有文件,包含以.开始的隐藏文件

② ls -A 列出除.及..的其它文件

③ ls -r 反序排列

④ ls -t 以文件修改时间排序

⑤ ls -S 以文件大小排序

⑥ ls -h 以易读大小显示

⑦ ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来

3. 例:

① 按易读方式按时间反序排序,并显示文件详细信息: ls -lhrt

② 按大小反序显示文件详细信息: ls -lrS

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

④ 列出文件绝对路径(不包含隐藏文件): ls | sed "s:^:`pwd`/:"

⑤ 列出文件绝对路径(包含隐藏文件): find $pwd -maxdepth 1 | xargs ls -ld

四、head 和 tail命令

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

① 常用参数:-n<行数> 显示的行数(行数为复数表示从最后向前数)

② 例:

显示1.log文件中前20行: head 1.log -n 20

显示1.log文件前20字节: head -c 20 log2014.log

显示t.log最后10行:head -n -10 t.log

2. tail :用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件

①常用参数:

-f 循环读取(常用于查看递增的日志文件)

 -n<行数> 显示行数(从后向前)

② 例:循环读取逐渐增加的文件内容

ping 127.0.0.1 > ping.log &(后台运行:可使用jobs -l查看,也可使用fg将其移到前台运行)

tail -f ping.log(查看日志)

五、cat命令

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

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

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

-b对非空输出行号

-n输出所有行号

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

③ 使用here doc生成新文件

         cat >log.txt <<EOF

         >Hello

         >World

         >PWD=$(pwd)

         >EOF

         ls -l log.txt

         cat log.txt

         Hello

         World

         PWD=/opt/soft/test

④ 反向列示

         tac log.txt

         PWD=/opt/soft/test

         World

         Hello

六、grep命令(Global Regular Expression Print) -- 强大的文本搜索命令,全局正则表达式搜索

1. 工作方式:它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容

2. 命令格式:grep [option] pattern file|dir

3. 常用参数:

① -A n --after-context显示匹配字符后n行

② -B n --before-context显示匹配字符前n行

③ -C n --context 显示匹配字符前后n行

④ -c --count 计算符合样式的列数

⑤ -i 忽略大小写

⑥ -l 只列出文件内容符合指定的样式的文件名称

⑦  -f 从文件中读取关键词

⑧ -n 显示匹配内容的所在文件中行数

⑨ -R 递归查找文件夹

4. grep的正则表达式

①^  #锚定行的开始 如:'^grep'匹配所有以grep开头的行   

   $  #锚定行的结束 如:'grep$'匹配所有以grep结尾的行   

② .  #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p   

    *  #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行   

    .*   #一起用代表任意字符  

    []   #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep 

    [^]  #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行   

    (..)  #标记匹配字符,如'(love)',love被标记为1   

③  <      #锚定单词的开始,如:'<grep'匹配包含以grep开头的单词的行  

      >      #锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行

④ x{m}  #重复字符x,m次,如:'0{5}'匹配包含5个o的行   

     x{m,}  #重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行   

     x{m,n}  #重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行  

⑤ w    #匹配文字和数字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零个或多个文字或数字字符,然后是p

     W    #w的反置形式,匹配一个或多个非单词字符,如点号句号等  

          #单词锁定符,如: 'grep'只匹配grep

5. 例:

① 查找指定进程:ps -ef | grep svn

② 查找指定进程个数: ps -ef | grep svn -c

③ 从文件中读取关键词:cat test1.txt | grep -f key.log

④ 从文件夹中递归查找以grep开头的行,并只列出文件:grep -lR '^grep' /tmp

⑤ 查找非x开关的行内容: grep '^[^x]' test.txt

⑥ 显示包含ed或者at字符的内容行:grep -E 'ed|at' test.txt

七、wc命令(word count) -- 统计指定的文件中字节数、字数、行数,并将统计结果输出

1. 命令格式:wc [option] file..

2. 命令参数:

①  -c 统计字节数

② -l 统计行数

③ -m 统计字符数

④ -w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串

3. 例:

① 查找文件的行数、单词数、字节数、文件名: 

wc text.txt  结果:7     8     70     test.txt

② 统计输出结果的行数:cat test.txt | wc -l

八、创建(mkdir命令)、删除(rm / rmdir)、移动(mv)、复制(cp)

1. mkdir命令 -- 创建文件夹

① 常用参数:

     -m: 对新建目录设置存取权限,也可以用chmod命令设置;

     -p:可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录

② 例:

    当前工作目录下创建名为t的文件夹: mkdir t

    在tmp目录下创建路径为test/t1/t的目录,若不存在,则创建:mkdir -p /tmp/test/t1/t

2. rm命令 -- 删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状

① 格式:rm [选项] 文件…

② 例:

    删除任何.log文件;删除前逐一询问确认: rm -i *.log

    删除test子目录及子目录中所有档案删除,并且不用一一确认:rm -rf test

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

3. rmdir 命令 -- 从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限

① 不能删除非空目录

② 例:当parent子目录被删除后使它也成为空目录的话,则顺便一并删除:rmdir -p parent/child/child11

4. mv命令 

① 移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)      

    当第二个参数为目录时,可刚多个文件以空格分隔作为第一参数,移动多个文件到参数2指定的目录中

② 例:

    将文件test.log重命名为test1.txt: mv test.log test1.txt

    将文件log1.txt,log2.txt,log3.txt移动到根的test3目录中: mv llog1.txt log2.txt log3.txt /test3

    将文件file1改名为file2,如果file2已经存在,则询问是否覆盖 :mv -i log1.txt log2.txt

    移动当前文件夹下的所有文件到上一级目录: mv * ../

5. cp命令 -- 将源文件复制至目标文件,或将多个源文件复制至目标目录

① 命令行复制,如果目标文件已经存在会提示是否覆盖,而在shell脚本中,如果不加-i参数,则不会提示,而是直接覆盖

② 常用参数:

    -i 提示

    -r 复制目录及目录内所有项目

    -a 复制的文件与原文件时间一样

③ 例:

    复制a.txt到test目录下,保持原文件时间,如果原文件存在提示是否覆盖:cp -ai a.txt test

    为a.txt建议一个链接(快捷方式):cp -s a.txt link_a.txt

九、more命令、less命令

1. more命令 -- 类似于cat, more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示

① 命令参数:

    +n      从笫n行开始显示

    -n       定义屏幕大小为n行

    +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 

     -c       从顶部清屏,然后显示

     -d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能

     -l        忽略Ctrl+l(换页)字符

     -p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

     -s       把连续的多个空行显示为一行

     -u       把文件内容中的下画线去掉

② 常用操作命令:

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

    Ctrl+F   向下滚动一屏

    空格键  向下滚动一屏

    Ctrl+B  返回上一屏

    =       输出当前行的行号

   :f     输出文件名和当前行的行号

    V      调用vi编辑器

     !命令   调用Shell,并执行命令

    q       退出more

③ 例:

    显示文件中从第3行起的内容:more +3 text.txt

    在所列出文件目录详细信息,借助管道使每次显示5行: ls -l | more -5

    按空格显示下5行

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

① 常用命令参数:

    -i  忽略搜索时的大小写

    -N  显示每行的行号

    -o  <文件名> 将less 输出的内容在指定文件中保存起来

    -s  显示连续空行为一行

     /字符串:向下搜索“字符串”的功能

    ?字符串:向上搜索“字符串”的功能

    n:重复前一个搜索(与 / 或 ? 有关)

    N:反向重复前一个搜索(与 / 或 ? 有关)

    -x <数字> 将“tab”键显示为规定的数字空格

    b  向后翻一页

    d  向后翻半页

     h  显示帮助界面

    Q  退出less 命令

    u  向前滚动半页

    y  向前滚动一行

    空格键 滚动一行

    回车键 滚动一页

     [pagedown]: 向下翻动一页

     [pageup]:   向上翻动一页

② 例:

    ps查看进程信息并通过less分页显示: ps -aux | less -N

    查看多个文件: less 1.log 2.log

    可以使用n查看下一个,使用p查看前一个

十、chmod命令

1. 用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。

2. 该命令有两种用法:① 包含字母和操作符表达式的文字设定法 ② 包含数字的数字设定法

3. 每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限

   与属主同组的用户的读、写和执行权限

   系统中其他用户的读、写和执行权限

   可使用ls -l test.txt查找

4. 以文件log2012.log为例:

    -rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

   第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行

5. 常用参数:

    -c 当发生改变时,报告处理信息

    -R 处理指定目录以及其子目录下所有文件

6. 权限范围:

    u :目录或者文件的当前的用户

    g :目录或者文件的当前的群组

    o :除了目录或者文件的当前用户或群组之外的用户或者群组

    a :所有的用户及群组

7. 权限代号:

    r :读权限,用数字4表示

   w :写权限,用数字2表示

   x :执行权限,用数字1表示

    - :删除权限,用数字0表示

   s :特殊权限

8. 例:

    增加文件t.log所有用户可执行权限: chmod a+x t.log

    撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息:chmod u=r t.log -c

    给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限:chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)

    将test目录及其子目录所有文件添加可读权限:chmod u+r,g+r,o+r -R text/ -c

十一、tar命令

1. 用来压缩和解压文件。tar本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件

2. 常用参数:

     -c 建立新的压缩文件

     -f 指定压缩文件

     -r 添加文件到已经压缩文件包中

     -u 添加改了和现有的文件到压缩包中

     -x 从压缩包中抽取文件

     -t 显示压缩文件中的内容

     -z 支持gzip压缩

     -j 支持bzip2压缩

     -Z 支持compress解压文件

     -v 显示操作过程

3. 有关gzip及bzip2压缩

    gzip实例:压缩gzip fileName .tar.gz和.tgz  解压:gunzip filename.gz或gzip -d filename.gz

         对应:tar zcvf filename.tar.gz     tar zxvf filename.tar.gz

    bz2实例:压缩bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2

         对应:tar jcvf filename.tar.gz         解压:tar jxvf filename.tar.bz2

4. 实例:

    将文件全部打包成tar包: tar -cvf log.tar 1.log,2.log 或tar -cvf log.*

    将/etc下的所有文件及目录打包到指定目录,并使用gz压缩: tar -zcvf /tmp/etc.tar.gz /etc

    查看刚打包的文件内容(一定加z,因为是使用gzip压缩的): tar -ztvf /tmp/etc.tar.gz

    要压缩打包/home, /etc ,但不要 /home/dmtsai:tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

十二 、chown命令

1. 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符

2.常用参数:

    -c 显示更改的部分的信息

    -R 处理指定目录及子目录

3. 例:

   改变拥有者和群组并显示改变信息:chown -c mail:mail log2012.log

   改变文件群组:chown -c :mail t.log

   改变文件夹及子文件目录属主及属组为mail:chown -cR mail: test/