# Linux shell

  • 用户不能直接与操作系统内核通信。需要在用户和操作系统之间使用充当接口的程序。
  • 在 UNIX 系列的操作系统中,该程序称为 shell。
  • shell 将接受用户条目、解释它们、将它们转换为系统调用,并将系统消息传递回用户,就象是一个命令解释器。

# Shell 的类型

  • The Bourne shell (/bin/sh)
  • The Bourne again shell (/bin/bash)
  • The Korn-Shell (/bin/ksh)
  • The C-Shell (/bin/csh)
  • The TC-Shell (/bin/tcsh)
    每个 shell 均可像程序那样启动,并且您可在任何时间切换到不同的 shell。
  • shell 是在用户登录后在文本控制台启动的。这被称为 login shell。对哪个用户启动哪个 shell 是由用户数据库决定的。
  • shell 与大多数其他程序不同,它不会自己结束。您需要输入命令 exit 来返回到前一个 shell。
  • 标准的 Linux shell 是 bash

# 目录相关命令

  • shell 终端提示符包含当前目录(例如 tux@da10:)。波浪号 “” 指示您位于用户主目录中。
  • 可以使用以下命令更改活动目录并列出目录的内容:
    cd
    ls
    pwd
    clear

# Shell 命令基本格式

Shell 命令由命令名、选项和参数三部分组成
命令名 [选项] [参数 1] [参数 2]…
ls –a
ls -l

# Linux 的文档帮助

# man

  • man 手册页 (/usr/share/man)
  • tux@da1:~ > man ls
    给出关于命令 ls 的具体描述,包括以下几个部分,其中每个手册页标题的左右侧是命令名和手册页所属的章节号。标题的中间是章节的名称。
    NAME 命令的名称和简短描述
    SYNOPSIS 语法的描述
    DESCRIPTION 命令的详细描述
    OPTIONS 提供的所有可用选项的描述
    COMMANDS 在程序运行时可以分配给该程序的说明
    FILES 使用某种方法连接到命令的文件
    SEE ALSO 相关命令的提示
    DIAGNOSTICS 程序可能出现的错误消息
    EXAMPLE 调用命令的示例
    BUGS 命令的已知错误和问题
  • 手册页可以分为以下不同的小节
    1 可执行程序和 shell 命令(用户命令)
    2 系统调用
    3 功能和库例程
    4 设备文件
    5 配置文件和文件格式
    6 游戏
    7 宏软件包和文件格式
    8 系统管理命令
  • 某个命令可能有多个手册,此时指定命令所在的小节能够加快查找速度
  • 输入以下命令将显示有关 crontab 命令的一般信息:
    tux@da1:~ > man 1 crontab
  • 输入以下命令将显示有关 crontab 命令的配置文件(名称也是 crontab)的信息:
    tux@da1:~ > man 5 crontab

# Info

Info 工具是一个基于菜单的超文本系统,由 GNU 项目开发并由 Linux 发布。info 工具包括一些关于 Linux shell、工具、GNU 项目开发程序的说明文档。与 man 相比,info 工具可显示更完整的最新的 GNU 工具信息
tux@da1:~ > info ls
/usr/share/info/

# –help

“–help” 是一个工具选项,用在命令行中
tux@da1:~ > ls --help

# Linux 系统中的文件类型

  • 普通文件
  • 目录:包含两个条目,一个条目(“.”)指向目录本身。另一个条目(“…”)指向层次中的上一级条目
  • 设备文件:Linux 系统中的每个硬件都由一个设备文件表示,要访问硬件的每个程序都必须通过对应的设备文件来访问硬件
  • 链接:是对存储在文件系统中其他点的文件的引用
  • 套接字:两个本地运行的进程之间的数据交换便可以通过文件 系统实施
  • FIFO: 用于在进程之间交换数据。但是,文件仅可按一个方向交换数据。
  • ls -l 查看文件的属性
    普通文件 -rw-r–r–
    目录文件 drwxr-xr-x
    字符设备文件 crw-rw-rw-
    块设备文件 brw-r-----
    套接字文件 srwxrwxrwx
    链接文件 lrwxrwxr—
    FIFO 文件 prwxr—r–

# 创建和查看文件

  • 使用 touch 创建新文件
    touch test.txt
  • 使用 cat 查看文件
    cat test.txt
  • 使用 more 和 less 查看文件
    less test.txt
  • 使用 head 和 tail 查看文件
    head test.txt tail -3 test.txt

