CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

Day13-linux基础操作

概述

linux就是一个操作系统,与苹果系统,安卓系统,鸿蒙系统,windwos系统类似。

计算机有硬件和软件组成,操作系统就是硬件上面的第一层软件,它是硬件和其它软件沟通的桥梁。计算机技术在二战后快速发展,构成计算机的主要基本单元从电子管发展到分立晶体管,再到后来的大规模集成电路。随着计算机技术发展,计算机性能越来越强劲,硬件越来越复杂,人们发现很难去直接管理计算机了,于是人们开始设计软件用于管理越来越复杂的计算机系统,这些软件称作系统级软件。

Unix

1965 年,MIT(麻省理工)、Bell(贝尔实验室)和GE(美国通用电气公司)合作准备搞个超级操作系统,取了个霸气的名字:Multics (Multiplexed Information and Computing System),多路复用信息和计算机系统。能让多个人可以同时干很多事,也叫多用户多任务操作系统。

1969 年,Multics 项目进展缓慢,被迫停止,参与项目的两个人 Ken Thompson(肯·汤普森)和 Dennis Ritchie(丹尼斯·里奇) 也闲了下来。他们都是贝尔实验室的人。没活干了,就打游戏。他们俩找了一台破电脑(PDP-7)准备玩以前开发的一个游戏(travel space:遨游太空),为了能在PDP-7 计算机上运行他的游戏,于是在1969 年夏天Ken Thompson(肯·汤普森)趁他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了UNIX 操作系统的原型,UNIX于是就在1970年正式问世了,这就是Unix元年。自 1970 年后,UNIX 系统在贝尔实验室内部的程序员之间逐渐流行起来,当时使用的是BCPL 语言(基本组合编程语言),后经Dennis Ritchie 于1973 年用移植性很强的C语言进行了改写。

UNIX 的出现是由 Ken Thompson(肯·汤普森)和 Dennis Ritchie(丹尼斯·里奇)在贝尔实验室工作期间开发出来的,自然版权属于贝尔实验室所有。一开始贝尔实验室并没有重视这个系统,导致这个系统的源代码在程序员之间不断分发导致美国很多机构、组织和高校都有非常多的人在使用这个UNIX,这就为UNIX的发展带来的高速的发展,但是随着UNIX发展的越来越好,这时候贝尔实验室就开始了商业运作了,他们决定要收回版权。但是从原来的免费获取使用变成后面的高价版权费用,很多人甚至是公司是接受不了的,所以这个商业运作进展缓慢,后面不得已就变成了,贝尔实验室收回版权,但是针对一些有合作的高校和机构,收取廉价或者是几乎免费的版权费用。

于是在20世纪70年代后期,与教育机构和外部商业组织共享了Unix,从而导致了许多不同版本Unix的诞生。其中最突出的是由加州大学伯克利分校的计算机系统研究小组构建的教育版本(BSD)。当然BSD与比尔·乔伊(Bill Joy)又是另一段传奇故事了。

GUN

1983年9月,Richard Stallman(理查德·斯托曼)宣布引入GNU计划(GNU:Gnu Not Unix)。1985年,理查德(Richard)建立了自由软件基金会(FSF),这是一个非营利性组织,旨在促进软件开发的自由。GNU项目创建了许多重要的产品,如GNU Compiler Collection (gcc)、GNU Debugger、GNU Emacs text editor (Emacs)、GNU build automator (make)等,还有今天使用最广泛的: GNU通用公共许可证(GPL)。GNU项目取得了许多伟大的成就,创造了许多与Unix相似的工具。然而,GNU仍然缺少一个重要的组成部分:内核(用于处理与硬件设备(CPU、RAM、设备等)的控制和通信的部分)。

GNU项目的目标是创建一个自由的、类unix的操作系统,在这个系统中,人们人们可以自由地复制,开发,修改和分发软件,并且不受限制。

Minix

Minix诞生于1987年,由Andrew S. Tanenbaum(安德鲁·斯图尔特·塔能鲍姆,谭邦宁)教授编写,用作教学的微内核架构的类Unix系统。当时Unix系统由于AT&T的使用许可问题,Unix不能被大学使用,谭邦宁教授为了让学生能看到操作系统的运行机理,自己重新写了一个操作系统,就叫它Minix。

Linux

Linux内核最初只是由芬兰人Linus Torvalds(林纳斯·托瓦兹)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

目前市面上较知名的发行版有:Ubuntu(乌班图)、RedHat(红帽)、CentOS(森托斯)、Debain(德班)、Fedora(费多拉)、Alpine(阿尔卑斯)、OpenSUSE(苏瑟)等。

系统镜像下载地址

Linux特点

Linux里面一切皆是文件,目录是文件,网卡等设备都是文件。

Linux里面没有后缀名这一说,但是一般为了方便使用者甄别文件的类型,所以会存在文件添加后缀的情况。

Linux和Windows区别

目前国内Linux更多的是应用于服务器上,而桌面操作系统更多使用的是window。主要区别如下。

目录结构

