一、终端(Terminal)与提示符

1、终端

退出终端程序:

  • 输入exit

  • 使用快捷键ctrl+d

2、提示符

[username@host~]$
  • username:表示当前用户名

  • host:主机名

  • ~:表示默认用户主目录

  • $:表示当前用户是普通用户,#:表示超级用户

二、简单命令

可以使用--help选项查看命令的帮助。

1、who

列出所有正在使用系统的用户、所用终端名和注册到系统的时间:

2、echo

将命令行中的参数显示到标准输出(即屏幕)上。

  • echo -n

输出字符串后光标不换行

3、clear

清除屏幕上的内容,类似于DOS中的cls

4、pwd

显示当前目录的绝对路径

5、ls

列出指定目录的内容,无参数时列出当前目录的内容。

6、date

显示或设置系统的日期和时间,如果命令没有选项和参数,则直接显示系统当前的日期和时间。

7、cal

显示公元1~9999年中任意一年或者任意一个月的日历。

  • cal 2010

显示2010年的日历

  • cal 6 2012

显示2012年6月的日历

8、passwd

修改当前用户的密码

9、su

更改用户的身份

设置root用户(初始)密码:

sudo passwd

输入两次密码后,提示passwd:password updated sucessfully表示修改成功。

10、uname

查看系统相关信息(内核版本号、硬件架构、主机名称、操作系统类型(多少位)等)

显示的信息中含有i686 i386表示32位系统;含有x86_64表示64位系统。

详细信息请参考:https://www.cnblogs.com/kerrycode/p/3785768.html

三、目录操作命令

1、mkdir

在当前目录或指定的目录下创建目录

  • 常用选项

    • -m,--mode=MODE

      设置目录的存取权限为MODE

    • -p,--parents

      建立多个目录时,如果新建目录所在路径中的父目录不存在,则自动创建它们

2、rmdir

删除一个或多个空的子目录。当前工作目录必须在被删除目录之上,不能是删除目录本身或者是被删除目录的子目录。

  • 常用选项

    • -p,--parents

      递归删除目录,当子目录删除后如果其父目录也为空,则一同删除。如果有非空的目录,则该目录不会被删除。

    • -v,--verbose

      对每个被处理的目录输出具体操作信息。

3、cd

改变工作目录

  • 格式

    cd [dir]

  • 用法

    • cd /home/wzk

      将当前目录切换到/home/wzk目录

    • cdcd ~

      将当前目录切换到用户主目录

    • cd ..cd ../

      将当前目录切换到父目录

4、ls

列出指定目录的内容,如果参数FILE是目录,则列出该目录中的所有子目录与文件信息;如果FILE是文件,则列出该文件的属性。

  • 常用选项

    • -a,--all

      显示指定目录下的所有子目录和文件,包括以’.’开头的隐藏文件

    • -A,--almost-all

      显示指定目录下的所有子目录和文件,包括以’.’开头的隐藏文件,但不列出’.’和’..’目录项

    • -b,--escape

      如果文件名中包含不可显示的字符,则用三位八进制数形式显示该字符

    • -c

      按文件的修改时间排序

    • -l

      以长格式显式文件的详细信息,输出的信息分为多列,依次是:文件类型与权限 链接数 文件主 文件组 文件大小 建立时间或修改时间 文件名。

    • -d

      如果参数是目录,则只显示其名字(不显示它的子目录和文件);通常与-l一起使用,显示目录的详细信息。

    • -F,--classify

      在列出的文件名后面添加不同的符号来区分不同类型的文件:

      • /:目录

      • *:可执行文件

      • @:符号链接文件

      • |:管道文件

      • =:套接字文件

四、文件操作命令

1、cp

复制文件或目录,如果是复制目录,需要使用-r选项,将整个目录下的所有文件和子目录都复制到目标位置。

  • 格式

cp [选项] 源文件或目录 目标文件或目录

  • 常用选项

    • -a

      递归地将源目录下的所有子目录和文件都复制到目标位置,并且保留文件链接和文件属性不变,通常在复制目录时使用此参数。

    • -f,--force

      如果目标文件不能打开,则不提示强行删除。

    • -i,--interactive

      交互式复制,在覆盖目标文件之前提示用户并请求用户确认。

    • -P

      除复制源文件的内容外,也将其修改时间和存取权限也复制到新文件中。

    • -R,-r,--recursive

      递归地将源目录下的所有子目录和文件都复制到目标位置。

    • -l

      不复制,只是创建指向源文件的链接文件,链接文件名由目标文件给出。

  • 示例

    • cp hi.txt test/xi.txt

      hi.txt文件复制到test目录下,并改名为xi.txt

    • cp -r dir/subdir test

      dir/subdir下的所有文件和子目录复制到test目录中

    • cp ../dir/A*.java .

      将父目录中dir目录下的以A开头的java文件复制到当前目录

2、mv

重命名文件或目录,或者将文件从一个目录移动到另一个目录。如果目标位置是目录,则源文件会被移动到此目录下;如果目标位置不是目录,那么源文件名(只能有一个)会变为目标文件名,并覆盖已存在的同名文件。

  • 格式

