GNU/Linux

1 APT

1.1 设置国内源

sudo gedit /etc/apt/sources.list:

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

上述源里的 bionic 是当前版本的别名,需要正确。

版本名使用如下命令查看:

lsb_release -a

1.2 基本命令

# 从远程更新软件列表
apt update

# 查询是否存在某软件
apt search tomcat
apt search ^tomcat

# 安装软件
apt install tomcat8

# 卸载软件
apt remove tomcat8

# 清理
apt autoclean
apt autoremove

apt 命令是一些更加底层的命令,比如 apt-get/apt-cache 的进一步封装。

在一些旧的系统中,只有 apt-get/apt-cache 并没有 apt 命令,但它们使用时类似的。

2 常用命令

2.1 文件相关

# list, 查看目录文件
ls
ls -a
ls --all # 等同于上面
ls -l
ls -al

# move, 重命名或移动
mv aaa.txt bbb.txt
mv /tmp/xxx.txt ~/

# copy, 复制文件
cp /tmp/xxx.txt ~/aaa/yyy.txt
cp /tmp/xxx.txt ~/aaa/  # 可以只指定目标文件夹
cp -r /tmp/xxx ~/bbb/   # 使用 -r 移动整个文件夹

# remove, 删除文件
rm xxx.txt
rm -r /sss/   # 删除文件夹,使用 -r
rm -rf /sss/ # 强删,即使出错也会继续。危险操作

2.2 归档、压缩

归档、压缩是两个不同的阶段:

  • tar 用来归档
  • gzip 用来压缩

在 tar 中,可以使用 -z 参数让其自动调用 gzip 处理压缩。

# 将若干文件压缩为 xxx.tar.gz
tar czf xxx.tar.gz a.txt b.txt c.txt   # c 为 create,是创建的意思
tar czvf xxx.tar.gz a.txt b.txt c.txt  # v 参数用来设置打印压缩过程 (verbose)

# 解压缩
tar xzf xxx.tar.gz  # x 表示 extract,是解压缩的意思
tar xzvf xxx.tar.gz  # x 表示 extract,是解压缩的意思

2.3 远程连接

首先,在服务端安装并开启 ssh 服务:

# 安装 openssh-server
sudo apt update
sudo apt install openssh-server

# 确保 sshd 服务开启
sudo systemctl status sshd

# 如果服务器没有开启,那么需要开启
sudo systemctl start sshd

# 可以设置 sshd 服务开机自动启动
sudo systemctl enable sshd

其次,确定服务器的 ip 地址:

ip addr

然后,就可以在任何网络可达的机器上,通过 ssh 客户端连接服务器了。

在 windows 上,一般使用 PuTTY 工具。

连接语法:

ssh name@192.168.3.44

另外,可以使用 scp 命令实现文件传输:

scp aaa.zip user@192.168.3.3:~/target/
scp -r user@192.168.3.3:~/target/ ~/ # 复制文件夹到本地

3 命令行下常用快捷键

  • Ctrl-a, 返回行首
  • Ctrl-e, 到行尾
  • Ctrl-n, 下一页
  • Ctrl-p, 上一页
  • Ctrl-l, 刷新屏幕
  • Ctrl-k, 删除到行尾
  • Ctrl-y, 粘贴上一次删除的内容
  • Alt-b, 后退一个单词
  • Alt-f, 前进一个单词
  • Alt-d, 删除下一个单词

另外,如果要检索历史 (history) 命令,使用 Ctrl-r

4 Linux 的目录结构

目录树

4.1 /bin

全局可执行文件

4.2 /etc

全局配置文件

4.3 /usr

User Resources,用户的资源文件

4.3.1 /usr/share

4.3.2 /usr/lib

4.3.3 /usr/local

4.4 /home

用户的主目录

4.5 /dev

硬件

4.6 /opt

一般用来放置一些第三方的软件,比如自己下载的 tomcat 等

5 Miscellaneous

5.1 Linux 常用命令 (add by 成盛文)

