Python测开28期-偕行-Linux常用命令

一、SSH客户端使用

Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。

几个连接远程服务器的工具:

  • git bash:命令行工具,安装git;
  • Windows PowerShell:命令行工具,Windows系统自带;
  • xshell:有可视化界面,收费,只能免费体验20天还是一个月!

SSH终端常用快捷键

  • Ctrl+a 光标移动到行首

  • Ctrl+e 光标移动到行尾

  • Ctrl+c 终止当前程序

  • Ctrl+d 删除光标前的字符,或者推出当前中断

  • Ctrl+l 清屏

  • Ctrl+u 剪切光标之前的字符

  • Ctrl+k 剪切光标之后的字符

  • Ctrl+y 复制u/k操作中的内容

  • Ctrl+r 查找最近用过的命令

  • Ctrl+shift+c 复制

  • Ctrl+shift+v 粘贴

  • tab 补全命令或路径

  • 键盘↑和↓键切换使用过的命令

二、linux的文件类型及属性

通过命令ls -al或者ll查询文件详情;

image

文件类型

文件详情的第一个字母就表示文件类型;

标识 文件类型 说明
- 普通文件 Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
d 目录文件 就是目录, 能用 # cd 命令进入的。第一个属性为 [d]
l 软链接 类似Windows下面的快捷方式。第一个属性为 [l]
c 字符设备文件 字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
b 块设备文件 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]
p 管道文件 FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]
s 数据接口文件( 套接字文件) 这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型.

image

文件属性

三、linux常用文件操作命令

ls命令:列出当前工作目录下的所有文件/文件夹

  • 用法一,ls:直接输入ls;

  • 用法二, ls 路径:列出指定路径下的所有文件/文件夹;

    • 路径:
      • 相对路径:需要有个参照物,相对于什么路径来说;
        • ./:表示当前目录下,也就是从当前路径开始检索;
        • ../:表示上一级目录下,也就是从上一级目录开始检索;
      • 绝对路径:绝对路径不需要参照物,直接从根“/”开始检索;
  • 用法三,ls 选项 路径:绝对路径不需要参照物,直接从根“/”开始寻找对应路径;
    选项解释:

    • -l:表示list,表示以详细列表的形式进行展示;

    • -a:表示all,显示所有的文件/文件夹(包含了隐藏文件/文件夹);

    • -h:表示high,以可读性较高的形式显示文件大小

image
说明:

  • 蓝色的名称表示文件夹,黑色(或白色)的表示文件绿色的其权限为拥有所有权限 (读、写、执行);

mkdir命令:(make directory)创建目录

  • 用法一: mkdir 路径 【路径,可以是文件夹名称也可以是包含名称的一个完整路径】
    image

  • 用法二: mkdir -p 路径一次性创建多层目录 ,添加-p参数,否则会报错
    image

touch命令:创建文件

  • 语法: touch 文件路径/文件名

  • 用法一:当前目录创建一个文件;
    image

  • 用法二:当前目录创建多个文件;
    image

  • 用法三:在指定目录下创建文件;
    image

cp命令:(copy)复制文件/文件夹到指定的位置

  • 语法: cp 被复制的文件/路径 文档被复制到的路径

  • 用法一:复制文件;
    image

  • 用法二:复制文件并改名;
    image

  • 用法三:复制文件夹,需要添加 选项“-r”【-r-recursion表示递归复制】,否则目录将被忽略
    image

mv命令:(move,移动,剪切)移动文档到新的位置,也可以重命名

  • 语法: mv 需要移动的文档路径 需要保存的位置路径

  • 用法一:移动/剪切文件到指定目录
    image

  • 用法二:移动/剪切文件夹到指定目录
    image

  • 用法三:移动文件并重命名
    image

rm命令:(remove,移除、删除)文件/文件夹

  • 语法:rm 选项 需要移除的文档路径

    • 选项:

      • -f:force,强制删除,不提示是否删除;
      • -r:recursion,表示递归,用于删除文件夹;
      • *:通配符,表示任意的字符;
  • 用法一:删除文件;
    image

  • 用法二:删除文件夹;
    image

  • 用法三:使用通配符批量删除“某类”文件或者文件夹;
    image

find命令:文件搜索

  • 语法:find [搜索范围path] [匹配条件],一般形式为find [ path ] -options [-print -exec -ok ...]
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
  • 说明:默认的路径是当前目录,默认的表达方式是-print;

  • 参数说明:

    • path:要查找的目录路径。 ~ 表示$HOME目录;. 表示当前目录; / 表示根目录 ;
    • -print:表示将结果输出到标准输出;
    • -exec:对匹配的文件执行该参数所给出的shell命令。 形式为command {} \;,注意{}与;之间有空格 ;
    • -ok:与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行 ;
    • -|xargs 与exec作用相同 ,起承接作用,区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等;
    • options :表示查找方式;
      • options常用的有下选项:
-name    按照文件名查找文件。
-perm     按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user  按照文件属主来查找文件。
-group  按照文件所属的组来查找文件。
-mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup  查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser  查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。
-type  查找某一类型的文件,诸如:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。-f  普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

注意下面三个的区别:

-amin n  查找系统中最后N分钟访问的文件
-atime n  查找系统中最后n*24小时访问的文件
-cmin n  查找系统中最后N分钟被改变文件状态的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mmin n  查找系统中最后N分钟被改变文件数据的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件

案例1:查找家目录下study文件夹
image

zip/unzip命令:以zip格式将文件打包压缩或解压zip

说明: zip是Windows和Linux默认都支持的格式,兼容性好。

安装 zip 和 unzip 命令:

  • 在 Ubuntu / Debian / Linux Mint 上安装,运行下面的命令:
$ sudo apt install -y zip unzip
or
$ sudo apt-get install -y zip unzip
  • 在 CentOS / RHEL / Fedora 上安装,运行下面的命令:
$ sudo yum install -y zip unzip
or
$ sudo dnf install -y zip unzip

Zip 命令

  • 语法:zip OPTIONS 路径/archive.zip file1 file2.../folder1 folder2...
  • 说明:在压缩文件之前,需要对正在压缩的文件和目录位置具有写权限;
  • 参数说明:
    • -u:向 zip 压缩文件中再添加一个文件;zip -u reports.zip report4.txt
    • -d:从zip压缩文件中删除文件;zip -d reports.zip reports4.txt
    • -m:压缩后删除源文件;zip -m reports.zip reports1.txt reports2.txt reports3.txt
    • -r:递归压缩目录;zip -r data.zip data
    • 路径:不指定就是当前路径,如果要指定压缩后存放路径就给相应路径;

案例一:压缩多个文件并指定存放路径
image

案例二:压缩后添加一个文件
image

案例三:压缩后从中删除一个文件
image

案例四:压缩目录
image

案例五:压缩后删除源文件

zipinfo filename.zip:查看压缩文件的内容

unzip命令

  • 说明:解压缩或提取文件时,用户拥有文件 / 目录所有权;
  • 语法:unzip option filename.zip
  • 参数说明:
    • -l:解压之前查看压缩文件内容;
    • -Z:要查看文件的详细信息,如文件权限和存档文件的总大小;
    • -d:解压到指定位置;

案例一:解压前查看详细信息
image

案例二:解压到指定位置–会自动创建目录
image

tar命令:以gzip打包压缩或解压文件,文件后缀为.tar.zip或者.tar

  • 语法:tar option filename.tar.zip file1 file1.../floder1 floder2...

  • 参数说明:

    • -c :创建新的归档文件(打包)
    • –x: 从归档文件中提取文件(解包)
    • –f <文件名>: 指定归档文件名
    • –v: 显示操作的详细信息
    • –z: 通过gzip压缩归档文件
    • –j: 通过bzip2压缩归档文件
    • –C <目录>: 切换到指定目录
    • —exclude=<模式>: 排除匹配模式的文件
    • —list: 列出归档文件的内容
    • —help: 显示帮助信息

案例一:打包文件到指定目录

案例二:解压文件

image

wget命令:下载远程文件到Linux主机