windows下面的所有的文件都是保存在盘符下的,而且每一个盘符都有各自的根目录。

Linux下面没有盘符的概念,所有一切的文件都是保存在根目录下

windows盘符名称:     c:
 windows盘符根目录:    c:/    或   :c:\
 ​
 Linux只有根目录:      /

Linux常用目录

远程连接工具

界面远程连接工具

向日葵:https://sunlogin.oray.com/download

ToDesk:https://www.todesk.com/index.html

终端远程连接工具

通过SSH连接到远程主机有2种方式:

  1. 通过市面上常用的软件来进行连接。远程ssh客户端软件:putty(开源免费的,超级轻量级的ssh连接工具),xshell(海螺,收费,但是可以试用)。远程ftp客户端软件: xftp,filezilla, FlashFXP远程ssh和ftp的客户端合成软件:FinalShell、Terminus、electerm
  2. 通过终端命令来进行ssh连接。首次远程连接会提示记录远程主机的指纹,同意即可。基于ssh协议远程登录的命令:ssh、ssh-keygen(免密码登录)
ssh<用户名>@<ip地址>例如:远程链接ubuntuubuntu下查看IP,可以通过命令: ip aubuntu下查看当前用户:moluosshmoluo@192.168.231.128exit可以退出连接

SSH

ssh( Secure Shell,安全外壳协议),是一种可靠的,专为远程登录会话和其他网络服务提供安全性的协议。最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。简而言之,就是说白了,就是一种网络协议,用于计算机之间的加密登录。当然基于ssh协议实现的程序有商业收费的,也有社区免费的。我们可以在windows下安装putty、xshell来帮助我们远程登录,也可以ssh命令来操作。 SSH的默认是22号端口。

协议:规定了数据传输双方怎么理解对方发送的数据的一种字符串内容。这份内容就是协议
 协议一般用于解决计算机网络中用于传输数据的格式问题的,但是数据传输一定要使用端口的。
 端口就是计算机与外界传递数据的进出口,有物理端口和虚拟端口之分。
     物理端口,就是计算机物理的设备端口,例如:usb端口,网线端口,音频端口,麦克风端口
     虚拟端口,就是计算机内部用于接受和发送bytes数据的端口,计算机默认了1-65535个端口
 其中,1-1024以内的端口是属于计算机操作的保留端口,一般已经被计算机所预留或占用的。剩余的端口就是提供给开发人员使用。
 端口的使用就是基于协议来使用的。一个协议一般就会绑定一个端口作为数据入口。
语法:ssh 用户名@主机地址有时为安全考虑,运维人员会修改ssh端口,则客户端需要指定端口:ssh -p 端口 用户名@主机地址退出ssh远程登录exit

注意,首次使用ssh登录到远程主机,需要手动输入yes记录主机的指纹信息,如下图所示:

基于ssh实现免密登录

所谓的免密登录就是基于rsa非对称加密算法生成一对成对的秘钥对。然后当前主机保管私钥,把公钥上传到远程主机,这样以后登陆时仅需要验证公私钥即可,不再需要密码登陆了。

第一步:生成秘钥对。私钥和公钥成对才能匹配成功,秘钥文件默认保存在~/.ssh/目录下。私钥文件名:id_rsa公钥文件名:id_rsa.pubssh-keygen连续三下回车第二步: 将公钥文件信息上传到需要被管理的主机上,远程服务器中的公钥保存目录就在该服务器的家目录下~/.ssh/authorized_keysssh-copy-id moluo@192.168.231.128
 ​windows如果没有这个ssh-copy-id的命令的话,可以安装一个工具来让windows有这个命令。git

基于ssh实现文件上传下载

scp(secure copy)是一个基于 SSH 协议在网络之间文件进行安全传输的命令。

语法:scp [可选参数] 源目录/目标文件  新目录/目标文件可选参数:-r:递归复制整个目录,强烈建议尽量把目录打包压缩后的上传-v:详细方式输出-q:不显示传输进度条-C:允许压缩-6:使用 IPv6 协议上传本地文件到远程地址scp 本地目录/本地文件  远程用户名@远程ip:远程目录/                不修改文件名,直接上传scp 本地目录/本地文件  远程用户名@远程ip:远程目录/远程文件名       修改文件名,再上传scp -r 本地目录  远程用户名@远程ip:远程目录scp -r fsdownload moluo@192.168.231.128:~/Desktop/
 ​下载远程文件到本地scp 远程用户名@远程ip:远程目录/远程文件名 本地目录/               不修改文件名,直接下载scp 远程用户名@远程ip:远程目录/远程文件名 本地目录/本地文件        修改文件名,再下载scp -r 远程用户名@远程ip:远程目录 本地目录scp moluo@192.168.231.128:~/Desktop/fsdownload   ~/Desktop/

vi&vim编辑器

Gvim 是Windows系统下的版本。下载地址:https://www.vim.org/download.php

Ubuntu默认就内置了vi和vim编辑器,而CentOS则需要单独安装vim:yum install -y vim