5.1.1 文件与目录操作

  • basename:从文件名中去掉路径和扩展名
  • cd:切换当前工作目录到指定目录
  • chgrp:改变文件所属组
  • chmod:改变文件的权限
  • chown:改变文件的所有者和组
  • cp:复制文件或目录
  • dd:复制文件并转换文件内容
  • file:确定文件类型
  • find:在指定目录下查找文件并执行指定的操作
  • ln:创建文件链接
  • locate/slocate:快速定位文件的路径
  • ls/dir/vdir:显示目录内容
  • mkdir:创建目录
  • mv:移动或重命名文件
  • pwd:显示当前工作目录
  • rename:重命名文件
  • rm:删除文件或目录
  • rmdir:删除空目录
  • touch:修改文件的时间属性
  • updatedb:创建或更新slocate数据库
  • whereis:显示指令程序、源代码和man手册页
  • which:显示指令的绝对路径

5.1.2 备份与压缩

  • ar:创建、修改归档文件和从归档文件中提取文件
  • arj:.arj文件压缩指令
  • bunzip2:压缩bzip2格式的压缩文件
  • bzcat:解压缩文件到标准输出
  • bzip2:创建.bz2格式的压缩文件
  • bzip2recover:修复损坏的.bz2文件
  • bzless/bzmore:解压缩.bz2文件并分屏显示内容
  • compress:压缩数据文件
  • cpio:存取归档包中的文件
  • dump:文件系统备份
  • gunzip:解压缩由gzip压缩的文件
  • gzexe:压缩可执行程序
  • gzip:GNU的压缩和解压缩工具
  • lha:压缩和解压缩指令
  • resotre:还原由dump备份的文件或文件系统
  • tar:创建备份档案文件
  • unarj:解压缩.arj文件
  • uncompress:解压缩.Z文件
  • unzip:解压缩.zip文件
  • zcat:解压缩文件并送到标准输出
  • zforce:强制gzip格式的文件加上.gz扩展名
  • zip:压缩文件
  • zipinfo:显示zip压缩文件的详细信息
  • znew:将“.Z”文件转换成“.gz”文件

5.1.3 文本处理

  • cat:链接文件并显示到标准输出
  • cksum:检查和计算文件循环冗余校验码
  • cmp:比较两个文件的差异
  • col:过滤控制字符
  • colrm:从输入中过滤掉指定的列
  • comm:比较两个有序文件的不同
  • csplit:分割文件
  • cut:显示文件中每行的指定内容
  • diff3:比较3个文件的不同
  • diff:比较并显示两个文件的不同
  • diffstat:根据diff指令的结果显示统计信息
  • ed:行文本编辑器
  • emacs:全屏文本编辑器
  • ex:文本编辑器
  • expand:将Tab转换为空白(Space)
  • fmt:最优化文本格式
  • fold:设置文件显示的行宽
  • grep/egrep/fgrep:显示文件中匹配的行
  • head:输出文件开头部分内容
  • ispell:交互式拼写检查程序
  • jed:文本编辑器
  • joe:编辑文本文件
  • join:合并两个文件的相同字段
  • less:分屏查看文本文件
  • look:显示文件中以特定字符串开头的行
  • more:分屏查看文本文件
  • od:以数字编码输出文件内容
  • paste:合并文件的内容
  • pico:文本编辑器
  • sed:流文件编辑器
  • sort:排序数据文件
  • spell:拼写检查
  • split:分割文件
  • sum:计算并显示文件的校验码
  • tac:反序显示文件内容
  • tail:输出文件尾部部分内容
  • tee:将输入内容复制到标准输出和指定文件
  • tr:转换或删除文件中的字符
  • unexpand:将空白(Space)转换为Tab
  • uniq:删除文件中的重复行
  • vi:全屏文本编辑器
  • wc:计算文件的字节数、单词数和行数