命令格式: wget [参数] [URL地址]
参数说明:

 # 启动:
   -V,  --version                   显示 Wget 的版本信息并退出
   -h,  --help                      打印此帮助
   -b,  --background                启动后转入后台
   -e,  --execute=命令               运行一个“.wgetrc”风格的命令
 ​
 # 日志和输入文件:
   -o,  --output-file=文件           将日志信息写入 FILE
   -a,  --append-output=文件         将信息添加至 FILE
   -d,  --debug                     打印大量调试信息
   -q,  --quiet                     安静模式 (无信息输出)
   -v,  --verbose                   详尽的输出 (此为默认值)
   -nv, --no-verbose                关闭详尽输出,但不进入安静模式
        --report-speed=类型          以 <类型> 报告带宽。类型可以是 bits
   -i,  --input-file=文件            下载本地或外部 <文件> 中的 URL
   -F,  --force-html                把输入文件当成 HTML 文件
   -B,  --base=URL                  解析相对于 URL 的 HTML 输入文件链接 (-i -F)
        --config=文件                指定要使用的配置文件
        --no-cookies                不读取任何配置文件
        --rejected-log=文件          将拒绝 URL 的原因写入 <文件>。
 ​
 # 下载:
   -t,  --tries=数字                 设置重试次数为 <数字> (0 代表无限制)
        --retry-connrefused         即使拒绝连接也是重试
   -O,  --output-document=文件       将文档写入 FILE
   -nc, --no-clobber                不要下载已存在将被覆盖的文件
        --no-netrc                  don't try to obtain credentials from .netrc
   -c,  --continue                  断点续传下载文件
        --start-pos=偏移量           从由零计数的 <偏移量> 开始下载
        --progress=类型              选择进度条类型
        --show-progress             在任意啰嗦状态下都显示进度条
   -N,  --timestamping              只获取比本地文件新的文件
        --no-if-modified-since      不要在时间戳 (timestamping) 模式下使用if-modified-since get 条件请求
        --no-use-server-timestamps  不用服务器上的时间戳来设置本地文件
   -S,  --server-response           打印服务器响应
        --spider                    不下载任何文件
   -T,  --timeout=SECONDS           将所有超时设为 SECONDS 秒
        --dns-timeout=SECS          设置 DNS 查寻超时为 SECS 秒
        --connect-timeout=SECS      设置连接超时为 SECS 秒
        --read-timeout=SECS         设置读取超时为 SECS 秒
   -w,  --wait=SECONDS              等待间隔为 SECONDS 秒
        --waitretry=SECONDS         在获取文件的重试期间等待 1..SECONDS 秒
        --random-wait               获取多个文件时,每次随机等待间隔 (0.5~1.5)*WAIT 秒
        --no-proxy                  禁止使用代理
   -Q,  --quota=数字                 设置获取配额为 <数字> 字节
        --bind-address=ADDRESS      绑定至本地主机上的 ADDRESS (主机名或是 IP)
        --limit-rate=RATE           限制下载速率为 RATE
        --no-dns-cache              关闭 DNS 查询缓存
        --restrict-file-names=系统   限定文件名中的字符为 <系统> 允许的字符
        --ignore-case               匹配文件/目录时忽略大小写
   -4,  --inet4-only                仅连接至 IPv4 地址
   -6,  --inet6-only                仅连接至 IPv6 地址
        --prefer-family=地址族       首先连接至指定家族(IPv6,IPv4 或 none)的地址
        --user=用户                  将 ftp 和 http 的用户名均设置为 <用户>
        --password=密码              将 ftp 和 http 的密码均设置为 <密码>
        --ask-password              提示输入密码
        --use-askpass=命令           指定用于请求用户名和密码的凭据管理器。
                                    如果没有提供指定命令,程序将使用 WGET_ASKPASS 或SSH_ASKPASS 环境变量。
        --no-iri                    关闭 IRI 支持
        --local-encoding=ENC        使用 ENC 作为 IRI (国际化资源标识符) 的本地编码
        --remote-encoding=ENC       使用 ENC 作为默认远程编码
        --unlink                    覆盖前移除文件
        --no-xattr                  不要在文件的拓展属性中储存元数据
 ​
 # 目录:
   -nd, --no-directories            不创建目录
   -x,  --force-directories         强制创建目录
   -nH, --no-host-directories       不要创建主 (host) 目录
        --protocol-directories      在目录中使用协议名称
   -P,  --directory-prefix=前缀      保存文件到 <前缀>/..
        --cut-dirs=数字              忽略远程目录中 <数字> 个目录层。
 ​
 # HTTP 选项:
        --http-user=用户             设置 http 用户名为 <用户>
        --http-password=密码         设置 http 密码为 <密码>
        --no-cache                  不使用服务器缓存的数据。
        --default-page=NAME         改变默认页 (通常是“index.html”)。
   -E,  --adjust-extension          以合适的扩展名保存 HTML/CSS 文档
        --ignore-length             忽略头部的‘Content-Length’区域
        --header=字符串              在头部插入 <字符串>
        --max-redirect              每页所允许的最大重定向
        --proxy-user=用户            使用 <用户> 作为代理用户名
        --proxy-password=密码        使用 <密码> 作为代理密码
        --referer=URL               在 HTTP 请求头包含‘Referer: URL’
        --save-headers              将 HTTP 头保存至文件。
   -U,  --user-agent=代理            标识自己为 <代理> 而不是 Wget/VERSION。
        --no-http-keep-alive        禁用 HTTP keep-alive (持久连接)。
        --no-cookies                不使用 cookies。
        --load-cookies=文件          会话开始前从 <文件> 中载入 cookies。
        --save-cookies=文件          会话结束后保存 cookies 至 FILE。
        --keep-session-cookies      载入并保存会话 (非永久) cookies。
        --post-data=字符串           使用 POST 方式;把 <字串>作为数据发送。
        --post-file=文件             使用 POST 方式;发送 <文件> 内容。
        --method=HTTP方法            在请求中使用指定的 <HTTP 方法>。
        --post-data=字符串           把 <字串> 作为数据发送,必须设置 --method
        --post-file=文件             发送 <文件> 内容,必须设置 --method
        --content-disposition       当选择本地文件名时允许 Content-Disposition
                                    头部 (实验中)。
        --content-on-error          在服务器错误时输出接收到的内容
        --auth-no-challenge         不先等待服务器询问就发送基本 HTTP 验证信息。
 ​
 # HTTPS (SSL/TLS) 选项:
        --secure-protocol=PR         choose secure protocol, one of auto, SSLv2,
                                     SSLv3, TLSv1, TLSv1_1, TLSv1_2 and PFS
        --https-only                 只跟随安全的 HTTPS 链接
        --no-check-certificate       不要验证服务器的证书。
        --certificate=文件            客户端证书文件。
        --certificate-type=类型       客户端证书类型,PEM 或 DER。
        --private-key=文件            私钥文件。
        --private-key-type=类型       私钥文件类型,PEM 或 DER。
        --ca-certificate=文件         带有一组 CA 证书的文件。
        --ca-directory=DIR           保存 CA 证书的哈希列表的目录。
        --ca-certificate=文件         带有一组 CA 证书的文件。
        --pinnedpubkey=文件/散列值     用于验证节点的公钥(PEM/DER)文件或
                                     任何数量的 sha256 散列值,以 base64 编码、
                                     “sha256//” 开头、用“;”间隔
        --random-file=文件            用于初始化 SSL 伪随机数生成器(PRNG)的文件,应含有随机数据
 ​
 # HSTS 选项:
        --no-hsts                   禁用 HSTS
        --hsts-file                 HSTS 数据库路径(将覆盖默认值)
 ​
 # FTP 选项:
        --ftp-user=用户              设置 ftp 用户名为 <用户>。
        --ftp-password=密码          设置 ftp 密码为 <密码>
        --no-remove-listing         不要删除‘.listing’文件
        --no-glob                   不在 FTP 文件名中使用通配符展开
        --no-passive-ftp            禁用“passive”传输模式
        --preserve-permissions      保留远程文件的权限
        --retr-symlinks             递归目录时,获取链接的文件 (而非目录)
 ​
 # FTPS 选项:
        --ftps-implicit                 使用隐式 FTPS(默认端口 990)
        --ftps-resume-ssl               打开数据连接时继续控制连接中的 SSL/TLS 会话
        --ftps-clear-data-connection    只加密控制信道;数据传输使用明文
        --ftps-fallback-to-ftp          回落到 FTP,如果目标服务器不支持 FTPS
 # WARC 选项:
        --warc-file=文件名           在一个 .warc.gz 文件里保持请求/响应数据
        --warc-header=字符串         在头部插入 <字符串>
        --warc-max-size=数字         将 WARC 的最大尺寸设置为 <数字>
        --warc-cdx                  写入 CDX 索引文件
        --warc-dedup=文件名          不要记录列在此 CDX 文件内的记录
        --no-warc-digests           不要计算 SHA1 摘要
        --no-warc-keep-log          不要在 WARC 记录中存储日志文件
        --warc-tempdir=目录          WARC 写入器的临时文件目录
 ​
 # 递归下载:
   -r,  --recursive                 指定递归下载
   -l,  --level=数字                 最大递归深度 (inf 或 0 代表无限制,即全部下载)。
        --delete-after              下载完成后删除本地文件
   -k,  --convert-links             让下载得到的 HTML 或 CSS 中的链接指向本地文件
        --convert-file-only         只转换 URL 的文件部分(一般叫做“基础名”/basename)
        --backups=N                 写入文件 X 前,轮换移动最多 N 个备份文件
   -K,  --backup-converted          在转换文件 X 前先将它备份为 X.orig。
   -m,  --mirror                    -N -r -l inf --no-remove-listing 的缩写形式。
   -p,  --page-requisites           下载所有用于显示 HTML 页面的图片之类的元素。
        --strict-comments           用严格方式 (SGML) 处理 HTML 注释。
 ​
 # 递归接受/拒绝:
   -A,  --accept=列表                逗号分隔的可接受的扩展名列表
   -R,  --reject=列表                逗号分隔的要拒绝的扩展名列表
        --accept-regex=REGEX        匹配接受的 URL 的正则表达式
        --reject-regex=REGEX        匹配拒绝的 URL 的正则表达式
        --regex-type=类型            正则类型 (posix|pcre)
   -D,  --domains=列表               逗号分隔的可接受的域名列表
        --exclude-domains=列表       逗号分隔的要拒绝的域名列表
        --follow-ftp                跟踪 HTML 文档中的 FTP 链接
        --follow-tags=列表           逗号分隔的跟踪的 HTML 标识列表
        --ignore-tags=列表           逗号分隔的忽略的 HTML 标识列表
   -H,  --span-hosts                递归时转向外部主机
   -L,  --relative                  仅跟踪相对链接
   -I,  --include-directories=列表   允许目录的列表
        --trust-server-names        使用重定向 URL 的最后一段作为本地文件名
   -X,  --exclude-directories=列表   排除目录的列表
   -np, --no-parent                 不追溯至父目录

