linux 基本操作及常用指令

优质
小牛编辑
140浏览
2023-12-01
更改历史

* 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 文本编辑器设置了三种模式:
    命令模式: 控制光标移动,客队文本进行复制、粘贴、删除和查找等工作。
    输入模式: 文本录入。
    末行模式: 保存或退出文档,以及设置编辑环境。 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;

  • :?字符串:在文本中从下至上搜索该字符串;

  • /字符串:在文本中从上至下搜索该字符; vim键盘

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 命令,也是后面学习和掌握更高级命令的基础。在实际工作使用中,往往不是一两条简单的命令能实现目的的,所以重要的是将命令的功能作用理解,然后在实际使用时正确灵活的搭配,融汇贯通,来达到想要实现的目的。

八、参考资料