5.1.4 shell指令

  • alias:定义命令别名
  • bg:将作业(或任务)放到后台运行
  • bind:显示或设置键盘配置
  • declare:声明shell变量
  • dirs:显示shell目录堆栈中的记录
  • echo:打印字符串到标准输出
  • enable:激活与关闭shell内部命令
  • eval:执行指定指令并返回结果
  • exec:执行给定指令后退出登录
  • exit:退出当前shell
  • export:设置与显示环境变量
  • fc:编辑并执行历史命令
  • fg:将后台任务(或作业)切换到前台运行
  • hash:显示与清除指令时运行查询的哈希表
  • history:显示与操纵历史命令
  • jobs:显示shell的作业信息
  • kill:杀死进程或作业
  • logout:退出登录shell
  • popd:从shell目录堆栈中删除记录
  • pushd:向shell目录堆栈中添加记录
  • set:设置shell的执行方式
  • shopt:设置控制shell行为变量的开关值
  • ulimit:设置shell的资源限制
  • umask:设置创建文件的权限掩码
  • unalias:取消由alias定义的命令别名
  • unset:删除定义的变量或函数

5.1.5 打印相关指令

  • accept:接受打印请求
  • cancel:取消打印任务
  • disable:停止打印机
  • enable:启动打印机
  • lp:打印文件
  • lpadmin:配置cups打印机和类
  • lpc:控制打印机
  • lpq:显示当前打印队列
  • lpr:打印文件
  • lprm:删除当前打印队列中的作业
  • lpstat:显示CUPS的状态信息
  • pr:打印前转换文本格式
  • reject:拒绝打印请求

5.1.6 其他基础指令

  • bc:实现精确计算的计算器
  • cal:显示日历
  • clear:清屏指令
  • consoletype:显示当前使用的终端类型
  • ctrlaltdel:设置热键Ctrl+Alt+Del的功能
  • date:显示和设置系统日期时间
  • dircolors:设置ls指令显示时的颜色
  • eject:弹出可移动设备的介质
  • halt:关闭计算机
  • hostid:显示当前主机的数字标识
  • hwclock:查询和设置系统硬件时钟
  • info:读取帮助文档
  • login:登录系统
  • man:显示联机帮助手册
  • md5sum:计算并显示文件的md5摘要信息
  • mesg:设置终端写权限
  • mtools:显示mtools软件包的指令
  • mtoolstest:测试并显示mtools工具包的配置
  • poweroff:关闭计算机并切断电源
  • reboot:重新启动计算机
  • shutdown:关闭计算机
  • sleep:睡眠指定长的时间
  • stat:显示文件或文件系统的状态
  • talk:与其他用户交谈
  • wall:向所有终端发送信息
  • whatis:在数据库中查询关键字
  • who:显示当前已登录用户的信息
  • whoami:显示当前用户名
  • write:向指定用户终端发送信息
  • yes:不断输出指定字符串

5.1.7 用户管理

  • chfn:改变用户的finger信息
  • chsh:改变用户登录时的默认shell
  • finger:用户信息查询程序
  • gpasswd:管理组文件/etc/group
  • groupadd:创建组
  • groupdel:删除组
  • groupmod:修改组信息
  • groups:显示用户所属的组
  • grpck:验证组文件/etc/group的完整性
  • grpconv:启用组的影子口令文件
  • grpunconv:关闭组的影子口令文件
  • logname:显示登录用户名
  • passwd:设置用户密码
  • pwck:验证用户文件密码文件的完整性
  • pwconv:启用用户的影子口令文件
  • pwunconv:关闭用户的影子口令文件
  • su:切换用户
  • useradd:创建用户
  • userdel:删除用户
  • usermod:修改用户的配置信息
  • users:显示当前登录系统的用户名

5.1.8 进程管理

  • init:进程初始化控制
  • killall:根据名称结束进程
  • nice:设置进程优先级
  • nohup:以忽略挂起信号方式运行程序
  • pgrep:基于名字查询并显示进程号
  • pidof:查找正在运行程序的进程号
  • pkill:向指定的进程发送信号
  • ps:显示系统当前的进程状态
  • pstree:用树形图显示进程的父子关系
  • renice:调整进程优先级
  • w:显示当前登录用户的相关信息
  • watch:全屏方式显示指定命令的输出信息

