美文网首页我爱编程
什么是Shell?一些常见的linux命令

什么是Shell?一些常见的linux命令

作者: LALH_08ca | 来源:发表于2017-07-31 11:26 被阅读0次

    第一部分 Linux命令行

    1. 基本的bash shell命令

    1.1 启动shell

    /etc/passwd文件包含所有系统用户列表及基本配置信息:rich:x:501:501:Rich Blum:/home/rich:/bin/bash

    - 用户名- 用户密码(占位符)- 用户的系统UID(用户ID)- 用户的系统GID(组ID)- 用户的全名- 用户的默认主目录- 用户的默认shell程序

    1.2 shell提示符

    $:bash shell的默认提示符

    echo $PS1:显示当前默认提示符设置(PS1:控制默认命令行提示符的格式)

    $ PS1="[\t][\u]\$":创建新的提示符,只需给PS1变量赋一个新的字符串

    1.3 bash手册

    man bash:man手册页面

    1.4 浏览文件系统

    常见Linux目录名称

    /:根目录/bin:GNU用户工具/boot:启动目录/dev:设备目录/etc:系统配置文件目录/home:主目录,创建用户目录/lib:库目录,存放系统和应用程序的库文件/media:媒体目录/mnt:挂载目录/opt:可选目录,存放可选软件包/root:根主目录/sbin:GNU管理员级工具/tmp:临时目录/usr:用户安装软件目录/var:可变目录,存放经常变化的目录

    遍历目录

    cd:切换目录

    绝对文件目录:从根目录开始

    相对文件目录:.:表示当前目录;..:表示当前目录的父目录

    1.5 文件和目录列表

    1.5.1基本列表功能

    ls:显示当前目录下的文件和目录

    -F:区分文件和目录-a:显示隐藏文件和目录-R:列出当前目录下包含的目录中的文件

    1.5.2修改输出信息

    ls -l:显示详细信息

    - 文件类型- 文件的权限- 文件的硬链接总数- 文件属主的用户名- 文件属组的组名- 文件的大小- 文件的上次修改时间- 文件名或目录名

    1.5.3 完整的参数列表

    ls -sail: -a:列出所有文件 -i:列出索引节点

    ​       -l:产生一个长列表 -s:列出文件的块大小

    1.5.4 过滤输出列表

    ls -l 文件名:文件名中,?代表一个字符,*代表零个或者多个字符

    1.6 处理文件

    1.6.1 创建文件

    touch 文件名:创建空文件,也可以更改文件的访问和修改时间

    -a:只修改访问时间-m:只修改修改时间-t:指定特定的时间

    1.6.2 复制文件

    cp 源文件目录 目标文件目录:复制文件

    cp -R:递归复制整个文件目录

    1.6.3 链接文件

    cp -l:创建硬链接,其中包含了源文件的信息及位置。

    cp -s:创建软连接,一个符号链接。

    1.6.4重命名文件

    mv 文件名 新文件名:mv命令是用来移动文件的(moving),也可以用于重命名。

    1.6.5 删除文件

    rm:删除文件也就是移除(removing),加-f强制删除。

    1.7 处理目录

    1.7.1创建目录

    mkdir:创建目录

    1.7.2删除目录

    rmdir:删除空目录,可以--ignore-fail-on-non-empty删除非空目录

    rm -rf:强制递归删除目录

    1.8 查看文件内容

    1.8.1 查看文件统计信息

    status:显示某个文件的所有状态信息

    1.8.2 查看文件类型

    file:查看文件类型

    文本文件可执行文件数据文件

    1.8.3 查看整个文件

    1.   `cat`:查看整个文件。`-n`添加行号,`-s`压缩空白行

    more:显示文件的内容,但会在显示每页数据之后停下来

    less:显示文件内容,功能上更高级

    1.8.4 查看部分文件

    tail:显示文件末尾部分内容

    head:显示文件开头部分内容

    2. 更多的bash shell命令

    2.1 检测程序

    2.1.1 探查进程

    ps:显示运行在当前控制台的当前用户的进程

    -ef:查看系统上运行的所有进程-H:把输出的进程组织成层级形式,即树状--forest:显示层级结构信息

    1.Unix风格参数2.BSD风格参数3.GNU全字参数

    2.1.2 实时监测进程

    top:实时显示进程信息

    2.1.3 结束进程

    kill PID:结束进程号的进程

    killall 进程名:结束相关进程

    2.2 检测磁盘空间

    2.2.1 挂载存储媒体

    mount:显示当前系统挂载的设备列表

    umount:卸载挂载的设备

    2.2.2 使用df命令

    df:挂载已挂载磁盘的使用的情况

    -h:以人类可读的形式显示

    2.2.3 使用du命令

    du:显示某个特定目录的磁盘使用情况

    2.3 处理数据文件

    2.3.1 排序数据

    sort:将文件数据默认按照标准的字符排序。

    -n:将数字按照数字排序

    -M:按月排序

    -k:

    -t:

    n:

    2.3.2 搜索数据

    grep pattern file:搜索数据

    -v:反向搜索,搜出不匹配的项目

    -n:显示匹配数据所在的行数

    -c:只显示所在行数

    2.3.3 压缩数据

    bzip2工具(.bz2)

    bzip2:压缩文件bunzip2:解压.bz2文件​bzcat:显示压缩的文本文件内容bziprecover:尝试修复损坏的压缩文件

    gzip工具(.gz)

    gzip:压缩文件gunzip:解压文件gzcat:查看压缩的文本文件内容

    zip工具(.zip)

    zip:压缩文件unzip:解压文件​zipcloak:创建一个加密压缩文件,包含指定的文件和目录zipnote:从zip文件中提取批注

    2.3.4 归档数据

    tar:归档打包数据,常见加上-zxvf

    tar命令选项:

    -A:将一个已有的tar归档文件追加到另一个tar文件-c:创建一个新的tar归档文件-d:检查归档文件和文件系统的不同之处,或者是从已有的etar归档文件中删除-r:追加文件到已有的tar文件末尾-t:列出已有tar归档文件的内容-u:将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中-x:从已有的tar归档文件中提取文件​-C dir:切换到指定目录-f file:输出结果到文件或设备-j:将输出重定向给bzip2命令来压缩内容-p:保留所有文件权限-v:在处理文件时显示文件-z:将输出重定向给gzip命令来压缩内容

    3. 使用Linux环境变量

    3.1 什么是环境变量

    ​ bash shell用环境变量的特性来存储有关shell会话和工作环境的信息。环境变量分为全局变量和局部变量。

    ​ 全局变量不仅对shell会话可见,对所有shell创建的子进程也可见。

    ​ 局部变量只对创建他们的shell可见。

    printenv:查看全局变量

    echo $全局变量名:显示单个变量值

    set:显示某个特定进程设置的所有环境变量,包括全局变量。没有单独命令能显示局部变量。

    3.2 设置环境变量

    设置局部变量

    ​ 启动bash shell 即可为局部变量赋值。如:test=testing。但是在子shell和父shell中都不能使用。

    设置全局变量:

    ​ 创建全局变量的方法是先创建一个局部变量,再导出到全局环境中,通过export完成。

    $test = testing$export test$bash$echo $testtesting

    3.3删除环境变量

    unset 环境变量名:删除环境变量,注意不要用$。

    如果在子进程中删除了全局环境变量,那么只对当前子进程有效。

    3.4 默认shell环境变量

    ​ 不是所有的默认环境变量都会在运行set命令时列出。尽管是默认环境变量,但并不代表它们所有必须有一个值。

    3.5 设置PATH环境变量

    ​ PATH环境变量是Linux系统上造成最多问题的变量。它定义了命令行输入命令的搜索路径。如果找不到,则会产生一个错误。

    3.6 定位系统环境变量

    3.6.1登陆shell

    登陆shell会从以下4个不同启动文件读取命令。

    /etc/profile//bash shell的主启动目录$HOME/.bash_profile$HOME/.bash_login$HOME/.profile

    剩下三个$HOME启动文件都有同一个作用:提供一个用户专属的启动文件来定义用户专有环境变量。大多数发行版只有三个文件中的一个。

    3.6.2交互式shell

    如果bash shell不是登陆系统时启动,shell被称为交互式shell。交互式shell不会访问/etc/profile文件,而是只用寻找用户HOME目录的.bashrc是否存在。.bashrc文件有两个作用:查看/etc目录下共用bashrc文件,二是为用户提供一个定制自己的命令别名和私有脚本函数的地方。

    3.7 可变数组

    环境变量可以作为数组来使用:$ mytest=(one two three four)

    $echo $mytest[2]

    $echo $mytest[*]

    3.8 使用命令别名

    alias 别名='命令':设置别名

    -p:显示已有别名列表

    4. 理解Linux文件权限

    4.1 Linux的安全性

    4.1.1  /etc/passwd文件:包含与用户有关的信息

    4.1.2  /etc/shadow文件:能对linux系统如何管理密码有更多的控制,只有root用户可以访问

    4.1.3  添加新用户:

    useradd:使用系统默认值及命令行参数来添加新用户

    -D:查看系统默认值

    -m:创建用户home目录

    -c comment:-d home_dir:-e expire_date:-f inactive_days:

    4.1.4 删除用户:

    userdel:删除etc/passwd的用户信息,不会删除系统中的用户文件。

    -r:同时删除用户的HOME目录及mail目录。

    4.1.5 修改用户:

    usermod:修改用户账户字段,并可以指定主要组以及附加组的所属关系。

    -l:修改用户账户的登陆名

    -L:锁定用户,无法登陆

    -p:修改用户账户密码

    -U:解除账户锁定

    passwd:修改已有用户密码

    chpasswd:从文件中读取登录名密码对,并更新密码

    chsh  chfn  chage:用来修改特定的账户信息

    4.2 使用Linux组

    ​ 组权限允许多个用户共享一组共用的权限来访问系统上的对象,比如文件,目录和设备。

    ​ 每个组都有唯一的GID。

    /etc/group:包含系统上用到的每个组的信息。该文件有四个字段:组名;组密码;GID;用户列表。

    ​ 不能通过修改该文件来实现添加用户到组,而是要用usermod命令。

    创建新组:groupadd命令用来创建新组。

    修改组:groupmod命令可以修改已有组的GID(-g)或组名(-n)。

    4.3 理解文件权限

    文件权限符:如-rw-rw-r--。

    ​ 第一个字符代表文件的类型:

    -代表文件d代表目录l代表链接c代表字符型设备

    ​ 之后有三种三字符的码,每一种三字符码代表三种访问权限:

    r:代表对象是可读的w:代表对象是可写的x:代表对象是可执行的-:代表没有权限

    ​ 这三组字符码分别对应三个安全级别:文件属主;属组成员;其他用户

    默认文件权限:

    umask:用来设置用户创建文件和目录的默认权限

    linux文件权限码

    ---:0--x:1-w-:2-wx:3r--:4r-x:5rw-:6rwx:7

    4.4 改变安全性设置

    改变权限:

    chmod:改变文件和穆勒的安全性设置。chmod 760 file

    改变所属关系:

    chown:改变文件属主和属组。chown options owner[.group] file

    chgrp:改变文件默认属组。chgrp group file

    只有root用户能够改变文件的属主,任何属主都可以改变文件属组。

    5. 管理文件系统

    5.1 探索Linux文件系统

    5.2 操作文件系统

    创建分区:

    fdisk:用来管理存储分区,是一个交互式程序。

    p:显示存储设备详细信息n:创建新分区w:将更改保存到设备上

    创建文件系统:

    检查和修复:fsck命令用来检查和修复任意类型的linux文件系统。

    5.3 逻辑卷管理器

    使用Linux LVM

    1.定义物理卷使用fdisk命令将物理分区转换成物理卷区段使用pvcreat命令来用分区创建真实的物理卷2.创建卷组vgcreate:创建卷组vgdisplay:查看新创建的卷组的细节3.创建逻辑卷lvcreate:创建逻辑卷lvdisplay:查看逻辑卷详细信息4.创建文件系统5.修改LVM

    6. 安装软件程序

    6.1包管理基础

    6.2 基于Debian的系统

    ​ dpkg命令是基于Debian系PMS工具的核心。包含在PMS中的其它工具有:

    apt-get

    apt-cache

    aptitude(最常用)

    aptitude的使用:

    管理软件包

    aptitude:进入全屏模式,q键退出

    aptitude show package_name:单个命令使用aptitude

    dpkg -L package_name:显示某个特定软件包关联的所有文件列表

    安装软件包

    aptitude search package_name:搜索特定软件包,i:软件包已经安装;p:软件包未安装

    aptitude install package_name:安装软件包

    更新软件

    aptitude safe-upgrade:更新系统上所有软件包

    卸载软件

    aptitude remove package_name:只删除软件包但不删除数据和配置文件

    aptitude purge package_name:删除软件包和相关的数据和配置文件

    aptitude库

    库存储在/etc/apt/sources.list中。

    6.3 基于Red Hat的系统

    yum:在Red Hat和Fefora中使用(重点)urpm:在Mandriva中使用zypper:在openSUSE中使用

    yum的使用

    列出安装包

    yum list installed:列出已安装的包,输出的信息可能一闪而过,最好重定向到一个文件中,如:yum list installed > installed_software。

    yum list package_name:查看特定的软件包详细信息。

    安装软件

    yum install package_name:安装软件

    更新软件

    yum list updates:更新所有可用的软件

    yum update package_name:更新特定软件

    yum update:更新所有列在更新列表中的包

    卸载软件

    yum remove package_name:只删除软件包,保留配置文件和数据文件

    yum erase package_name:删除软件包和它的所有文件

    处理损坏的包依赖关系

    yum clean all:清理放错文职的文件

    yum deplist package_name:显示所有包的库依赖关系

    yum软件库

    yum repolist:查看正在从什么库中获取文件

    6.4 从源码安装

    解压tar包

    tar -zxvf xxx.tar.gz

    cd xxx

    ./configure:为系统配置systat

    make:构建二进制文件

    make install:安装软件

    7. 使用编辑器

    7.1 Vim编辑器

    Vim编辑器

    ​ Vim有两种模式,普通模式和插入模式。Vim初始显示的是普通模式,按i后进入编辑模式,按Esc退回到普通模式。

    h:左移一个字符j:下移一行k:上移一行l:右移一个字符​PageDown(或Ctrl+F):下翻一屏数据PageUp(或Ctrl+B):上翻一屏数据G:移到缓冲区最后一行num G:移到缓冲区的第num行gg:移到缓冲区的第一行

    ​ Vim在普通模式下有个命令行模式。按:进入命令行模式。

    q:如果未修改缓冲区数据,退出q!:取消所有对缓冲区数据的修改并退出w filename:将文件保存到另一个文件名下wq:将缓冲区的数据保存到文件中并退出

    编辑数据

    ​ 在插入模式下,可以向缓冲区插入数据。在普通模式下,vim也提供了一些命令来编辑缓冲区中的数据。

    x:删除当前光标所在位置的字符dd:删除当前光标所在行dw:删除当前光标所在位置的单词d$:删除当前光标所在位置至行尾的内容J:删除当前光标所在行行尾的换行符u:撤销前一编辑命令a:在当前光标后追加数据A:在当前光标所在行行尾追加数据r char:用char替换当前光标所在位置的单个字符R text:用text覆盖当前光标所在位置的数据,知道按下Esc

    复制和粘贴

    ​ 编辑数据时删除数据实际上是将数据保存到单独的寄存器中(也就是剪切),可以使用p命令来取回数据,也就是粘贴。

    ​ 复制相对复杂一点。复制的命令是y,可以与y使用与d命令相同的第二字符(yw,y$),然后用p粘贴光标所在的位置。复杂的是你不知道自己复制了什么。

    ​ 于是vim还有一种可视模式。移动光标到要复制的开始位置,按下v键进入可视模式,移动光标复制想要复制的文本,然后按下y键激活复制,p键粘贴。

    查找和替换

    查找:按下斜线(/),输入要查找的内容回车。

    1. 如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置。2. 如果要查找的文本未在光标当前位置之后出现,则光标会绕过文件末尾,显示在该文本出现的第一个位置。3. 输出错误信息,说明未找到文本。4. 要继续查找同一单词,按下`/`键,然后回车。或者使用`n`键,表示下一个(next)。

    替换:进入替换模式,必须在命令行模式下输入::s/old/new/。

    ​ vim编辑器会跳到old第一次出现的地方并用new替换。可以对替换命令做一些修改来多处替换。

    :s/old/new/g一行命令替换所有old:n,ms/old/new/g替换行号n和m之间的所有old:%s/old/new/g替换整个文件中的所有old:%s/old/new/gc替换整个文件中的所有old,但在每次出现时提示

    7.2 Emacs编辑器

    7.3 KDE系编辑器

    7.4 GNOME编辑器

    (因为我自从接触到linux以来一直使用的都是vim,所以对于其他的编辑器以后了解的时候再补充吧。如果想要查看相关内容,建议阅读原书!)

    (完)


    技能树.IT修真院

    “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

    这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !

    注册邀请码:99872160      注册链接:IT修真院

    相关文章

      网友评论

        本文标题:什么是Shell?一些常见的linux命令

        本文链接:https://www.haomeiwen.com/subject/gowllxtx.html