用户配置

切换用户

  • Linux系统有两种用户:超级用户(root)和普通用户
    • 超级用户可以在Linux系统中做任何事情,不受限制;普通用户的操作则受限制
    • 超级用户的命令提示符是:#,普通用户的命令提示符是:$
  • 切换用户的命令:su [用户名]

    • 如果缺省用户名,则表示切换到root用户
    • 通过在命令前加sudo可以让普通用户去做root用户可以做的部分事情

      添加用户

  • 添加用户的命令:sudo useradd -m 用户名 -s /bin/bash

    • -s的作用是指定使用的脚本解析器
    • 使用该命令后,系统会在目录“/home”下创建一个名为用户名的目录。注意:只有加-m才会创建该目录
  • 查看当前系统的所有用户:cat /etc/passwd

    设置用户的密码

  • 命令:sudo passwd 用户名,然后系统会提示你输入新密码

  • 注意:只有root用户才可以给新创建的用户设置密码,因此需要在命令前加sudo

    删除用户

  • 命令:sudo userdel 用户名

  • 注意:删除用户后,其家目录并不会被删除,如果要删除家目录,需要使用命令:sudo userdel -r 用户名

    文件及目录操作

    查看文件或目录

  • 命令:ls [选项] [目录或文件]

  • 常用的选项

    • -a:显示指定目录下的所有子目录和文件,例如:ls -a /home,ls -a
      • 指定目录既可以使用绝对路径,也可以使用相对路径
      • 该选项会把隐藏文件显示出来,Linux下的隐藏文件的文件名以点开头,通常配置文件会作为隐藏文件而设计
    • -l:显示指定目录下所有目录及文件的详细信息
      • 每行列出的详细信息依次是:文件类型与权限 硬链接数 文件所有者 文件所属组 文件大小 最近修改时间 文件名字
      • 显示的每行信息中,开头是由10个字母构成的字符串,其中第一个字符表示文件类型,它可以是下列类型之一:
        • -:普通文件
        • d:目录
        • l:符号链接
        • b:块设备文件
        • c:字符设备文件
        • p:管道文件
      • 后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件创建者的权限,第二组表示同组用户的权限,第三组表示其他用户的权限
      • 每一组的三个字符分别表示对文件的读、写、执行权限,各权限如下:r(读)、w(写)、x(执行)、-(没有设置权限)
      • 其中r的值是4、w的值是2、x的值是1,每一组可以用一个数字表示,例如rx:5,rw:6。那么这三组就可以用三个数字表示,例如rwxr_xr_x:755
      • 刚创建的文件的默认权限是664,刚创建的目录的默认权限是775
      • 注意:如果一个用户对目录没有写权限,那么它不能在这个目录新增或者删除文件
    • -i:可以看到每个文件的inode值
    • -lh:人类读起来比较开心的大小
    • 如果需要更加详细的参数描述,使用命令:man ls

      改变工作目录

  • 命令:cd 目录名

  • 常用的切换目录命令:

    • cd ..:切换到父目录
    • cd /:切换到根目录
    • cd ~:切换到用户家目录,与直接执行cd的效果一样
    • cd -:切换到上一次目录

      显示当前工作目录

  • 命令:pwd

    创建目录

  • 命令:mkdir [选项] 目录名

    删除目录

  • 命令:rmdir [选项] 目录名

  • 注意:要求该目录必须是个空目录

    拷贝文件或目录

  • 命令:cp [选项] 源文件或目录 目标文件或目录

  • 功能:把指定的源文件复制到目标目录中或把多个源文件复制到目标目录中
  • 常用选项:
    • -f:若目标目录中存在与源文件同名的文件,则直接覆盖,不提示,默认是-f
    • -i:和-f相反,当目标目录中存在与源文件同名的文件,系统会提示是否进行覆盖
  • 说明:

    • 如果要拷贝的是一个目录,则需要使用-r,此时将同时拷贝该目录下的子目录和文件
    • 可以在拷贝的同时将源文件重命名,例如将当前目录下的hello文件拷贝到/day2目录下并重命名为hello1,则使用:cp hello /day2/hello1

      移动文件或目录

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

  • 功能:
    • 当第二个参数是不存在的文件名或目录名时,mv命令完成重命名,此时,源文件只能有一个,它将所给的源文件或目录重命名为指定的文件名或目录名
    • 当第二个参数是已存在的目录名时,源文件或目录参数可以有多个,mv命令将指定的源文件全部移至目标目录中
    • 当第二个参数是已存在的文件名时,源文件只能有一个,mv命令将移动给定的源文件并覆盖目标文件
  • 参数:

    • -f:如果在移动的过程中存在重名的,则直接进行覆盖,不会给出提示,默认是-f
    • -i:如果在移动的过程中存在重名的,则进行提示是否覆盖

      删除文件或目录

  • 命令:rm [选项] 文件或目录

  • 参数:
    • -f:删除过程中不会给出提示,默认是-f
    • -i:删除过程中会给出交互式提示
  • 说明:

    • 如果要删除的是一个目录,则需要使用-r,此时会将该目录中的文件及子目录均删除掉
    • 对于链接文件,只是删除了链接,原有文件均保持不变

      显示目录树形结构

  • 命令:tree [选项]

  • 选项说明:

    • -a:显示所有文件和目录,不包含.和..
    • -t:按文件和目录的更改时间排序
    • -u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
    • -h:显示每个文件的大小
    • -D:显示文件或目录的更改时间

      改变文件或目录的权限

      使用chmod命令,只有文件的拥有者才能改变文件的权限,有两种方式,一种是包含字母和操作符表达式的文字设定法,另一种是包含数字的数字设定法
      文字设定法
  • 命令:chmod [who] [+|-|=] [mode] 文件名

  • who的选取:
    • u:表示user,即文件或目录的所有者
    • g:表示group,即与文件所有者有相同组ID的所有用户
    • o:表示others
    • a:表示all,是系统默认值
  • +|-|=的选取:
    • +:添加某个权限
    • -:取消某个权限
    • =:赋予指定权限
  • mode的选取
    • r:可读
    • w:可写
    • x:可执行
  • 文件名:以空格分开的要改变权限的文件列表,支持通配符
  • 说明:在一个命令行中可以给出多个权限方式,其间用逗号隔开,例如:chmod ug+w, o-r text;chmod a+x text

    数字设定法
  • 0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加,所以数字属性的格式为3个从0到7的八进制数,其顺序是u、g、o

  • 命令:chmod [mode] 文件名
  • 举例:chmod 644 text

    文件查找

  • 命令:find 起始目录 查找条件 操作

  • 功能:在指定目录结构中按查找条件搜索文件,并执行指定的操作,查找条件可以是逻辑运算符and、or、not组成的复合条件
  • 三种逻辑运算符
    • -a:逻辑与,表示只有当所给的条件都满足时,查找条件才满足
    • -o:逻辑或,表示只要所给的条件有一个满足时,查找条件就满足
    • !:逻辑非,表示查找不满足所给条件的文件
  • 根据文件名称查找
    • 用法:-name “字符串”,查找文件名匹配所给字符串的所有文件,字符串内可用通配符*、?、[]
    • :零个或者任意多个字符,例如find . -name “file
    • ?:有且只有一个字符,例如find . -name “file?”
    • []:连续的一部分字符,例如find . -name “file[1-3]”
  • 根据时间查找
    • -amin [+|-]n:查找n分钟以前被访问过的所有文件,+表示n分钟之前,-表示n分钟之后
    • -cmin [+|-]n:查找n分钟以前文件状态被修改过的所有文件
    • -mmin [+|-]n:查找n分钟以前文件内容被修改过的所有文件
    • -atime [+|-]n:查找n天以前被访问过的所有文件
    • -ctime [+|-]n:查找n天以前文件状态被修改过的所有文件
    • -mtime [+|-]n:查找n天以前文件内容被修改过的所有文件
  • 其他查找属性
    • -user “字符串”:查找属于用户名为所给字符串的所有文件
    • -group “字符串”:查找属于用户组名为所给字符串的所有文件
    • -empty:查找大小为0的目录和文件
    • -perm 权限:查找具有指定权限的文件和目录,权限的表示可以如711、644
    • -size n[+|-][bckMG]:查找指定文件大小的文件,[bckMG]表示单位,缺省为b,代表512字节的块
    • -type x:查找类型为x的文件,x为下列字符之一
      • b:块设备文件
      • c:字符设备文件
      • d:目录文件
      • p:管道文件
      • f:普通文件
      • l:符号链接文件,ln -s建立软链接,ln建立硬链接
      • s:socket文件
  • 可执行的操作

    • 方式一:-exec 命令名称 {}:对符合条件的文件执行所给的Linux命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件,命令的末尾必须以”\;”结束
      • 例1:find /day3 -name file1 -exec ls -l {} \;
      • 例2:find . -type f -exec cp {} ../dir3 \;
    • 方式二:|xargs 命令名称
      • 例1:find . -name file1 |xargs rm -r
      • 例2:find . -type f |xargs -i cp {} ../dir3
      • 例3:find . -name “dir*” |xargs -i cp -r {} ../dir3

        显示文件系统的整体磁盘空间使用情况

  • 命令:df [选项] [文件名]

  • -h:以人们易读的GB、MB、KB等格式显示,可以直接df -h显示整个磁盘的使用情况

    显示每个文件和目录的磁盘使用空间

  • 命令:du [选项] [文件名]

  • -h:以人们易读的GB、MB、KB等格式显示
  • 举例:

    • 只想显示当前目录:du -h —max-depth=0 .
    • 统计home目录下每个用户家所占的大小:du -h —max-depth=1 /home

      文件查看及处理命令

      查看文件内容

  • 命令:cat [选项] [文件]

  • 常用选项
    • -b:对非空输出行编号
    • -E:在每行结束处显示$
    • -n:对输出的所有行编号
    • -s:不输出多行空行
  • 标准的输入输出
    • 标准输入:一般指键盘,描述符为0
    • 标准输出:一般指屏幕输出,描述符为1
    • 错误输出:也是屏幕,描述符为2
  • 重定向符号
    • <:重定向输入
    • :重定向输出

    • :添加输出

    • 2>:错误重定向
    • &>:错误和信息重定向
  • cat常常与重定向一起使用,其中>表示创建,>>表示追加,<<表示以什么结束
  • 如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出

    创建文件的方式

  • 方式一

    • echo > file1(只有一个换行符)
    • echo -n > file1(空文件)
    • echo abc > file1(将abc写入文件)
  • 方式二:touch file1(创建空文件)
  • 方式三:cat > file1(创建一个文件并写入内容)
  • 方式四:vim file1进入之后,:wq退出

    显示文件内容的前几行

  • 命令:head -n 行数值 文件名

  • 举例:head -10 hello.c

    显示文件的后几行

  • 命令:tail -n 行数值 文件名

  • 举例:history | tail -80 > day3.history.txt

    对文件内容进行排序

  • 命令:sort 文件名

    报告或删除文件中重复的行

  • 命令:uniq [选项] 文件名 或者 uniq 文件名 [选项]

  • 常用选项
    • -c:在输出行前面加上每行在输入文件中出现的次数
    • -d:仅显示重复行
    • -u:仅显示不重复的行
  • 注意:uniq只把相邻的重复行认作重复行,如果需要统计文件中的所有重复行,需要使用:sort 文件名 | uniq [选项]

    统计文件中的行数、字数、字节数

  • 命令:wc [选项] 文件名

  • 常用选项
    • -c:统计字节数
    • -l:统计行数
    • -m:统计字符数
    • -w:统计字数,一个字被定义为由空白、跳格(tab)或换行字符分隔的字符串
  • 举例:wc 文件名 —-> 依次显示:行数、单词数、字符数

    搜索文件内容

  • 命令:grep [选项] [查找模式] [文件名1,文件名2,……]

  • 功能:查找所有文件中含有指定字符模式的所有行,查找模式使用正则表达式描述
  • 常用的一些正则表达式
    • ^:以什么开头,举例:ls -l |grep ^d
    • $:以什么结尾,举例:ls -l |grep py$
    • .零个或任意多个字符,举例:grep God. file5
    • .:一个字符,举例:grep God. file5
    • []:字符范围,举例:grep [Gg]od. file5
    • -F:每个模式作为固定的字符串对待,举例:grep -F ^ file5
    • -c:只显示匹配行的数量,举例:grep -c God file5
    • -n:在输出前加上匹配串所在的行号,举例:grep -n God file5
  • 复杂例子:找到所有调用了print函数的py文件:find . -name “*py” |xargs grep print

    其他命令

    打包文件

  • 命令:tar [选项] 目标文档 源文件或目录

  • 功能:可以把一大堆的文件和目录全部打包成一个文件
  • 常用选项
    • c:创建新的档案文件
    • r:把要存档的文件追加到档案文件的末尾
    • x:从档案文件中释放文件
    • f:使用档案文件或设备
    • v:在归档过程中显示处理的文件
    • z:用gzip来压缩/解压文件,后缀名为.gz,加上该选项后可以将档案文件进行压缩
  • 举例

    • 把当前目录的所有文件打成一个包:tar cf day3.tar *
    • 删除当前目录中的其他文件:find . ! -name day3.tar |xargs rm -rf
    • 把test文件追加到day3.tar中:tar rf day3.tar test
    • 解包:tar xf day3.tar
    • 在打包的过程中还要进行压缩:tar cvzf source.tar.gz *
    • 解压缩包:tar xf source.tar.gz

      压缩解压文件

  • 命令:gzip/bzip2 [选项] 压缩或解压缩的文件名

  • 功能:
    • gzip用来将文件压缩成后缀为.gz的压缩文件,或者将后缀为.gz的文件进行解压
    • bzip2用来将文件压缩成后缀为.bz2的压缩文件,或者将后缀为.bz2的压缩文件进行解压
  • 常用选项
    • -d:将压缩文件进行解压
    • -v:在压缩或解压过程中显示压缩或解压的文件
  • 举例

    • 将main.c进行压缩:gzip/bzip2 -v main.c,则会将main.c压缩成main.c.gz或者main.c.bz2
    • 将刚才的压缩文件进行解压:gzip -dv main.c.gz或者bzip2 -dv main.c.bz2

      scp远程复制文件

  • 命令:scp filename username@ip:path,path是目标主机路径

  • 举例
    • 从本机复制文件到目标机:scp file1 python6@42.192.117.114:~
    • 从目标机复制文件到本机:scp python6@42.192.117.114:~/file .
    • 密码是cb0486f9d1dc6d6
  • 注意:如果要scp文件夹,需要加-r

    无秘匙登录设置

    秘匙在ls ~/.ssh/
  1. ssy-keygen一直回车即可
  2. ssh-copy-id python6@42.192.117.114,然后输入密码