资讯专栏INFORMATION COLUMN

web开发中,必须掌握的linux概念及常用命令

chanthuang / 2122人阅读

摘要:本文已同步到前端开发中,需掌握的概念及常用命令欢迎收藏,欢迎前一段时间阅读了鸟哥的私房菜的部分章节,也做了一些笔记,就在我再次打开笔记时,发现很多命令这是啥东东,有的都忘了,不过从头看一遍自己的笔记,就很快想起来了,从我个人的角度,平时学习

本文已同步到github web前端开发中,需掌握的linux概念及常用命令,欢迎收藏,欢迎Star

前一段时间阅读了《鸟哥的linux私房菜》的部分章节,也做了一些笔记,就在我再次打开笔记时,发现很多命令这是啥东东,有的都忘了,不过从头看一遍自己的笔记,就很快想起来了,从我个人的角度,平时学习过程中,记笔记确实是必要的。所以想把自己整理出的这些笔记整理一下,也分享给大家。那从何说起呢?既然是讲linux笔记,那就先说一句吧,在linux中,一切皆文件。

1. 环境变量
环境变量(environment variables) 一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。

查看环境变量的配置格式, 如查看$PS1(操作系统及当前用户的相关信息)的配置

echo $PS1

临时设置直接给$PS1赋值即可

$PS1="[u@h w]$"

如需永久生效,则需要修改/etc/profile文件的配置

export PS1="[u@h 	]$"

然后执行,source命令即可(通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)

source /etc/profile
PATH环境变量
命令存放的路径, 是系统创建好的, 供用户使用, 随时随地使用
echo $PATH // 查看PATH环境变量

在执行命令如 ls 的时候, 会在PATH中查找, 没有提示command not found

命令软件可安装在如下目录中

/bin

/sbin

/usr/bin

/usr/sbin

/usr/local/bin

/usr/local/sbin

2. 硬链接与软链接 2.1 硬链接(Hard Link)
在同一分区中, inode号码相同的文件互为硬链接, 硬链接也就是文件的入口, 一般都是系统默认创建的防止误删除, 创建硬链接只能给文件创建硬链接, 不能给目录创建硬链接

创建硬链接:

ln 源文件入口 创建的硬链接入口

例如: 给 /test/a.txt 创建一个硬链接

2.2 软连接(Symbolic Link)
存放的源文件的位置(inode节点号与源文件不同),相当于windows的快捷方式

创建软链接:

ln -s 源文件入口 创建的软链接入口

例如: 给 /test/a.txt 创建一个软链接

2.3 硬链接与软连接的区别

互为硬链接的inode号相同

软连接与源文件的inode的节点号不同,

硬链接必须再同一个分区中, 软链接可跨文件系统

不能对目录创建硬链接, 软链接可以(经常用)

2.4 彻底删除一个文件

硬链接数为0(rm -f 硬链接)

进程调用数为0

如何查看文件被哪个进程调用

lsof | grep 文件名

如果硬链接数为0, 但文件被进程调用, 重启对应的软件或服务即可

3. vim编辑文件时的快捷键及编辑、保存、退出操作

3.1 vim快捷键

G : 文件的最后一行(非编辑INSERT状态下)

gg : 文件的第1行(非编辑INSERT状态下)

o : 当前行下面一行插入一个空行并进入编辑模式

u : 撤销(非编辑INSERT状态下)

C : 删除光标所在位置到行尾内容,并进入到编辑模式

A : 快速到达当前行的结尾, 并今日到编辑模式

3.2 编辑、保存、退出操作

1.按键盘 i 进入编辑模式, 进行文件配置

2.按键盘 esc 退出编辑模式

3.输入:wq 保存并退出

4.如果文件无改动时退出 :q

4.如果文件有改动, 不想保存修改的文件, 输入:q!

注意: vim编辑文件, 输入法必须在英文模式下

4. /etc目录下的配置文件
目录 功能
/etc/profile 一般进行系统全局环境变量永久生效或别名的配置文件
/etc/selinux/config selinux防火墙的配置文件
/etc/init.d/iptables iptables防火墙的配置文件
/etc/sysconfig/i18n 字符集的配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 网卡配置文件
/etc/sysconfig/network 可配置主机名
/etc/hosts 解析主机名与ip地址的对应关系
/etc/bashrc 别名配置文件
5. 网卡(网络适配器)配置文件
网卡配置文件的位置在/etc/sysconfig/network-scripts/ifcfg-eth0, 默认配置项包括:

1. DEVICE: 网卡的名称

2.TYPE: 网络类型

3.UUID: 系统中给每个设备分配的标识符号, 在系统中唯一

4.HWADDR: HardWare Address 网卡的硬件地址/mac地址/物理地址, 全世界唯一, 在生产网卡时就已经确定

5.ONBOOT: 开机或重启网络的时候是否自启动

6.NM_CONTROLLED: 网卡的配置文件是否受系统newwork服务这个软件控制, 如果系统或网络重新连接, 网卡就重启了

7.BOOTPROTO: 网卡获取ip的方法

1.static/none: 固定ip,需手动设置
2.dhcp: 系统默认自动获取

8.IPADDR: 网卡的ip地址

9.NETMASK: 子网掩码, 决定了一个局域网中最多可以有多少台机器(255.255.255.0相当于PREFIX=24)

10.GATEWAY: 网关 ?不太理解

6. 别名 alias

6.1 查看linux中默认的别名设置

执行alias命令即可

alias

输出如下:

6.2 别名设置
6.2.1 临时生效

临时设置命令的别名, 命令行直接alias + 命令 = "自定义命令"即可, 如

alias rm="echo xxx"

在命令行中执行:

rm /a.txt     // 输出xxx a.txt

注意:

1.当重新登录服务器后, 别名设置失败
2.在设置别名后, 如与原来命令功能不同, 但还想使用的话, 则在执行命令前加" "即可

m a.txt   //这时rm原有功能生效

6.2.2 永久生效

想要让别名无论是否重启服务器还是重新登录服务器都生效, 则需在 /etc/profile中,进行配置  alias rm="echo xxx", 然后执行命令:
source  /etc/profile

这样,rm的别名设置将永久生效

6.3 取消别名设置

unalias rm
7. linux下面安装软件方式

7.1 yum

是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器, 在linux环境下, 就可以使用yum命令,前提是需要网络。

特点:

自动解决需要安装的软件的依赖

需要网络

yum install tree -y

7.2 rpm

在linux环境下, 就可以使用yum命令,不需要网络, 但是需要挂在光盘, 来提供软件包的库。

1.把设备挂在到服务器的目录下

mount /dev/chrom /mnt

2.查看设备是否挂在成功

df -h

3. 执行rpm命令安装需要的软件包,如:

rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

4.检查是否安装成功lrzsz软件包

rmp -qa lrzsz

5.可以查看安装的软件包中的内容(可执行命令):

rpm -ql lrzsz

6.rpm 删除安装的软件包:

rpm -e lrzsz

7.3 编译安装

默认安装到/usr/local目录下, 需要自己安装依赖
8. tar 打包压缩

8.1 创建压缩包

(1). 打包/etc目录到 /tmp/etc.tar.gz

tar  zcvf /tmp/etc.tar.gz  /etc

// z  通过gzipg工具进行压缩
// c  create 创建压缩包文件
// v  verbose 显示压缩过程
// f  指定文件

(2). 打包/etc目录到 /tmp/etc.tar.gz 并排除掉/etc/services

tar  zcvf /tmp/etc.tar.gz  /etc --exclude=/etc/services

8.2 查看压缩包内容

tar tf /tmp/etc.tar.gz

8.3 解压压缩包

8.3.1 解压到当前路径

tar xf /tmp/etc.tar.gz
// 默认解压到当前路径

8.3.2 解压到指定目录下

tar xf /tmp/etc.tar.gz  -C /ttt
// -C 解压到指定目录下
9. no space left on device 磁盘空间不足

9.1. 查看磁盘各分区占用情况

df -h

9.2. 进入分区使用率最高的查看该分区下各文件block大小

du -sh .*| sort -h //一层一层排查,确认好后再删除

9.3. 查看系统中inode占用磁盘情况

df -ih   // 主要是查看系统中的小文件
// -i 显示inode号
// -h 人可以阅读懂得显示

9.4. 文件没有被彻底删除(硬链接数为0,但是文件被系统进程所调用)

常用命令 1. man
format and display the on-line manual pages 使用手册

想查看哪个命令如何使用,如查看ls命令如何使用:

man ls
2. ip
show / manipulate routing, devices, policy routing and tunnels 显示网卡ip地址信息

知识点:

1. ip a  // ip address 缩写
3. which
shows the full path of (shell) commands 展示命令的完整路径

查看madir命令的完整路径

which mkdir
4. pwd
print name of current/working directory 显示当前工作目录
5. ls
list directory contents 列出目录的所有内容

5.1 列出/root目录下的所有目录及文件

cd /root
ls

5.2 列出/root目录下的所有目录及文件,并显示文件的相关信息

```
cd /root
ls -l  // 相当于ll, -l : use a long listing format, 展示文件详细信息
```
6. mkdir
-make directories  创建目录

6.1. 创建 /data文件夹

mkdir /data

6.2. 用一条命令完成创建目录/my/test,既创建/my目录及/my/test目录

mkdir -p /my/test

知识点:

-p --parents no error if existing, make parent directories as needed

如果文件已经存在,新建时不报错

如果需要创建多级文件夹,会一直创建到最底层的父级文件夹

7. touch
change file timestamps 创建文件,修改文件时间戳

在data下面建一个文件test.txt

touch /data/test.txt
8. cd
cd -change direcory 切换目录

8.1 进入/data/test目录

cd /data/test

8.2 返回上一层目录

cd ..
9. cp
-copy files and directories 拷贝文件或目录

9.1 把/data/test.txt文件拷贝到/tmp下

cp /data/test.txt /tmp

9.2 拷贝/data目录到/tmp目录下

cp -r /data /tmp

知识点:

1. -r 参数表示递归复制目录,一层一层的复制
2. -p 拷贝时,保持文件属性不变
2. -a 相当于 -pdr

9.3 拷贝/data目录到/tmp目录下, 保持文件属性不变

cp -p /data /tmp
10. mv
-move (rename) files 移动或重命名文件

10.1 把/data目录移动到/root下

mv /data /root

10.2 把/data/a.txt 重命名为b.txt

cd /data
mv a/txt b.txt
11. rm
-remove files or directories 删除文件或目录

11.1 进入/root目录下的data目录,删除test.txt文件

cd /root/data
rm -f test.txt   // -f “force”, 表示强制删除

11.2 删除目录,删除/data/test目录

rm -r /data/test   // -r 删除目录
12. echo
-display a line of text 显示文本行

12.1 为/data/test.txt增加内容为“I am studying linux.”

echo "I am studing linux" > /data/test.txt

知识点:

“>” , 重定向,先清空文件内容,然后再追加到文件结尾

">>" ,追加重定向 把内容追加到文件结尾

13. cat
concatenate files and print on the standard output 连接文件并打印输出文件内容

13.1 显示/test.txt的文件内容

cat /test.txt

13.2 与<<配合,追加多行内容到文件/a.txt中

cat >>/a.txt<
14. history
命令可以用来显示曾执行过的命令
history  
15. df

查看磁盘空间

df -h // 查看block
df -i //查看inode
16. du

查看文件目录下文件大小

du -sh /*   //查看根目录下的所有文件大小
17. sort

排序

sort -参数 文件

-n // 按照数字顺序排序
-r // 逆序
-k // 根据第几列进行排序
-h // 人可以读懂的信息, 根据文件大小 T>G>M>K 
18. ps
process status 进程状态

18.1查看所有node进程

ps -ef | grep node
19. find
search for files in a directory hierarchy 在目录层次结构中, 查找文件

19.1 在/data目录下查找a.txt文件

find /data -type f -name "a.txt"

知识点:

-type 查找内容的类型

f 表示要查找的内容为文件类型

19.2 find与 管道符 "|"配合使用 在/data目录下查找a.txt文件,并删除

find /data -type f name "a.txt" | xargs rm -rf
20. grep
-print lines matching a pattern 根据匹配的规则过滤文本内容

20.1 输出test.txt文件中,包含aaa字符串的行

grep "aaa" test.txt

20.2输出test.txt文件中,不包含aaa字符串的行

grep -v "aaa" test.txt  // -v参数: --invert-match 过滤掉不匹配的行

20.3 与管道符号配合使用,如过滤出命令历史记录中的所有cd命令

history | grep cd
21. awk

21.1 已知文件/data目录下的test.txt文件内容为:

aaa
bbb
ccc
ffffd

输出test.txt文件内容时,不包含bbb字符串:

awk "!/bbb/" /data/test.txt

21.2 输出/data/text.txt的第二行

awk "NR ==20" /data/text.txt

21.3 输出/data/text.txt的第二行到第三行

awk "NR ==2, NR==3" /data/text.txt
22. sed
用于过滤和转换文本的流编辑器

22.1 /data/test.txt中内容为aaa,把/data/a.txt的内容替换为bbb

sed -i "s#aaa#bbb#g" /data/test.txt 

知识点:

-i --in-place 替换

固定用法, "s#要被替换的内容#替换后的内容#g". "#"也可以使用‘@’等等符号,一般常用‘#’

22.2 使用sed命令输出行,如输出/data目录下test.txt的第20行,第20到30行

sed -n "20p" /data/test.txt
sed -n "20, 30p" /data/test.txt
23. ping
send ICMP ECHO_REQUEST packets to network hosts 检查网络是否连通

本周根据记录的笔记,整理出了在web前端开发中,几个linux中的相关概念和常用的命令,用法也都比较基础,主要是方便查阅复习,同时分享给大家,更全的信息那当然是去查手册了。如有问题,请各位大神多多指出,谢谢。最后,让我们一起来ping一下百度吧,ping!! ping! ping!

ping www.baidu.com

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/63154.html

相关文章

  • 【三万粉丝终极福利】Python、C、Java三大语言学习路线和资源整理

    摘要:今天给大家带来三万粉丝三大语言学习路线和资源整理,收藏就对了。还有对数组面向对象和异常处理等。语言学习路线一基础阶段技能树掌握脚本界面编程能力数据库基本爬虫多线程多进程开发能力,可以胜任基本的开发工作。 大家好,我是辣条。 今天给大家带来三万粉丝三大语言学习路线和资源整理,收藏就对了。 目录...

    GitChat 评论0 收藏0
  • 树莓派学习笔记(六)交叉编译念及安装使用

    摘要:一交叉编译概念什么是交叉编译交叉编译是在一个平台上生成另一个平台上的可执行代码。也要树莓派有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。 ...

    songze 评论0 收藏0
  • 作为php了解一下共享内存念及优缺点

    摘要:共享内存的使用是一种在进程之间交换数据的快速方法,主要因为在创建内存段之后传递数据,不会涉及内核。使用共享内存,没有会减缓开发人员的进度。不要低估共享内存在应用程序中的力量。 共享内存是一种在相同机器中两个正在运行的进程之间共享和传递数据的有效方式,不同进程之间共享的内存通常安排为同一段物理内存;顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。一个进程可创建一个可供其他进...

    solocoder 评论0 收藏0
  • 作为php了解一下共享内存念及优缺点

    摘要:共享内存的使用是一种在进程之间交换数据的快速方法,主要因为在创建内存段之后传递数据,不会涉及内核。使用共享内存,没有会减缓开发人员的进度。不要低估共享内存在应用程序中的力量。 共享内存是一种在相同机器中两个正在运行的进程之间共享和传递数据的有效方式,不同进程之间共享的内存通常安排为同一段物理内存;顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。一个进程可创建一个可供其他进...

    ShevaKuilin 评论0 收藏0
  • 作为php了解一下共享内存念及优缺点

    摘要:共享内存的使用是一种在进程之间交换数据的快速方法,主要因为在创建内存段之后传递数据,不会涉及内核。使用共享内存,没有会减缓开发人员的进度。不要低估共享内存在应用程序中的力量。 共享内存是一种在相同机器中两个正在运行的进程之间共享和传递数据的有效方式,不同进程之间共享的内存通常安排为同一段物理内存;顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。一个进程可创建一个可供其他进...

    soasme 评论0 收藏0

发表评论

0条评论

chanthuang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<