案例:

1、使用wget下载单个文件 
 ​
 以下的例子是从网络下载一个文件并保存在当前目录 
 ​
 wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
 ​
 在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。
 ​
 2、使用wget -O下载并以不同的文件名保存 
 ​
 wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。 
 错误:下面的例子会下载一个文件并以名称download.php?id=1080保存 
 ​
 wget http://www.centos.bz/download?id=1 
 即使下载的文件是zip格式,它仍然以download.php?id=1080命令。 
 正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名: 
 wget -O wordpress.zip http://www.centos.bz/download.php?id=1080 
 ​
 3、使用wget –limit -rate限速下载 
 当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,
 而你还需要下载其它文件时就有必要限速了。 
 ​
 wget –limit-rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
 ​
 4、使用wget -c断点续传 
 使用wget -c重新启动下载中断的文件: 
 ​
 wget -c http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
 对于我们下载大文件时突然由于网络等原因中断非常有帮助,
我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。 
 ​
 5、使用wget -b后台下载 
 对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。 
 ​
 wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
 Continuing in background, pid 1840. 
 Output will be written to `wget-log’. 
 你可以使用以下命令来察看下载进度 
 ​
 tail -f wget-log 
 ​
 6、伪装代理名称下载 
 有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。 
 ​
 wget –user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 下载链接 
 ​
 7、使用wget –spider测试下载链接 
 当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。 
 ​
 wget –spider URL 
 如果下载链接正确,将会显示 
 ​
 wget –spider URL 
 Spider mode enabled. Check if remote file exists. 
 HTTP request sent, awaiting response… 200 OK 
 Length: unspecified [text/html] 
 Remote file exists and could contain further links, 
 but recursion is disabled — not retrieving. 
 这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误 
 ​
 wget –spider url 
 Spider mode enabled. Check if remote file exists. 
 HTTP request sent, awaiting response… 404 Not Found 
 Remote file does not exist — broken link!!! 
 你可以在以下几种情况下使用spider参数: 
 ​
 定时下载之前进行检查 
 间隔检测网站是否可用 
 检查网站页面的死链接 
 ​
 8、使用wget –tries增加重试次数 
 如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。
 如果需要,你可以使用–tries增加重试次数。 
 ​
 wget –tries=40 URL 
 ​
 9、使用wget -i下载多个文件 
 首先,保存一份下载链接文件 
 ​
 cat > filelist.txt 
 url1 
 url2 
 url3 
 url4 
 接着使用这个文件和参数-i下载 
 ​
 wget -i filelist.txt 
 ​
 10、使用wget –mirror镜像网站 
 下面的例子是下载整个网站到本地。 
 ​
 wget –mirror -p –convert-links -P ./LOCAL URL 
 –miror:开户镜像下载 
 -p:下载所有为了html页面显示正常的文件 
 –convert-links:下载后,转换成本地的链接 
 -P ./LOCAL:保存所有文件和目录到本地指定目录 
 ​
 11、使用wget –reject过滤指定格式下载 
 你想下载一个网站,但你不希望下载图片,你可以使用以下命令。 
 ​
 wget –reject=gif url 
 ​
 12、使用wget -o把下载信息存入日志文件 
 你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令: 
 ​
 wget -o download.log URL 
 ​
 13、使用wget -Q限制总下载文件大小 
 当你想要下载的文件超过5M而退出下载,你可以使用以下命令: 
 ​
 wget -Q5m -i filelist.txt 
 注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。 
 ​
 14、使用wget -r -A下载指定格式文件 
 可以在以下情况使用该功能 
 ​
 下载一个网站的所有图片 
 下载一个网站的所有视频 
 下载一个网站的所有PDF文件 
 wget -r -A.pdf url 
 ​
 15、使用wget FTP下载 
 你可以使用wget来完成ftp链接的下载。 
 使用wget匿名ftp下载 
 ​
 wget ftp-url 
 ​
 使用wget用户名和密码认证的ftp下载 
 ​
 wget –ftp-user=USERNAME –ftp-password=PASSWORD url

查看文件内容:cat、less、more、head、tail

head 和 tail:查看文件的头部和尾部

  • 语法:head/tail -n number
    • 不带任何参数 显示文件的头部/尾部 10 行
    • 不带任何参数 显示文件的头部/尾部 10 行
      image

cat:查看文件的所有内容

  • 用法:cat 文件名;
  • 说明:cat命令用来一次性查看全部文本文件的内容,后跟文件名作为参数.也可以带上 -n 显示每行的行号。如果文件长达几十上百页,不建议使用 cat。
    image

more:分页查看文本文件

  • 用法:more 文件名;
  • 动作:
    • Enter: 向下n行,需要定义,默认为1行;
    • Ctrl+f : 向下滚动一屏;
    • 空格键 : 向下滚动一屏;
    • Ctrl+b : 返回上一屏;
    • = : 输出当前行的行号;
    • :f : 输出文件名和当前行的行号;
    • v : 调用vi编辑器;
    • ! 命令 : 调用Shell,并执行命令;
    • q : 退出more当我们查看某一文件时,想调用vi来编辑它,不要忘记了v动作指令,这是比较方便的;
      image

less:更丰富查看文本功能

  • 用法:less [参数] 文件

  • 常用参数

    • -c :从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
    • -f :强制打开文件,二进制文件显示时,不提示警告;
    • -i :搜索时忽略大小写;除非搜索串中包含大写字母;
    • -I: 搜索时忽略大小写,除非搜索串中包含小写字母;
    • -m: 显示读取文件的百分比;
    • -M :显法读取文件的百分比、行号及总行数;
    • -N :在每行前输出行号;
    • -p: pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile
    • -s :把连续多个空白行作为一个空白行显示;
    • -Q: 在终端下不响铃;
  • 动作:

    • 回车键: 向下移动一行;
    • y :向上移动一行;
    • 空格键: 向下滚动一屏;
    • b :向上滚动一屏;
    • d: 向下滚动半屏;
    • h: less的帮助;
    • u: 向上洋动半屏;
    • w: 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;
    • g: 跳到第一行;
    • G: 跳到最后一行;
    • p: n% 跳到n%,比如 10%,也就是说比整个文件内容的10%处开始显示;
    • /pattern: 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
    • v :调用vi编辑器;
    • q :退出less
    • !command :调用SHELL,可以运行命令;比如!ls 显示当前列当前目录下的所有文件;

四、Linux文件权限设置

Linux系统一般将文件可存/取访问的身份分为3个类别:owner(所有者)、group(所属组)、others(其他),且3种身份各有read(读)、write(写)、execute(执行)等权限。

1、权限介绍

什么是权限?

在多用户(可以不同时)计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用或存储量的限制。

在Linux中分别有读、写、执行权限:

读权限(r):

对于文件夹来说,读权限影响用户是否能够列出目录结构

对于文件来说,读权限影响用户是否可以查看文件内容

写权限(w):

对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档

对于文件来说,写权限影响用户是否可以编辑文件内容

执行权限(x):

一般都是对于文件来说,特别是脚本文件。

2、身份介绍

Owner身份(文件所有者,默认为文档的创建者)

由于Linux是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,但每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。

Group身份(与文件所有者同组的用户)

与文件所有者同组最有用的功能就体现在多个团队在同一台主机上开发资源的时候。例如主机上有A、B两个团体,A中有a1,a2,a3三个成员,B中有b1,b2两个成员,这两个团体要共同完成一份报告F。由于设置了适当的权限,A、B团体中的成员都能互相修改对方的数据,但是团体C的成员则不能修改F的内容,甚至连查看的权限都没有。同时,团体的成员也能设置自己的私密文件,让团队的其它成员也读取不了文件数据。在Linux中,每个账户支持多个用户组。如用户a1、b1即可属于A用户组,也能属于B用户组【主组和附加组】

Others身份(其他人,相对于所有者)

这个是个相对概念。打个比方,大明、二明、小明一家三兄弟住在一间房,房产证上的登记者是大明(owner所有者),那么,大明一家就是一个用户组,这个组有大明、二明、小明三个成员;另外有个人叫张三,和他们三没有关系,那么这个张三就是其他人了。

同时,大明、二明、小明有各自的房间,三者虽然能自由进出各自的房间,但是小明不能让大明看到自己的情书、日记等,这就是文件所有者(用户)的意义。

Root用户(超级用户)

在Linux中,还有一个神一样存在的用户,这就是root用户,因为在所有用户中它拥有最大的权限 ,所以管理着普通用户。

3、Linux的权限查看

要设置权限,就需要知道文件的一些基本属性和权限的分配规则。在Linux中,ls命令常用来查看文件的属性,用于显示文件的文件名和相关属性。

命令:ls -l 路径 【ls -l 等价于 ll】

image

Linux中存在所有者、用户组和其他人概念 ,各自有不同的权限,对于一个文档来说,其权限具体分配如下:
image

十位字符表示含义:

第1位: 表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软连接”、“s表示套接字”等等;

第2-4位: 表示文档所有者的权限情况,第2位表示读权限的情况,取值有r、-;第3位表示写权限的情况,w表示可写,-表示不可写,第4位表示执行权限的情况,取值有x、-。

第5-7位: 表示与所有者同在一个组的用户的权限情况,第5位表示读权限的情况,取值有r、-;第6位表示写权限的情况,w表示可写,-表示不可写,第7位表示执行权限的情况,取值有x、-。

第8-10位: 表示除了上面的前2部分的用户之外的其他用户的权限情况,第8位表示读权限的情况,取值有r、-;第9位表示写权限的情况,w表示可写,-表示不可写,第10位表示执行权限的情况,取值有x、-。

权限分配中,均是rwx的三个参数组合且位置顺序不会变化。没有对应权限就用 – 代替。

4、 权限设置

语法:#chmod 选项 权限模式 文档

  • 参数说明:
    • -R:递归设置权限 (当文档类型为文件夹的时候)

    • 权限模式:就是该文档需要设置的权限信息

    • 文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。

    • 注意:如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。

字母形式

数字形式

读:r=4;写:w=2;执行:x=1;没有任何权限0

例如:需要给frp_0.33.0_linux_amd64.tar.gz设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。

全部权限(u):读+写+执行=4+2+1=7

读和执行(g):读+执行=4+1=5

读权限(o):读=4

由上得知权限为:754

五、vim/vi编辑器

1、基本概念

Vi 编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows系统下的notepad(记事本)编辑器;
vim 功能更强,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding(写代码的);

2、Vim的打开文件的方式

  • vim 文件路径 作用:打开指定的文件;

  • vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行;vim +3 demo.txt

  • vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词;vim +/haha demo.txt

  • vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件;
    image

3、vim的三种模式

命令模式: 在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;

编辑模式: 在该模式下可以对文件的内容进行编辑;

末行模式: 可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);

4、命令模式操作

光标移动

①光标移动到行首

按键:shift + 6 或 ^(T字母上面的6,不要按小键盘的6)

②光标移动到行尾

按键:shift + 4 或 $(R字母的左上角的4,不是小键盘的4)

③光标移动到首行

按键:gg

④光标移动到末行

按键:G

⑤翻屏

向上翻屏:按键ctrl + b (before) 或 PgUp

向下翻屏:按键ctrl + f (after) 或 PgDn

复制操作

①复制光标所在行

按键:yy

粘贴:在想要粘贴的地方按下p键

②以光标所在行为准(包含当前行),向下复制指定的行数

按键:数字yy

③可视化复制

按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓← →方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴

剪切/删除

①剪切/删除光标所在行

按键:dd (删除之后下一行上移)

注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。

②剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行

按键:数字dd (删除之后下一行上移)

③剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移

按键:D (删除之后当前行会变成空白行)

④可视化删除

按键:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块

撤销/恢复

撤销:输入:u (不属于命令模式) 或者 u (undo)

恢复:ctrl + r 恢复(取消)之前的撤销操作

扩展1:光标的快速移动

①快速将光标移动到指定的行

按键:数字G

②以当前光标为准向上/向下移动n行

按键:数字↑,数字↓

③以当前光标为准向左/向右移动n字符

按键:数字←,数字→

④末行模式下的快速移动方式:移动到指定的行

按键:输入英文“:”,其后输入行数数字,按下回车

5、编辑模式操作

image

6、末行模式操作

进入方式:由命令模式进入,按下“:”或者“/(表示查找)”即可进入;

退出方式:连按2次esc键;

①保存操作(write)

输入:“:w” 保存文件

输入:“:w 路径” 另存为

②退出(quit)

输入:“:q” 退出文件

③保存并退出

输入:“:wq” 保存并且退出
输入:“:x” 在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;–如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。注意: 小写的x,不要使用大写X,大写X表示对文件进行加密操作

④强制 (!)

输入:“:q!” 表示强制退出,刚才做的修改操作不做保存

⑤调用外部命令

输入:“:!外部命令”

例如:

当外部命令执行结束之后按下任意键回到vim编辑器打开的内容

⑥搜索/查找

输入:“/关键词”

例如:我想在passwd文件中搜索“sbin”关键词

在搜索结果中切换上/下一个结果:N/n (next)

如果需要取消高亮,则需要输入:“:nohl”【no highlight】

⑦替换

:s/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容

:s/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容

:%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容

:%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容

%表示整个文件

g表示全局(global)

⑧显示行号(临时)

输入:“:set nu”[number]

如果想取消显示,则输入:“:set nonu”

⑨扩展2:使用vim同时打开多个文件,在末行模式下进行切换文件

查看当前已经打开的文件名称:“:files”

在%a的位置有2种显示可能

%a:a=active,表示当前正在打开的文件;

#:表示上一个打开的文件

切换文件的方式:

a. 如果需要指定切换文件的名称,则可以输入:“:open 已经打开的文件名”

b. 可以通过其他命令来切换上一个文件/下一个文件

输入:“:bn”切换到下一个文件(back next)

输入:“:bp”切换到上一个文件(back prev)

7、vim的配置文件

Vim是一款编辑器,编辑器也是有配置文件的。

Vim配置有三种情况:

a. 在文件打开的时候在末行模式下输入的配置(临时的)

b. 个人配置文件(~/.vimrc,如果没有可以自行新建)

c. 全局配置文件(vim自带,/etc/vimrc)

①新建好个人配置文件之后进入编辑

②在配置文件中进行配置

比如显示行号:set nu,配置好之后vim打开文件就会永远显示行号;

六、Linux常用网络命令

hostname:查看主机信息

  • hostname 没有选项,显示主机名字

  • hostname –d 显示机器所属域名

  • hostname –f 显示完整的主机名和域名

  • hostname –i 显示当前机器的 ip 地址
    image

  • 补充:其实使用 “hostname+新的主机名” 命令还可以临时设置主机名,比如hostname newname,这样用的好处是,可以临时修改主机名称而不用重启。而通过/etc/sysconfig/network 文件来修改主机名则需要重启才能生效。当然,我们在在执行这个命令后,必须记得手动修改/etc/sysconfig/network 文件里面的 HOSTNAME 的值,以便后续重启生效,这算是一个小技巧哦!

ifconfig:查看用户网络配置

  • 补充:Windows 用的 ipconfig;
    image

ip addr:查看用户网络配置

  • 补充:ifconfig 和ip addr的区别;
    • ifconfig 命令归属于 net-tools 工具集。net-tools 起源于 BSD,自 2001 年起,Linux 社区已经停止对其进行维护。

    • 而ip 命令归属于 iproute2 工具集,iproute2 旨在取代 net-tools,并提供了一些新功能。

    • 一些 Linux 发行版已经停止支持 net-tools,只支持 iproute2,在这些 Linux 版本中,只能使用 ip addr 命令查看 IP 地址,使用 ifconfig 会提示命名不存在。

netstat:显示本机上与IP、TCP、UDP和ICMP协议相关的统计数据

该命令经常被用于检验本机各端口的网络连接情况

  • netstat // 显示本机网络连接情况。
  • netstat –a // 显示所有的有效连接信息,包括已建立的连接(ESTABLISHED)和监听的连接请求(LISTENING)。
  • netstat –ac // 以连续的形式显示所有的有效连接信息,每隔1秒刷新1次显示,直到用户中断显示。
  • netstat -i // 显示系统中所有网络接口信息,包括物理网卡、网卡别名和本地回环网卡。
  • netstat –n // 显示系统中所有已建立的连接。
  • netstat –r // 显示路由表。
  • netstat –ta // 显示有效的TCP连接。
  • netstat –ua // 显示有效的UDP连接。
  • netstat –s // 显示各个协议的统计信息。
  • netstat -an | grep 2811 // 显示端口号为2811的网络连接信息。

ps:查看系统中所有运行进程的详细信息

  • 格式:ps options
  • 参数说明:
-a:显示所有与终端相关的进程
-u:显示进程的用户及内存等信息
-x:显示没有控制终端的进程
-aux:相当于全部显示出来
-l:长格式显示更加详细的信息;比如优先级、父进程的PPID等
-e:显示所有进程;
  • 结果:
USER          进程所有者的用户名
PID           进程ID(Process ID)
START         进程激活时间
%CPU          进程的cpu占用率
%MEM          进程使用内存的百分比
VSZ           进程使用的虚拟内存大小,以K为单位
RSS           驻留空间的大小。显示当前常驻内存的程序的K字节数。
TTY           与进程关联的终端(tty)
STAT          进程状态,包括下面的状态: 
                     D    不可中断     Uninterruptible sleep (usually IO)
                     R    正在运行,或在队列中的进程
                     S    处于休眠状态
                     T    停止或被追踪
                     Z    僵尸进程
                     W    进入内存交换(从内核2.6开始无效)
                     X    死掉的进程
                     <    高优先级
                     N    低优先级
                     L    有些页被锁进内存
                     s    包含子进程
                     \+   位于后台的进程组;
                     l    多线程,克隆线程

TIME          进程使用的总CPU时间
COMMAND       被执行的命令行
NI            进程的优先级值,较小的数字意味着占用较少的CPU时间
PRI           进程优先级。
PPID          父进程ID
WCHAN         进程等待的内核事件名