5.1.9 磁盘与文件系统管理

  • badblocks:磁盘坏块检查工具
  • blockdev:从命令行调用块设备的ioctl函数
  • chattr:改变文件的第2扩展文件系统属性
  • convertquota:转换quota文件格式
  • df:报告磁盘剩余空间情况
  • dumpe2fs:显示ext2/ext3文件系统信息
  • e2fsck:检查ext2/ext3文件系统
  • e2image:保存ext2/ext3源数据到文件
  • e2label:设置ext2/ext3文件系统标签
  • edquota:编辑用户的磁盘空间配额
  • fdisk:Linux下的分区工具
  • findfs:查找文件系统
  • fsck:检查与修复Linux文件系统
  • grub:Linux下的引导加载器
  • hdparm:调整硬盘I/O性能
  • lilo:Linux加载器
  • lsattr:显示文件的ext2文件系统属性
  • mkbootdisk:为当前系统创建专门的引导软盘
  • mke2fs:创建第2扩展文件系统
  • mkfs:创建各种文件系统
  • mkinitrd:创建初始化ram磁盘映像文件
  • mkisofs:创建光盘映像文件
  • mknod:创建块设备或字符设备文件
  • mkswap:创建交换分区文件系统
  • mktemp:创建临时文件
  • mount:加载文件系统
  • parted:磁盘分区管理工具
  • quota:显示用户磁盘配额
  • quotacheck:创建、检查和修复配额文件
  • quotaoff:关闭文件系统的磁盘配额功能
  • quotaon:打开文件系统的磁盘配额功能
  • quotastat:显示磁盘配额状态
  • repquota:显示文件系统磁盘配额信息报表
  • swapoff:关闭交换空间
  • swapon:激活交换空间
  • sync:强制将缓存数据写入磁盘
  • tune2fs:调整ext2/ext3文件系统的参数
  • umount:卸载已经加载的文件系统

5.1.10 内核与性能

  • depmod:处理内核可加载模块的依赖关系
  • dmesg:显示内核的输出信息
  • free:显示内存使用情况
  • insmod:加载模块到内核
  • iostat:报告CPU、I/O设备及分区状态
  • ipcs:显示进程间通信的状态信息
  • kernelversion:显示内核主版本号
  • lsmod:显示已加载的模块
  • modinfo:显示内核模块信息
  • modprobe:加载内核模块并解决依赖关系
  • mpstat:显示进程相关状态信息
  • rmmod:从内核中删除模块
  • sar:收集、显示和保存系统活动信息
  • slabtop:实时显示内核的slab缓存信息
  • sysctl:运行时修改内核参数
  • tload:监视系统平均负载情况
  • top:显示和管理系统进程
  • uname:显示系统信息
  • uptime:显示系统运行时间及平均负载
  • vmstat:显示虚拟内存的状态

5.1.11 X-Window系统

  • startx:初始化X-Window会话
  • xauth:X系统授权许可文件管理工具
  • xhost:显示和配置X服务器的访问权限
  • xinit:X-Window系统初始化程序
  • xlsatoms:显示X服务器原子数据定义
  • xlsclients:显示指定显示器上运行的X程序
  • xlsfonts:显示X服务器使用的字体信息
  • xset:设置X系统的用户偏爱属性

5.1.12 系统安全

  • chroot:以指定根目录运行指令
  • nmap:网络探测工具和安全扫描器
  • scp:加密的远程复制工具
  • sftp:安全文件传输工具
  • slogin:加密的远程登录工具
  • ssh:加密的远程登录工具
  • sudo:以另一个用户身份执行指令

5.1.13 编程相关指令

  • awk/gawk:模式扫描与处理语言
  • expr:计算表达式的值
  • gcc:GNU的C语言编译器
  • gdb:GNU调试器
  • ldd:显示共享库依赖
  • make:工程编译工具
  • nm:显示目标文件的符号表
  • perl:perl语言的命令行工具
  • php:PHP脚本语言命令行接口
  • test:条件测试

5.1.14 其他系统管理与维护指令

  • arch:显示当前主机的硬件架构
  • at:按照时间安排任务的执行
  • atq:查询待执行的任务
  • atrm:删除待执行的任务
  • batch:在指定时间运行任务
  • chkconfig:设置系统在不同运行等级下所执行的服务
  • crontab:按照时间设置计划任务
  • last:显示以前登录过系统的用户相关信息
  • lastb:显示登录系统失败的用户相关信息
  • logrotate:系统日志的轮循工具
  • logsave:将命令的输出信息保存到日志文件
  • logwatch:报告和分析系统日志
  • lsusb:显示所有的USB设备
  • patch:补丁与更新文件
  • rpm:Red Hat软件包管理器
  • runlevel:显示当前系统的运行等级
  • service:Linux服务管理和控制工具
  • telinit:切换当前系统的运行等级
  • yum:RPM软件包自动化管理工具

5.1.15 网络配置

  • dnsdomainname:显示系统的DNS域名
  • domainname:显示和设置主机域名
  • hostname:显示或者设置系统主机名
  • ifcfg:配置网络接口
  • ifconfig:配置网络接口的网络参数
  • ifdown:关闭指定网络接口
  • ifup:启动指定网络接口
  • nisdomainname:显示和设置主机域名
  • route:显示与操纵本机的IP路由表
  • ypdomainname:显示和设置主机域名

5.1.16 网络测试与应用

  • arp:管理本机arp缓冲区
  • arping:向相邻主机发送ARP请求报文
  • arpwatch:监听网络上的ARP信息
  • dig:域名查询工具
  • elinks:纯文本网页浏览器
  • elm:电子邮件客户端程序
  • ftp:文件传输协议客户端
  • host:DNS域名查询工具
  • ipcalc:IP地址计算器
  • lynx:纯文本网页浏览器
  • mail:电子邮件管理程序
  • ncftp:增强的FTP客户端工具
  • netstat:显示网络状态
  • nslookup:DNS域名查询工具
  • pine:电子邮件和新闻组处理程序
  • ping:测试到达目标主机的网络是否通畅
  • rsh:远程shell
  • telnet:远程登录工具
  • tftp:简单文件传输协议客户端
  • tracepath:追踪数据经过的路由
  • traceroute:追踪数据包到达目的主机经过的路由
  • wget:从指定URL地址下载文件

5.1.17 高级网络指令

  • arptables:管理内核的ARP规则表
  • ip:强大的多功能网络配置工具
  • iptables:IP包过滤与NAT管理工具
  • iptables-save:保存内核中iptables的配置
  • iptables-restore:还原iptables的配置信息
  • tcpdump:监听网络流量

5.1.18 网络服务器指令

  • ab:Web服务器性能测试
  • apachectl:Apache HTTP服务器控制接口
  • exportfs:管理NFS服务器共享的文件系统
  • htdigest:管理用于摘要认证的用户文件
  • htpasswd:管理用于基本认证的用户文件
  • httpd:Apache超文本传输协议服务器
  • mailq:显示待发送的邮件队列
  • mysql:MySQL服务器的客户端工具
  • mysqladmin:MySQL服务器管理工具
  • msqldump:MySQL服务器备份工具
  • mysqlimport:MySQL数据库导入工具
  • mysqlshow:显示MySQL数据库、表和字段信息
  • nfsstat:显示网络文件系统状态
  • sendmail:电子邮件传送代理程序
  • showmount:显示NFS服务器上的加载信息
  • smbclient:samba服务器客户端工具
  • smbmount:加载samba文件系统
  • smbpasswd:改变samba用户的密码
  • squid:HTTP代理服务器程序
  • sshd:OpenSSH守护进程

Author: unname

Created: 2019-03-22 周五 01:32

Go ahead, never stop.