命令模式,也叫快捷键模式,在这种模式下,开发者可以通过键盘使用快捷键操作vi/vim编辑器。完成vi编辑器的配置(显示行号、完成一些基本宏操作、复制、粘贴等等操作)。

x删除光标所在的字符nxn代表数字,表示剪切光标所在位置的后面的n个字符,注意:以空格结束,不要按回车键dd剪切光标所在行的内容,相当于1dd,用于删除1行内容nddn代表数字,表示剪切光标所在行的下面n行内容,用于删除多行内容​
 yy复制光标所载行的内容nyyn代表数字,表示复制光标所在行的下面n行内容p小写字母,粘贴[在光标下一行粘贴出来]P大写字母,粘贴[在光标上一行粘贴出来]​
 u撤销上一步编辑操作​
 gg光标跳转到第一行GG光标跳转到最后一行

输入模式,也叫编辑模式,在这种模式下,开发者可以通过键盘输入文本信息到编辑器中。

进入输入模式,可以在命令模式状态下,使用快捷键 i、I、A、a、O、o、S、s、C、c、R 进入。

退出输入模式,可以通过ESC键返回命令模式。

ESC 退出当前模式,进入命令模式

末行模式,也叫命令行模式/终端模式,在这种模式下,开发者可以通过在编辑器的最后一行输入vi/vim提供的指令完成一系列的编辑器的控制操作,或完成文本的搜索,替换和控制等操作,甚至可以在该模式下,使用Linux提供的shell命令完成来完成其他的命令调用。

进入末行模式,可以在命令模式状态下,使用快捷键:冒号进入。

退出末行模式,可以通过ESC键返回命令模式。

显示或隐藏文件行号:set nu
:set nonu跳转到指定行:行号查找内容:/内容此时,可以通过键盘中的n(往下)或N(往上)查找匹配项:?内容

:q退出编辑器,如果没有办法退出,则强制退出:q!强制退出:w保存内容:w 文件名把当前内容 另存为 指定文件名:wq先保存内容,接着退出vi编辑器文本替换(支持正则):%s/原内容/新内容/把原内容全部替换新内容[部分操作系统下也是替换全部的]:%s/原内容/新内容/g把原内容全部替换新内容:%s/原内容//把原内容删除:%s/原内容//g把匹配到的原内容全部删除[部分操作系统下也是替换全部的]

公司里面常用的编辑器:

前端:sublimetext/webstorm/vscode/atom
后端:
     php: sublimetext/phpstorm/vscode/vim
     python: pycharm/vscode/vim
     java: idea/ecplise/vscode/vim
     go:goland/vscode/vim
     
总结:pycharm/vim/vscode

用户与权限管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。Linux默认都会存在着一个超级用户:root。

其中,Ubuntu是面向个人开发者的Linux,所以Ubuntu原则上不建议使用root权限。
所以在Ubuntu安装过程中,会出现让我们新建账号的情况,所以我们之前创建了一个单独的管理员账号实际上,我们也可以通过这个管理权账号,通过命令`su root`切换到root账号下面的。
当然,如果首次切换root,会需要输入root的密码,但是一般没有root密码,所以往往需要我们在切换root用户之前,先通过当前管理员修改root的密码。`sudo passwd root`

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令(也就是登录密码)。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录(也就是家目录,其中root用户的家目录就是/root,而其他管理员的家目录则是/home/用户名)。

实现用户账号的管理,要完成的工作主要有如下几个方面:

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

用户管理

linux下的用户,不一定是提供给人使用,还可能提供给软件/程序使用。软件/程序需要操作文件,也是需要用户身份的。

要管理用户,必须使用超级管理员身份!Ubuntu下需要切换到root用户下。

查询系统所有的用户,可以通过cat /etc/passwd来查看,里面显示用户的用户名:x:群组ID:用户ID:组名:家目录:权限

  • useradd添加用户
  • usermod修改用户的信息(权限等)
  • userdel删除用户
Ubuntu在创建用户以后,新用户是没有家目录的,所以默认的时候,进入了系统根目录!而CentOS则会自动分配权限,新用户拥有自己的家目录。useradd    xiaohongCentOS系统下useradd -m xiaohongUbuntu系统下,-m 表示生成家目录新用户都需要设置初始密码,否则无法登录passwd xiaohong接着输入两次密码创建组[创建新用户账户时,如果没分配用户组,则系统会同时创建一个同名的用户组,当前组下只有新账户一个成员]groupadd pythondev删除组groupdel pythondev查询系统所有的用户组,可以通过`cat /etc/group`来查看,里面显示用户组的`组名:x:群组ID`cat /etc/group修改用户信息,让用户加入用户组usermod -G 用户组 用户名groupadd pythondev
usermod -G pythondev xiaohong一个用户可以被添加到多个组中,可以通过`cat /etc/group`来查看

用户组管理

可以通过cat /etc/group查看当前系统创建了哪些群组

  • groupadd
  • groupmod
  • groupdel
groupadd 组名查看用户属于哪一个群组下的,有3种方式:查看家目录的文件列表cd/home
lldrwxr-xr-x  3 fuguang fuguang 4096 Aug 30 02:29 fuguang/查看/etc/passwd文件里面的群组IDcat /etc/group查看用户加入了哪些群组? groups 用户名groups xiaomingxiaoming : xiaoming fuguang列出一个群组下所有的成员grep 组名 /etc/group | awk -F":" {print $1,$4}greppythondev/etc/group|awk -F":"{print $1,$4}结果:pythondev xiaohong,moluo

批量管理用户

  • 成批添加/更新一组账户:newusers
  • 成批更新用户的口令:chpasswd

组成员管理

  • 向组中添加用户
    • gpasswd -a <用户账号名> <组账号名>
    • usermod -G <组账号名> <用户账号名>
  • 从组中删除用户
    • gpasswd -d <用户账号名> <组账号名>

密码管理(禁用、恢复和删除用户密码):

  • 设置用户密码
    • passwd [<用户账号名>]
  • 禁用用户账户密码
    • passwd -l <用户账号名>
  • 查看用户账户密码状态
    • passwd -S <用户账号名>
  • 恢复用户账户密码,与上面的-l禁用相对应
    • passwd -u <用户账号名>
  • 清除用户账户密码
    • passwd -d <用户账号名>

用户切换命令

  • su
    • 直接切换为超级用户
  • sudo
    • 直接使用 sudo 命令前缀执行系统管理命令。执行系统管理命令时无需知道超级用户的口令,使用普通用户自己的口令即可,相当于windows下的以管理员身份运行。

关于文件,Linux下一般针对每个用户和用户不同的身份,对与文件的操作具有以下3种不同的操作权限:

注意:目录必须拥有 x 权限,否则无法查看目录内部的文件内容了。

Linux下文件的权限记录,针对rwx,采用的是二进制/八进制/字母表示法第三种。

Linux下的权限在底层是基于二进制实现的,但是对于外层用户操作时,是可以使用八进制或者字母表示的。r  w  x    字母表示法421八进制111二进制关于某一个用户对于单个文件的权限,常见有以下几种权限设置:rwx -->111-->7表示当前用户对文件拥有可读可写可执行的所有权限
rw- -->110-->6表示当前用户对文件拥有可读可写的权限
rw- -->101-->5表示当前用户对文件只拥有可读可执行的权限
r-- -->100-->4表示当前用户对文件只拥有可读的权限
-wx -->011-->3表示当前用户对文件只拥有可写可执行的权限
-w- -->010-->2表示当前用户对文件只拥有可写的权限
--x -->001-->1表示当前用户对文件只拥有可执行的权限
--- -->000-->0表示当前用户对文件没有任何操作权限Linux下一个文件往往不会仅针对一个用户设置权限,而是针对整个系统下所有用户分配权限,所以一个文件往往会针对当前文件的拥有者、组成员以及其他人同一分配权限的。777  ---> 分别指代3个数字,代表了文件拥有者、文件组成员、其他人的三种身份对于当前文件的操作权限rwxrwxrwx  三段rwx,代表了文件拥有者、文件组成员、其他人的三种身份对于当前文件的操作权限,注意:字母表示法中,-表示没有操作权限,二进制和八进制中,0表示没有操作权限举例:700=> rwx --- ---=>  文件拥有者具有一切(可读可写可执行)权限,组成员和其他人没有任何操作权限【常见于文件】644=> rw- r-- r--=>  文件拥有者可读可写,组成员和其他人可读【常见于目录】755=> rwx r-x r-x=>  文件拥有者具有一切权限,组成员和其他人可读可执行【常见于目录】777=> rwx rwxrwx=>  任何人都能对当前文件进行任意操作【这种少见,建议慎用!!!】

对于ll命令的结果说明(ll 是部分linux提供给用户列出当前目录下所有子文件信息的命令,是 ls -la缩写)

lrwxrwxrwx1root root9Feb12021lib32 -> usr/lib32/
lrwxrwxrwx1root root9Feb12021lib64 -> usr/lib64/
lrwxrwxrwx1root root10Feb12021libx32 -> usr/libx32/
drwx------2root root16384Aug2604:38 lost+found/
drwxr-xr-x2root root4096Feb12021media/
drwxr-xr-x2root root4096Feb12021mnt/
drwxr-xr-x2root root4096Feb12021opt/
dr-xr-xr-x279root root0Aug3000:23 proc/
drwx------4root root4096Aug2704:41 root/
drwxr-xr-x27root root860Aug3002:29 run/
lrwxrwxrwx1root root8Feb12021sbin -> usr/sbin/
drwxr-xr-x6root root4096Feb12021snap/
drwxr-xr-x2root root4096Feb12021srv/
-rw-------1root root2147483648Aug2605:49 swap.img
dr-xr-xr-x13root root0Aug3000:23 sys/
drwxrwxrwt12root root4096Aug3001:22 tmp/
drwxr-xr-x14root root4096Feb12021usr/
drwxr-xr-x13root root4096Feb12021var/左边第1个字母,表示文件类型,常见文件类型:目录(d)、文件(-)、链接(l)左边第2~10个字母,表示当前文件拥有者(2~4)、文件组成员(5~7)以及其他人(8~10)对于当前文件的操作权限。命令别名,可以把一些相对比较长,或者参数较多的命令,起一个简单的别名进行调用。ll实际上就是ls -la的简写aliasll=ls -la通过 alias 可以查看当前系统下所有的别名命令。alias一般工作中,我们为了保证系统安全,往往会设置rm成其他的操作,避免出现误删的情况。aliasrm=echo "rm命令已经被禁用,请改用替换操作:mv"删除别名unalias别名

文件权限操作

代码:

chown  分配文件给指定用户作为拥有者[需要root权限]chown 用户名 文件名touchdemo.txtchownxiaohongdemo.txt把指定文件demo.txt的拥有者分配给xiaohongchownxiaohong:xiaohongdemo.txt把指定文件demo.txt的拥有者分配给xiaohong,并分配组给xiaohong用户组chgrp 分配文件给指定的群组chgrp 组名 文件名chmod 分配文件权限给指定用户参数选项:-c : 若该文件权限确实已经更改,才显示其更改动作-f : 若该文件权限无法被更改也不要显示错误讯息-v : 显示权限变更的详细资料-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更) 最常用基于chmod分配权限一般2种写法:字母表示权限a 表示all,同时给拥有者,组员和其他人分配权限u 表示user,表示给拥有者分配权限g 表示group,表示给组员分配权限o 表示other,表示给其他人分配权限单独给拥有者设置文件的权限为可读可写可执行,组员和其他人的权限没有任何改变chmodu+rwxdemo.txt设置文件权限,拥有者(u)拥有可读可写可执行,组员(g)拥有可读可写,其他人(o)可执行的权限chmodu+rwx,g+rw,o+rdemo.txtrwxrw-r--设置文件权限,拥有者(u)移除可执行,组员(g)移除可写,其他人(o)移除可读的权限chmodu-x,g-w,o-rdemo.txt给所有人同时增加或减少权限chmoda+rdemo.txtchmoda-wrxdemo.txt数字表示权限chmod777demo.txtchmod755demo.txtchmod644demo.txtchmod700demo.txt注意:对于系统中的一切权限来说,root都是至高无上的。

常用命令

系统信息

系统关机

关机 (系统的关机、重启以及登出 )

关于路径(path)的描述

路径写法分两种:绝对路径和相对路径绝对路径,从系统的根目录逐层目录进行编写,使用/作为目录分隔符的路径windwos:C:/windows/system32/drivers/hostslinux:/etc/hosts相对路径,从当前窗口/程序作为参考坐标,进行逐层目录进行编写,使用../表示一个上级目录,使用./表示当前目录的路径./home/1.py表示在当前文件/窗口/程序同级目录有个文件1.pyhome/1.py此处同上,一般路径没有以/开头,或者没有判断,则表示当前路径是简写了./../../home/1.py表示在当前文件/窗口/程序上2级目录下有个home目录下有个文件1.py练习:|──3.py└──2022/├──05/└──04/└──1.py└──06/└──2.py1. 如果在3.py中,要使用路径表示1.py的文件位置?./2022/05/04/1.py2022/05/04/1.py省略./也可以2. 如果在3.py中,要使用路径表示2.py的文件位置?./2022/06/2.py2022/06/2.py省略./也可以3. 如果在2.py中,要使用路径表示1.py的文件位置?../05/04/1.py4. 如果在2.py中,要使用路径表示3.py的文件位置?../../3.py5. 如果在1.py中,要使用路径表示2.py的文件位置?../../06/2.py6. 如果在1.py中,要使用路径表示3.py的文件位置?../../../3.py7. 如果3.py的绝对路径是/home/moulo/Desktop/3.py,那么,1.py和2.py的绝对路径?/home/moulo/Desktop/2022/05/04/1.py/home/moulo/Desktop/2022/06/2.py路径从终点的文件类型来区分的话,也分两种:目录路径,文件路径/home/目录路径,因为home可能是一个目录/home/1.py文件路径,因为1.py可能是1个文件路径从是否使用网络协议来说,也分两种:网络路径,本地路径网路路径格式:网络协议://IP或域名/目录路径/文件名https://img12.360buyimg.com/pop/1a763aeafe753ebf.jpg本地路径格式:file:///C:/python37/课件笔记/day18-Linux基础C:/python37/课件笔记/day18-Linux基础

文件和目录

查看文件目录信息

cd/home进入 /home 目录cd..返回上一级目录cd../..返回上两级目录cd相当于 cd ~ ,进入个人的主目录cd~进入个人的主目录cd-返回上次所在的目录pwd显示工作路径ls查看目录中的文件ls -F  查看目录中的文件ls -l显示文件和目录的详细资料ls -la显示隐藏文件,以列表格式展示,一般被命名别名为 llls *[0-9]*显示包含数字的文件名和目录名tree显示文件和目录由根目录开始的树形结构ubuntu:   sudo apt install treecentos:   yum install treemaxOS :   brew install treetree -L2仅列出2层目录信息

管理文件目录

目录路径相关的命令

命令演示:

mkdir dir1创建一个叫做 dir1 的目录mkdir dir1 dir2 ....同时创建两个同级目录或多个同级目录序列{dir3,dir4,dir5}       指定成员的序列mkdir{dir3,dir4,dir5}创建了3个目录,分别是dir3,dir4,dir5mkdir dir{6..10}       指定成员范围的序列mkdir dir{6..10}创建了dir1,dir2,dir3这个范围的目录mkdir demo{01..100}指定成员的长度补0,按末尾数字的长度,给所有的数字进行补0,不足2位,左边补1个0mkdir user{001..3}创建user001,user002,user003这几个目录mkdir goods{0..10..2}  指定步进值的序列,步进值表示间隔数值mkdir item{00..10..2}创建goods00,goods02,goods..,goods10之间的偶数目录mkdir -p 2022/{05..8}/{01..10}mkdir -p ~/dir0/dir1/dir2创建一个目录树[多级目录]touch 1.html创建一个空内容文件touch 1.html 2.html创建2个空内容文件,分别是1.html和2.htmltouch{00..10..2}.htmltouch也支持序列格式写法touch demo/{00..10..2}.html在指定路径下根据序列创建多个文件,前提是路径是存在的echo> 2.py创建一个有内容的文件2.py,里面是空白内容echohello world > 3.py创建一个有内容的文件3.py,里面的内容是 hello worldechowelcome to beijing > 3.py往3.py文件中追加写入内容rmdir dir1删除一个叫做 dir1 的目录,rmdir只能删除空目录!,如果目录下有内容,则无法删除!!如果要删除一个有内容的目录,则可以使用rm进行删除当然要注意: 在工作中rm比较危险,绝对禁用的!!!建议使用mv代替!rm 1.html删除文件,文件名为 1.htmlrm -f 2.html无须确认,直接删除一个叫做 2.html 的文件rm -rf python01递归删除一个叫做 python01 的目录及其内容,慎用!~!!rm -rf python02 python03同时删除两个目录及它们的内容,慎用rm -rf {05..07}mv python04 python04.bakup重命名/移动一个文件/目录,或者对文件进行改名,当python04.bakup不存在时,则表示把python04重命名为python04.bakpu当python04.bakup已经存在,则表示把python04移动到python04.bakpu目录下如果要恢复,则参数翻转即可,mv python04.bakup python04mv goods-* demo1/重命名/移动所有以dir开头的文件/目录,或者对文件进行改名当new_dir不存在时,则报错!多条命名按先后顺序一并执行touch{01..10}.py&&mkdir -p old_dir&&mv *.py old_dir&&tree old_dir

cp 1.html 1.html.bakup复制一个文件1.html,新文件名为 1.html.bakup,工作中常用cp old_dir/* new_dir/复制一个目录下的所有文件到当前工作目录下的new_dir目录中cp -a /tmp/dir1 .复制一个目录到当前工作目录cp -a dir1 dir2复制一个目录cp -r dir1 dir2递归复制一个目录及子目录

文件搜索

find /home -name"*.py"从 /home家目录开始进入文件系统搜索名称以.pt结尾的文件和目录find /home -name"*python*"从 /home 开始进入文件系统搜索名称包含python的文件和目录find /home -name"demo*"从 /home 开始进入文件系统搜索名称以demo开头的文件和目录find / -name"*demo*"不建议使用,从 / 开始进入根文件系统搜索名称包含demo的文件和目录[root@localhost ~]find / -name "demo*"touch /home/moluo/demo001/demo.txt
    /root/dir9/demo.txt
    /root/dir007/dir6/demo.txt
    /root/dir007/demo333.txt
    /root/dir007/demo333_bak.txt
    /root/dir007/dir006/demo.txt

find ~ -user"root"~表示当前用户家目录,搜索属于用户 root 的文件和目录find /etc/systemd -type f -atime +100从/etc/systemd开始,搜索在过去100天内未被使用过的执行文件find /home/moluo/Desktop/ -type f -mtime -10从/home/moluo/Desktop开始,搜索在10天内被创建或修改过的文件find /home/moluo/Desktop/ -type d -mtime -10从/home/moluo/Desktop开始,搜索在10天内被创建或修改过的目录find搜索文件,是逐个目录进行查找, 所以尽量不要从根目录下去进行全盘查找,否则系统会卡顿的!!ContOS安装软件、命令:  yum install -y mlocateUbuntu安装软件、命令: sudo apt install -y mlocate使用locate之前,要了解locate内部运行原理:locate执行过程中,直接系统数据库中搜索文件信息的,效率贼高!所以,需要更新以下最近的系统的文件数据库,先运行 updatedb 命令,ubuntu下需要以sudo 开头sudo updatedb
locate *.html寻找以 .html 结尾的文件 -查找二进制文件、例如命令,查找源码包或者命令手册时使用whereiswhereis tree显示一个二进制文件、源码或man的位置查找二进制文件、例如命令、可执行程序which tree显示一个二进制文件或可执行文件的完整路径

查看文件内容

准备测试数据echo"helloworldpythonbaidu"> demo.txt把"hello\nworld" 写入到demo.txt中cat demo.txt从第一个字节开始正向查看文件demo.txt的内容cat只适合用于查看小文件的内容,大文件不适合.cat -n demo.txt显示当前文件的内容和行数tac demo.txt从最后一行开始反向查看文件demo.txt的内容统计文件内容的字数/单词/行数wc demo.txt统计demo.txt文件的行数/单词数/字数wc demo.txt  /etc/passwd统计多个文件的行数/单词数/字数,并汇总。[root@localhost dir8]wc demo.txt /etc/passwd行数 单词数 字数  文件路径1319demo.txt23471127/etc/passwd24501146总用量末行表示汇总wc还可以统计指定目录下的所有文件的内容wc ./*表示统计当前目录下所有内容行数 单词数 字数  文件路径1319./1.py1318./2.py4426./demo.txt61063总用量写入大段内容到文件中cat<< AAA >> demo2.txt青青园中葵,朝露待日晞。阳春布德泽,万物生光辉。常恐秋节至,焜黄华叶衰。百川东到海,何时复西归?少壮不努力,老大徒伤悲。青青园中葵,朝露待日晞。阳春布德泽,万物生光辉。常恐秋节至,焜黄华叶衰。百川东到海,何时复西归?少壮不努力,老大徒伤悲。AAA查看全部内容more demo2.txt翻页,查看大文件"demo.txt"的内容,按空格键可以继续往下翻看数据,Q键退出less demo2.txt类似于 more 命令,但是它允许在文件中和正向操作一样的反向操作,上下键控制内容,Q键退出查看部分内容head -4 demo2.txt查看文件的前4行,4不是固定的,表示行数tail -2 demo2.txt查看一个文件的最后2行, 2不是固定的,表示行数实时查看/var/log/messages系统运行信息文件的内容tail -f /var/log/messagescentostail -f /var/log/syslogubuntu

文本处理

Linux的文本处理->3剑客:grep, sed, awk 是最强大的三个文本处理命令grep  文本搜索,支持正则使用用法1,从文件中搜索关键字grep 关键字 文件用法2,从上一个操作命令的结果内容中,提取关键字信息上一个命令 | grep 关键字grep老大demo2.txt
grep"老大"/home/moluo/Desktop/demo2.txt在文件 /home/moluo/Desktop/demo2.txt中查找包含"老大"的内容grep ^world /home/moluo/Desktop/demo.txt在文件 /home/moluo/Desktop/demo.txt中查找以"world"开头的内容grep world$ /home/moluo/Desktop/demo.txt在文件 /home/moluo/Desktop/demo.txt中查找以"world"结尾的内容grep[0-9]/home/moluo/Desktop/demo.txt在文件 /home/moluo/Desktop/demo.txt中查找包含数字的内容grep welcome -R /home/moluo/Desktop/*在目录 /home/moluo/Desktop/以及子目录中的所有文件内容中 搜索字符串"welcome"ps aux 用于查看Linux系统中所有正在启动的进程。相当于windows下的任务管理器中的进程数据ps aux|grep chrome$先列出当前操作系统中运行的所有进程列表信息以及PID,然后从结果中搜索关键字chrome结尾的内容信息| 要是一个管道符,把左边命令的输出结果作为内容,提供给右边的命令作为参数使用。sed 文本的查看、删除、替换,支持正则使用。echo"hello worldwelcome to beijing。hello worldwelcome to shanghai。hello worldwelcome to beijing。"> demo.txt不修改源文件,针对文件内容输出到终端时进行替换sed"s/hello world/Hi, xiaoming/g"demo.txt先将demo.txt文件内容提取出来,再把内容中的 "hello world" 替换成 "Hi, xiaoming"以后输出到终端,不修改源文件的内容sed"s/hello world/Hi, xiaoming/g"demo.txt > demo2.txt在上面命令的基础上,把替换后的内容写入新文件demo2.txt中替换源文件内容sed -i"s/hello world/Hi, xiaoming/g"demo.txt将demo.txt中的 "hello world" 替换成 "Hi, xiaoming",并修改源文件内容。sed/^$/ddemo2.txt从demo2.txt文件中删除所有空白行,并显示内容,不修改文件内容sed -i/^$/ddemo2.txt从demo2.txt文件中删除所有空白行,并修改文件内容准备测试文件cat<< EOF >>demo3.pyfrom rest_framework.viewsets import ViewSet首页视图类class HomeViewSet(ViewSet):def get_banner(self,request):获取banner列表数据passdef get_nav(self, request):获取导航数据passEOF整行删除sed"/^ */d"demo3.py从demo3.py文件中删除以空格+号开头的行内容或者是以号开头的行内容sed"/^ */d; /pass/d"demo3.py从demo3.py文件中删除注释行和pass关键字所在行sed/ */d; /^$/ddemo3.py从demo3.py文件中删除所有注释和空白行,常用于代码压缩删除一行的部分内容sed -es/ *$//demo3.py删除每一行最后的空白字符sed -e"s/.*//"demo3.py删除文件中每一行以开头的部分内容sed -e"s/.*//; /^ *$/d"demo3.py|wc删除文件demo3.py中所有注释和空白,输出结果作为wc的参数进行统计sed -es/xiaoming//gdemo3.py从文档demo3.py中只删除"xiaoming"并保留剩余全部根据关键字查看内容sed -n/from/pdemo3.py查看demo3.py文件中,包含导包关键字from的行内容sed -n"/def/p"demo3.py查看demo3.py文件中,包含定义函数关键字def的行内容指定行查看内容sed -n2,4p;4qdemo.txt查看从第2行到第4行内容sed -n5p;5qdemo.txt只查看第5行awk 按换行、按空格处理文本, 按列处理文本内容awk会根据文本内容,按空格进行分列,$1,表示第一列,$2表示第二列,以此类推... print表示打印echo"hello world xiaoming"|awk{print $1,$3}输出文本的第1和第3列hello xiaomingecho"hello world xiaoming"|awk{print $1,$2}输出文本的第2和第2列hello worldecho"hello world xiaoming"|awk{print $1,$2, $3}输出文本的第1,2,3列hello world xiaomingecho"hello world xiaoming"|awk{print $1,$3, $2}输出文本的第1,3,2列,可以自己排序。hello xiaoming worldecho"hello world xiaoming"|awk{print $1,$3}> 1.txt把awk处理的结果写入到文件1.txt中读取文件1.txt的内容,把每一行按空格分列,输出第2列的内容cat 1.txt|awk{print $2}NR表示行号cat demo.txt|awkNR%2==1读取文件demo.txt的内容,输出奇数行内容准备测试内容和文件echo"hello"> t1.txtecho" world"> t2.txt合并文件内容paste t1.txt t2.txt合并2个文件的内容,并打印paste t1.txt t2.txt > t3.txt合并2个文件的内容,把合并内容记录到t3.txt中对内容进行排序和查看内容是否重复的作用sort t1.txt t2.txt排序两个文件的内容echo"hello">> t2.txt追加内容"hello" 到 t2.txtsort t1.txt t2.txt|uniq取出两个文件的并集(重复的行只保留一份)sort t1.txt t2.txt|uniq -u删除交集,留下其他的行sort t1.txt t2.txt|uniq -d取出两个文件的交集(只留下同时存在于两个文件中的文件)

打包压缩文件

常用打包压缩

基于gzip算法压缩文件,压缩程度把上面的要好,gzip可以针对文件进行打包最常用gzip demo.txt压缩一个叫做 demo.txt的文件,得到压缩包,demo.txt.gzgunzip demo.txt.gz解压一个叫做 demo.txt.gz的文件gzip -9 demo.txt最大程度压缩,默认就是最大程度压缩重要!最常用的打包压缩命令!tar -zcvf day18.tar.gz day18创建一个gzip格式的压缩包tar -zxvf day18.tar.gz解压一个gzip格式的压缩包

不常用的打包方式

基于bzip算法压缩文件内容,不能压缩目录!!!生成的文件后缀.bz2bzip2 demo.txt压缩一个叫做 demo.txt 的文件,得到压缩包,demo.txt.bz2bunzip2 demo.txt.bz2解压一个叫做 demo.txt.bz2的文件基于rar针对文件或目录打包ContOS安装:wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gztar zxvf rarlinux-x64-6.0.2.tar.gz -C /usr/localUbuntu安装:sudo apt install rarrar a day18.rar day18打包day18目录,并创建一个叫做 day18.rar 的包,并没有压缩rar a day18.rar file1 file2 dir1同时把多个文件或目录一起追加打包到day18.rar的包中rar x day18.rar解压rar包基于tar针对文件或目录打包,Linux最常用这个tar -cvf day18.tar day18创建一个非压缩的 day18.tar的包tar -cvf day18.tar file1 file2 dir1把多个文件或目录追加打包到day18.tar中tar -tf  day18.tar显示一个包中的内容ar -tf  day18.tar | grep md               显示包中的内容并使用grep进行过滤查找tar -xvf day18.tar释放一个包,解包tar -xvf demo.tar -C 001/将包释放到 001 目录下,前提是001目录是存在的tar -jcvf day18.tar.bz2 day18创建一个bzip2格式的压缩包,压缩包的文件名,往往会体现打包格式以及压缩算法tar -jxvf day18.tar.bz2解压一个bzip2格式的压缩包mkdir -p001&&tar -jxvf day18.tar.bz2 -C 001/创建一个目录001,并把压缩包解压到001目录下mkdir -p002&&tar -zxvf day18.tar.gz -C 002/创建一个目录002,并把压缩包解压到002目录下zipzip -r day18.zip day18创建一个zip格式的压缩包zip -r day18.zip file1 file2 dir1将几个文件和目录追加压缩到一个zip格式的压缩包unzip day18.zip解压一个zip格式压缩包

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容