共计 6434 个字符,预计需要花费 17 分钟才能阅读完成。
本文已同步到 github web 前端开发中,需掌握的 linux 概念及常用命令, 欢迎收藏,欢迎 start
前一段时间阅读了《鸟哥的 linux 私房菜》的部分章节,也做了一些笔记,就在我再次打开笔记时,发现很多命令这是啥东东,有的都忘了,不过从头看一遍自己的笔记,就很快想起来了,从我个人的角度,平时学习过程中,记笔记确实是必要的。所以想把自己整理出的这些笔记整理一下,也分享给大家。那从何说起呢?既然是讲 linux 笔记,那就先说一句吧,在 linux 中,一切皆文件。
1. 环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。
查看环境变量的配置格式, 如查看 $PS1(操作系统及当前用户的相关信息)的配置
echo $PS1
临时设置直接给 $PS1 赋值即可
$PS1='[\u@\h \w]$’
如需永久生效, 则需要修改 /etc/profile 文件的配置
export PS1=”[\u@\h \t]$”
然后执行,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: 网关?<span style=”color: red”> 不太理解 </span>
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. 在设置别名后, 如与原来命令功能不同, 但还想使用的话, 则在执行命令前加 ’ ‘ 即可
\rm 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<<EOF
aaaa
bbbb
cccc
EOF
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 文件内容为:
aaabbbcccddd
输出 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