`
wx1569632409
  • 浏览: 121322 次
文章分类
社区版块
存档分类
最新评论

深入理解 Unix / Linux 命令

 
阅读更多


1. 命令的剖析

Unix 的命令由2部分组成,命令本身和附加的参数。例如 ls 命令,如果直接执行 ls 命令,不带附加参数,那么默认执行的目标即为当前目录,如下

[root@localhost /]$ls
bin   dev   etc   lib    media  opt   root  sbin  sys  usr
boot  docs  home  lib64  mnt    proc  run   srv   tmp  var

我们可以添加命令参数,来使得它更加灵活, -l 参数可以使得结果集是以长结果显示更多信息,后面的路径可以指定命令执行的目标路径

[root@localhost /]$ls -l /root
total 181328
-rw-------. 1 root root      1264 Aug 15 19:36 anaconda-ks.cfg
drwxr-xr-x. 3 root root        18 Sep  1 22:12 backups
-rw-r--r--. 1 root root      2381 Sep  1 21:35 baidu.html
-rwxr-xr-x. 1 root root        10 Sep  1 05:57 cat.txt
drwxr-xr-x. 2 root root        25 Sep  1 21:43 docs
-r--r--r--. 2 root root        17 Aug 18 12:18 file
-r--r--r--. 2 root root        17 Aug 18 12:18 ha_link
-rw-r--r--. 1 root root        49 Aug 18 12:14 hard_link
drwxr-xr-x. 7   10  143       245 Aug 26 11:44 jdk1.8
-rw-r--r--. 1 root root 185646832 Aug 26 11:30 jdk-8u181-linux-x64.tar.gz
-rw-r--r--. 1 root root         0 Sep  1 22:18 log.file
-rw-r--r--. 1 root root         0 Sep  1 23:36 log.fileat
-rwxr--r--. 1 root root       114 Sep  2 06:53 purple.sh
lrwxrwxrwx. 1 root root         4 Aug 18 12:08 soft_link -> file
-rw-r--r--. 1 root root      1326 Aug 22 12:01 test.txt

2. 查找命令相关的信息

如果你从未使用过 ls 命令,该如何学习它如何使用呢?除了通过搜索引擎学习,你还可以使用 man 来学习所有你想学习的指令。如下展示了 man ls 命令执行后的输出结果,由于篇幅过长,省略了后面部分,有兴趣的朋友自行尝试

[root@localhost /]$man ls


LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐
       fied.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --all


GNU coreutils 8.22               November 2016                           LS(1)
Manual page ls(1) line 219/251 (END) (press h for help or q to quit)

从输出中我们可以了解到该命令的主要功能和支持的所有参数。除了使用 man 来学习命令,我们还可以使用 info 来学习。例如命令行输入 info ls:

[root@localhost /]$info ls

File: coreutils.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory listin\
g

10.1 'ls': List directory contents
==================================

The 'ls' program lists information about files (of any type, including
directories).  Options and file arguments can be intermixed arbitrarily,
as usual.

   For non-option command-line arguments that are directories, by
default 'ls' lists the contents of directories, not recursively, and
omitting files with names beginning with '.'.  For other non-option
arguments, by default 'ls' lists just the file name.  If no non-option
argument is specified, 'ls' operates on the current directory, acting as
if it had been invoked with a single argument of '.'.
  ...

该操作同样会告诉你如何使用 ls 来高效化你的工作。


3. 修改命令

我们可以使用一些工具来增强命令的功能,例如元字符,输入输出重定向,管道,命令置换。


元字符

上面延时的 ls 命令输出了很多文件,但是假如我们只需要列出,文件名末尾是 link 结尾的文件,可以如何操作呢?我们可以使用参数 + 通配符来完成这个功能。

[root@localhost ~]$ls *link
ha_link  hard_link  soft_link

* 代表匹配文件名中的一个或多个字符。

? 匹配文件名中的任何一个字符。

[] 匹配包含在 [] 符号内的某个字符即可。

[root@localhost ~]$ls *[link]
baidu.html  ha_link  hard_link  soft_link

如上匹配除了结尾最后一个字符是 l,i,n,k 任何一个字符的所有文件。


输出,输出重定向

上述我们操作的命令执行结果都是直接输出到了控制台,但是假如我们的输出结果很长,或者暂时有其他事情要做,结果需要等稍后去分析该怎么办呢?这个时候我们可以将结果输出重定向到到一个文件中,保存起来,稍后查看。

[root@localhost ~]$ls *[link] > links.txt
[root@localhost ~]$cat links.txt
baidu.html
ha_link
hard_link
soft_link

如上操作,我们便将文件列表的结果输出到了 links.txt 文件中,以便稍后调查问题。


管道

刚刚我们查看的是用户工作目录下的文件,输出很少,可以直接查看。但是当我们查询一个文件夹下面有很多文件的时候,输出结果很长,此时一个屏幕都无法展示结果,查看并不方便。有没有一种方法,可以让我们先查看一部分结果,查看完毕后,按下一个键继续查看下一页呢?也许聪明的你会想到 more 或者 less 命令。但是这俩个命令是来查看文件的,此时管道可以帮助你。管道可以使得输入输出重定向,将一个命令的输出作为另外一个命令的输入。

[root@localhost ~]$ls /etc | more
adjtime
aliases
aliases.db
alternatives
anacrontab
asound.conf
at.deny
audisp
audit
bash_completion.d
bashrc
binfmt.d
centos-release
centos-release-upstream
--more--

如上,ls 的输出结果,作为了 more 的输入,这样我们就可以优哉游哉的慢慢查看 ls 的结果。当然这里只是用 ls 和 more 来举例,朋友们可以自己去探索其他的命令结合管道来使用,你会爱上它的。


命令置换

同样,命令置换也可以达到像管道一样的操作。它也将命令的输出结果作为另外一个命令输入。

[root@localhost ~]$ls ${pwd}
anaconda-ks.cfg  cat.txt  ha_link    jdk-8u181-linux-x64.tar.gz  log.fileat  test.txt
backups          docs     hard_link  links.txt                   purple.sh
baidu.html       file     jdk1.8     log.file                    soft_link

如上,我们将 pwd 命令的输出(当前工作目录),作为 ls 命令的输入。当然该命令也可以用管道来实现:pwd | ls,达到同样的效果:

[root@localhost ~]$pwd | ls
anaconda-ks.cfg  cat.txt  ha_link    jdk-8u181-linux-x64.tar.gz  log.fileat  test.txt
backups          docs     hard_link  links.txt                   purple.sh
baidu.html       file     jdk1.8     log.file                    soft_link

实现的同样的效果,但是实现原理不同。命令置换是通过在子 shell 中执行结果,然后将结果返回到主 shell 中。而管道则一直在主 shell 中执行。

—————END—————

喜欢本文的朋友们,欢迎长按下图订阅,收看更多精彩内容

640?wx_fmt=jpeg

转载于:https://my.oschina.net/u/2280500/blog/1941157

分享到:
评论

相关推荐

    操作系统接口:兼容Unix/Linux命令接口1

    该任务不仅涉及到Unix/Linux命令接口的模仿与实现,还需要考虑Windows环境下命令行工具的设计与开发,这要求开发者具备较强的跨平台编程能力和对操作系统的深入理解。通过这样的实践,可以加深对操作系统内核、文件...

    UNIX/Linux命令

    ### UNIX/Linux命令详解 在IT领域,特别是操作系统管理和运维中,掌握UNIX/Linux命令是至关重要的技能。本文将根据提供的文件信息,深入解析一系列关键的UNIX/Linux命令,涵盖系统信息、硬件信息、负载统计等多个...

    UNIX/LINUX及其使用环境

    实验报告——UNIX/Linux及其使用环境 ...通过这个实验,学生不仅能掌握UNIX/Linux操作系统的日常使用,还能深入理解软件开发流程,尤其是C语言的编写、编译和调试,这对后续的系统级编程和软件开发有着重要的实践意义。

    Unix/Linux 命令参考

    通过深入理解和熟练运用这些命令,用户可以在Unix/Linux环境中高效地工作。"Unix/Linux命令参考"这份文档应该提供了更详细的指南,包括更多命令的解释和使用示例,对于初学者和经验丰富的用户都是宝贵的资源。

    Unix/Linux Shell编程(完整版)权威发布

    《Unix/Linux Shell编程(完整版)权威发布》是一本深入探讨Unix/Linux环境下Shell编程的教程,旨在帮助读者全面掌握Shell脚本的编写技巧和实践应用。对于那些希望提升系统管理效率,或者对自动化任务处理感兴趣的...

    Unix-Linux编程实践教程(中文清晰带书签).pdf

    《Unix-Linux编程实践教程》是一本面向程序员和系统管理员的实用指南,旨在通过丰富的实例深入浅出地介绍Unix和Linux环境下的系统级编程技术。这本书涵盖了从基本的命令行操作到复杂的系统调用和库函数的使用,是...

    Unix/Linux编程实践教程CD

    《Unix/Linux编程实践教程》是一本深入探讨Unix/Linux操作系统编程的实用教材,旨在帮助学习者通过实践提升在这些系统上的编程技能。CD中包含了丰富的学习资源,如PPT课件和编程示例代码,尽管没有提供习题解答,但...

    UNIX/Linux 系统管理技术手册(第四版)

    《UNIX/Linux系统管理技术手册(第四版)》(简称ULAHv4)是Evi Nemeth等作者共同编著的一本权威指南,旨在为读者提供全面且深入的UNIX/Linux系统管理知识。本书基于五种主流Linux发行版:Red Hat ES、SUSE、Debian、...

    UnixLinux编程实践教程。重写linux基础命令:ls、more、pwd等,代码_and_笔_Linux_cmd.zip

    通过本教程的学习,学习者不仅能够掌握如何编写符合POSIX标准的Unix/Linux命令,还能够提升自己的系统编程能力和解决实际问题的能力。这些技能在处理复杂的系统任务时尤其有用,也为学习者未来在Unix/Linux环境下的...

    Understanding unix/linux programming源代码

    《理解Unix/Linux编程源代码》是Bruce Molay撰写的一本实战型教程,旨在帮助读者深入理解和掌握Unix/Linux系统下的编程技巧。这本书通过丰富的实例和源代码解析,将复杂的系统编程概念化,使得初学者和有经验的...

    中南大学 UNIX/Linux课件

    1. **UNIX/Linux历史**:了解UNIX的起源、发展和主要版本,以及Linux是如何作为自由软件运动的产物出现并迅速发展的。 2. **操作系统基础**:学习操作系统的基本概念,如进程管理、内存管理、文件系统、设备管理等...

    UNIX Linux网络日志分析与流量监控

    UNIX/Linux网络日志分析与流量监控是网络管理员和安全分析师必备技能之一。该技能不仅有助于实时监控系统运行状态,还能在系统遭受攻击或出现故障时,通过分析日志文件快速定位问题,以及在安全事件发生后进行取证...

    UNIX/LINUX培训教材

    《UNIX/Linux培训教材》是一本全面介绍UNIX和Linux操作系统的经典教材,对于想要深入理解和熟练掌握这两种操作系统的人来说,是不可或缺的资源。书中详尽地涵盖了从操作系统的基本概念到实际操作技巧的各个方面,...

    深入Shell编程:Unix/Linux/OS X

    本书《深入Shell编程:Unix/Linux/OS X》是为程序员编写的参考书,旨在提供关于Shell编程的深入指导。书中详细介绍了Shell的基础知识,包括基本命令的使用、文件和目录的操作、命令选项、标准输入输出和重定向等。...

    Spotlight on Unix/Linux

    ### Unix/Linux入门指南知识点概述 ...通过深入了解这些基础知识及进阶技术,可以更好地利用Unix/Linux的强大功能来满足不同场景下的需求。无论是初学者还是有经验的系统管理员,都能从中获得宝贵的知识和技能。

    Unix/Linux课件

    在IT领域,Unix和Linux是两个非常重要的操作系统,尤其对于计算机科学的学生和专业人士而言,深入理解和掌握它们至关重要。本课件“Unix/Linux课件”来自湖南大学大四计算机选修课,旨在帮助学生全面了解这两种操作...

    UNIX/Linux课件

    - UNIX的历史和发展:了解UNIX如何从20世纪60年代的贝尔实验室诞生,发展成为全球广泛使用的操作系统。 - UNIX的基本哲学:理解“小即是美”的原则,以及模块化设计在UNIX系统中的应用。 - 命令行界面:介绍...

    Unix/Linux Cheat Sheet

    这个资源可能是一个PDF文档,包含简明易懂的Linux命令和相关操作,旨在帮助用户快速掌握在Unix或Linux环境中工作的基本技能。下面将详细讨论一些核心知识点。 **目录** 1. **命令行基础** 2. **文件与目录操作** 3...

    UNIX/LINUX material

    2. **文件系统**:了解UNIX/Linux的文件系统结构,比如根目录 `/`,以及如何使用`find`命令查找文件。 3. **权限与所有权**:理解文件和目录的读、写、执行权限,以及用户和组的概念,如何使用`chmod`和`chown`改变...

    UNIX Linux系统操作命令大全

    参考《UNIX+Shell+范例精解(第4版)》、《Linux命令大全》以及《UNIX环境高级编程》等资料,可以进一步提升技能。同时,熟练掌握命令行快捷键,如历史记录浏览(`上下箭头`)、多行编辑(`Ctrl+A`、`Ctrl+E`、`Ctrl+K...

Global site tag (gtag.js) - Google Analytics