Linux 基本操作及常用指令
作者:田涛
邮箱:tiantao@haomo-studio.com
更改历史
* 2021-05-17 田涛 初始化文档
一、linux 简介(了解)
- linux 是一种免费使用和自由传播的类 UNIX 操作系统,是一个基于 POSIX(可移植操作系统接口)的多用户、多任务、支持多线程和多 CPU 的操作系统。
- 在我们的开发工作中,会经常与服务器打交道,所以学习 linux 的基本操作是很有必要的。全球大约有数百款的 Linux 系统版本,每个系统版本都有自己的特性和目标人群。linux 常见发行版本有:Redhat、Fedora、Ubuntu(目前使用最多的 Linux,简单方便,拥有强大的 apt-get 软件管理程序,安装个管理软件很方便!作为新手,推荐使用)、CentOS(社区企业操作系统,国内用的比较多)、麒麟系统.
- 终端:即所谓的命令行界面,又称命令终端,用户输入 shell 命令用的窗口。
- shell:Shell 就是用户和操作系统之间的壳,中介,是操作系统与用户交互用的接口,在命令终端里可以使用 shell。shell 将用户输入翻译为操作系统能处理的指令。shell 提供了一些内置命令,也支持调用外面工具。目前最常用的是 bash,主流的 linux 都选择 bash。
- bash 终端的优点:
可通过上下方向键来调取过往执行过的 Linux 命令;
命令或参数仅需输入前几位就可以使用 Tab 键补全;
具有更强大的批处理脚本;
具有实用的环境变量功能;
二、新手必须掌握的 linux 命令(熟悉掌握)
- 常见的 Linux 命令格式:命令名称 [命令参数][命令对象],三者之间用空格分隔。
- 练习环境:ubuntu ,登录方式(ssh -p 18022 haomo@192.168.1.163)密码:haomo123
2.1、常用系统工作命令
echo
: 用于在终端上输出字符串或变量提取后的值(echo $SHELL);date
: 用于显示及设置系统时间或日期(date、date "+%y-%m-%d %H:%M:%S");ps
: 用于查看系统中的进程状态,(ps 、ps -a 、ps aux)延伸知识点,进程 5 种常见状态:R(运行)、S(中断)、D(不可中断)、Z(僵死)、T(停止) ;top
: 动态监视进程活动与系统负载信息(top);kill
: 终止进程命令 (kill [PID]);
2.2、系统状态检测命令
ifconfig
: 获取网卡配置与网络状态信息 (ifconfig);uname
: 用于查看系统内核与系统版本信息 (uname、uname -a)uptime
: 用于查看系统负载信息、显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息(uptime);free
: 用于显示当前系统中内存的使用量信息;who
: 用于查看当前登入主机的用户终端信息(who);last
: 命令用于查看所有系统的登录记录(last);history
: 命令用于显示历史执行过的命令(history、history -c 清除命令历史记录);
2.3、工作目录切换命令
pwd
: 用于显示用户当前所处的工作目录(pwd);cd
: 用于切换工作路径 (cd [目录名称]、cd -);ls
: 用于显示目录中的文件信息(ls、ls -ald);
2.4、文本文件编辑命令
cat
: 用于查看内容较少的纯文本文件(cat -n [文件名]);more
: 用于查看内容较多的纯文本文件,可使用回车和空格键翻页(more [文件名]);head
: 用于查看纯文本文档的前 N 行(head -n [行数][文件名]);tail
: 用于查看纯文本文档的后 N 行或持续刷新内容(tail -n [行数][文件名]);tr
: 用于替换、删除文本文件中的字符(cat [文件名] | tr [原始字符][目标字符]);wc
: 统计文本行数、字数、字节数(wc);stat
: 用于查看文件的具体存储信息和时间等信息(stat [文件名]);diff
: 用于比较多个文本文件的差异(diff -- brief [文件名][文件名]比较是否有差异、diff -c [文件名][文件名]描述文件内容具体的不同);
2.5、文件目录管理命令
touch
: 创建空白文件或设置文件的时间(touch [需创建的文件名]、touch -d "2021-05-12 15:55" [文件名]);mkdir
: 用于创建空白的目录,可结合 -p 参数创建嵌套关系的文件目录(mkdir -p a/b/c);cp
: 用于复制文件或目,“-p”保留原始文件的属性,“-r”递归持续复制目录,“-i”若目标文件存在则询问是否覆盖(cp 源文件 目标文件);mv
: mv 命令用于剪切文件或者将文件重命名(mv 源文件 目标文件);rm
: 用于删除文件或目录,“-r”强制删除,“-f”删除一个目录;dd
: 用于按照指定大小和个数的数据快来复制文件或转换文件 “if”输入的文件名称,“of”输出的文件名称,“bs”设置每个“块”的大小,“count”设置要复制块的个数(dd if=linux.md of=ddlinux.md count=1 bs=20k);file
: 用于查看文件类型(file [文件名]);
2.6、打包压缩与搜索命令
tar
: 对文件进行打包压缩或解压,linux 中,主要使用的文件格式是.tar、.tar.gz、.tar.bz2,“-c”创建压缩文件,“-x”解开压缩文件,“-t”查看压缩包内有哪些文件,“-z”用 Gzip 压缩或解压,“-f”目标文件名,“-p”使用绝对路径来压缩,“-P”保留原始的权限和属性,“-C”指定解压到目录,“-v”显示解压或压缩过程(tar -czvf [压缩后文件名][要压缩的目录]、tar -xzvf [要解压的压缩包] -C [解压目标目录]);grep
: 用于在文本中执行关键词搜索,并显示匹配结果,“-v”反向选择,仅列出没有关键词的行;
三、vim 与 shell 命令脚本(熟悉掌握)
3.1、vim 命令模式
- vim 文本编辑器设置了三种模式:
命令模式: 控制光标移动,客队文本进行复制、粘贴、删除和查找等工作。
输入模式: 文本录入。
末行模式: 保存或退出文档,以及设置编辑环境。 .
3.2、vim 中常用命令
dd
: 删除(剪切)光标所在行;ndd
: 删除(剪切)光标处开始的 n 行;yy
: 复制光标所在行;nyy
: 复制光标处开始 n 行;u
: 撤销上一步操作;p
: 将之前删除或复制过的数据粘贴到光标后面;
3.3、末行模式命令
:w
:保存 ;:q
:退出;:q!
:强制退出,放弃对文档的修改内容;:wq!
:强制保存退出;:set nu
:显示行号;:set nonu
:不显示行号;:整数
:跳转到该行;:s/one/two
: 将当前光标第一个 one 替换成 two;:s/one/two/g
: 将当前光标所有 one 替换成 two;:%s/one/two/g
:将全文中的所有 one 替换成 two;:?字符串
:在文本中从下至上搜索该字符串;/字符串
:在文本中从上至下搜索该字符;
3.4、编写 shell 脚本
shell 脚本是使用编辑器把需要执行的 linux 命令按顺序写入文件,在需要的时候运行,就能执行脚本中写入的命令;
shell 脚本的工作方式有两种:交互式和批处理;
交互式: 用户每输入一条命令就立即执行;
批处理:由用户事先编写好一个完整的 shell 脚本,shell 会一次性执行脚本中的诸多命令;接收用户参数:
shell 脚本语言内设了用于接收参数的变量,变量之间用空格间隔。 例如$0对应的是当前shell脚本程序的名称,$#对应参数数量,$*对应所有位置的参数值,$?对应的是现实上一次命令的执行返回值,$N 对应第 N 个参数值;
四、用户身份与文件权限(熟悉掌握)
4.1、用户身份与能力
系统管理员:UID 为 0;
系统用户:UID 为 1 ~ 999;
普通用户:UID 从 1000 开始;
linux 系统中创建每个用户时,将自动创建一个与其同名的基本用户组,默认的用户目录会存放在/home 目录中。
cat /etc/passwd
: 查看系统所有用户及用户组;groups
: 查看当前登录用户的组内成员;groups userName
: 查看用户所在的组,以及组内成员;whoami
: 查看当前登录用户名;useradd
: 用于创建新的用户,useradd [选项] 用户名,-d 指定用户目录,默认/home,-e 账户的到期时间,-u 制动该用户的默认 UID,-g 指定一个初始的用户基本组,-s 指定该用户的默认 shell 解释器;groupadd
: 创建用户组;usermod
: 修改用户的属性;passwd
: 用于修改用户密码,过期时间,认证信息等;userdel
: 用于删除用户;
4.2、文件权限与归属
- 在 linux 系统中,每个文件都有所属的所有者和所有组,并规定了文件的所有者、所有组以及其他人对文件所拥有的可读、可写、可执行等权限。对于目录而言,可读表示能够读取目录内的文件列表,可写表示能够在目录内新增、删除、重命名文件;可执行表示可以进入该目录。
- 三种基本权限:
R 读 数值表示为 4
W 写 数值表示为 2
X 可执行 数值表示为 1
4.3、文件的特殊权限
- 很多时候设置 rwx 权限无法满足我们对安全和灵活性的需求,所以有了 SUID,SGID,SBIT 的特殊权限位,这是对文件权限惊醒设置的特殊功能,可与一般权限同时使用。
SUID
: 对二进制程序进行设置的特殊权限,可用让二进制程序的执行者临时获得程序所有者身份(仅对拥有执行权限的二进制程序有效);SGID
: 让执行者临时拥有属组的权限;SBIT
: SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件,目录中的文件只能被其所有者执行删除权限;chmod
: 设置文件或目录权限,-R 表示递归操作,对目录内所有文件进行操作(chmod 760 test);chown
: 设置文件或目录的所有者和用户组,设置文件或目录权限,-R 表示递归操作,对目录内所有文件进行操作(chown root:root fileName -R);
4.4、文件的隐藏属性
chattr
: 用于设置文件隐藏权限,格式为(chattr 参数 文件),添加隐藏功能在命令后追加“+参数”,移除隐藏功能追加“-参数”,(i)无法对文件进行修改,仅能修改其中子文件内容而不能新建或删除文件,(a)仅允许补充内容,无法覆盖、删除内容,(S)内容变更后立即同步到硬盘,(s)彻底从硬盘删除,不可恢复,(A)不再修改这个文件或目录的最后访问时间,(c)默认将文件或目录进行压缩;lsattr
: 用于显示文件的隐藏权限,linux 中,文件的隐藏权限必须使用 lsattr 命令来查看;
4.5、文件访问控制列表
需要对某个指定的用户进行单独的权限控制,就需要拥有文件的访问控制列表(ACL)了;
setfacl
: 管理文件的 ACL 规则,格式为 setfacl [参数] 文件名称,目录文件需使用-R 递归参数,普通文件使用-m 参数,删除文件的 ACL 使用-b 参数;getfacl
: 用于显示文件上设置的 ACL 信息;
4.6、su 命令与 sudo 服务
su
: 切换用户,格式为 su - username,“-”表示完全切换到新用户;sudo
:sudo 命令把特定命令的执行权限赋予给指定用户,保证普通用户能完成特定工作,也避免泄漏 root 密码,配置原则-在保证完成相应工作的前提下,尽可能少的赋予额外权限;
sudo 命令具有如下功能:
限制用户执行指定的命令;
记录用户执行的每一条命令;
提供几种的用户管理、权限与主机等参数;
验证密码的五分钟内,无需再次验证;
五、Linux 软件包管理
在 Ubuntu 系统中,经常要用到 apt-get 指令用于安装、卸载、升级软件,apt-get 是一个下载安装软件包的简单命令行接口。最常用的命令是 update(更新),和 install(安装)。
命令:
update
- 重新获取软件包列表`upgrade
- 进行更新install
- 安装新的软件包remove
- 移除软件包autoremove
- 自动移除全部不使用的软件包purge
- 移除软件包和配置文件source
- 下载源码档案build-dep
- 为源码包配置编译依赖dist-upgrade
- 发行版升级, 参见 apt-get(8)dselect-upgrade
- 依照 dselect 的选择更新clean
- 清除下载的归档文件autoclean
- 清除旧的的已下载的归档文件check
- 检验是否有损坏的依赖dpkg (Debian Package)管理工具,软件包名以.deb 后缀。这种方法适合系统不能联网的情况下。 比如安装 tree 命令的安装包,先将 tree.deb 传到 Linux 系统中。再使用如下命令安装。
- sudo dpkg -i tree_1.5.3-1_i386.deb 安装软件
- sudo dpkg -r tree 卸载软件
六、利用 ssh 登录远程服务器(熟练掌握)
- 安装 ssh 服务:
sudo apt-get install ssh
- 启动 ssh:
service sshd start
- 登录远程服务器:
ssh -p port userName@远程服务器地址
七、总结
上述所总结学习的 linux 命令皆为最基础,工作中最常用的 linux 命令,也是后面学习和掌握更高级命令的基础。在实际工作使用中,往往不是一两条简单的命令能实现目的的,所以重要的是将命令的功能作用理解,然后在实际使用时正确灵活的搭配,融汇贯通,来达到想要实现的目的。
八、参考资料
- 《linux 就该这么学》 作者:刘瑞
- linux 菜鸟教程