美文网首页
Linux常用基本命令

Linux常用基本命令

作者: DramaScript | 来源:发表于2018-08-23 10:50 被阅读22次

    Linux的目录结构

    在Linux上面和windows上是不一样的,只有一个盘,每个不同功能的文件都存放在不同的文件夹上面,并且访问的权限也是不同的,大致的文件目录有如下图:


    图片1.png

    下面分别简单介绍每个文件夹的用途:

    • /bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。
    • /boot: 该目录中存放系统的内核文件和引导装载程序文件,/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可。
    • cdrom:光盘目录,如果插入光盘会出现光盘内容(这个已经很少用了,被时代淘汰的功能)
    • /dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件,包括字符设备和块设备等,常用的是挂载光驱mount /dev/cdrom/mnt。
    • /home: 系统默认的用户宿主目录,新增用户账号时,用户的宿主目录都存放在此目录下,表示当前用户的宿主目录,test表示用户test的宿主目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。
    • /lib,/usr/lib,/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,该目录下存放了各种编程语言库。典型的linux系统包含了C、C++和FORTRAN语言的库文件。/lib目录下的库映像文件可以用来启动系统并执行一些命令,目录/lib/modules包含了可加载的内核模块,/lib目录存放了所有重要的库文件,其他的库文件则大部分存放在/usr/lib目录下。
    • /lib64:64位支持库,我的是32位的,里面只有一个文件。
    • /mnt,/media: mnt目录主要用来临时挂载文件系统,为某些设备提供默认挂载点,如floppy,cdrom。这样当挂载了一个设备如光驱时,就可以通过访问目录/mnt/cdrom下的文件来访问相应的光驱上的文件了。
    • /opt: 给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下。
    • /proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。
    • /root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
    • /run :保存从系统诞生到当前的关于系统信息的文件。
    • /sbin:存放系统管理员可执行的命令。里面也是二进制文件。一般不给普通用户执行,除非必要的时候,普通用户获取超级管理员权限可执行部分命令。
    • /snap:snap应用框架的程序文件
    • /srv:一般是系统存储的服务相关数据。服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
    • /sys:系统中的设备和文件层次结构。文件夹中存储系统信息,用户需要的信息也从中调用。
    • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
    • /usr:应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。
    • /var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log。/var/log/message: 所有的登录文件存放目录。/var/spool/mail: 邮件存放的目录。 /var/run: 程序或服务启动后。建议单独分区,设置较大的磁盘空间。

    Linux的命令基本格式

    我们打开命令行目录,输入一个命令,如下图:


    图片2.png
    起始符

    wang@wang-VirtualBox:~:第一个td表示当前登录管理员名,中间@无实际意义,wang-VirtualBox表示主机名,~表示当前所在目录(home目录),普通用户提示符,#表示超级用户提示符。

    命令格式

    基本格式:命令 [选项] [参数]

    • 需要注意的是个别命令不遵从这种格式,当有多个选项时,可以写在一起,简化选项与完整选项 -a 等同于 --all

    • 比如:查询目录选项 ls命令: ls [选项] [文件或者目录]
      选项:

    -a 显示所有文件,包括隐藏文件
    -l 显示详细信息
    -d 查看目录属性
    -h 人性话显示文件大小
    -i 显示inode

    -rwxrwxr-x 解释:

    第一列10个字符表示权限,第一个字符代表文件类型(在Linux中不是靠文件后缀名来识别文件的),最常用的有三种如下:
    - 表示文件,d表示一个目录,l表示一个软链接文件。
    接下来9位字符分为三组,rwx,rwx,r-w分别代表三个用户的权限,他们分别是 u 所有者,g所属组,o其他人,其中r读,w写,x执行。

    命令行常用快捷键

    Ctrl +c 强制终止当前命令
    Ctrl + l 清屏,等价clear命令
    Ctrl +a 光标移动到行首
    Ctrl + e 光标移动到行末
    Ctrl + u 快速删除当前行
    Ctrl + z 把命令放入后台,但是并未终止命令
    Ctrl + r 在历史命令中搜索

    Linux 查看帮助文档

    • command --help
      一般是Linux 自带的帮助信息。如 ls --help 。
    • man (有问题,找男人 manual)
      man是linux提供的一个手册,包含了绝大部分的命令,函数使用说明。该手册分为很多章节,使用man时可以指定不同的章节来浏。例:man ls 。
      man设置了如下的功能键:


      图片4.png
    • 历史信息
      当系统执行一些命令后,可按上下键查看以前的命令,history将执行过的命令列举出来。下图打入history后,显示从1一直到999个命令,截图为部分,之后输入!996 ,显示了home文件夹下的列表。
    • 自动补全
      在敲出命令的前几个字母时,按下tab键,系统会自动帮我们补全命令。注:该命令需要唯一确定。

    Linux下的cd命令

    cd==change directory==切换目录
    Linux中用cd命令来切换路径

    • pwd 查看当前目录
    • cd (若无参数,默认使用当前HOME环境变量作为参数)
    • == cd $HOME
    • == cd ~
    • == cd /home/username
      这里应该提一下,$HOME指的是当前用户的HOME目录,且~与$HOME等价(与之对应的是,/代表根目录,~代表用户的HOME目录)
    • cd - 表示:切换到上一次所在的目录。
    • cd .. 表示:切换到上级目录(linux中,'.'代表当前目录,‘..’代表上级目录)

    Ps:-P选项将目录切换到了实际的目录,而-L选项则将目录切换到了符号链接目录,缺省时默认为-L。

    Linux下的mkdir命令

    在Linux系统中,mkdir命令用来创建一个目录或一个级联目录。

    • 命令格式
      mkdir [选项] 目录名
    • 命令选项
      -m=mode:为目录指定访问权限,与chmod类似。
      -p:如果目录已经存在,则不会有错误提示。若父目录不存在,将会创建父目录。该选项常用于创建级联目录。
      -v:每个目录显示提示信息。
      mkdir命令不加任何选项默认在当前目录下创建目录,目录的默认权限为777-umask。如果目录已经存在将会提示错误。
    • 常用命令
    1. mkdir baklog:在当前目录创建baklog目录。
    2. mkdir cep dod testlog(mkdir {cep,dod,testlog}):创建多个目录。或者多个目录用大括号({})括起来,并用逗号分隔。逗号前后不能有空白。
    3. mkdir -p baklog/{bin,lib,log/{cep,dod,testlog}}:创建级联目录。同一目录下的子目录放在大括号中,并用逗号分隔。
    4. mkdir -m=r a -- 只读
      mkdir -m=w b -- 只写
      mkdir -m=rw c -- 读写
      mkdir -m=rx d -- 读可执行
      mkdir -m=rwx e -- 读写可执行
      为目录指定权限,指定的权限为mode-umask。例如,mode=rx,umask=2,则最终权限为555-2=554,即rw-rw-r--。
    5. mkdir -vp baklog/{bin,lib,log/{cep,dod,testlog}}:查看创建目录的过程信息

    rmdir和rm命令

    rmdir

    删除一个空的目录

    • -v选项:提示

    mkdir -v dirname
    结果: 操作成功后都会有提示信息。
    一次删除两个目录,用空格分开
    空目录1、2
    rmdir 1 2
    结果:一次删除了空目录1、2

    • -p选项:级联删除

    目录1122/1
    rmdir -p -v 1122/1
    结果:先删除1122/1,再删除1122。
    目录1122/1 1122/2
    rmdir -p -v 1122/1
    结果:删除1122/1,再删除1122时错误,因为此时1122不是空文件夹。

    rm

    删除文件或者目录

    • .-f选项:不管目录下的文件存在不存在,都不给予提示

    目录1122/1/a,1122/1为目录,a为文件
    rm -f 1122/1
    结果:提示1122/1为目录,不能删除
    rm 1122/1/a
    结果:成功,但是没有任何提示
    rm 1122/1/b
    结果:没有任何提示

    • -r:删除此目录下的所有文件,但是此目录不删除

    目录:1122/1 1122/2
    rm -r -v 1122
    结果:删除1122/1 1122/22

    • 组合删除:删除该目录以及该目录下的所有文件

    目录1122/1/a 1122/2
    rm -rf -v 1122

    Linux软连接和硬连接
    软连接
    • 命令:  ln -s 原文件 目标文件
    • 特征:

    1.相当于windows的快捷方式
    2.只是一个符号连接,所以软连接文件大小都很小
    3.当运行软连接的时候,会根据连接指向找到真正的文件,然后执行
    4.所有软连接文件的权限是777,而真正的权限是由指向的那个文件决定的
    5.原文件丢失,软连接无法访问,会报找不到的错误
    6.ls -al以后,软连接后面箭头指向的是原文件

    硬连接
    • 命令:  ln 原文件 目标文件
    • 特征:

    1.原文件和连接文件的属性完全一样
    2.连接文件和原文件的关系类似于:复制+同步更新
    3.当原文件丢失,硬连接文件还可以访问
    4.不能跨分区,不能针对目录使用
    5.原理:原文件和硬链接文件的i节点号是相同的(ls -i),1个文件名对应一个i节点,1个i节点可以通过多个文件名访问,所以,他们的属性完全相同,并且修改了其中一个的内容另一个也会跟着修改

    重定向

    简单的说就是将某样东西重新输入或者赋值给另外一个东西。以下就是常用的重定向符号:

    • 重定向符号

    > 输出重定向到一个文件或设备 覆盖原来的文件
    >! 输出重定向到一个文件或设备 强制覆盖原来的文件
    >> 输出重定向到一个文件或设备 追加原来的文件
    < 输入重定向到一个程序

    • 标准错误重定向符号

    2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
    2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
    2>&1 将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
    & 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 c-shell
    |& 将一个标准错误 管道 输送 到另一个命令作为输入

    • 命令重导向示例
      在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
    1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
    2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
    3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>

    [test @test test]# ls -al > list.txt
    将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代!
    [test @test test]# ls -al >> list.txt
    将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留!
    [test @test test]# ls -al 1> list.txt 2> list.err
    将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err
    [test @test test]# ls -al 1> list.txt 2> &1
    将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式!
    [test @test test]# ls -al 1> list.txt 2> /dev/null
    将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。为空,即不保存。

    • 为何要使用命令输出重导向
    1. 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
    2. 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
    3. 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
    4. 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
    5. 错误讯息与正确讯息需要分别输出时。
    Linux中grep命令

    这个命令是搜索用的。下面详细介绍一下常用的方法

    • 基础格式

    [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
    选项与参数:
    -a :将 binary 文件以 text 文件的方式搜寻数据
    -c :计算找到 '搜寻字符串' 的次数
    -i :忽略大小写的不同,所以大小写视为相同
    -n :顺便输出行号
    -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
    --color=auto :可以将找到的关键词部分加上颜色的显示喔!

    • 将filename中包含w的行输出来

    [root@zhoucentos log]# grep w filename
    wo ai wo jia
    wo hen hao
    da jia hao wo shi yi ge hao ren

    • 把行号显示出来

    [root@zhoucentos log]# grep -n w filename
    1:wo ai wo jia
    3:wo hen hao
    4:da jia hao wo shi yi ge hao ren

    • 有多少行含有匹配的模式

    [root@zhoucentos log]# grep -c wo filename
    3

    • 与正则表达式结合
      字符类的搜索:搜寻 test 或 taste 这两个单字, [] 里面不论有几个字节,他都谨代表某『一个』字节

    [root@zhoucentos log]# grep t[ae]st filename
    test is meng
    tast is huan

    反向搜索-- 字符类的反向选择 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g,如下

    [root@zhoucentos log]# grep -n '[^g]oo' filename
    8:root is a super

    行首与行尾字节 ^ $

    • 注意:
      ^ 符号,在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义!
      只要行首是wo的行

    [root@zhoucentos log]# grep -n ^wo filename
    1:wo ai wo jia
    3:wo hen hao

    找出空白行----只有行首跟行尾 (^$)

    [root@zhoucentos log]# grep -n '^$' filename
    6:
    9:
    10:

    任意一个字节 . 与重复字节 *
    这两个符号在正则表达式的意义如下:
    . (小数点):代表『一定有一个任意字节』的意思;
    * (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态

    [root@zhoucentos log]# grep -n 'g..d' filename
    8:good is a gread

    Linux的cp命令

    • 命令格式
        cp 【选项】 【源】【目录】或cp -t 【目录】 【源】
    • 示例

    cp -r dir dir2 //复制dir目录到dir2
    cp a b c d dir2 //复制文件a、b、c、d到dir2。
    cp -i /usr/men m*.c /usr/zh // 交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中。

    我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。

    Linux下的mv命令

    • 命令格式

    mv [选项]  源文件或目录   目标文件或目录

    • 命令功能

    视mv命令中第二个参数烈性的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移动至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移动至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

    • 命令参数

    -b  若需覆盖文件,则覆盖前先行备份
    -f  force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖  这个 -f 参数,大多都是指的 force, 简直就是不打招呼就壁咚
    -i  若目标文件destination已经存在,就会询问是否覆盖,  -i,  interactive,交互式。 斯文的壁咚,一般你这么问,都没啥好结果,
    -u  若目标文件存在,且source比较新,才会更新,  -u, update, 更新
    -t  --target -directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时,目标目录在前,源文件在后。

    • 命令实例

    mv test.log test1.txt // 把test.log 文件改名成test1.txt 文件

    mv test1.txt test3  // 把test1.txt文件移动到test3, test3是一个文件夹,别问我为什么

    mv log1.txt log2.txt log3.txt test3 // 将log1.txt log2.txt log3.txt 移动到 test3文件夹
    mv -t /opt/soft/test/test4 log1.txt log2.txt log3.txt   // 将log1.txt log2.txt log3.txt 移动到 /opt/soft/test/test4路径一个目录在后,一个目录在前

    mv -i log1.txt log2.txt // 它会询问你,是否覆盖log2.txt?

    mv -f log3.txt log2.txt // 不管log2.txt是不是已经存在,都会被log3.txt覆盖掉了

    mv dir1 dir2  // 如果目录dir2不存在,就将目录dir1改名为dir2;否则,将dir1移动到dir2中

    mv * ../    // *这个星号是通配符,匹配任意字符 ; ../ 这个是上级目录

    mv test3/*.txt test5 // 把当前目录的一个子目录里的文件移动到另一个子目录里

    mv log1.txt -b log2.txt // 文件被覆盖前做简单备份,前面加参数-b

    -b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。
    --backup 该选项指定如果目标文件存在时的动作,共有四种备份策略:
      1.CONTROL=none或off 不备份
      2.CONTROL=numbered或t数字编号的备份
      3.CONTROL=existing或nil:如果存在以数字编号的备份,则继续编号备份m+1...n:
      执行mv操作前已存在以数字编号的文件log2.txt txt.1,那么在此执行将产生log2.txt2,以此类推。如果之前没有以数字编号的文件,则使用下面降到的简单备份。
      4.CONTROL=simple或never:使用简单备份:在被覆盖前进行了简单备份,简单备份只能有一份,再次被覆盖时,简单备份也会被覆盖。

    find命令

    find命令详解

    tar压缩和解压缩

    Linux下的tar压缩解压缩命令详解

    Linux中which命令的用法

    • 命令格式
      which 可执行文件名称
    • 命令功能
      which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
    • 命令功能
      -n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
      -p  与-n参数相同,但此处的包括了文件的路径。
      -w  指定输出时栏位的宽度。
      -V  显示版本信息
    • 使用实例

    bixiaopeng@bixiaopengtekiMacBook-Pro ~$ which pwd
    /bin/pwd

    相关文章

      网友评论

          本文标题:Linux常用基本命令

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