# 文件和目录相关命令

  • 复制并移动文件和目录(cp、mv)
    cp test.txt test1.txt (cp source destination)
    mv –i test.txt test1.txt
  • 创建目录(mkdir)
    mkdir tux
  • 删除文件和目录(rm,rmdir)
    rm –i test1.txt rmdir tux
  • 链接文件(ln)
    ln test.txt new
    ln –s test.txt newtest

# shell 中的用户切换

  • 切换为根用户
    su -
  • 退出根用户
    exit
  • 切换为其它用户
    su 用户名
  • 显示当前用户
    who/whoami

# Linux 系统中管理目录和文件

# 根目录

  • 根目录指的是文件系统树的最顶层。通常此处只有目录(没有文件)。重新引导系统时,最先安装该目录所在的分区。
  • 由于内核不能完成操作系统的所有任务,在系统启时运行的所有程序必须位于该分区中(它们不能位于其他分区中)。
  • 以下目录必须始终与根目录在同一个分区中:/bin/、/dev/、/etc/、/lib/ 和 /sbin/。

# 适用于所有用户的基本二进制 (/bin/)

  • 目录 /bin/ 包含一些重要的可执行程序,当没有安装其他文件系统时这些程序是必需的,例如:启动系统需要所有的程序。
  • 包括各种 shell、用于处理文件的最重要的命令和几个用于系统分析和配置的命令。
    /bin/bash bash shell
    /bin/cat 显示文件
    /bin/cp 复制文件
    /bin/mount 安装文件系统
    /bin/rm 删除文件
    /bin/vi vi 编辑器

# 引导目录 (/boot/)

  • 目录 /boot/ 包含引导装载程序(GRUB 或 LILO)的静态文件。这些文件是引导进程必需的(除配置文件之外)。
  • 主引导记录 (MBR) 的备份信息以及系统映射文件也存储在这里。包括有关内核在分区中的确切位置的信息。
  • 另外,该目录还包含内核。但是,根据 FHS,内核还可以直接存储在根目录中

# 设备文件 (/dev/)

  • 系统中存在的所有硬件组件(例如硬盘驱动器分区、CD 设备、打印机和鼠标)在目录 /dev/ 中均用一个文件表示。
  • 可以通过写入或读取这些文件来查找硬件组件。设备文件分为以下两类:
  • 面向字符的设备文件(用于依次工作的设备,例如打印机、鼠标或磁带机)。
  • 面向块的设备文件(例如软盘和硬盘)。

# 配置文件 (/etc/)

  • 该目录及其子目录均包含系统配置文件。几乎所有这些文件都是 ASCII 文件,它们可以用任何编辑器处理
  • 普通用户几乎可以读取所有这些文件,但是不能编辑这些文件。根据 FHS,不能在此处存储任何可执行程序。
  • 但是,子目录中包含许多 shell 脚本。
  • 几乎所有已安装服务的 /etc/ 目录或子目录中都至少包含一个配置文件。
    一些重要的配置文件
    /etc/inittab init 进程的配置文件
    /etc/init.d/* 用于启动服务的脚本
    /etc/grub.conf GRUB 的配置文件
    /etc/modules.conf 内核模块的配置文件
    /etc/fstab 系统启动时自动安装的文件系统的表
    /etc/profile shell 的逻辑脚本
    /etc/passwd 用户数据库;除口令之外的所有信息
    /etc/shadow 用户的加密口令
    /etc/group 用户组的数据库
    /etc/cups/* 用于 CUPS 打印系统的文件
    /etc/hosts 向 IP 地址分配计算机名称

# 用户目录 (/home/)

  • Linux 系统的每个用户都有一个属于自己的区域,可以在其中创建和删除文件。该区域称为用户的主目录。如果用户登录,便会进入他自己的主目录。
  • 个人配置文件存储在用户的主目录中。这些配置文件是隐藏文件,因为命令 ls 一般不会显示这些文件。所有这些文件名称的开头都是一个点。
    .profile 用户的专用登录脚本
    .bash_history bash 的配置文件
    .bashrc 先前在 bash 中运行的命令的列表

# 库 (/lib/)

  • 许多程序都使用一些特定的功能,这些功能也被其他程序使用。此类标准功能将从实际的程序中删除,它们存储在系统中,并且仅在程序运行时才被调用。它们称为共享库。
  • 目录 /lib/ 包含目录 /bin/ 和 /sbin/ 中程序使用的库。内核模块(硬件驱动程序没有编译到内核中)存储在目录 /lib/modules/ 中。
  • 其他库存储在目录 /usr/ 下。

# 可删除介质的装入点 (/media/*)

根据硬件在目录 /media/ 下创建如下目录,以安装可删除介质
/media/cdrom/。 用于安装 CD-ROM。
/media/cdrecorder/。 用于在 CD 烧录程序中安装 CD。
/media/dvd/。用于安装 DVD。
/media/floppy/。用于安装软盘。

# 管理员的主目录 (/root/)

系统管理员的主目录不在 /home/ 下,这点与普通用户不同。它最好是与根目录 “/” 在同一个分区中。只有这样才能确保根用户正常登录并使用自己配置的环境。

# 系统二进制 (/sbin/)

目录 /sbin/ 包含用于系统管理的重要程序。普通用户运行的程序位于 /bin/ 中。
通常,普通用户也可以运行目录 /sbin/ 中的程序,但只能显示已配置的值。只有根用户才能更改配置。
/sbin/fdisk 修改分区。
/sbin/fsck 检查文件系统(文件系统检查)。
/sbin/init 初始化系统。

# /usr/ 下面的层次

根据 FHS,目录 /usr/ 代表第二层。所有应用程序、图形界面文件、其他库、本地安装程序以及包含文档的常用共享目录均存储在这一层中。
/usr/bin/ 几乎所有可执行程序
/usr/lib/ 库
/usr/local/ 本地安装程序,目前通常存储在目录 /opt/ 中
/usr/sbin/ 系统管理程序
/usr/share/doc/ 文档
/usr/share/man/ 手册页(命令描述)
/usr/src/ 所有程序的源文件和内核(如果安装了的话)

# 可变文件 (/var/)

目录 /var/ 是 FHS 中描述的第二层,该目录及其子目录包含一些可以在系统运行时修改的文件。
/var/lib/ 可变库(例如命令 locate 和 rpm 的数据库)
/var/log/ 大多数服务的日志文件
/var/run/ 包含有关运行进程信息的文件
/var/spool/ 队列(打印机和电子邮件)的目录
/var/lock/ 阻止多重使用设备的锁文件

# 进程文件 (/proc/)

  • 目录 /proc/ 中保存向用户提供的进程信息。该目录不包含任何实际文件,因此不占用硬盘上的任何空间。
  • 这个目录是在访问时动态生成的(例如,带有 ls /proc/)。每个进程都有它自己的目录。可以读出这些目录中的值,就好像这些值存储在文件中。也可以通过向对应的 “文件” 写入这些值来设置它们。但是,对该虚拟文件系统的更改只有在系统运行时才生效。
  • 除了每个单独进程的目录, /proc/ 还包含了一些目录和文件,其中包含有关系统状态的信息。

# 系统状态的信息

/proc/cpuinfo 处理器的相关信息
/proc/interrupts 中断的使用
/proc/filesystems 内核可以识别的文件系统格式
/proc/modules 活动模块
/proc/mounts 已安装的文件系统
/proc/net/* 网络特定信息和统计信息
/proc/sys/* 系统和内核信息

# vi

  • 命令模式:当 vi 启动时,它自动处于此模式。处于命令模式时,可以向 vi 指定命令。命令 i 会将其置于插入模式并且命令:会将其切换到命令行模式。
  • 插入模式:处于此模式(关键字 --INSERT–)时, vi 会将所有输入作为文本接受。使用 Esc 将返回命令模式。
  • 命令行模式:处于此模式(关键字 :)时, vi 将从命令行接受命令。按下 Enter 将执行命令并自动切换回命令模式。
  • 在命令模式中可以进行删除、复制和粘贴的功能,但是无法编辑文件内容。
  • 输入模式在命令模式中输入:i、 l、 o、 O、 a、 A 可以进入输入模式,在输入模式中可以进行文件的写入、修改、删除内容按下 Esc 可以退回到编辑模式
  • 命令行模式可以执行各种的命令,例如保存退出、查找、显示行号

# 移动光标的方法:

0 或功能键 [Home]:移动到这一行的最前面字符处。
'$' 或功能键 [End]:移动到这一行的最后面字符处。
H:移动到屏幕第一行开始处。
G:移动到这个文件的最后一行。
nG:移动到文件第 n 行;
gg:移动到这个文件的第一行,相当于 1G.
N [Enter]:N 为数字,光标向下移动 N 行。

# 查找和替换

/demo:向下寻找一个名称为 demo 的字符串。
?demo:向上寻找一个名称为 demo 的字符串。

# 删除、复制和粘贴:

x,X:在一行字中,x 为向后删除一个字符(相当于 [Del] 键),X 为向前删除一个字符(相当于 [Backspace])。
dd:删除光标所在的一整行。
ndd:删除光标所在的向下 n 行。
yy:复制光标所在的一行。
nyy:复制光标所在的向下 n 行。
p,P:p 为将已复制的内容在光标的下一行粘贴,P 则为粘贴在光标的上一行。
u:复原前一个操作。
[Ctrl]+r:重做上一个操作。

# 命令行模式下的操作:

w:保存
q:退出
wq:保存并退出
!:强制执行
w!:强制保存
q!:不保存强制退出
set nu:显示行号
set nonu:不显示行号

# 文件查找 find

  • find 在命令行上搜索文件
  • find path criterion action
  • path:要搜索的文件系统部分(指定的目录及其所有子目录)。如果什么也没指定,则将使用当前目录下的文件系统。
  • criterion:文件应该具有的属性:
    • -name pattern 搜索名称中包含给定模式的文件。如果模式中包含元字符或通配符,则必须用引号将它括起。否则,它将由 shell 解释,而不是由 find 解释。
    • -type file_type 搜索文件类型。适用的文件类型如下:“d”(用于目录)、“f”(用于文件)或者 “l”(用于符号链接)。
    • -ctime [+/-] days 搜索恰好在指定的几天前进行上一次修改的那些文件。
  • action:影响以下条件或将搜索作为一个整体进行控制的选项,例如:
    -print
    -exec command 可使用选项 -exec 调用其他命令

# Linux 下的软件安装

# 安装 RPM 包

用 rpm 安装软件的命令格式如下:
rpm -i [安装选项] rpm 软件包名
安装选项有很多,常用的如下:
-vh :显示安装过程中的详细信息;
–percent:显示安装进度的百分比;
–test:不进行安装软件包,只进行安装测试并显示简单的报告;
–force:忽略任何错误,强制安装软件包

# 更新、卸载 RPM 包

rpm -u [安装选项] rpm 软件包名
rpm -e [删除选项] 软件名
常用的删除选项如下:
-nodeps:卸载前不检查依赖性;
-test:并不真正卸载任何软件,只是遍历该动作。
应当注意的是,删除时在命令中使用的是软件名,而不是软件包名。

  • 查询已安装的包版本
    rpm –q 软件包名
  • 用于包查询的选项
    <包名称>:查询指定的软件包;
    -a,–all:查询所有安装的包;
    -f,–file:查询拥有文件的包
  • 用于信息查询的选项
    - i:显示包信息,包括名字、版本和描述等;
    -R,–requires:列出该包所依赖关系;
    -l,–list:列出该包文件。

# tar 类型软件包

  • tar 类型的软件包多数都是源代码,因此,在软件包中还包含了进行编译的脚本程序,它的安装过程如下:
    (1)解压缩 gz 压缩格式的包,用下列命令进行解压和解包:tar –xvzf 软件包名 如果不是 gz 压缩格式,先用相应的解压软件解压缩,现执行下面命令解包:tar –xvf 解压后的 tar 包名
    (2)执行 ./configure 命令为编译配置和预处理
    (3)执行 make 命令编译源程序
    (4)执行 make install 安装软件

# 创建备份文件 tar

tar 格式是一种容器格式,用于文件和目录结构。根据约定,档案文件的扩展名以 .tar 结尾。
tar -cvf /backup/etc.tar /etc
-c (create) 将创建档案
- v (verbose) 将更为详细地显示备份进程的输出。
-f (file) 后面输入要创建的档案的名称

  • 查看档案文件
    tar -tvf /backup/etc.tar
  • 对 tar 档案解包
    tar –xvf /backup/etc.tar
    该档案中的所有文件写入当前目录
    如果要解压缩到另一个目录,则可以使用选项 -C 并在其后输入该目录的名称
  • 如果想从备份中排除特定文件,则必须将这些文件一行一行地写入一个排除文件中,exclude.files
  • 使用选项 -X 将该列表传递到 tar
    tar -cvf /dev/st0 /home -X exclude.files
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

小春日和 微信支付

微信支付

小春日和 支付宝

支付宝

小春日和 wechat

wechat