Linux 常用命令简单介绍 —— 基础篇

/ 0评 / 0

很多新手在接触Linux的初期,都会因为习惯了 Windows的可视化操作而不适应 Linux纯命令行的操作,一些基础的 Linux命令都要去百度谷歌查询,这样很浪费时间,所以我就简单整理一些 Linux基础命令提供给新手理解,以后或许还会有进阶篇、高级篇(或许

这篇文章,不仅仅是写给新手学习的,也是写给我学习Linux的,我在写这篇文章的时候,也是在学习和了解这些基础命令,同时留着以后备忘。

包管理器
apt-get Debian/Ubuntu系统包管理器
apt-get 是Debian/Ubuntu系统中 一个用于快速下载/安装的简单命令行管理工具!
参数介绍:

# 命令:
<span class="hljs-keyword">update</span> - 检索 新的包列表
<span class="hljs-keyword">upgrade</span> - 升级 可更新的所有软件包
<span class="hljs-keyword">install</span> - 安装 新软件包(pkg是libc6不是libc6.deb)
remove - 删除 软件包
autoremove - 自动删除 所有未使用的软件包
<span class="hljs-keyword">purge</span> - 删除 软件包和配置文件
clean - 清除 已下载的归档文件
autoclean - 清除 旧的下载的档案文件
<span class="hljs-keyword">check</span> - 验证 是否有损坏的依赖
download - 下载 二进制包到当前目录
 
# 选项:
-q :不输出任何信息
-qq :除了错误之外,没有输出
-<span class="hljs-keyword">d</span> :仅下载,不要安装或解压缩存档
-y :对所有确定询问都选择 Yes,并且不提示
-<span class="hljs-keyword">f</span> :尝试纠正 被破坏依赖关系的系统
-<span class="hljs-keyword">m</span> :如果存档是可定位的,则尝试继续
-u :显示升级包的列表
-b :在获取源代码包后构建源包
 
# 更多的命令可以用 apt-<span class="hljs-keyword">get</span> <span class="hljs-comment">--help 查看。</span>

使用示例:

<span class="hljs-meta"># 检索 新的包列表</span>
apt-<span class="hljs-keyword">get</span> update
 
<span class="hljs-meta"># 升级 可更新的所有软件包(注意这个命令会升级所有的软件包,所以会升级很长时间)</span>
apt-<span class="hljs-keyword">get</span> upgrade
 
<span class="hljs-meta"># 安装 Nginx 软件包</span>
apt-<span class="hljs-keyword">get</span> install nginx
 
<span class="hljs-meta"># 卸载 Nginx 软件包</span>
apt-<span class="hljs-keyword">get</span> remove nginx
 
<span class="hljs-meta"># 卸载 Nginx 软件包 并删除所有相关配置文件</span>
apt-<span class="hljs-keyword">get</span> remove --purge nginx
 
<span class="hljs-meta"># 在安装软件和卸载的时候,为了避免误操作,都会询问是否继续,每次都要输入 y 来确定会很麻烦,可以加上 -y 参数</span>
<span class="hljs-meta"># 安装 Nginx 软件包 并不显示确定提示</span>
apt-<span class="hljs-keyword">get</span> install nginx -y
 
<span class="hljs-meta"># 卸载 Nginx 软件包,删除所有相关配置文件 并不显示提示</span>
apt-<span class="hljs-keyword">get</span> remove --purge nginx -y
 
<span class="hljs-meta"># 清除 旧的/无用 的软件包</span>
apt-<span class="hljs-keyword">get</span> clean && apt-<span class="hljs-keyword">get</span> autoclean
 
<span class="hljs-meta"># 下载 Nginx 二进制软件包到当前目录,但不解压和安装</span>
apt-<span class="hljs-keyword">get</span> download nginx -d
 
<span class="hljs-meta"># 更多的命令可以用 apt-get --help 查看。</span>

yum CentOS系统包管理器

yum 是CentOS系统中 一个用于快速下载/安装的简单命令行管理工具!

参数介绍:

# 命令:
 
<span class="hljs-keyword">update</span> - 检索 新的包列表
<span class="hljs-keyword">upgrade</span> - 升级 软件包
<span class="hljs-keyword">search</span> - 搜索 软件包
<span class="hljs-keyword">install</span> - 安装 软件包
<span class="hljs-keyword">list</span> - 列出 软件包或者软件包组
info - 显示软件包或者软件包组的详细信息
erase - 删除 软件包(这两个命令一样)
remove - 删除 软件包(这两个命令一样)
groupinfo - 显示 有关包组的详细信息
groupinstall - 安装 软件包组(就像一种软件合集)
grouplist - 列出 可用的软件包组
groupremove - 删除 软件包组
<span class="hljs-keyword">check</span> - 检查 软件包
<span class="hljs-keyword">check</span>-<span class="hljs-keyword">update</span> - 检查 可更新的软件包
clean - 清除 缓存目录内的软件包
deplist - 列出 一个包的依赖关系
distribution-synchronization - 同步 已安装的软件包到最新的版本
downgrad - 降级 一个软件包
reinstall - 重新安装 软件包(自动删除重装)
repolist - 显示 配置的软件包仓库
resolvedep - 确定 软件包需要的依赖关系
 
# 选项:
-<span class="hljs-keyword">t</span> :容忍错误
-<span class="hljs-keyword">C</span> :完全从系统缓存运行,不要更新缓存
-R 分钟 :最大命令等待时间
-q :安静的操作
-y :对于所有问题回答是
<span class="hljs-comment">--nogpgcheck :禁用gpg签名检查</span>
 
# 更多的命令可以用 yum <span class="hljs-comment">--help 查看。</span>

使用示例:

<span class="hljs-meta"># 检索 新的包列表</span>
yum update
 
<span class="hljs-meta"># 安装 Nginx 软件包</span>
yum install nginx
 
<span class="hljs-meta"># 安装 Development Tools 软件包组(这个软件包组中包含了编译所需的软件)</span>
<span class="hljs-meta"># 注意:当软件包或者软件包组的名字中包含空格的时候,请把 软件包或软件包组 加上双引号!</span>
yum groupinstall <span class="hljs-string">"Development Tools"</span>
 
<span class="hljs-meta"># 卸载 Nginx 软件包</span>
yum erase nginx / yum remove nginx
 
<span class="hljs-meta"># 卸载 Development Tools 软件包组</span>
yum groupremove <span class="hljs-string">"Development Tools"</span>
 
<span class="hljs-meta"># 升级 所有可更新的软件包</span>
yum upgrade
 
<span class="hljs-meta"># 升级 Nginx 可更新的软件包</span>
yum upgrade nginx
 
<span class="hljs-meta"># 在安装软件和卸载的时候,为了避免误操作,都会询问是否继续,每次都要输入 y 来确定会很麻烦,可以加上 -y 参数</span>
<span class="hljs-meta"># 安装 Nginx 软件包 并不显示确定提示</span>
yum install nginx -y
 
<span class="hljs-meta"># 卸载 Nginx 软件包 并不显示确定提示</span>
yum erase nginx -y / yum remove nginx -y
 
<span class="hljs-meta"># 搜索 Nginx 软件包是否存着</span>
yum search nginx
 
<span class="hljs-meta"># 列出 可用的软件包</span>
yum <span class="hljs-built_in">list</span>
 
<span class="hljs-meta"># 列出 可用的软件包组</span>
yum grouplist
 
<span class="hljs-meta"># 清除 缓存目录中的所有软件包</span>
yum clean
 
<span class="hljs-meta"># 清除 缓存目录中的 Nginx 软件包</span>
yum clean nginx
 
<span class="hljs-meta"># 重装 Nginx 软件包</span>
yum reinstall nginx
 
<span class="hljs-meta"># 更多的命令可以用 yum --help 查看。</span>

文件/文件夹 操作

以下除特殊说明,都以当前目录为 /root 示例。

mkdir 新建 文件夹

<span class="hljs-comment"># 在当前文件夹新建一个 bash 文件夹,完整的绝对路径就是 /root/bash</span>
<span class="hljs-keyword">mkdir</span> bash
 
<span class="hljs-comment"># 更多的命令可以用 mkdir --help 查看。</span>

cd 进入 文件夹

<span class="hljs-comment"># 你当前在 /root目录中,使用这个命令会进入 /root/bash目录,这是相对路径</span>
<span class="hljs-built_in">cd</span> bash
<span class="hljs-comment"># 如果你不在 /root目录中的话,就不能用上面的相对路径了,就需要绝对路径</span>
<span class="hljs-built_in">cd</span> /root/bash
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 假设你当前在 /root/bash目录中,使用相对路径,你可以用这个命令进入上一级 /root目录, .. 代表相对路径 上级目录</span>
<span class="hljs-built_in">cd</span> ..
<span class="hljs-comment"># 当然你也可以用绝对路径来进入上一级 /root目录</span>
<span class="hljs-built_in">cd</span> /root

cp 复制或重命名 文件/文件夹

<span class="hljs-comment"># 复制当前目录内的 log.txt文件到 /var目录</span>
cp log.txt /var/log.txt
<span class="hljs-comment"># 复制当前目录内的 bash文件夹到 /home目录</span>
cp -R bash /home/bash
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 复制当前目录内的所有.txt后缀的文件到 /var/log目录</span>
cp *.txt /var/<span class="hljs-built_in">log</span>
<span class="hljs-comment"># 复制当前目录内的所有以 doubi开头的文件到 /var/log目录</span>
cp doubi* /var/<span class="hljs-built_in">log</span>
<span class="hljs-comment"># 复制当前目录内的所有以 doubi开头 以.txt后缀结尾的文件到 /var/log目录</span>
cp doubi*.txt /var/<span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 假设当前目录是 /root/doubi/log,要把这个目录中的所有.txt后缀的文件复制到上一级目录 /root/doubi,那么这样做</span>
cp *.txt ..
<span class="hljs-comment"># .. 就是相对路径,代表上一级目录,当然你也可以用绝对路径,这样更不容易出错</span>
cp *.txt /root/doubi
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 重命名当前目录内的 log.txt文件为 log2.txt</span>
cp log.txt <span class="hljs-built_in">log</span>2.txt
<span class="hljs-comment"># 复制当前目录内的 log.txt文件到 /var目录并重命名为 log1.txt</span>
cp log.txt /var/<span class="hljs-built_in">log</span>1.txt
<span class="hljs-comment"># 复制当前目录内的 bash文件夹到 /home目录并重命名为 bash2</span>
cp -R bash /home/bash2
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 复制当前目录内的 log.txt文件到 /var目录,但是 /var 目录中已经存着 log.txt,那么会提示 cp: overwrite `/var/log.txt'? 可以用 -f 强制覆盖</span>
cp <span class="hljs-_">-f</span> <span class="hljs-built_in">log</span> /var/log.txt
<span class="hljs-comment"># 复制当前目录内的 log.txt log1.txt log2.txt文件和 log233目录到 /home/log目录中</span>
cp -R log.txt <span class="hljs-built_in">log</span>1.txt <span class="hljs-built_in">log</span>2.txt <span class="hljs-built_in">log</span>233 /home/<span class="hljs-built_in">log</span>
 
<span class="hljs-comment"># 更多的命令可以用 cp --help 查看。</span>

 

mv 移动或重命名 文件/文件夹

<span class="hljs-meta"># 关于 mv 命令,可以参考上面 cp 的使用方法,没什么区别,只是一个是复制,一个是移动,把上面 cp 命令改成 mv 就能套用了。</span>
 
<span class="hljs-meta"># 移动当前目录内的 log.txt文件到 /var目录</span>
mv <span class="hljs-built_in">log</span>.txt /var/<span class="hljs-built_in">log</span>.txt
<span class="hljs-meta"># 移动当前目录内的 bash文件夹到 /home目录</span>
mv bash /home/bash
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 重命名当前目录内的 log.txt文件为 log2.txt</span>
mv <span class="hljs-built_in">log</span>.txt log2.txt
<span class="hljs-meta"># 复制当前目录内的 log.txt文件到 /var目录并重命名为 log1.txt</span>
mv <span class="hljs-built_in">log</span>.txt /var/log1.txt
<span class="hljs-meta"># 复制当前目录内的 bash文件夹到 /home目录并重命名为 bash2</span>
mv bash /home/bash2
 
<span class="hljs-meta"># 更多的命令可以用 mv --help 查看</span>

rm 删除 文件/文件夹

<span class="hljs-comment"># 删除当前目录下的 log.txt文件</span>
<span class="hljs-attribute">rm</span> log.txt
<span class="hljs-comment"># 删除当前目录下所有.txt后缀的文件</span>
rm <span class="hljs-regexp">*.txt</span>
<span class="hljs-comment"># 使用 rm 命令删除时,会提示你是否确定删除,输入 y 即删除,输入 n 则取消</span>
<span class="hljs-comment"># rm: remove regular file `log.txt'? y</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 删除当前目录下所有.txt后缀的文件</span>
rm <span class="hljs-regexp">*.txt</span>
<span class="hljs-comment"># 删除当前目录下所有以 doubi开头的文件</span>
rm doubi*
<span class="hljs-comment"># 删除当前目录下所有以 doubi开头 以.txt后缀结尾的文件</span>
rm doubi<span class="hljs-regexp">*.txt</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 当你用 rm 删除目录的时候会发现提示这不是一个文件</span>
<span class="hljs-comment"># rm bash</span>
<span class="hljs-comment"># rm: cannot remove `bash': Is a directory</span>
<span class="hljs-comment"># 可以加上 -r 来归递删除目录及其目录下的内容</span>
rm -r bash
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 因为为了避免手误删除错误,所以 rm默认是加上了 -i 的参数,也就是每一次删除文件/目录都会提示,如果觉得烦可以用 -rf 参数</span>
rm -rf bash
<span class="hljs-comment"># rm -rf 这个命令请慎重使用,而且千万不要使用 rm -rf / 或者 rm -rf /* 之类的命令(系统自杀),可能会让你系统爆炸,所以使用请慎重!</span>
 
<span class="hljs-comment"># 更多的命令可以用 rm --help 查看。</span>

 

查看/编辑文件 操作

ls 显示目录中文件

<span class="hljs-comment"># 显示当前目录下的所有文件</span>
ls <span class="hljs-_">-a</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-comment"># 命令后面加上 绝对路径/相对路径 就会显示指定文件夹内的所有文件</span>
ls <span class="hljs-_">-a</span> bash/<span class="hljs-built_in">log</span>
<span class="hljs-comment"># 相对路径,当前目录是 /root ,欲查看的目录是 /root/bash/log</span>
ls <span class="hljs-_">-a</span> /root/bash/<span class="hljs-built_in">log</span>
<span class="hljs-comment"># 绝对路径, 当前目录是 /root ,欲查看的目录是 /root/bash/log</span>
 
<span class="hljs-comment"># 更多的命令可以用 ls --help 来查看。</span>

 

du 查看 文件/文件夹 占用磁盘空间的大小

参数介绍:

<span class="hljs-deletion">-h :以人类易读的方式显示</span>
<span class="hljs-deletion">-a :显示 目录占用的磁盘空间大小,并显示其下目录和文件占用磁盘空间的大小</span>
<span class="hljs-deletion">-s :显示 目录占用的磁盘空间大小,但不显示其下子目录和文件占用的磁盘空间大小</span>
<span class="hljs-deletion">-c :显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和</span>
<span class="hljs-deletion">--apparent-size:显示目录或文件自身的大小</span>
<span class="hljs-deletion">-l :统计硬链接占用磁盘空间的大小</span>
<span class="hljs-deletion">-L :统计符号链接所指向的文件占用的磁盘空间大小</span>
# 待写...
 
# 更多的命令可以用 du --help 来查看。

 

使用示例:

<span class="hljs-comment"># 显示 /root 文件夹的大小,但不显示其子目录和文件的大小</span>
<span class="hljs-attribute">du</span> -sh
 
<span class="hljs-comment"># 显示 /root 文件夹的大小,并显示其子目录和文件的大小</span>
du -ah
 
<span class="hljs-comment"># 待写...</span>
 
<span class="hljs-comment"># 更多的命令可以用 du --help 来查看。</span>

cat 查看文件内容

假设 log.txt文件的内容为:

<span class="hljs-attribute">doubi233</span>
doubi
 
 
doubi666
 
doubi2366
doubi8888

 

查看文件:

<span class="hljs-meta"># 查看 log.txt文件的所有内容</span>
cat <span class="hljs-built_in">log</span>.txt
<span class="hljs-meta"># 输出示例如下</span>
doubi233
doubi
 
 
doubi666
 
doubi2366
doubi8888
 
<span class="hljs-meta"># 查看 log.txt文件的所有内容,并对所有行编号</span>
cat -n <span class="hljs-built_in">log</span>.txt
<span class="hljs-meta"># 输出示例如下:</span>
<span class="hljs-number">1</span> doubi233
<span class="hljs-number">2</span> doubi
<span class="hljs-number">3</span>
<span class="hljs-number">4</span>
<span class="hljs-number">5</span> doubi666
<span class="hljs-number">6</span>
<span class="hljs-number">7</span> doubi2366
<span class="hljs-number">8</span> doubi8888
 
<span class="hljs-meta"># 查看 log.txt文件的所有内容,并对非空行编号</span>
cat -b <span class="hljs-built_in">log</span>.txt
<span class="hljs-meta"># 输出示例如下:</span>
<span class="hljs-number">1</span> doubi233
<span class="hljs-number">2</span> doubi
 
 
<span class="hljs-number">3</span> doubi666
 
<span class="hljs-number">4</span> doubi2366
<span class="hljs-number">5</span> doubi8888
 
<span class="hljs-meta"># 查看 log.txt文件的所有内容,并对非空行编号,且不输出多行空行</span>
cat -bs <span class="hljs-built_in">log</span>.txt
<span class="hljs-meta"># 输出示例如下:</span>
<span class="hljs-number">1</span> doubi233
<span class="hljs-number">2</span> doubi
 
<span class="hljs-number">3</span> doubi666
 
<span class="hljs-number">4</span> doubi2366
<span class="hljs-number">5</span> doubi8888

清空文件:

<span class="hljs-meta"># 清空当前目录中的 log.txt 文件</span>
cat /dev/<span class="hljs-keyword">null</span> > log.txt
 
<span class="hljs-meta"># 清空 /var目录中的 log.txt 文件</span>
cat /dev/<span class="hljs-keyword">null</span> > /<span class="hljs-keyword">var</span>/log.txt

写入文件:

<span class="hljs-comment"># 写入文本到当前目录中的 log.txt文件中(加入文本到文件内容最后)</span>
cat <span class="hljs-meta">>> </span>log.txt <<-EOF
doubi
doubi233
doubi666
EOF
 
<span class="hljs-comment"># 清空文件并写入文本到 /var目录中的 log.txt文件中(先清空后写入)</span>
cat > <span class="hljs-regexp">/var/log</span>.txt <<-EOF
doubi
doubi233
doubi666
EOF
 
<span class="hljs-comment"># 更多的命令可以用 cat --help 来查看。</span>

 

head 查看文件内容(主要用于正查)

参数介绍:

<span class="hljs-deletion">-c 数字:显示指定文件的前 xx 字节的内容(bytes)</span>
<span class="hljs-deletion">-n 数字:显示指定文件的前 xx 行的内容</span>
<span class="hljs-deletion">-q :不显示包含指定文件名的文件头(当使用 head打开多个文件的时候,会去在每个文件输出结果的顶部添加一个包含文件名的文件头用于区分)</span>
 
# 更多的命令可以用 head --help 来查看。

使用示例:

假设 log.txt 文件内容为:

doubi1
doubi2
doubi3
doubi4
doubi5
<span class="hljs-meta"># 查看 log.txt文件的全部内容</span>
head <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 查看 log.txt文件的前 4字节的内容</span>
head -c <span class="hljs-number">4</span> <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 输出示例</span>
doub
 
<span class="hljs-meta"># 查看 log.txt文件的前 2行的内容</span>
head -n <span class="hljs-number">2</span> <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 输出示例</span>
doubi1
doubi2
 
<span class="hljs-meta"># 查看 log.txt文件的从倒数第2行到行首的内容</span>
head -n <span class="hljs-number">-2</span> <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 输出示例</span>
doubi1
doubi2
doubi3
 
<span class="hljs-meta"># 查看 log.txt log1.txt log2.txt文件的前 3行内容</span>
head -n <span class="hljs-number">3</span> <span class="hljs-built_in">log</span>.txt log1.txt log2.txt
 
<span class="hljs-meta"># 更多的命令可以用 head --help 来查看。</span>

tail 查看文件内容(主要用于倒查)

<span class="hljs-deletion">-c 数字:如果数字为正数(例如 -c +5),显示指定文件从行首第 xx 字节到最后的内容;如果数字为负数(例如 -c -5),显示指定文件从行尾第 xx 字节到最后内容。</span>
<span class="hljs-deletion">-n 数字:如果数字为正数(例如 -c +3),显示指定文件从行首第 xx 行到最后的内容;如果数字为负数(例如 -c -3),显示指定文件从行尾第 xx 行到最后的内容。</span>
<span class="hljs-deletion">-f :即时输出文件变化后增加的内容,也就是监视一个文件的内容变化(常用于监视日志输出),使用 Ctrl+C 终止</span>
 
# 更多的命令可以用 tail --help 来查看

使用示例:

假设 log.txt 文件内容为:

doubi1
doubi2
doubi3
doubi4
doubi5
<span class="hljs-meta"># 查看 log.txt文件的全部内容</span>
tail <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 查看 log.txt文件从行首 第25字节到最后的内容</span>
tail -c +<span class="hljs-number">25</span> <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 输出示例</span>
bi4
doubi5
 
<span class="hljs-meta"># 查看 log.txt文件从行尾 第4字节到最前面的内容</span>
tail -c <span class="hljs-number">-4</span> <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 输出示例</span>
bi5
 
<span class="hljs-meta"># 查看 log.txt文件的从第2行到最后一行的内容</span>
tail -n +<span class="hljs-number">2</span> <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 输出示例</span>
doubi2
doubi3
doubi4
doubi5
 
<span class="hljs-meta"># 查看 log.txt文件的后 2行的内容</span>
tail -n <span class="hljs-number">-2</span> <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 输出示例</span>
doubi4
doubi5
 
<span class="hljs-meta"># 持续查看(监视) log.txt文件的变化内容(新增加的内容),使用 Ctrl+C 终止</span>
tail -f <span class="hljs-built_in">log</span>.txt
 
<span class="hljs-meta"># 查看 log.txt log1.txt log2.txt文件的前 3行内容</span>
tail -n <span class="hljs-number">3</span> <span class="hljs-built_in">log</span>.txt log1.txt log2.txt
 
<span class="hljs-meta"># 更多的命令可以用 tail --help 来查看。</span>

 

sed 查看/编辑文件内容

参数介绍:

-i :操作后应用保存到原文件(如果不加这个参数,那么任何修改都不会影响原文件里的内容,只会把结果输出)
<span class="hljs-meta"># 待写...</span>
 
<span class="hljs-meta"># 更多的命令可以用 sed --help 来查看。</span>

使用示例:

<span class="hljs-comment"># 查看 log.txt 第3行的内容</span>
sed <span class="hljs-string">'3p'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 查看 log.txt 第2-8行的内容</span>
sed <span class="hljs-string">'2,8p'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 删除 log.txt 第4行</span>
sed -i <span class="hljs-string">'4d'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 删除 log.txt 第3-7行</span>
sed -i <span class="hljs-string">'3,7d'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 删除 log.txt 第1行</span>
sed -i <span class="hljs-string">'1d'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 删除 log.txt 最后1行</span>
sed -i <span class="hljs-string">'$d'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 删除 log.txt 文件中所有包含 233内容的行</span>
sed -i <span class="hljs-string">'/233/d'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 替换 log.txt 文件中所有 233为666</span>
sed -i <span class="hljs-string">'s/233/666/'</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 替换 log.txt 文件中所有 /ver 为 doubi/,因为有斜杠,所以需要使用  转义,但是单引号会导致无法转义,所以要改成双引号。</span>
sed -i <span class="hljs-string">"s//ver/doubi//"</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 待写...</span>
 
<span class="hljs-comment"># 更多的命令可以用 sed --help 来查看。</span>

vi、vim、nano 编辑文件内容

vi 介绍

vi 是Linux很棒的一个文本编辑器,不过也存在一些缺点,比如操作略麻烦。而 vim就相当于 vi的扩展或者加强版,主要介绍 vim。

vim 介绍

vim 相当于 vi的扩展或者加强版,一些系统只安装了 vi,所以想要用 vim还需要手动安装( yum install vim -y / apt-get install vim -y),安装 vim后,会自动替换或者说整合 vi。

当你使用 vi 命令的时候,首先进入的是 命令行模式,这个模式就是 vi 自身的功能,而点击 I 键 后就会进入编辑模式(插入模式),这时候就可以直接输入字符了,这个就是 vim的扩展功能了。当修改完成后,按 ESC键 即可退出编辑模式回到命令行模式,这时候输入 :wq 并回车代表保存并退出,如果不想保存可以使用 :q! 不保存强制退出。

vim的命令行 命令很多,我也没打算都写出来,只写出最常用的好了。

<span class="hljs-comment"># 打开当前目录下的 log.txt文件,如果没有那么会新建 log.txt文件(安装vim后,使用 vi和 vim打开文件没区别)</span>
vi log.txt
vim log.txt
 
<span class="hljs-comment"># 在命令行模式下,直接输入以下 符号和字母(区分大小写)</span>
<span class="hljs-comment">## 进入编辑模式(插入模式,按 Esc键 即可返回命令行模式)</span>
i
<span class="hljs-comment">## 删除光标当前所在的一行</span>
dd
<span class="hljs-comment">## 删除文件内所有内容</span>
dddG
<span class="hljs-comment">## 复制光标当前所在的一行</span>
yy
<span class="hljs-comment">## 粘贴刚才复制的一行内容</span>
p
<span class="hljs-comment">## 撤销上个操作(误操作可以用这个恢复)</span>
u
<span class="hljs-comment">## 保存当前文件( : 是英文的冒号)</span>
<span class="hljs-symbol">:w</span>
<span class="hljs-comment">## 另存当前文件内容为 log2.txt</span>
<span class="hljs-symbol">:w</span> log2.txt
<span class="hljs-comment">## 退出当前文件</span>
<span class="hljs-symbol">:q</span>
<span class="hljs-comment">## 不保存 并强制退出当前文件</span>
<span class="hljs-symbol">:q!</span>
<span class="hljs-comment">## 保存并退出当前文件</span>
<span class="hljs-symbol">:wq</span>
 
<span class="hljs-comment"># 更多的命令可以用 vi --help / vim --help 来查看。</span>

 

nano 介绍

nano 我挺少用的,一些系统也默认安装了这个 文本编辑器,在一些地方比 vim好用,不过我已经习惯了 vim。

<span class="hljs-meta"># 打开当前目录下的 log.txt文件,如果没有那么会新建 log.txt文件</span>
nano <span class="hljs-built_in">log</span>.txt
<span class="hljs-meta"># 进入后直接就可以输入修改文本内容了,修改后我们可以使用这个 按键保存内容</span>
Ctrl+O
<span class="hljs-meta"># 如果不需要编辑了,那么可以用这个 按键退出当前文件</span>
Ctrl+X
<span class="hljs-meta"># 如果你在退出前已经修改但没有保存,那么会提醒你是否保存,如果保存就输入 y ,不保存输入 n</span>
<span class="hljs-meta"># 然后就会让你输入要保存的文件名(默认原文件名,所以直接按 Enter回车即可,除非你要另存为其他文件名)</span>
Enter
<span class="hljs-meta"># 更多的命令可以用 nano --help 来查看。</span>

解压缩 操作

在Linux中经常会下载到压缩文件,而压缩文件的格式有很多,比如 zip、rar、gz、xz、tar.gz、tar.xz等。

比较常见的就是各种 .tar、.tar.xz、.tar.gz、.tar.bz、.tar.bz2、.tar.Z 后缀压缩包,这几个的解压缩命令基本一样,说明一下参数的意义。

tar 本身只是一个打包的作用,而 .tar 后面的 .zx / .gz / .bz 等等才是压缩格式,也就是比如 log.tar.gz 压缩包,就是先用 .tar 把指定文件/文件夹打包到一起,然后再用 gz 来压缩打包后的 .tar 为 .tar.gz 。

<span class="hljs-deletion">-x 是从压缩文件提取(解压)文件出来,所以在解压命令中都有这个参数。</span>
<span class="hljs-deletion">-c :创建一个新的压缩包文件,所以在压缩命令中都有这个参数。</span>
<span class="hljs-deletion">-f :指定要解压的压缩包文件或要压缩的文件/文件夹,所以这个参数必须放在 解压缩命令参数的最后,然后后面跟着 要解压到压缩包文件或要压缩的文件/文件夹。</span>
<span class="hljs-deletion">-j :解压缩 bz / bz2 格式的参数</span>
<span class="hljs-deletion">-J :解压缩 xz / lzip 格式的参数</span>
<span class="hljs-deletion">-z :解压缩 gz / tgz 格式的参数</span>
<span class="hljs-deletion">-Z :解压缩 Z 格式的参数</span>
<span class="hljs-deletion">-v :详细列出解压缩过程中处理的文件</span>
 
# 更多的命令可以用 tar --help 来查看。

tar gz zip等 解压 压缩包 示例

# 解压后缀为 .tar 的压缩包
tar -xf log.tar
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .tar.xz 的压缩包
tar -xJf log.tar.xz
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .tar.gz 的压缩包,有两个方法
tar -xzf log.tar.gz
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .gz 的压缩包,有两个方法,如提示命令不存在,请安装 yum <span class="hljs-keyword">install</span> gzip -y / apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">install</span> gzip -y
gzip -<span class="hljs-keyword">d</span> <span class="hljs-keyword">log</span>.gz
gunzip <span class="hljs-keyword">log</span>.gz
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .bz / .bz2 / tar.bz2 的压缩包,有两个方法
bzip2 -<span class="hljs-keyword">d</span> <span class="hljs-keyword">log</span>.bz
bunzip2 <span class="hljs-keyword">log</span>.bz
tar -jxf <span class="hljs-keyword">log</span>.tar.bz
 
bzip2 -<span class="hljs-keyword">d</span> <span class="hljs-keyword">log</span>.bz2
bunzip2 <span class="hljs-keyword">log</span>.bz2
tar -jxf <span class="hljs-keyword">log</span>.tar.bz2
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .Z / tar.Z 的压缩包,有两个方法
<span class="hljs-keyword">uncompress</span> <span class="hljs-keyword">log</span>.Z <span class="hljs-keyword">log</span>.txt
<span class="hljs-keyword">uncompress</span> <span class="hljs-keyword">log</span>.Z <span class="hljs-keyword">log</span>
————————————————————————————————————————————————————————————————————————————
tar xZf <span class="hljs-keyword">log</span>.tar.Z <span class="hljs-keyword">log</span>.txt
tar xZf <span class="hljs-keyword">log</span>.tar.Z <span class="hljs-keyword">log</span>
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .rar 的压缩包,如提示命令不存在,请安装 yum <span class="hljs-keyword">install</span> unrar -y / apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">install</span> unrar -y ,注意 rar 和 unrar 是分开的
unrar x <span class="hljs-keyword">log</span>.rar
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .zip 的压缩包,如提示命令不存在,请安装 yum <span class="hljs-keyword">install</span> unzip -y / apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">install</span> unzip -y,注意 zip 和 unzip 是分开的
unzip <span class="hljs-keyword">log</span>.zip
 
# 更多的命令可以用 tar <span class="hljs-comment">--help / gzip --help / unrar --help / unzip --help 来查看。</span>

压缩 文件/文件夹 示例

<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar 压缩包</span>
tar -cf <span class="hljs-built_in">log</span>.tar <span class="hljs-built_in">log</span>.txt
tar -cf <span class="hljs-built_in">log</span>.tar <span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 如果要压缩多个文件和文件夹,那么只需要在后面一直加下去即可</span>
tar -cf <span class="hljs-built_in">log</span>.tar <span class="hljs-built_in">log</span>.txt doub.txt <span class="hljs-built_in">log</span> bash
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar.xz 压缩包,以下的其他后缀压缩命令都是一样</span>
tar -cJf <span class="hljs-built_in">log</span>.tar.xz <span class="hljs-built_in">log</span>.txt
tar -cJf <span class="hljs-built_in">log</span>.tar.xz <span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar.gz 压缩包</span>
tar -czf <span class="hljs-built_in">log</span>.tar.gz <span class="hljs-built_in">log</span>.txt
tar -czf <span class="hljs-built_in">log</span>.tar.gz <span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.gz 压缩包</span>
gzip <span class="hljs-built_in">log</span>.gz <span class="hljs-built_in">log</span>.txt
gzip <span class="hljs-built_in">log</span>.gz <span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar.bz 压缩包</span>
暂时没查到
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.bz / log.tar.bz / log.bz2 / log.tar.bz2压缩包</span>
bzip2 -z <span class="hljs-built_in">log</span>.txt
bzip2 -z <span class="hljs-built_in">log</span>
 
tar cjf <span class="hljs-built_in">log</span>.tar.bz2 <span class="hljs-built_in">log</span>.txt
tar cjf <span class="hljs-built_in">log</span>.tar.bz2 <span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.Z / log.tar.Z 压缩包</span>
compress <span class="hljs-built_in">log</span>.txt
compress <span class="hljs-built_in">log</span>
 
tar cZf <span class="hljs-built_in">log</span>.tar.Z <span class="hljs-built_in">log</span>.txt
tar cZf <span class="hljs-built_in">log</span>.tar.Z <span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.rar 压缩包,如提示命令不存在,请安装 yum install rar -y / apt-get install rar -y ,注意 rar 和 unrar 是分开的</span>
unrar a <span class="hljs-built_in">log</span>.rar <span class="hljs-built_in">log</span>.txt
unrar a <span class="hljs-built_in">log</span>.rar <span class="hljs-built_in">log</span>
————————————————————————————————————————————————————————————————————————————
<span class="hljs-meta"># 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.zip 压缩包,如提示命令不存在,请安装 yum install zip -y / apt-get install zip -y ,注意 zip 和 unzip 是分开的</span>
zip <span class="hljs-built_in">log</span>.zip <span class="hljs-built_in">log</span>.txt
zip <span class="hljs-built_in">log</span>.zip <span class="hljs-built_in">log</span>
 
<span class="hljs-meta"># 更多的命令可以用 tar --help / gzip --help / rar --help / zip --help 来查看。</span>

网络工具

wget 下载工具

wget 是Linux系统最常用的工具之一,命令行方式的多功能下载工具,支持HTTP,HTTPS和FTP协议。

参数介绍:

# 只介绍最常用的参数
# 如果提示命令不存在,那么使用 yum install wget -y / apt-get install wget -y 来安装(有一些非常精简的系统可能会没装)
 
<span class="hljs-deletion">-b :启动后,后台下载</span>
<span class="hljs-deletion">-q :安静模式(不输出任何信息)</span>
<span class="hljs-deletion">-c :断点续传下载文件</span>
<span class="hljs-deletion">-O :指定下载后的文件名(可使用绝对路径目录+文件名)</span>
<span class="hljs-deletion">-P :指定下载后的文件目录(-P只能指定下载目录,并不能指定文件名)</span>
<span class="hljs-deletion">-t :设置重试次数(0代表无限)</span>
<span class="hljs-deletion">-T :设置超时时间(单位:秒)</span>
<span class="hljs-deletion">-N :只获取比本地新的文件(新的覆盖旧的)</span>
<span class="hljs-deletion">-4 :仅连接至 IPv4地址</span>
<span class="hljs-deletion">-6 :仅连接至 IPv6地址</span>
<span class="hljs-deletion">--limit-rate=xxxk :限制下载速度(k代表KB/S)</span>
<span class="hljs-deletion">--post-data :通过POST方式发送数据</span>
<span class="hljs-deletion">--no-check-certificate :不验证服务器的SSL证书</span>
 
# 更多的命令可以用 wget --help 来查看。

使用示例:

<span class="hljs-comment"># 下载一个文件到当前目录</span>
<span class="hljs-attribute">wget</span> https://softs.pw/100MB.bin
 
<span class="hljs-comment"># 下载文件到当前目录并重命名为 200MB.bin</span>
wget -O <span class="hljs-string">"200MB.bin"</span> https://softs.pw/100MB.bin
 
<span class="hljs-comment"># 下载文件到 /root目录(-P只能指定下载目录,并不能指定文件名)</span>
wget -P <span class="hljs-string">"/root"</span> https://softs.pw/100MB.bin
 
<span class="hljs-comment"># 下载文件到 /root/doubi目录并重命名为 200MB.bin</span>
wget -O <span class="hljs-string">"/root/doubi/200MB.bin"</span> https://softs.pw/100MB.bin
 
<span class="hljs-comment"># 下载文件完成之前 wget进程结束了,那么可以使用断点续传重新下载中断的文件(前提是下载服务器支持断点续传)</span>
wget -c https://softs.pw/100MB.bin
<span class="hljs-comment"># 通过后台下载文件到 /root/doubi目录并重命名为 200MB.bin</span>
wget -b -O <span class="hljs-string">"/root/doubi/200MB.bin"</span> https://softs.pw/100MB.bin
<span class="hljs-comment"># Continuing in background, pid 2333.</span>
<span class="hljs-comment"># Output will be written to `wget-log'.</span>
<span class="hljs-comment"># 后台下后,你可以使用以下命令来查看下载进度:</span>
tail -f wget-log
 
<span class="hljs-comment"># 有时候一些Linux系统中的SSL证书不完整,会导致下载一些 HTTPS网站文件的时候会验证SSL证书失败,可以这样做</span>
<span class="hljs-comment"># 不验证服务器SSL证书,下载文件到当前目录并重命名为 200MB.bin</span>
wget --<span class="hljs-literal">no</span>-check-certificate -O <span class="hljs-string">"200MB.bin"</span> https://softs.pw/100MB.bin
 
<span class="hljs-comment"># 使用wget发送POST请求数据</span>
wget --post-data <span class="hljs-string">"user=doubi&passwd=23333"</span> https://xxx.xx/
 
<span class="hljs-comment"># 下载文件到当前目录 并仅通过IPv4连接 只获取比本地新的文件,限速 200KB/S</span>
wget --limit-rate=<span class="hljs-number">200k</span> -N -<span class="hljs-number">4</span> https://softs.pw/100MB.bin
 
<span class="hljs-comment"># 下载文件到当前目录 并重试次数为 1,超时时间为 2秒</span>
wget -t1 -T2 https://softs.pw/100MB.bin
 
<span class="hljs-comment"># 通过 wget来获取服务器的外网IP(-qO- 代表运行完会输出下载的信息,并不会保存到本地文件)</span>
wget -qO- ipinfo.io/ip
 
<span class="hljs-comment"># 更多的命令可以用 wget --help 来查看。</span>

curl 下载工具

curl是Linux系统一个利用URL规则在命令行下工作的文件传输工具,是一款很强大的HTTP命令行工具。它支持文件的上传和下载,是综合传输工具,但习惯称curl为下载工具。

参数介绍:

# 只介绍最常用的参数
# 如果提示命令不存在,那么使用 yum install curl -y / apt-get install curl -y 来安装(有一些非常精简的系统可能会没装)
 
<span class="hljs-deletion">-s :安静模式(不会输出任何信息)</span>
<span class="hljs-deletion">-C :断点续传下载文件</span>
<span class="hljs-deletion">-o :输出写入到文件中</span>
<span class="hljs-deletion">-O :输出写入到文件,文件名为 远程文件的名称</span>
<span class="hljs-deletion">-k :不验证服务器SSL证书</span>
<span class="hljs-deletion">-T :上传文件</span>
<span class="hljs-deletion">-4 :仅连接至 IPv4地址</span>
<span class="hljs-deletion">-6 :仅连接至 IPv6地址</span>
<span class="hljs-deletion">-m :设置传输总时间(单位:秒)</span>
<span class="hljs-deletion">--retry :设置重试次数</span>
<span class="hljs-deletion">--data :通过POST方式发送数据</span>
<span class="hljs-deletion">--limit-rate xxxK :限制下载速度(K代表KB/S)</span>
 
# 更多的命令可以用 curl --help 来查看。

使用示例:

<span class="hljs-comment"># 获取当前服务器的外网IP</span>
curl ipinfo.io/ip
 
<span class="hljs-comment"># 获取一个文件保存到当前目录中</span>
wget -O <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/softs.pw/</span>Bash/ssr.sh
 
<span class="hljs-comment"># 获取一个文件保存到 /root/doubi目录中 并修改文件名为 233.sh</span>
curl -o <span class="hljs-string">"/root/doubi/233.sh"</span> <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/softs.pw/</span>Bash/ssr.sh
 
<span class="hljs-comment"># 下载文件完成之前 curl进程结束了,那么可以使用断点续传重新下载中断的文件(前提是下载服务器支持断点续传)</span>
curl -C -O <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/softs.pw/</span><span class="hljs-number">100</span>MB.bin
 
<span class="hljs-comment"># 有时候一些Linux系统中的SSL证书不完整,会导致访问/下载一些 HTTPS网站/文件的时候会验证SSL证书失败,可以这样做</span>
<span class="hljs-comment"># 不验证服务器SSL证书,下载文件到当前目录并重命名为 233.sh</span>
curl -k -o <span class="hljs-string">"233.sh"</span> <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/softs.pw/</span>Bash/ssr.sh
 
<span class="hljs-comment"># 使用curl发送GET请求数据</span>
curl <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/xxx.xx/</span>?user=doubi
 
<span class="hljs-comment"># 使用curl发送POST请求数据</span>
curl --data <span class="hljs-string">"user=doubi&passwd=23333"</span> <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/xxx.xx/</span>
 
<span class="hljs-comment"># 下载文件到当前目录 并仅通过IPv4连接,限速 200KB/S</span>
curl --limit-rate <span class="hljs-number">200</span>K -<span class="hljs-number">4</span> <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/softs.pw/</span><span class="hljs-number">100</span>MB.bin
 
<span class="hljs-comment"># 下载文件到当前目录 并重试次数为 1,超时时间为 2秒</span>
curl --<span class="hljs-keyword">retry</span> <span class="hljs-number">1</span> -m <span class="hljs-number">10</span> <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/softs.pw/</span><span class="hljs-number">100</span>MB.bin
 
<span class="hljs-comment"># 更多的命令可以用 curl --help 来查看。</span>

netstat 查看链接和端口监听等信息

参数介绍:

<span class="hljs-deletion">-n :不显示别名(主机名/域名以 数字或IP显示)</span>
<span class="hljs-deletion">-e :显示其他/更多信息</span>
<span class="hljs-deletion">-p :显示进程PID/进程名</span>
<span class="hljs-deletion">-c :持续输出(设置后会每隔 1秒输出一次,Ctrl+C 终止)</span>
<span class="hljs-deletion">-l :显示正在监听的套接字</span>
<span class="hljs-deletion">-a :显示全部信息</span>
 
# 下面这些就不很常用了。
<span class="hljs-deletion">-r :显示路由表</span>
<span class="hljs-deletion">-i :显示网络接口(网卡)</span>
<span class="hljs-deletion">-g :显示多播组信息</span>
<span class="hljs-deletion">-s :显示网络统计</span>
<span class="hljs-deletion">-M :显示伪装连接</span>
<span class="hljs-deletion">-v :显示正在进行的工作</span>
 
# 更多的命令可以用 netstat --help 来查看。

使用示例:

<span class="hljs-comment"># 显示当前服务器的所有连接信息</span>
netstat <span class="hljs-_">-a</span>
 
<span class="hljs-comment"># 显示当前服务器的所有 TCP连接信息</span>
netstat -at
 
<span class="hljs-comment"># 显示当前服务器的所有 UDP连接信息</span>
netstat -au

一般来说经常使用这个命令:

<span class="hljs-comment"># 显示当前服务器的所有正在监听 TCP端口的信息,并且 显示进程PID和进程名,但不显示别名(域名以IP显示),这个命令算是最常用的了。</span>
<span class="hljs-attribute">netstat</span> -lntp
 
<span class="hljs-comment"># 输出示例</span>
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0.0.0.0:80</span> <span class="hljs-number">0.0.0.0</span>:* LISTEN <span class="hljs-number">14233</span>/nginx.conf
tcp <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0.0.0.0:22</span> <span class="hljs-number">0.0.0.0</span>:* LISTEN <span class="hljs-number">1555</span>/sshd
tcp <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0.0.0.0:443</span> <span class="hljs-number">0.0.0.0</span>:* LISTEN <span class="hljs-number">14233</span>/nginx.conf
tcp6 <span class="hljs-number">0</span> <span class="hljs-number">0</span> :::<span class="hljs-number">22</span> :::* LISTEN <span class="hljs-number">1555</span>/sshd
<span class="hljs-comment"># 显示监听 80端口的进程PID和进程名,grep是匹配并显示 符合关键词的行。</span>
netstat -lntp|grep <span class="hljs-string">":80"</span>
 
<span class="hljs-comment"># 输出示例</span>
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0.0.0.0:80</span> <span class="hljs-number">0.0.0.0</span>:* LISTEN <span class="hljs-number">14233</span>/nginx.conf
 
<span class="hljs-comment"># 显示 ssh的监听情况,grep是匹配并显示 符合关键词的行。</span>
netstat -lntp|grep <span class="hljs-string">"ssh"</span>
 
<span class="hljs-comment"># 输出示例</span>
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0.0.0.0:22</span> <span class="hljs-number">0.0.0.0</span>:* LISTEN <span class="hljs-number">1555</span>/sshd

表头解释:

Proto :连接协议(tcp/udp是IPv4,tcp6/udp6是IPv6)
Recv-Q : 接收队列(基本都是0,如果不是代表堆积)
Send-Q :发送队列(基本都是0,如果不是代表堆积)
Local Address :本地地址和端口
Foreign Address :对外地址和端口
State :连接状态
PID/Program name :进程PID/进程名
<span class="hljs-comment"># 每隔 1秒显示一次当前服务器的所有连接信息</span>
netstat -c
 
<span class="hljs-comment"># 每隔 1秒显示一次当前服务器的所有 TCP连接信息</span>
netstat -ct
 
<span class="hljs-comment"># 每隔 1秒显示一次当前服务器的所有 UDP连接信息</span>
netstat -cu
 
<span class="hljs-comment"># 显示当前服务器的路由表</span>
netstat -r
 
<span class="hljs-comment"># 显示当前服务器的网络接口信息(网卡)</span>
netstat -i
 
<span class="hljs-comment"># 显示当前服务器的网络统计信息</span>
netstat <span class="hljs-_">-s</span>
 
<span class="hljs-comment"># 更多的命令可以用 netstat --help 来查看。</span>

在使用 netstat命令中,会显示一些连接状态,下面是各状态的意思:

<span class="hljs-attribute"><span class="hljs-nomarkup">LISTEN</span></span>
<span class="hljs-comment"># 监听来自远程连接的 TCP端口连接请求</span>
<span class="hljs-attribute">SYN</span>-SENT
<span class="hljs-comment"># 在发送连接请求后,等待匹配的连接请求</span>
<span class="hljs-attribute">SYN</span>-RECEIVED
<span class="hljs-comment"># 在收到和发送一个连接请求后,等待对方对连接请求的确认</span>
<span class="hljs-attribute">ESTABLISHED</span>
<span class="hljs-comment"># 代表一个打开的连接</span>
<span class="hljs-attribute">FIN</span>-WAIT-1
<span class="hljs-comment"># 等待远程 TCP连接中断请求,或先前的连接中断请求的确认</span>
<span class="hljs-attribute">FIN</span>-WAIT-2
<span class="hljs-comment"># 从远程 TCP等待连接中断请求</span>
<span class="hljs-attribute">CLOSE</span>-WAIT
<span class="hljs-comment"># 等待从本地用户发来的连接中断请求</span>
<span class="hljs-attribute">CLOSING</span>
<span class="hljs-comment"># 等待远程TCP对连接中断的确认</span>
<span class="hljs-attribute">LAST</span>-ACK
<span class="hljs-comment"># 等待原来的发向远程TCP的连接中断请求的确认</span>
<span class="hljs-attribute">TIME</span>-WAIT
<span class="hljs-comment"># 等待足够的时间,以确保远程TCP接收到连接中断请求的确认</span>
<span class="hljs-attribute">CLOSED</span>
<span class="hljs-comment"># 没有任何连接状态(或者关闭了连接)</span>

系统命令

ps 查看进程信息

参数介绍:

<span class="hljs-meta"># 更多的命令可以用 man ps 来查看。</span>

使用示例:

<span class="hljs-comment"># 显示当前进程信息</span>
ps -ef
 
<span class="hljs-comment"># 显示 ssh 进程( grep -v grep 表示排除关键词grep,因为使用 grep匹配ssh,也会把grep自己的进程匹配进去的)</span>
ps -ef|<span class="hljs-keyword">grep</span> -v <span class="hljs-keyword">grep</span>|<span class="hljs-keyword">grep</span> ssh
<span class="hljs-comment"># 输出示例</span>
UID PID PPID C STIME TTY TIME CMD <span class="hljs-comment">#注意使用上面命令的话是不会显示表头这一行的,我只是为了更好理解加上的</span>
root <span class="hljs-number">1738</span> <span class="hljs-number">1</span> <span class="hljs-number">0</span> <span class="hljs-number">01</span>/<span class="hljs-number">27</span> ? <span class="hljs-number">00</span>:08:<span class="hljs-number">56</span> /usr/sbin/sshd
<span class="hljs-comment"># 待写...</span>

表头解释:

<span class="hljs-built_in">UID</span> :启动进程的用户
PID :进程标识符(进程 <span class="hljs-number">1</span>代表init 是整个系统的父进程)
PPID :父进程标识符(进程 <span class="hljs-number">1</span>代表init 是整个系统的父进程)
C :CPU占用率 %
STIME :启动进程的日期
TTY :终端号
TIME :进程运行时间(非休眠状态)
CMD :启动进程的命令(或进程名/进程程序所在目录)

kill 结束进程

<span class="hljs-comment"># 当我们想要结束一个进程的时候,我们可以用 kill 命令</span>
<span class="hljs-comment"># PID是每个进程的一个唯一标识符,可以使用上面的 ps 命令来查看你要结束进程的PID。</span>
 
<span class="hljs-comment"># 假设我们要结束 Nginx的进程,那么这样做( grep -v grep 表示排除关键词grep,因为使用 grep匹配ssh,也会把grep自己的进程匹配进去的):</span>
ps -ef|<span class="hljs-keyword">grep</span> -v <span class="hljs-keyword">grep</span>|<span class="hljs-keyword">grep</span> <span class="hljs-string">"nginx"</span>
 
<span class="hljs-comment"># 输出示例</span>
UID PID PPID C STIME TTY TIME CMD <span class="hljs-comment">#注意使用上面命令的话是不会显示表头这一行的,我只是为了更好理解加上的</span>
root <span class="hljs-number">2356</span> <span class="hljs-number">1</span> <span class="hljs-number">0</span> <span class="hljs-number">04</span>/<span class="hljs-number">03</span> ? <span class="hljs-number">00</span>:<span class="hljs-number">03</span>:<span class="hljs-number">12</span> nginx
 
<span class="hljs-comment"># 然后我们可以看到第二列的 PID 进程标识符,然后我们 kill 即可。</span>
<span class="hljs-keyword">kill</span> -<span class="hljs-number">9</span> <span class="hljs-number">2356</span>
 
<span class="hljs-comment"># 中断进程 -2 相当于 程序运行在前台,然后输入 Ctrl+C 的效果,但是进程有权利忽略,所以不一定能结束进程</span>
<span class="hljs-keyword">kill</span> -<span class="hljs-number">2</span> PID
<span class="hljs-comment"># 强制结束进程 -9 ,注意:强制结束某个进程后,可能会造成进程数据丢失等问题!</span>
<span class="hljs-keyword">kill</span> -<span class="hljs-number">9</span> PID

free 查看内存使用信息

参数介绍:

<span class="hljs-deletion">-b :以 字节(bytes/B) 为单位显示</span>
<span class="hljs-deletion">-k :以 KB 为单位显示</span>
<span class="hljs-deletion">-m :以 MB 为单位显示</span>
<span class="hljs-deletion">-g :以 GB 为单位显示</span>
<span class="hljs-deletion">--tera :以 TB 为单位显示</span>
<span class="hljs-deletion">-h :以 人类易读的方式输出</span>
<span class="hljs-deletion">--si :以 1000为单位转换,而不是 1024(1MB=1*1024KB改成 1MB=1*1000KB)</span>
<span class="hljs-deletion">-t :显示 内存总数 行</span>
<span class="hljs-deletion">-s 时间 :每隔 X秒输出一次(重复输出监视内存,使用 Ctrl+C 终止)</span>
<span class="hljs-deletion">-c 次数 :每隔 1秒输出 X次</span>
 
# 更多的命令可以用 free --help 来查看。

使用示例:

<span class="hljs-meta"># 显示当前系统内存(默认 free = free -k,单位为 KB)</span>
<span class="hljs-built_in">free</span>
 
<span class="hljs-meta"># 输出示例</span>
total used <span class="hljs-built_in">free</span> shared buffers cached
Mem: <span class="hljs-number">250872</span> <span class="hljs-number">237752</span> <span class="hljs-number">13120</span> <span class="hljs-number">0</span> <span class="hljs-number">34620</span> <span class="hljs-number">70520</span>
-/+ buffers/cache: <span class="hljs-number">132612</span> <span class="hljs-number">118260</span>
Swap: <span class="hljs-number">643064</span> <span class="hljs-number">1744</span> <span class="hljs-number">641320</span>
 
<span class="hljs-meta"># 以单位 B/KB/MB/GB/TG 显示当前系统内存</span>
<span class="hljs-built_in">free</span> -b / <span class="hljs-built_in">free</span> -k / <span class="hljs-built_in">free</span> -m / <span class="hljs-built_in">free</span> -g / <span class="hljs-built_in">free</span> --tera
 
<span class="hljs-meta"># 以人类易读的方式 显示当前系统内存</span>
<span class="hljs-built_in">free</span> -h
 
<span class="hljs-meta"># 输出示例</span>
total used <span class="hljs-built_in">free</span> shared buffers cached
Mem: <span class="hljs-number">244</span>M <span class="hljs-number">232</span>M <span class="hljs-number">12</span>M <span class="hljs-number">0</span>B <span class="hljs-number">33</span>M <span class="hljs-number">68</span>M
-/+ buffers/cache: <span class="hljs-number">129</span>M <span class="hljs-number">115</span>M
Swap: <span class="hljs-number">627</span>M <span class="hljs-number">1.7</span>M <span class="hljs-number">626</span>M
 
<span class="hljs-meta"># 以 1000为单位转换并使用 MB为单位 显示当前系统内存(1MB=1*1024KB改成 1MB=1*1000KB)</span>
<span class="hljs-built_in">free</span> -m --si
 
<span class="hljs-meta"># 每隔 3秒并使用 MB为单位 显示一次当前系统内存</span>
<span class="hljs-built_in">free</span> -ms <span class="hljs-number">3</span>
 
<span class="hljs-meta"># 每隔 1秒并使用 MB为单位 显示 5次当前系统内存</span>
<span class="hljs-built_in">free</span> -mc <span class="hljs-number">5</span>
 
<span class="hljs-meta"># 每隔 2秒并使用 MB为单位 总共显示 6次当前系统内存</span>
<span class="hljs-built_in">free</span> -m -c <span class="hljs-number">6</span> -s <span class="hljs-number">2</span>
 
<span class="hljs-meta"># 更多的命令可以用 free --help 来查看。</span>

表头解释:

<span class="hljs-meta"># 说明示例</span>
total used <span class="hljs-built_in">free</span> shared buffers cached
Mem: <span class="hljs-number">244</span>M <span class="hljs-number">232</span>M <span class="hljs-number">12</span>M <span class="hljs-number">0</span>B <span class="hljs-number">33</span>M <span class="hljs-number">69</span>M
-/+ buffers/cache: <span class="hljs-number">129</span>M <span class="hljs-number">115</span>M
Swap: <span class="hljs-number">627</span>M <span class="hljs-number">1.7</span>M <span class="hljs-number">626</span>M
<span class="hljs-meta"># Mem 行,表示物理内存统计</span>
total :系统 总物理内存
used :系统 已分配物理内存(但非全部都在使用,包含buffers好cached)
<span class="hljs-built_in">free</span> :系统 未分配物理内存
shared :系统 共享内存,一般都是 <span class="hljs-number">0</span>
buffers :系统 分配但未使用的 buffers数量
cached :系统 分配但未使用的 cached数量
 
<span class="hljs-meta"># -/+ buffers/cache 行,表示物理内存的缓存统计</span>
used :系统 实际使用的内存
<span class="hljs-meta"># user= Mem行 used-buffers-cached(232-33-69=130,因单位转换问题 所以会有一点差距)</span>
<span class="hljs-built_in">free</span> :系统 实际可用的内存
<span class="hljs-meta"># free= Mem行 free+buffers+cached(12+33+69=114,因单位转换问题 所以会有一点差距)</span>
 
<span class="hljs-meta"># 所以我们看系统的真实 使用/剩余内存 只需要看这一行即可!</span>
 
<span class="hljs-meta"># Swap 行,表示硬盘的交换分区(虚拟内存)统计</span>
total :系统 总虚拟内存
used :系统 已分配虚拟内存
<span class="hljs-built_in">free</span> :系统 未分配虚拟内存
 
<span class="hljs-meta"># KVM虚拟化的VPS,可以用这个教程手动添加 SWAP虚拟内存:https:<span class="hljs-comment">//doub.bid/linux-jc7/</span></span>

date 查看/设置 系统时间

参数介绍:

-d :以指定的时间格式 显示时间
-f :显示 DATE FILE文件中的每行时间(我也不懂)
-r :显示 文件/文件夹 最后修改时间
-<span class="hljs-keyword">s</span> :设置 系统时间
-u :显示 UTC时间
 
<span class="hljs-comment"># 时间格式</span>
 
%% - 显示字符%
%a - 星期几的缩写(Sun..Sat)
%A - 星期几的完整名称(Sunday...Saturday)
%b - 月份的缩写(Jan..Dec)
%B - 月份的完整名称(January..December)
%c - 日期与时间。只输入date指令也会显示同样的结果
%C - 世纪(年份除<span class="hljs-number">100</span>后去整) [<span class="hljs-number">00</span>-<span class="hljs-number">99</span>]
%d - 日期(以<span class="hljs-number">01</span>-<span class="hljs-number">31</span>来表示)。
%D - 日期(含年月日)。
%e - 一个月的第几天 ( <span class="hljs-number">1</span>..<span class="hljs-number">31</span>)
%F - 日期,同%Y-%m-%d
%g - 年份(yy)
%G - 年份(yyyy)
%h - 同%b
%H - 小时(<span class="hljs-number">00</span>..<span class="hljs-number">23</span>)
%I - 小时(<span class="hljs-number">01</span>..<span class="hljs-number">12</span>)
%j - 一年的第几天(<span class="hljs-number">001</span>..<span class="hljs-number">366</span>)
%k - 小时( <span class="hljs-number">0</span>..<span class="hljs-number">23</span>)
%l - 小时( <span class="hljs-number">1</span>..<span class="hljs-number">12</span>)
%m - 月份(<span class="hljs-number">01</span>..<span class="hljs-number">12</span>)
%M - 分钟(<span class="hljs-number">00</span>..<span class="hljs-number">59</span>)
%n - 换行
%N - 纳秒(<span class="hljs-number">000000000</span>..<span class="hljs-number">999999999</span>)
%p - AM <span class="hljs-keyword">or</span> PM
%P - am <span class="hljs-keyword">or</span> pm
%r - <span class="hljs-number">12</span>小时制时间(hh:mm:ss [AP]M)
%R - <span class="hljs-number">24</span>小时制时间(hh:mm)
%s - 从<span class="hljs-number">00</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> <span class="hljs-number">1970</span>-<span class="hljs-number">01</span>-<span class="hljs-number">01</span> UTC开始的秒数
%S - 秒(<span class="hljs-number">00</span>..<span class="hljs-number">60</span>)
%t - 制表符
%T - <span class="hljs-number">24</span>小时制时间(hh:mm:ss)
%u - 一周的第几天(<span class="hljs-number">1</span>..<span class="hljs-number">7</span>); <span class="hljs-number">1</span> 表示星期一
%U - 一年的第几周,周日为每周的第一天(<span class="hljs-number">00</span>..<span class="hljs-number">53</span>)
%V - 一年的第几周,周一为每周的第一天 (<span class="hljs-number">01</span>..<span class="hljs-number">53</span>)
%w - 一周的第几天 (<span class="hljs-number">0</span>..<span class="hljs-number">6</span>); <span class="hljs-number">0</span> 代表周日
%W - 一年的第几周,周一为每周的第一天(<span class="hljs-number">00</span>..<span class="hljs-number">53</span>)
%x - 日期(mm/dd/yy)
%X - 时间(%H:%M:%S)
%y - 年份(<span class="hljs-number">00</span>..<span class="hljs-number">99</span>)
%Y - 年份 (<span class="hljs-number">1970</span>…)
%z - RFC-<span class="hljs-number">2822</span> 风格数字格式时区(-<span class="hljs-number">0500</span>)
%Z - 时区(e.g., EDT), 无法确定时区则为空
 
<span class="hljs-comment"># 更多的命令可以用 date --help 来查看。</span>

使用示例:

<span class="hljs-comment"># 显示 当前系统时间</span>
date
<span class="hljs-comment"># 输出:Wed Apr 5 12:38:44 CST 2017</span>
 
<span class="hljs-comment"># 显示当前系统的 UTC时间</span>
date -u
<span class="hljs-comment"># 输出:Wed Apr 5 04:30:06 UTC 2017</span>
<span class="hljs-comment"># 显示 log.txt 文件的最后修改时间</span>
date -r <span class="hljs-keyword">log</span>.txt
<span class="hljs-comment"># 显示 当前日期的年份</span>
date +%Y
<span class="hljs-comment"># 输出:2017</span>
 
<span class="hljs-comment"># 显示 当前日期的月份</span>
date +%m
<span class="hljs-comment"># 输出:4</span>
 
<span class="hljs-comment"># 显示 各种格式类型的日期</span>
date +%D
<span class="hljs-comment"># 输出:04/05/17</span>
 
date +%Y-%m-%d
<span class="hljs-comment"># 输出:2017-04-05</span>
 
date +%m/%d/%y
<span class="hljs-comment"># 输出:04/05/17</span>
 
date +%m/%d/%Y
<span class="hljs-comment"># 输出:04/05/2017</span>
 
<span class="hljs-comment"># 显示 Unix时间戳</span>
date +%s
<span class="hljs-comment"># 输出:1491367399</span>
 
<span class="hljs-comment"># 显示一个完整的时间(年、月、日、小时、分钟、秒钟、周几 时区)</span>
date <span class="hljs-string">"+%Y-%m-%d %H:%M:%S %u %Z"</span>
<span class="hljs-comment"># 输出:2017-04-05 12:12:15 3 CST</span>
 
<span class="hljs-comment"># 设置 系统时间(年、月、日)</span>
date -<span class="hljs-keyword">s</span> <span class="hljs-string">"2017-04-05"</span>
 
<span class="hljs-comment"># 设置 系统时间(小时、分钟、秒钟)</span>
date -<span class="hljs-keyword">s</span> <span class="hljs-string">"10:29:05"</span>
 
<span class="hljs-comment"># 设置 系统时间(年、月、日、小时、分钟、秒钟)</span>
date -<span class="hljs-keyword">s</span> <span class="hljs-string">"2017-04-05 10:29:05"</span>
 
<span class="hljs-comment"># 更多的命令可以用 date --help 来查看。</span>

再教你们一个修改时区为上海(北京)时区的方法:

cp <span class="hljs-meta-keyword">/usr/</span>share<span class="hljs-meta-keyword">/zoneinfo/</span>Asia/Shanghai <span class="hljs-meta-keyword">/etc/</span>localtime

然后再用 date 查看时间,就会发现时区变为 CST 了。

chmod 修改 文件/文件夹 权限

参数介绍:

-c :只输出被改变权限的文件信息
-f :当chmod不能改变文件模式时,不通知文件的用户
-R :可递归遍历子目录,把修改应到目录下所有文件和子目录
-v :无论修改是否成功,输出每个文件的信息
 
<span class="hljs-section"># 操作符号:</span>
 
<span class="hljs-bullet">+ </span>:添加某个权限。
<span class="hljs-bullet">- </span>:取消某个权限。
= :赋予给定权限并取消其他所有权限(如果有的话)。
 
<span class="hljs-section"># 权限设置字母:</span>
 
r :可读
w :可写
x :可执行
X :只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性
s :在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位
t :保存程序的文本到交换设备上
u :当前用户的权限
g :当前用户同组的权限
o :其他用户的权限
 
<span class="hljs-section"># 权限设定数字:</span>
 
<span class="hljs-section"># 数字表示的属性含义:</span>
0 :表示没有权限
1 :表示可执行权限
2 :表示可写权限
4 :表示可读权限
 
<span class="hljs-section"># 然后将其相加,所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。</span>
<span class="hljs-section"># 如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。</span>
 
<span class="hljs-section"># 更多的命令可以用 chmod --help 来查看。</span>

使用示例:

<span class="hljs-comment"># 当需要运行 可执行的脚本或者程序(比如 Go语言编写的软件)的时候,需要赋予执行权限</span>
<span class="hljs-keyword">chmod</span> +<span class="hljs-keyword">x</span> ssr.sh
 
<span class="hljs-comment"># 赋予 log.txt 文件可读权限</span>
<span class="hljs-keyword">chmod</span> <span class="hljs-number">444</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 赋予 /ver/log 文件夹 可读、可写权限</span>
<span class="hljs-keyword">chmod</span> <span class="hljs-number">666</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 赋予 /home/www 文件夹 可读、可写、可执行权限</span>
<span class="hljs-keyword">chmod</span> <span class="hljs-number">777</span> <span class="hljs-keyword">log</span>.txt
 
<span class="hljs-comment"># 赋予 /home/www 文件夹极其所有子目录和文件 可读、可写、可执行权限</span>
<span class="hljs-keyword">chmod</span> -R <span class="hljs-number">777</span> <span class="hljs-keyword">log</span>.txt
<span class="hljs-comment"># 更多的命令可以用 chmod --help 来查看。</span>

 

uname 获取操作系统信息

参数介绍:

–a:显示 全部信息
–m:显示 系统位数
–n:显示 主机名称
–r:显示 操作系统的发行编号
–s:显示 操作系统的名称
–v:显示 操作系统的版本
–p:输出 处理器类型 或“unknown”
–i:输出 硬件平台 或“unknown”
–o:输出 操作系统名称
 
# 更多的命令可以用 uname –help 来查看。

使用示例:

root@doub.bid:~# uname #在使用 uname 的时候,相当于是使用 uname -s
Linux
root@doub.bid:~# uname -a
Linux doub.bid 2.6.32–042stab120.6 #1 SMP Thu Oct 27 16:59:03 MSK 2016 i686 GNU/Linux
root@doub.bid:~# uname -m #输出一般是64位: x86_64 / 32位: i386 或分支 i686
i686
root@doub.bid:~# uname -n
doub.bid
root@doub.bid:~# uname -r
2.6.32–042stab120.6
root@doub.bid:~# uname -s
Linux
root@doub.bid:~# uname -v
#1 SMP Thu Oct 27 16:59:03 MSK 2016
root@doub.bid:~# uname -p
unknown
root@doub.bid:~# uname -i
unknown
root@doub.bid:~# uname -o
GNU/Linux

我只是暂时把我想到的写出来了,我还会继续慢慢添加的,有什么建议可以在下面留言评论。

转载请超链接注明:逗比根据地 » 『持续更新』Linux 常用命令简单介绍 —— 基础篇

发表评论