Linux 命令
    Linux系统启动默认为字符界面,服务器一般不会启动图形界面,所以对命令行的熟练程度能更加方便、高效的管理Linux系统。
    Linux系统目录
    登录系统后,在当前命令窗口下输入命令:ls /
    Linux命令 - 图1
    树状目录结构:
    Linux命令 - 图2
    以下是对这些目录的解释并进行了归类:

    • / 根目录

    ——(系统启动必须)——

    • /boot:
      这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
    • /etc:
      etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    • /lib64 和 /lib

    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

    • /sys

    这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
    该文件系统是内核设备树的一个直观反映。
    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
    ——(指令集合)——

    • /bin:

    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

    • /sbin:s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

    ——(外部文件管理)——

    • /dev:

    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

    • /media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
    • /mnt

    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
    ——(临时文件)——

    • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
    • /tmp:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

    ——(账户)——

    • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
    • /home

    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

    • /usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

    /usr/bin 众多的应用程序
    /usr/sbin 超级用户的一些管理程序
    /usr/doc Linux文档
    /usr/include linux下开发和编译应用程序所需要的头文件
    /usr/lib 常用的动态链接库和软件包的配置文件
    /usr/man 帮助文档
    /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
    /usr/local/bin 本地增加的命令
    /usr/local/lib 本地增加的库
    ——(运行过程中要用的)——

    • /var:var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
    • /proc:proc是Processes(进程) 的缩写,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。

    ——(扩展用的)——

    • /srv
      该目录存放一些服务启动之后需要提取的数据。
    • /opt:opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

    在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
    /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
    /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
    值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
    /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
    Linux 文件与目录管理
    我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
    我们需要先知道什么是绝对路径与相对路径。
    绝对路径:
    路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
    相对路径:
    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
    处理目录的常用命令
    接下来我们就来看几个常见的处理目录的命令吧:

    • ls(英文全拼:list files): 列出目录及文件名
    • cd(英文全拼:change directory):切换目录
    • pwd(英文全拼:print work directory):显示目前的目录
    • mkdir(英文全拼:make directory):创建一个新的目录
    • rmdir(英文全拼:remove directory):删除一个空的目录
    • cp(英文全拼:copy file): 复制文件或目录
    • rm(英文全拼:remove): 删除文件或目录
    • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

    你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
    一.ls命令(列出目录和文件名)
    Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
    语法:ls [选项] [目录名]
    常用参数及说明:

    • -a, —all 列出目录下的所有文件,包括以 . 开头的隐含文件
    • -A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
    • -c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
    • -C 每栏由上至下列出项目
    • –color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是’never’、’always’或’auto’其中之一
    • -d, –directory 将目录象文件一样显示,而不是显示其下的文件。
    • -D, –dired 产生适合 Emacs 的 dired 模式使用的结果
    • -f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
    • -g 类似 -l,但不列出所有者
    • -G, –no-group 不列出任何有关组的信息
    • -h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
    • –si 类似 -h,但文件大小取 1000 的次方而不是 1024
    • -H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
    • –indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
    • -i, –inode 印出每个文件的 inode 号
    • -I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
    • -k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
    • -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
    • -L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
    • -m 所有项目以逗号分隔,并填满整行行宽
    • -o 类似 -l,显示文件的除组信息外的详细信息。
    • -r, –reverse 依相反次序排列
    • -R, –recursive 同时列出所有子目录层
    • -s, –size 以块大小为单位列出所有文件的大小
    • -S 根据文件大小排序
    • –sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
    • extension -X status -c
    • none -U time -t
    • size -S atime -u
    • time -t access -u
    • version -v use -u
    • -t 以文件修改时间排序
    • -u 配合 -lt:显示访问时间而且依访问时间排序
    • 配合 -l:显示访问时间但根据名称排序
    • 否则:根据访问时间排序
    • -U 不进行排序;依文件系统原有的次序列出项目
    • -v 根据版本进行排序
    • -w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
    • -x 逐行列出项目而不是逐栏列出
    • -X 根据扩展名排序
    • -1 每行只列出一个文件

    常用范例:
    ls -l,使用长清单模式来列出文件和目录,可以详细的看出文件或文件夹的大小、权限、时间戳、所有者等信息
    Linux命令 - 图3
    显示文件的大小,上图中都是字节数,下面通过ls -lh来直接显示文件大小
    Linux命令 - 图4
    那么通过上图显示出了文件的大小,那么想要对其进行文件大小排序该如何进行呢,使用ls -lhS即可,如下图
    Linux命令 - 图5
    如何只列出目录文件夹而不显示文件出来呢,参数变成ls -d /即可,如下图
    Linux命令 - 图6
    如何不显示所有者信息和组信息呢,也就是上图中的两个root,前面一个为用户后面一个为组,通过ls -g可以隐藏用户信息,通过ls -G可以隐藏组信息,也可以组合起来
    Linux命令 - 图7
    通过时间排序,如下图
    Linux命令 - 图8
    列出/root/test/test2文件夹下的所有文件和目录的详细资料
    命令:ls -l -R /root/test/test2
    Linux命令 - 图9
    在使用 ls 命令时要注意命令的格式:在命令提示符后,首先是命令的关键字,接下来是命令参数,在命令参数之前要有一短横线“-”,所有的命令参数都有特定的作用,自己可以根据需要选用一个或者多个参数,在命令参数的后面是命令的操作对象。在以上这条命令“ ls -l -R /root/test/test2”中,“ls” 是命令关键字,“-l -R”是参数,“ /root/test/test2”是命令的操作对象。在这条命令中,使用到了两个参数,分别为“l”和“R”,当然,你也可以把他们放在一起使用,如下所示:
    命令:ls -lR /root/test/test2
    Linux命令 - 图10
    这种形式和上面的命令形式执行的结果是完全一样的。另外,如果命令的操作对象位于当前目录中,可以直接对操作对象进行操作;如果不在当前目录则需要给出操作对象的完整路径,例如上面的例子中,我的当前目录是test文件夹,我想对test文件夹下的test2文件进行操作,我可以直接输入 ls -lR test2,也可以用 ls -lR /root/test/test2
    二.cd命令(切换目录)
    Linux cd(英文全拼:change directory)命令用于切换当前工作目录。
    语法:cd [dirName]
    dirName:要切换的目标目录。
    1.从当前目录切换到/usr/local
    Linux命令 - 图11
    2.使用绝对路径,从当前目录切换到/usr/local/lib
    Linux命令 - 图12
    3.使用相对路径,从当前路径切换到/usr/local/lib
    Linux命令 - 图13
    4.(a)切换当前目录到上一个目录
    Linux命令 - 图14
    4.(b)切换当前目录到上级目录
    Linux命令 - 图15
    5.从当前目录向上级返回两层
    Linux命令 - 图16
    *6.从任何目录返回到用户home目录

    Linux命令 - 图17
    三.pwd命令(显示当前所在的目录)
    Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。
    执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。
    Linux命令 - 图18
    -P :显示出确实的路径,而非使用连结 (link) 路径。
    Linux命令 - 图19
    [root@localhost ~]# cd /var/mail <==注意,/var/mail是一个连结档
    [root@ localhost mail]# pwd
    /var/mail <==列出目前的工作目录
    [root@ localhost mail]# pwd -P
    /var/spool/mail <==怎么回事?有没有加 -P 差很多~
    [root@ localhost mail]# ls -ld /var/mail
    lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
    # 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
    # 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
    (连结档有点类似 Windows 底下的『快捷方式』!也就是很多的连结档案( link file )其实都指向同一个来源档案( source file )。
    四.mkdir命令(创建新目录)
    Linux mkdir(英文全拼:make directory)命令用于创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
    语法:df [选项] [目录]
    通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。
    命令参数:

    • -m, —mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
    • -p, —parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
    • -v, —verbose 每次创建新目录都显示信息
    • —help 显示此帮助信息并退出
    • —version 输出版本信息并退出

      创建一个空目录test1
      Linux命令 - 图20
      递归创建多个目录,mkdir –p test2/test22
      Linux命令 - 图21
      创建权限为777的目录test3,mkdir –m 777 test3
      Linux命令 - 图22
      创建新目录并显示信息
      Linux命令 - 图23
      一个命令创建项目的目录结构:
      mkdir -vp test6/{test6-1/,test6-2/,test6-3/{test6-3-1,test6-3-2},test6-4/{test6-4-1,test6-4-2},test6-5/test6-6/{test6-6-1,test6-6-2}}
      Linux命令 - 图24
      五.rmdir命令(删除空的目录)
      Linux rmdir(英文全拼:remove directory)命令删除空的目录。
      语法:rmdir [选项] 目录名
      命令参数:

    • -p 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除

    删除一个目录test/test1,
    Linux命令 - 图25
    删除test2及其子目录test22,rmdir –p test2/test22/
    Linux命令 - 图26
    如果直接删除目录test2则失败,因为是非空目录,里面还有个子目录test22
    Linux命令 - 图27
    六.cp命令(复制文件或目录)
    Linux cp(英文全拼:copy file)命令主要用于复制文件或目录。
    语法:cp [选项] 来源档(source) 目标档(destination)
    cp [选项] source1 source2 source3 …. directory
    说明:SOURCE可以有一个或多个文件或目录作为参数,并在 DESTINATION 可以有一个单一的文件或目录的作为参数。

    • 当 SOURCE 和 DESTINATION 参数都是文件时, cp 命令将第一个文件复制到第二个文件。如果文件不存在,命令将创建它。
    • 当 SOURCE 多个文件或目录作为参数时, DESTINATION 参数必须是目录。在这种情况下, SOURCE 文件和目录将移动到 DESTINATION 目录。
    • 当 SOURCE 和 DESTINATION 参数都是目录时, cp 命令会将第一个目录复制到第二个目录中。

    选项与参数:

    • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
    • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
    • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
    • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
    • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
    • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
    • -r:递归持续复制,用於目录的复制行为;(常用)
    • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
    • -u:若 destination 比 source 旧才升级 destination !

    要复制文件和目录,您必须至少具有源文件的读取权限和目标目录的写入权限。否则,您将收到权限被拒绝错误。
    1、示例使用 cp 命令复制文件
    cp 最基本的使用方法是复制当前工作目录中的文件。例如,要复制家目录的file.txt文件到 file_backup.txt文件,请运行以下命令:
    cp file file_backup或者cp file{,_backup}
    Linux命令 - 图28
    要将文件复制到另一个目录,请指定目标目录的绝对路径或相对路径。仅将目录名称指定为目标时,复制的文件将与原始文件具有相同的名称。
    在以下示例中,我们将文件复制 file.txt 到 /backup 目录:
    cp file.txt /backup
    如果要以其他名称复制文件,则需要指定所需的文件名。下面的命令会将文件复制到指定的目录中 new_file.txt 。
    cp file.txt /backup/new_file.txt
    默认情况下,如果目标文件存在,它将被覆盖。-n 选项告诉 cp 不要覆盖现有文件。要提示确认,请使用该 -i 选项。
    cp -i file.txt file_backup.txt
    如果要仅在文件比目标更新时复制文件,请使用以下 -u 选项:
    cp -u file.txt file_backup.txt
    复制文件时,新文件将由运行该命令的用户拥有。使用 -p 选项可保留文件模式,所有权和时间戳:
    cp -p file.txt file_backup.txt
    另一个可能有用的选项是 -v,他告诉 cp 打印详细输出:
    cp -v file.txt file_backup.txt
    ‘file.txt’ -> ‘file_backup.txt’
    2、使用 cp 命令复制目录
    要复制目录(包括其所有文件和子目录),请使用 -R 或 -r 选项。在以下示例中,我们将目录复制 Pictures 到 Pictures_backup :
    cp -R Pictures Pictures_backup
    上面的命令将创建一个目标目录,并递归地将所有文件和子目录从源目录复制到目标目录。
    如果目标目录已存在,则源目录本身及其所有内容将复制到目标目录。要仅复制文件和子目录,而不复制目标目录,请使用以下 -T 选项:
    cp -RT Pictures Pictures_backup
    另一种只复制目录内容而不是目录本身的方法是使用通配符 () 。以下命令的缺点是它不会复制隐藏文件和目录(以点 . 开头的文件和目录) :
    cp -RT Pictures/
    Pictures_backup/
    复制文件时,我们在复制文件时可以使用上一节中使用的所有选项。主要区别在于复制目录时总是需要使用该 -R 选项。
    3、复制多个文件和目录
    要一次复制多个文件和目录,并指定其名称,并使用目标目录作为最后一个参数:
    cp file.txt dir file1.txt dir1
    复制多个文件时,目标必须是目录。
    七.rm命令(移除文件或目录)
    Linux rm(英文全拼:remove)命令用于删除一个文件或者目录。
    语法:rm [选项] [文件或目录]
    选项与参数:

    • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
    • -i :互动模式,在删除前会询问使用者是否动作
    • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

    删除文件xzj
    Linux命令 - 图29
    若删除目录则必须配合选项”-r”
    Linux命令 - 图30
    八.mv命令(移动文件与目录,或修改名称)
    Linux mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。
    语法:mv [选项] [源文件或目录] [目标文件或目录]
    参数说明:

    • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
    • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
    • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
    • -n: 不要覆盖任何已存在的文件或目录。
    • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

    命令功能:
    1.如果目标文件是文件夹,则源文件直接移动到该文件夹内,名字还是源文件的名字。
    2.如果目标文件时文件,则源文件移动的同时也会更改名字
    3.如果源文件为多个,则目标必须是目录,并且统一移动到目录下
    示例:
    -b选项当目标文件存在时,先进行备份再覆盖
    Linux命令 - 图31
    Linux文件内容查看
    Linux系统中使用以下命令来查看文件的内容:

    • cat 由第一行开始显示文件内容
    • nl 显示的时候,顺道输出行号!
    • more 一页一页的显示文件内容
    • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
    • head 只看头几行
    • tail 只看尾巴几行

    你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。
    一.cat命令(读或写文件内容)
    cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
    语法: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:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
    • -E 或 —show-ends : 在每行结束处显示 $。
    • -T 或 —show-tabs: 将 TAB 字符显示为 ^I。
    • -A, —show-all:等价于 -vET。
    • -e:等价于”-vE”选项;
    • -t:等价于”-vT”选项;

    查看文件a和文件b的内容。
    Linux命令 - 图32
    创建文件a,最后回车按Ctrl+D退出。
    Linux命令 - 图33
    将文件a和文件b的内容输入到文件c里
    Linux命令 - 图34
    二.nl命令(显示行号)
    nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
    语法:nl [选项] [文件]
    参数说明:

    • -b :指定行号指定的方式,主要有两种:
      -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
      -b t :如果有空行,空的那一行不要列出行号(默认值);
    • -n :列出行号表示的方法,主要有三种:
      -n ln :行号在荧幕的最左方显示;
      -n rn :行号在自己栏位的最右方显示,且不加 0 ;
      -n rz :行号在自己栏位的最右方显示,且加 0 ;
    • -w :行号栏位的占用的位数。

    Linux命令 - 图35
    三.more命令(向下一页一页查看)
    Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似)。
    语法:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
    参数说明:

    • -num 一次显示的行数
    • -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
    • -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
    • -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
    • -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
    • -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
    • -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
    • -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
    • +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
    • +num 从第 num 行开始显示
    • fileNames 欲显示内容的文档,可为复数个数

    对显示内容的常用操作命令:

    • Enter 向下n行,需要定义。默认为1行
    • Ctrl+F 向下滚动一屏
    • 空格键 向下滚动一屏
    • Ctrl+B 返回上一屏
    • /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
    • = 输出当前行的行号
    • :f 输出文件名和当前行的行号
    • V 调用vi编辑器
    • !命令 调用Shell,并执行命令
    • q 退出more

    四.less命令(随意向上向下翻阅查看)
    Linux中的less命令主要用来浏览文件内容,与more命令的用法相似,不同于more命令的是,less命令可往回滚动浏览以看过的部分,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]: 向上翻动一页

    五.head命令(查看文件前面几行)
    Linux head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
    语法:head [参数] [文件]
    参数说明:

    • -q 隐藏文件名
    • -v 显示文件名
    • -c<数目> 显示的字节数。
    • -n<行数> 显示的行数。

    查看文件的前5行内容
    Linux命令 - 图36
    当-n参数后面的行数为负数时表示显示除了最后的行数的所有内容
    Linux命令 - 图37
    六.tail命令(查看文件后面几行)
    tail 命令可用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件,不带参数同样默认显示最后10行,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
    tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
    语法:tail [参数] [文件]
    参数说明:

    • -f 循环读取
    • -q 不显示处理信息
    • -v 显示详细的处理信息
    • -c<数目> 显示的字节数
    • -n<行数> 显示文件的尾部 n 行内容
    • —pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    • -q, —quiet, —silent 从不输出给出文件名的首部
    • -s, —sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

    显示文件最后5行
    Linux命令 - 图38
    行数带+号表示显示从该行数开始后面的所有内容
    Linux命令 - 图39
    Linux 磁盘管理
    一.df命令(查看磁盘使用量)
    Linux df(英文全拼:disk free)命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
    语法:df [选项] [文件]
    参数说明:

    • 文件-a, —all 包含所有的具有 0 Blocks 的文件系统
    • 文件—block-size={SIZE} 使用 {SIZE} 大小的 Blocks
    • 文件-h, —human-readable 使用人类可读的格式(预设值是不加这个选项的…)
    • 文件-H, —si 很像 -h, 但是用 1000 为单位而不是用 1024
    • 文件-i, —inodes 列出 inode 资讯,不列出已使用 block
    • 文件-k, —kilobytes 就像是 —block-size=1024
    • 文件-l, —local 限制列出的文件结构
    • 文件-m, —megabytes 就像 —block-size=1048576
    • 文件—no-sync 取得资讯前不 sync (预设值)
    • 文件-P, —portability 使用 POSIX 输出格式
    • 文件—sync 在取得资讯前 sync
    • 文件-t, —type=TYPE 限制列出文件系统的 TYPE
    • 文件-T, —print-type 显示文件系统的形式
    • 文件-x, —exclude-type=TYPE 限制列出文件系统不要显示 TYPE
    • 文件-v (忽略)

    显示文件系统的磁盘使用情况统计,第一列指定文件系统的名称,第二列指定一个特定的文件系统1K-块,1K是1024字节为单位的总内存。已用和可用列分别指定的内存量。使用列指定使用的内存的百分比,而最后一栏”安装在”指定的文件系统的挂载点。
    Linux命令 - 图40
    -h选项,通过它可以产生可读的格式df命令的输出, 我们可以看到输出显示的数字形式的’G’(千兆字节),”M”(兆字节)和”K”(千字节)。这使输出容易阅读和理解,从而使显示可读的。请注意,第二列的名称也发生了变化,为了使显示可读的”大小”。
    Linux命令 - 图41
    加上—total会在输出末尾显示格外一行每一列的汇总。
    Linux命令 - 图42
    二.du命令(查看文件或目录的大小)
    Linux du (英文全拼:disk usage)命令用于显示目录或文件的大小。
    du 会显示指定的目录或文件所占用的磁盘空间。
    语法:du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][—block-size][—exclude=<目录或文件>][—max-depth=<目录层数>][—help][—version][目录或文件]

    • -a或-all 显示目录中个别文件的大小。
    • -b或-bytes 显示目录或文件大小时,以byte为单位。
    • -c或—total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
    • -D或—dereference-args 显示指定符号连接的源文件大小。
    • -h或—human-readable 以K,M,G为单位,提高信息的可读性。
    • -H或—si 与-h参数相同,但是K,M,G是以1000为换算单位。
    • -k或—kilobytes 以1024 bytes为单位。
    • -l或—count-links 重复计算硬件连接的文件。
    • -L<符号连接>或—dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
    • -m或—megabytes 以1MB为单位。
    • -s或—summarize 仅显示总计。
    • -S或—separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
    • -x或—one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
    • -X<文件>或—exclude-from=<文件> 在<文件>指定目录或文件。
    • —exclude=<目录或文件> 略过指定的目录或文件。
    • —max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
    • —help 显示帮助。
    • —version 显示版本信息。

    显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的6008为当前目录的总大小,包含了当前目录下除子目录外的所有文件大小。
    Linux命令 - 图43
    -h方便阅读的格式显示目录所占空间情况:
    Linux命令 - 图44
    显示指定文件所占用的空间
    Linux命令 - 图45
    Linux文件基本属性
    Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
    为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
    在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:

    • chown (change ownerp) : 修改所属用户与组。
    • chmod (change mode) : 修改用户的权限。

    在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:
    Linux命令 - 图46
    实例中,test 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
    在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

    • 当为 d 则是目录
    • 当为 - 则是文件;
    • 若是 l 则表示为链接文档(link file);
    • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

    接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
    Linux命令 - 图47
    Linux文件属主和属组
    对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
    同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
    文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
    因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
    对于 root 用户来说,一般情况下,文件的权限对其不起作用。
    一.chgrp命令(变更群组)
    Linux chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。
    语法:
    chgrp [-cfhRv] [所属群组][文件或目录…] 或 chgrp [-cfhRv][—reference=<参考文件或目录>][文件或目录…]
    参数说明:

    • -c或—changes 效果类似”-v”参数,但仅回报更改的部分。
    • -f或—quiet或—silent  不显示错误信息。
    • -h或—no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。
    • -R或—recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
    • -v或—verbose  显示指令执行过程。
    • —reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

    二.chown命令(修改属主及属组)
    Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。
    chown 需要超级用户 root 的权限才能执行此命令。
    语法:chown [-cfhvR] user[:group] file…
    参数说明:

    • user : 新的文件拥有者的使用者 ID
    • group : 新的文件拥有者的使用者组(group)
    • -c : 显示更改的部分的信息
    • -f : 忽略错误信息
    • -h :修复符号链接
    • -v : 显示详细的处理信息
    • -R : 处理指定目录以及其子目录下的所有文件

    三.chmod命令(修改权限)
    Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
    Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
    Linux命令 - 图48
    只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
    Linux命令 - 图49
    Linux文件属性有两种设置方法,一种是数字,一种是符号。
    Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
    文件的权限字符为:-rwxrwxrwx,这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数为:r = 4, w = 2, x = 1。
    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx—- 分数则是:
    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= —- = 0+0+0 = 0
    所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:chmod [参数] 770 [文件名或目录]
    参数说明:

    • -c : 若该文件权限确实已经更改,才显示其更改动作
    • -f : 若该文件权限无法被更改也不要显示错误讯息
    • -v : 显示权限变更的详细资料
    • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

    使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:

    who 用户类型 说明
    u user 文件所有者
    g group 文件所有者所在组
    o others 所有其他用户
    a all 所有用户, 相当于 ugo

    operator 的符号模式表:

    Operator 说明
    + 为指定的用户类型增加权限
    - 去除指定用户类型的权限
    = 设置指定用户权限的设置,即将用户类型的所有权限重新设置

    permission 的符号模式表:

    模式 名字 说明
    r 设置为可读权限
    w 设置为可写权限
    x 执行权限 设置为可执行权限
    X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
    s setuid/gid 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
    t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

    如果我们需要将文件权限设置为 -rwxr-xr— ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定。
    将文件 file1.txt 设为所有人皆可读取 :
    chmod ugo+r file1.txt 或 chmod a+r file1.txt
    将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
    chmod ug+w,o-w file1.txt file2.txt
    Linux用户和用户组管理
    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
    用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
    每个用户账号都拥有一个唯一的用户名和各自的口令。
    用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
    实现用户账号的管理,要完成的工作主要有如下几个方面:

    • 用户账号的添加、删除与修改。
    • 用户口令的管理。
    • 用户组的管理。

    一.Linux系统用户账号的管理
    1.useradd命令(添加用户)
    Linux useradd 命令用于建立用户帐号。
    useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
    语法:
    useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号]

    useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
    参数说明:

    • -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
    • -d<登入目录>  指定用户登入时的起始目录。
    • -D  变更预设值.
    • -e<有效期限>  指定帐号的有效期限。
    • -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
    • -g<群组>  指定用户所属的群组。
    • -G<群组>  指定用户所属的附加群组。
    • -m  自动建立用户的登入目录。
    • -M  不要自动建立用户的登入目录。
    • -n  取消建立以用户名称为名的群组.
    • -r  建立系统帐号。
    • -s   指定用户登入后所使用的shell。
    • -u  指定用户ID。

    2.userdel命令(删除用户)
    语法:userdel [选项] [用户名]
    常用的选项是 -r,它的作用是把用户的主目录一起删除。
    3.usermod命令(修改用户)
    Linux usermod命令用于修改用户帐号的各项设定。
    语法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]
    参数说明:

    • -c<备注>  修改用户帐号的备注文字。
    • -d登入目录>  修改用户登入时的目录。
    • -e<有效期限>  修改帐号的有效期限。
    • -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
    • -g<群组>  修改用户所属的群组。
    • -G<群组>  修改用户所属的附加群组。
    • -l<帐号名称>  修改用户帐号名称。
    • -L  锁定用户密码,使密码无效。
    • -s  修改用户登入后所使用的shell。
    • -u  修改用户ID。
    • -U  解除密码锁定。

    4.passwd命令(修改用户)
    Linux passwd命令用来更改使用者的密码
    语法:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
    参数说明:

    • -d 删除密码
    • -f 强迫用户下次登录时必须修改口令
    • -w 口令要到期提前警告的天数
    • -k 更新只能发送在过期之后
    • -l 停止账号使用
    • -S 显示密码信息
    • -u 启用已被停止的账户
    • -x 指定口令最长存活期
    • -g 修改群组密码
    • 指定口令最短存活期
    • -i 口令过期后多少天停用账户

    修改当前用户的密码,直接输入passwd命令即可。
    Linux命令 - 图50
    清除用户密码
    Linux命令 - 图51