常用linux命令

获取命令帮助

命令帮助格式

[ ] :可选
| :多选1
<> :必选
... :可出现多次
{} :分组

1.内部命令帮助:

   help COMMAND

2.外部命令帮助:

  COMMADN --help   #大多数外部命令支持(简要说明)

3.命令手册:

用来存储在linxu系统上的手册页面,分章节显示,共8个章节,如下:

     1.用户命令:所有用户都可以使用的命令

     2.系统调用:

     3.库调用:

     4.特殊文件:设备文件,不是真正文件,指作为设备的访问入口存在,不存储任何内容

     5.文件格式:解释命令对应配置文件的语法,如 #man 5 paswd  表示查看passwd命令配置文件/etc/passwd的内容说明

     6.游戏

     7.杂项:不便归类的命令

     8.管理命令:管理员才可使用的命令

man命令显示结果:

标题                                    描述
Name                        显示命令的名称和简介
Synopsis                   显示命令的格式
Description                描述每个命令的选项
Author                       提供该命令开发人员的信息
Reporting Bugs        提供提交bug报告的途径
Copyright                 提供该命令源代码的版权信息
See Also                  推荐查看相似的命令

语法:

 man   [节号]   COMMAND  #外部命令一般用此命令(详细说明,内部命令一般用方法1),节号取值范围:1-8

    1.翻屏:

           向后翻一屏:SPACE
           向前翻一屏:b
           向后翻一行:ENTER
           向前翻一行:k

    2.查找:

           /KEYWORD:向后查找KEYWORD

                n:下一个

                N:前一个

          ?KEYWORD:向前查找KEYWORD

                n:下一个

                N:前一个

     3.退出man:q

备注: man命令不指定节号,按章节号顺序查找,查找到停止。

whatis COMMAND #显示命令在哪些章节

#man man  #显示man命令的帮助手册

4.在线文档:

info COMMAND #用的较少

5.命令帮助目录

/usr/share/doc

文件/目录管理命令

目录是特殊文件

节点:linux内核通过“节点”来识别每个文件,即每个文件都有一个节点号。

设备文件: linux将硬件设备当成特殊的文件,称为设备文件,包括:字符型设备文件、块设备文件、网络设备文件。

数据对:每个设备文件都有一个数值对,包括:主设备号、次设备号。同一个硬件设备上的设备文件的主设备号相同,次设备号不同,如sda划分2个分区,sda1和sda2

创建普通文件

文件命令规则:

   1.长度不能超过255个字符

   2.文件名不能含/

   3.严格区分大小写

文件数据组成:

1.实际数据:

  就是文件中的内容

2.元数据:

   主要是描述文件(数据)属性的信息,如:访问权限、文件拥有者、访问、修改、改变时间,以及文件数据块的分布信息(Inode...即索引号),以支持指示存储位置、文件记录、历史数据、资源查找等功能。

   文件包含3个时间:

       access time:最后一次文件被访问的时间----

       modify time:最后一次文件被修改的时间----文件实际数据的修改时间

       change time:最后一次文件被改变的时间----文件元数据的变化时间,即文件属性改变的时间,包括权限,大小,属性等等 

  总结:当仅读取或访问文件(vim或cat命令)时,access time改变,而modify、change time不变

            当修改文件内容时,modify time,change time会改变,access time不一定变,如:echo >> 追加内容时,access time不变

            当修改文件权限、文件拥有者等元数据时,change time会改变,access、modify时间不会变

1.touch  修改文件时间戳

   -a 只修改文件的访问时间(access time)

   -m 只修改文件的修改时间(modify time)

   -t   指定时间

  -c  不创建文件,只修改文件时间戳

#touch -a -t 20100801100000 testfile1  #修改文件访问时间为2010-08-01 10:00:00
#touch -m -t 20110801100000 testfile1 #修改文件的modify时间
#touch -c testfile1  #修改已存在文件的access time和modify time
备注:
  以上3条命令均修改了文件的属性,所以文件的改变时间会自动变为当前系统时间。
  不加-t选项,默认修改为当前系统时间。
touch用法

 2.文本编辑器

文本编辑器:只能编辑ASCII文件,ASCII只能存储纯文本。

备注:word处理工具不是文本编辑器,是字处理器。

   1)nono 

   2)vim

创建链接文件

链接文件是目录中指向文件真实位置的占位符,在linux中,有两种链接文件:

1.硬链接

  1)只能对文件创建硬链接(不能对目录)

  2)不能跨文件系统创建,即不能在不同挂载点之间创建。

  3)索引值与原文件一样,删除原文件,硬链接还在。

  4)文件大小与原文件一样

  5)创建硬链接,会增加文件被链接的次数

创建SRC文件的硬链接名为DEST:

 方法1:ln SRC DEST  

 方法2:cp -l SRC DEST   

2.软链接

  1)创建软链接会产生一个新的索引值

  2)不同挂载点之间,也可创建软链接。

  3)删除原文件,软链接将不可用

  4)文件很小,只存储文件信息,不存储文件数据。

创建SRC文件的软链接名为DEST:
  方法1:ln -s SRC DEST
方法2:cp -s SRC DEST

stat 查看文件属性(文件元数据)

stat FILENAME  #查看结果包括:文件access、modify、change time,文件大小、权限等信息。

      -f   查看文件系统状态

file  查看文件类型

file命令将文件分成3类:

 1.文本文件:包含可打印字符的文件

 2.可执行文件:可在系统上运行的文件

 3.数据文件:包含不可打印二进制字符、又不能在系统上运行的文件

ELF:可执行可链接文件的存储格式,也是可执行二进制文件格式,在windows叫PE

#file /bin/ls   #executable表示是一个可执行程序
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

rm 删除文件

   -i   交换式,即给个删除提示,y删除,n不删除

   -f   强行删除,不提示

   -r   递归删除目录

   -rf   递归删除目录,不提示

COMMADN  #使用原生的命令
系统默认设置rm是rm -i的别名,使用
m命令删除文件时,会以rm原本命令含义执行,即不会交互式提示。

备注:linux没有回收站,文件一旦删除,就不会找回

mkdir 创建空目录

     -p   创建多级目录

     -v    打印详细信息

mkdir -p a/b/c  #逐级创建,当前目录下a目录,则创建目录a,a目录下无b目录,创建b目录,b目录下创建c目录

mkdir ..abc   #当前目录下,创建隐藏文件

rmdir  删除空目录

       -p  逐级删除

mv 移动文件

移动文件,文件的索引号、访问时间、修改时间不变,改变时间变为执行mv命令时的系统当前时间。

mv一个带有软链接的文件后,软链接将不可用(硬链接不受影响)

 mv SRC DEST  #不同目录为移动,相同目录为重命名

  -i  交互式

  -f 强制

  -t  DEST SRC    #把SRC和DEST参数位置颠倒。

cp 复制文件 

复制产生是一个新文件,有自己的索引号

cp  SRC...  DEST    #SRC可用有多个,SRC为多个时,DEST必须是一个目录

   -r  复制目录,递归拷贝

   -f  强制复制

   -i

  -p 保留原文件的属主、属组和时间戳(复制时,保留原文件的文件属性)

  -P 保持链接属性,即原文件如果是一个链接文件,复制后也是一个链接文件。

  -d 等同于-P

  -L 原文件如果是一个链接文件,复制后的文件是原链接指向的文件。(默认)

  -a 保持链接属性,归档复制,常用于备份。等 同于-rd

install 复制文件 

只能复制文件,且可以指定属性

       -d DIRECTIORY... 创建目录
       -t DEST SRC... 将SRC复制到DEST

tree 查看目录树

树型方式显示目录的结构

ls 列目录

   -l  长格式显示

  -a  显示所有隐藏文件  .表示当前目录 ..表示上以级目录

  -R  递归显示

  -A 显示所有隐藏文件,但不显示.和..

  -d 显示目录自身属性

  -i 显示文件节点号

  -r ASCII降序显示(默认升序显示

  -h 单位换算,默认为k

  -F 文件和目录区分显示  

  -s  块大小

#ls -l

-rw-r--r-- 1 root root 0 Dec 12  2013 abc

显示分8段(如上8种颜色),依次是:

文件类型:

       -  普通文件

       d 目录文件

       b 块设备文件

       c 字符设备文件

       l  符号链接文件

      p 命令管道文件

      s 套接字文件

文件权限:

9位,每3位为1组,每一组rwx(读、写、执行,无权限的位用横线-表示),分别代表文件属主、文件属组、其他用户的权限

rw-r--r--  #表示文件属主权限是读、写,文件属组权限是只读,其他用户权限是只读。

文件硬链接的次数:

 文件的属主:

 文件的属组:

文件大小(size):单位为字节

时间戳(timestamp):最近一次修改的时间

文件名:

如果文件是设备文件,则没有文件大小这列,用设备号取代。

crw-rw---- 1 root video    10, 175 Jun 22 00:42 agpgart

主设备号,次设备号:10, 175

#ls -lh

drwxr-xr-x. 2 root root 4.0K May 17 17:35 script

# ls -ild /root  
129541 dr-xr-x---. 3 root root 4096 Jun 20 03:45 /root     #标红为节点号

#ls -F

proc.tcl*  test/      #文件名后面跟斜线表示目录,文件名后跟星号表示可执行的文件。

cd 切换目录

cd ~  切换到用户的home目录

cd ~USERNAME  进入USERNAME用户的home目录

cd -   在前一个目录和当前目录之间来回进行切换

cd ..    #回到上级目录

cd ../..   #回到上上级目录

文件查找 find

实时查找,精确匹配,遍历指定目录中的所有文件完成查找,所以查找慢。支持正则匹配

格式:

      find  查找路径   查找标准   查找到后的处理动作

查找路径:默认当前路径

查找标准:

    -name 'FILENAME'  对文件名进行匹配,支持通配符

    -iname 'FILENAME'  文件名匹配时,不区分大小写。

   -regex PATTERN  基于正则表达式查找

   -user USERNAME 根据文件的属主进行查找

   -group GROUPNAME  根据属组进行查找

   -uid UID 根据UID进行查找

   -gid GID 根据GID进行查找

   -nouser 查找没有属主的文件

   -nogroup 查看没有属组的文件

   -type   根据文件类型查找

        f  普通文件

        d 目录

         。。。

   -size 根据文件大小查找,默认单位B

      [+|-]单位    # +表示大于,-表示小于,无+-符号表示等于,单位有k、M、G

      eg:  +10k 大于10k的文件   10k表示等于10k的文件

     组合条件查找

          -a:与,条件需同时满足(默认)

          -o:或,条件只需满足其一

          -not:非,条件取反

          eg:  find /tmp -nouser -o -type d 

      时间戳查找

             -mtime 修改时间(天)

             -ctime  改变时间(天)

             -agtime:访问时间(天)

               [+|-] 天数     # +5 大于5天,-5小于5天   5等于5天

              备注:也支持-mmin、-cmin、-amin,不过单位是分钟

      权限查找

             -perm [-|/]MODE     #MODE取值范围000~777(分别表示属主、属组、其他用户3个权限)

                       MODE  :待查找的文件的9位权限必须精确等于MODE权限,才能匹配成功

                       -MODE :待查找的文件的9位权限必须完全包含MODE权限,才能匹配成功

                        /MODE:待查找文件的9位权限当中任何一位匹配,才能匹配成功。

                   find ./ -perm -644   # 文件权限若为644、755则可用匹配上,若为751则匹配不上。

 处理动作:默认动作、打印到屏幕上

     -print  显示

     -ls   #显示每个文件的详细信息,等同于ls -l  

     -ok COMMAND {} ;    # {}表示查找出来的文件名,COMMAND表示执行的命令,ok比较交互式

          eg: find ./ -perm -006 -ok chmod +x {}    #对所有查找条件的文件,进行+x权限,执行加权限时,提供提示。

     -exec COMMAND {} ;   与上一条功能类似,至少执行命令时,不提示

         eg:  find ./ -perm -020 -exec mv {} {}.new ;  #查看属 组有写权限的文件,并修改其文件名为: 原文件名.new

eg:

       find /var -user root -group mail    #查看/var目录下属主是root,属组是mail的所有文件

      查找/usr/目录下不属于root,bin或student的文件

      find /usr -not -user  root -a -not -user bin -a  -not -user  student 

      find /usr -not (-user root -o -user bin -o -user student)

      查找当前系统上没有属主或属组且最近1天内被访问过的文件,将其属主、属组均修改为root

      find  /( -nouser -o -nogroup) -a -atime -1 -exec chown root:root {} ;

     查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中

     find /etc -size +1M echo >> /tmp/etc.largefiles

文本处理命令

查看文本

1.cat

    -n   打印行号

    -E   打印行结束符,linux系统行结束符是$,windows系统是$+回车键,Notepad++文本工具,可以设置行尾技术符为$

    -A  打印所有字符,包括:不可见的字符。

    -s  当相邻有多个空白行时,只保留单个空白行。

    -T 将制表符替换为^I

2.tac

   与cat功能类似,不过是倒叙显示(最后1行显示在第1行,依次类推)

3.more  分屏显示

    space:后翻一屏

    b:前翻一屏

    enter:后翻一行

翻到最后自动退出

4.less 分屏显示

    space:后翻一屏

    b:前翻一屏

    enter:后翻一行

    k:前翻一行

翻到最后不会退出

5.head  查看文件的前n行,默认10行

     -n :显示前n行 

6.tail   查看文件的后n行,默认10行

    -n:显示后n行

    -f:等待显示后续追加到此文件的新内容,一般用于对日志文件监控

文本裁剪 cut

     -d 指定字段分割符,默认为1个空格

      -f 指定要显示的字段

           -f 3  显示第3个字段

           -f 1,3 显示第1、3字段(离散用逗号)

           -f 1-3 显示第1到第3字段(连续用横线)

           -f 1-3,5 显示第1-3、5字段,可组合使用

文本裁剪 sort

sort命令默认按ASCII升序排序

      -r  降序排序

      -n  数字升序

      -t   字段分割符

     -k  指定按第哪个字段进行排序

     -u  排序后,相邻重复行只显示1次

     -f   排序时,忽略字母大小写

sort -t: -k3 /etc/passwd   #指定冒号为分割符,对第3个字段进行排序。

报告相邻重复行 uniq

      -d  只显示相邻重复行(重复行只显示1次)

      -c  打印文件中每行的相邻重复的次数

      -D 显示所有相邻重复行

文本统计 wc

   -l 只显示行数

   -w 只显示单词数

   -c 只显示字节数

  -m 只显示字符数

   -L 显示最长的1行所包含的字符个数

# wc /etc/fstab
15 78 779 /etc/fstab   行数 单词数 字节数 文件名

字符处理  tr

格式:tr [OPTION]...  SET1 [SET2]

tr -d  删除指定字符

#tr 'ab' 'CD'
happy boy!
hCppy Doy!

#tr -d 'ab'
happy boy!
hppy oy!

#tr 'a-c' 'hmt' < /etc/passwd  #文件passwd中所有字符a替换为h,字符b替换为m,字符c,替换为t

文本过滤 grep

格式:

 grep [option] pattern [file]    #grep使用基本正则表达式

 选项:

        -i:匹配时,忽略大小写。 

        -v:反向查找,显示没有被模式匹配的行

        -n:显示匹配模式的行所在的行号

        -c:指定多个匹配模式

        --color:匹配字符串加颜色,默认加红色

       -A num: 显示匹配模式成功的行及后面的几行(after)

       -B num:显示匹配模式成功的行及前面的几行(before)

      -C num:显示匹配模式成功的行及前后各几行

      -o  只显示被模式匹配到的字符串

      -E 使用扩展正则表达式(EBR)

      -h  当在多个文件中,进行文本过滤时,不显示文件名称,只显示匹配的模式

练习题:exercise

1.找出某文件中的1位数,或2位数

   grep -E  '[0-9]{1,2}' /proc/cpuinfo

2.显示当前目录所有文件中,内容含“hello”的行

#grep "hello" `find ./ -name *`

./1:hello  

./def:hello world

备注:显示格式 : 文件名:内容含"hello"的行

#grep -h   "hello" `find ./ -name *`   # -h选项,只显示匹配的文本内容。

hello

hello wrold

关于正则表达式的使用,见正则表达式博文

文本过滤 egrep

 与grep功能类似,使用EBR引擎匹配

其他

date 时间管理

linux有2个时钟:

硬件时钟:即BIOS时间,纽扣电池给晶体振荡器供电,保证掉电时间不丢失。称为RTC(real time clock)

系统时钟:即linux系统内核时间,linux启动时,系统内核会读取硬件时钟的设置,系统启动后,系统时钟独立运行。

晶体振荡器:实现计时功能的器件

硬件时钟命令:

      硬件时钟查看:hwclock --show | clock --show     #不加--show也可用

      硬件时钟设置:hwclock --set --date="08/04/16 09:20:10"  (月/日/年 时:分:秒)  或者clock  --set --date="08/04/16 09:20:10"

系统时钟命令:

语法: date [OPTION] ...  [+FORMAT]

             date -s 08/04/15     #将日期设置为2015-8-14

             date -s 08:21:10    #将时间设置为09:20:10    

             date 0701092016.30  #将时间设置为206-07-01 09:20:30 

             date       #查看当前系统时间

             date -u   #查看系统时间对应的UTC时间(格林威治标准时间)

格式化显示时间:

    date +%

             %M 年

            %m 月

            %d 日

            %n  换行

            %T 时:分:秒

            %F   年-月-日  等同于%M-%m--%d

            %H 时

            %S 秒

            %s  自1970-01-01 00:00:00 至现在经过的秒数,时间戳。

eg:  

#date +"This yesr is: %Y. %n Today is %d."
This year is 2013.
Today is 26.

时钟同步:

hwclock
        -w       #将系统时间同步到硬件时间。
        -s       #将硬件时钟同步到系统时间。

cal 日历

cal 2013  #显示2013年日历

cal 12 2013 #显示2013年12月日历

printf  格式化打印

printf "The year is 2013. Today is 26. "

备注:printf默认无换行符,使用 指定换行符

echo 显示消息

echo 

         -n    #去掉行尾的换行符(默认有换行符) 

         -e   #反斜线逃逸字符,让转义符有意义。

#echo -e “This year is 2017.
Today is 22”  #不加-e选项,
会当作普通字符显示,而不是换行符
This year is 2017.
Today is 22
#echo -e  "hello world. hello beijing."
hello worl. hello beijing.

常见转义字符:

       换行符

        横向制表符,tab键

    v    纵向制表符

       退格:即删除前一字符。

    33 控制字符

颜色设置

echo -e

     33 :控制符,表示后面的字符接受控制

eg:

    echo -e "33[1;31;46mHello33[0m,world."

Hello,world

解释:

       有多个设置值有多个时,使用分号隔开:如配置字体、背景色、字体颜色、加粗之间,需要使用分号隔开

        1:字体加粗

        3x:字体颜色

        4x:字体背景颜色

        x取值:

                 0:正常色

                 1:红色

                 2:绿色

                 3:黄色

                 4:橙色

                 5:紫色

                 6:蓝色

                 7:白色

        m:针对字体本身生效(最后一项设置于m之间不用也不能加分号)

引用

         '' :强引用(一对单引号),让引号中的内容保留原意,不支持变量替换。$被当作普通字符

         “”:弱引用(一对双引号),让引号中的内容保留原意,支持变量替换

备注:

       引号本身不输出,要显示单引号,外面用双引号括起来。反之亦然。

       

# echo "THis's is a book"
THis's is a book

命令行展开

 1.花括号:以逗号隔开

    mkdir /mnt/test/{a,d}_{b,c}   #创建/mnt/test目录下,创建a_b、a_c、d_b、d_c四个目录

  

type 查看命令类型

type [OPTION] COMMAND   #查看命令的类型,内置、别名、外部命令

    -t    #简洁显示

          builtin:内置命令

          alias:别名

          file:外部命令

   -p    # 若COMMAND为外部命令,则显示完整文件名,否则不显示。

[root@localhost ~]# type whoami
whoami is /usr/bin/whoami
[root@localhost ~]# type -t whoami
file
[root@localhost ~]# type -p whoami
/usr/bin/whoami
type

which 查看命令执行路径

# which pwd
/bin/pwd

whoami 查看当前登陆名

#whoami

root

who  查看当前所有登陆会话

  -r 查看运行级别

  -H 打印列标题

#who -H

NAME   LINE                           TIME                                         COMMENT   #列标题
root       tty1                   2017-06-22 00:44
root      pts/0                 2017-06-22 00:47 (192.168.10.100)
root       pts/1                2017-06-22 02:13 (192.168.10.100)

last系列命令 显示登陆

1.last    #显示/var/log/wtmp文件,显示用户登陆历史及系统重启历史

     -n x 显示最近x次的相关信息。

2.lastb   #显示/var/log/btmp文件,显示用户错误的登陆尝试

     -n x 显示最近x次的相关信息

3.lastlog #显示每个用户最近一次的成功登陆信息

      -u USERNAME  #显示用户USERNAME最近的登陆信息。

111
原文地址:https://www.cnblogs.com/zmdsg/p/7061924.html