mv [选项] 源文件或目录 目标文件或目录

  • 常用选项

    • -f,--force

      在覆盖已有的目标文件时不提示

    • -i,--interactive

      交互式操作,如果源文件与目标文件同名,则询问用户是否覆盖目标文件。

    • -t,--target-directory=DIRECTORY

      把所有的源文件或目录都移动到DIRECTORY中。

  • 示例

    • mv xi.txt C.java

      xi.txt重命名为C.java

    • mv ../dir/* .

      将父目录dir中的所有文件移动到当前目录中

3、rm

删除指定的文件,默认不能删除目录。

  • 格式

rm [选项] 文件

  • 常用选项

    • -f,--force

      忽略不存在的文件,不提示。

    • -i,--interactive

      交互式地删除文件。

    • -R,-r,--recursive

      递归地删除指定目录下的子目录和文件。

  • 示例

    • rm C.java

      删除当前目录下的C.java文件

    • rm ?i.txt

      删除当前目录下文件名以任意字符开头且以i.txt结尾的文件

    • rm -r *

      删除当前目录中除隐藏文件之外的所有文件和目录

    • rm -r -i /home/wzk/document/test

      交互式地删除/home/wzk/document下的test目录

4、rename

用字符串替换的方式批量改变文件名,语法:

rename FROM TO FILE...
  • 参数说明

    • FROM

      需要替换的原文件名(字符串)

    • TO

      想要替换成的目标文件名(字符串)

    • FILE…

      要修改文件名的文件列表

  • 示例

    • 普通替换

      source.c重命名为destination.c

        rename source.c destination.c source.c
      
    • 使用通配符

      修改所有.htm文件的后缀为.html

        rename .htm .html *.htm
      

五、文件权限

1、文件类型及权限

使用ls -l命令的结果中第一列表示文件类型和权限:-rwxrwxrw-

  • -

    第一个字符表示文件类型,每个字符表示的含义如下:

    • -:普通文件

    • l:符号链接文件

    • d:目录

    • s:套接字文件(socket)

    • p:命名管道文件(pipe)

    • b:块设备文件

    • c:字符设备文件

  • 剩下的每三个字符表示不同用户的权限

    • 第一组表示文件主的权限

    • 第二组表示同组用户的权限

    • 第三组表示其他用户的权限

  • 权限字符的含义

    • 文件

      • r:可读(可以使用cat、more等命令)

      • w:可写(可以使用vi、cp等命令)

      • x:可执行

      • -:无存取权限

    • 目录

      • r:允许列出该目录下的文件

      • w:允许从目录中添加或删除文件,通常只有目录主才有写权限

      • x:允许在目录中进行查找,也可以用cd命令将该目录改为工作目录

      • -:无存取权限

2、chmod

只有文件主或超级用户root才有权用chmod命令改变文件或目录的存取权限。

  • 以符号模式改变权限

chmod [OPTION]... MODE[,MODE]... FILE...

  • 常用选项

    • -v,--verbose

      显示命令处理每个文件的详细信息

    • -c,--changes

      -v选项类似,只是在发生改变时才显示详细信息

    • -R,--recursive

      递归地修改文件或目录的权限

  • MODE

    MODE由:[who] [操作符号] [mode] 三部分组成:

    • who

      由以下字母中的一个或多个组成:

      • u(user:文件主)

      • g(group:同组用户)

      • o(others:其他用户)

      • a(all:所有用户,默认值)

    • 操作符号

      • +:添加

      • -:移除

      • =:赋予

    • mode

      表示权限,可由r、w、x任意组合

  • 示例

    • chmod a+x shell.sh

      给所有用户都添加对shell.sh文件的执行权限

    • chmod u=rwx,g+x,o-r shell.sh

      shell.sh的权限设置为文件主和同组用户可以读、写、执行,其他用户没有权限

  • 以绝对方式改变权限

chmod [OPTION]... OCTAL_MODEL... FILE...

使用8进制数表示权限,8进制数的每一位分别表示是否拥有读(r)、写(w)和执行(x)的权限,为1时表示有权限,为0时表示没有权限。

  • 示例

    • chmod 744 shell.sh

      将文件shell.sh的权限设置为:用户主具有读、写、执行的权限,同组用户和其他用户只有读的权限。

4、umask

设置新建文件时的默认权限(掩码),它的8进制数表示创建文件时不能被赋予的权限。

例如:umask值为002表示新建文件和目录的默认权限分别是:664(666-002)和775(777-002)。

  • 格式

umask [-p] [-S] [mode]

mode以数字开头时,被解释为8进制数;否则被解释为符号方式。

  • 查看当前掩码的设置

  • umask u=rwx,g-wx,o=

设置新建文件的默认权限为用户主可以读、写和执行,同组用户只读,其他用户没有权限。

不能直接利用umask命令创建一个可执行文件,用户只能在创建后使用chmod命令设置它的执行权限;如果创建的是目录或是通过编译程序创建的文件,则不受此限制。

  • umask 0002

使用8进制数值来设置

六、改变用户组和文件主

1、chgrp

修改文件或目录所属的用户组

  • 格式

chgrp [OPTION]... GROUP FILE...

  • 示例

    • chgrp alliance ./test.txt

      修改当前目录下的test.txt文件的用户组为alliance

    • chgrp -R friend /home/wzk/document

      修改/home/wzk/document以及它的子目录下的所有文件的用户组为friend

2、chown

修改文件或目录的所有者和(或)所属组

  • 格式
chown [OPTION]... OWNER[:[GROUP]] FILE...
chown [OPTION]... :GROUP FILE...
  • chown -R Tom ./mydir

    将当前目录中的mydir目录以及mydir中的所有文件和子目录的文件主改为Tom

七、联机帮助命令

1、man

格式化显示联机帮助手册页

man [OPTION]... name...

  • man chown

查看chown命令的帮助手册

2、help

查看所有shell内置命令的帮助信息

help [-s] [pattern ...]

  • help cd

查看内置命令cd的用法

  • help -s cd

只显示cd命令使用方法的简要说明

附: