前端开发中Linux知识必备

195 阅读12分钟

前言

最近在做部署相关的东西,接触了很多Linux的知识点、命令,所以在这里整理了一下平时前端在开发中经常需要用到的一些Linux基础概念、常用命令等,类似于笔记的形式,方便开发时直接查询,提升开发效率。

文章结构

前端Linux技能必备.png

Linux简介

Linux 是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统

Linux的发行版

Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS等。

image.png

Linux VS Windows

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

比较WindowsLinux
界面界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。
驱动程序驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。
使用使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。图形界面使用简单,容易入门。文字界面,需要学习才能掌握。
学习系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。
软件每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。大部分软件都可以自由获取,同样功能的软件选择较少。

Linux系统文件目录

输入ls,文件目录如下所示:

image.png

目录说明
/etc系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动
/bin存放着最经常使用的命令
/sbin存放的是系统管理员使用的系统管理程序
/usr/bin系统用户使用的应用程序 (除 root 外的通用用户)
/usr/sbin超级用户使用的比较高级的管理程序和系统守护程序(root 使用的指令)
/var存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件,日志目录为var/log

Linux文件基本属性

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

Linux将文件访问者身份分为三种:

  1. 文件所有者(Owner): 当创建一个用户的时候,Linux会为该用户创建一个主目录,路径为/home/<username>,可以使用cd ~,快捷进入主目录。如果想放一些个人私密文件,可以放在自己的主目录里,然后设置只能自己查看;
  2. 群组(Group): 每个用户都有一个用户组,方便多人操作的时候,为一群人分配权限。当创建用户的时候,会自动创建一个与它同名的用户组;
  3. 其他人(Others): 既不是文件所有者又不是文件所属群组成员的用户,就是其他人;

说明

  • 超级用户(Root): Root用户是一类特殊的用户,该用户可以访问所有文件

修改文件或目录的所属用户与权限

在Linux中通常使用以下两个命令来修改文件或目录的所属用户与权限:

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

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin # bin文件的第一个属性用d表示。d在 Linux中代表该文件是一个目录文件
……

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等,第一个字符有如下几种形式:

第一个字符说明
d目录
-文件
l链接文档(link file)
b表示为装置文件里面的可供储存的接口设备(可随机存取装置)
c表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

我们来看下bin文件基本属性,通过下面一张图详细看下:

file-llls22.jpeg

上面图中去除第一个字符,其余以三个为一组,且均为rwx的三个参数的组合。其中, r代表可读(read)、 w代表可写(write)、 x代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号-。每个文件的属性由左边第一部分的10个字符来确定(如下图)。

image.png

上面图中从左至右用0-9这些数字来表示,我们通过下面表具体看下

字符说明
0确定文件类型
1-3确定属主(该文件的所有者)拥有该文件的权限
4-6确定属组(所有者的同组用户)拥有该文件的权限
7-9确定其他用户拥有该文件的权限

Linux文件属主和属组

通过ls -l查看,比如:

[root@www /]# ls -l
total 64
drwxr-xr-x 3 mysql mysql 4096 Apr 21  2014 mysql
# mysql文件是一个目录文件,属主和属组都为mysql,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限

说明

  • 对于root用户来说,一般情况下,文件的权限对其不起作用

更改文件属性

1. chgrp:更改文件属组

# 语法
chgrp [-R] 属组名 文件名

# 参数说明:-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2. chown:更改文件属主,也可以同时更改文件属组

# 语法
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

# 例子
chown bin install.log # 将install.log的拥有者改为bin这个账号
chown root:root install.log # 将install.log的拥有者与群组改回为root

3. chmod:更改文件9个属性

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 [-R] xyz 文件或目录

# 参数说明:
xyz: 就是刚刚提到的数字类型的权限属性,为**rwx**属性数值的相加
-R: 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

也可以通过符号类型改变文件权限,一般常用的是数字类型,符号类型在此就不多做说明了。

常用命令

命令例子说明
lsls -a 全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
ls -d 仅列出目录本身,而不是列出目录内的文件数据(常用)
ls -l 长数据串列出,包含文件的属性与权限等等数据;(常用)
列出目录及文件名
cdcd ~ 切换到用户主目录
cd - 切换到上一个所在目录
切换目录
cpcopy [源文件或者目录] [目标文件]
1. -r 递归持续复制,复制目录,默认是复制文件(常用)
2. -p 连带文件属性复制(备份常用)
3. -d 若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;
4. -a 相当于 -rpd
5. -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
复制文件或目录(常用)
mv文件改名:mv index.html index2.html
隐藏文件(文件名上加上 .):mv index.html .index.html
移动文件:mv /home/www/index.html /home/static/(仅移动
mv /home/www/index.html /home/static/index2.html)(移动又重命名)
批量移动:mv /home/www/website/* /home/www/static
参数
1. -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
2. -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
3. -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
移动文件与目录,或修改名称
whoami命令行输入whoami显示用户名
chownchown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
更改文件属主,也可以同时更改文件属组
chmodchmod [-R] xyz 文件或目录
chmod 777 .bashrc
更改文件9个属性
vimvim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存)修改文件的内容
sshssh 用户名@服务器IP登录远程服务器
touchtouch file # 创建一个名为‘file’的空白文件用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
pingping 域名|IP查看与某台机器的连接情况
sudosu - 用户名 切换为普通用户
sudo su 切换为root用户
root和普通用户之间切换
telnettelnet 主机名/IP端口是否可访问
psps -ef/ps aux 两者的区别是展示格式不同查看当前系统正在运行进程,如果直接用ps((Process Status))命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态
curlcurl www.example.com 不带有任何参数时,curl 就是发出 GET 请求
参数
1. -A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version],也可以通过-H参数直接指定标头,更改User-Agent
2. -b参数用来向服务器发送 Cookie,curl -b 'foo=bar' google.com ,会生成一个标头Cookie: foo=bar;aaa=b,向服务器发送名为foo、值为bar和名为aaa,值为b的两个 Cookie
3.-c参数将服务器设置的 Cookie 写入一个文件 curl -c cookies.txt www.google.com ,将服务器的 HTTP 回应所设置 Cookie 写入文本文件cookies.txt
4. -d参数用于发送 POST 请求的数据体 curl -d'login=emma&password=123'-X POST google.com/login 使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST ; -d参数可以读取本地文本文件的数据,向服务器发送 curl -d '@data.txt' google.com/login 读取data.txt文件的内容,作为数据体向服务器发送
5. -e参数用来设置 HTTP 的标头Referer,表示请求的来源
6. -F参数用来向服务器上传二进制文件
用来请求 Web 服务器,它的名字就是客户端(client)的 URL 工具的意思
详细链接:www.ruanyifeng.com/blog/2019/0…
grepgrep "10" test.log
参数
-i 忽略大小写
-v 排除指定字符串
grep -e a|b filename 匹配任意关键字
在文件当中匹配符合条件的字符串
scpscp -r 本地目录 root@IP:远程服务器目录 将版本包上传到远程服务器
scp -r 用户名@IP:远程服务器目录 本地目录 将远程服务器文件下载到本地
本地远程文件拷贝
zip- zip -r test.zip ./* 压缩zip包(cd到需要压缩的文件夹下,防止解压时嵌套一层)
unzip test.zip ./ 解压zip包到当前目录
解压、压缩包
tartar -cvf test.tar /xxx 打tar包并显示详细打包过程
tar -xvf test.tar 解压tar包
tar -czvf test.tar.gz -C /xxx 打包并压缩为.gz
tar -xvzf test.tar.gz 或 tar -xvf test.tar.gz 解压文件
打包、解压
>>
>
>会覆盖目标的原有内容。当文件存在时会先删除原文件,再重新创建文件,然后把内容写入该文件;否则直接创建文件
>>会在目标原有内容后追加内容。当文件存在时直接在文件末尾进行内容追加,不会删除原文件;否则直接创建文件
输出重定向

参考网址: www.runoob.com/linux/linux…