【Linux】Shell基本命令——操作系统

目录

一、shell简介

二、快速上手:浏览你的硬盘

三、提高效率:使用命令行补全和通配符

四、查看目录和文件

1、显示当前目录:pwd

2、改变目录:cd

3、列出目录内容:ls

4、查看文本文件:cat和more

5、阅读文件的开头和结尾:head和tail

6、查找文本内容:grep

五、总结


一、shell简介

命令行和sheill这两个概念常常是令人困惑的,在很多不正式的场合,这两个名词代表着相同的概念,即命令行解释器。然而从严格意义上讲,命令行指的是供用户输入命令的界面,其本质只是接受输入,然后把命令传递给命令解释器。后者就是shell。从本质上讲,shell是一个程序,它在用户和操作系统之间提供了一个面向行的可交互接口。用户在命令行中输入命令,运行在后台的Shell把命令转换成指令代码发送操作系统。shell提供了很多高级特性,使得用户和操作系统间的交互变得简单。在Linux上,Bash shell是默认安装和使用的shell。


二、快速上手:浏览你的硬盘

本文将带领读者浏览自己计算机上的文件系统。这里的命令都非常简答,以期给读者一个整体的印象。

首先进入根目录,打开看看里面都有什么。

可以看到,Linux安装完毕后自动在根目录下生成了大量目录和文件。

下面选择home进入,这个目录中存放着系统中所有用户的主目录。主目录的名字就是用户名。在笔者的服务器上,共有两个用户,分别是Zyb和LazyWest

可以使用不带任何参数的cd命令进入用户主目录。主目录下存放着一些配置文件和用户的私人文件。用户主目录默认对其他用户关闭访问权限,这意味着Zyb不能看到LazyWest主目录下的任何东西。

下面进入/etc目录下看一看。这个目录存放着系统以及绝大部分应用软件的配置文件(这里只列出部分)。与Windows不同,Linux使用纯文本文件来配置软件。修改配置文件可以很方便的对软件进行定制。


三、提高效率:使用命令行补全和通配符

文件名是命令中最为常见的参数,然而每次完整输入文件名是一件很麻烦的事情,特别是当文件名还特别长的时候。幸运的是,BASH 提供了这样一种特性一一命令行补全在输入文件名的时候,只需要输入前面几个字符,然后按下Tab键,Shell 会自动把文件补全。例如在/etc 目录下:

 [Zyb@linux etc]$ cat fs<tab>   ## <tab>表示按下tab键

shell会将其自动补全为:

 [Zyb@linux etc]$ cat fstab

如果以已键入的字符开头的文件不止一个,那么可以连续按下Tab键两次,Shell会以列表的形式给处所有以键入字符开头的文件,例如在/etc/目录下:

 [Zyb@linux etc]$ cd s
 sasl2/      selinux/    ssh/        statetab.d/ sysconfig/  systemd/    
 security/   skel/       ssl/        sudoers.d/  sysctl.d/   

事实上,命令行补全也适合于所有Linux命令。例如输入ca并按下Tab两次时,如下:

 [Zyb@linux etc]$ w
 w               watch           wdctl           whatis          while           whoami          wpa_passphrase
 wait            watchgnupg      weak-modules    whereis         whiptail        wipefs          wpa_supplicant/
 wall            wc              wget            which           who             wpa_cli         write

注:系统命令的本质上就是一些可执行文件,可以在/usr/bin/目录下找到。从这种意义上讲,命令补全和文件名补全其实是一回事。

另外,Shell有一套被称作通配符的专业符合,它们是“*” 、“?”和“[]”。这些通配符可以搜索并批评文件名的一部分。从而简化命令的输入,这使得批量操作成为可能。

“*”用于匹配文件名中任意长度的字符串。例如需要列出目录中所有C++文件,命令如下:

 [Zyb@linux etc]$ ls *.cpp

“?”与“*”类似。但是和 “*”匹配任意长度的字符串不同,“?”只匹配一个字符。例如需要找到以test开头且后面跟一个字符的文件。

 [Zyb@linux study]$ ls test?
 test1:
 ​
 test2:
 ​
 test3:
 ​
 test4:
 ​

“[]”用于匹配所有出现在方括号内的字符。例如需要列出以test开头而仅以1或A结束的文件名:

 [Zyb@linux study]$ ls
 dir  dir.bak  ff.txt  file.txt  file.txt.bak  test1  test2  test3  test4  testA  testB  testC  x.txt
 [Zyb@linux study]$ ls test[1A]
 test1:
 ​
 testA:
 ​

也可以使用短线”-“来指定一个字符集范围。所有包含在上下界之间的字符都会被匹配。

 [Zyb@linux study]$ ls test[1-4]
 test1:
 ​
 test2:
 ​
 test3:
 ​
 test4:
 [Zyb@linux study]$ ls test[A-C]
 testA:
 ​
 testB:
 ​
 testC:

四、查看目录和文件

1、显示当前目录:pwd

pwd命令会显示当前所在的位置,即工作目录。例如,执行如下命令:

[Zyb@linux ~]$ cd /usr/local/bin/
[Zyb@linux bin]$ pwd
/usr/local/bin

注:读者可能会问一个问题,既然在 BASH 的命今提示符前,会显示当前工作路径名那么为什么还需要pwd这个命令呢?答案是这个特性并不是所有Shell都采用的。在 Freebsd 等操作系统中,BASH 并不自动显示当前目录。因此即便在某个版本的 Linux 中,pwd 显得完全没有必要,这并不意味着在其他版本的 UNIX/Linux系统中,pwd也是无用的。

2、改变目录:cd

cd 命令是在 Linux 文件系统的不同部分之间移动的基本工具。当登录系统之后,总是处在用户主目录中。这个目录有一个名字,也就是“路径名”,它是由/home/开头,后面跟着登录的用户名。 输入 cd 命令,后面跟着一个路径名作为参数,就可以直接进入另外一个子目录中去举例来说,使用下面的命令进入/usr/bin 子目录。

[Zyb@linux ~]$ cd /usr/local/bin/
[Zyb@linux bin]$ pwd
/usr/local/bin
[Zyb@linux bin]$ cd ..
[Zyb@linux local]$ pwd
/usr/local

在/usr/local/bin目录下,使用 cd .. 退出bin目录到local目录。也可以直接使用cd / 直接进入根目录,即”/“目录。

[Zyb@linux local]$ cd /
[Zyb@linux /]$ pwd
/

最后,用户总能用下面命令回到自己的用户主目录:

cd
cd ~

注:在Shell中,“..”代表当前目录的上一级目录。而“.”则代表当前目录。另外,“~”代表用户主目录,这个符号通常位于 esc 键下方。

3、列出目录内容:ls

Is 命令是 list 的简化形式,ls 的命令选项非常之多,这里只讨论一些最常用的选项。Is的基本语法如下:

ls [option]... [FILE]...

不带任何参数的ls 命令,用于列出当前目录下的所有文件和子且录。例如:

在这个列表中,可以方便地区分目录和文件。默认情况下,目录显示为蓝色,普通文件显示为黑色,可执行文件显示为草绿色,淡蓝色则表示这个文件是一个链接文性(相当于Windows下的快捷方式)。用户也可以使用带-F 选项的Is命令。

可以看到,-F 选项会在每个目录后加上/ 在可执行文件后加*,在链接文件后加上@。 这个选项在某些无法显示颜色的终端上会比较有用。但是这些文件就是主目录下所有的文件了吗?尝试一下-a 选项。如下:

这次可以看到很多头部带”.”的文件名。在Linux上,这些文件被称作隐含文件,在默认情况下不会显示。除非指定了-a选项,用于显示所有文件。命令的选项可以组合使用指定多个选项只需要使用一个短线。例如 ls -aF

另一个常用的是 -l 选项。这个选项可以用来查看文件的各种属性。

4、查看文本文件:cat和more

cat命令用于查看文件内容(通常是一个文本文件),后跟文件名作为参数。加上-n选项,则显示行号。

cat命令会一次将所有内容文件全部显示在屏幕上,这看起来是一个致命的缺陷。因为这对于一个长达几页甚至几十页的文件而言,cat显的毫无用处。为此,Linux提供more命令来一页一页的显示文件内容。

[Zyb@linux include]$ more xlocale.h 
/* Definition of locale datatype.
   Copyright (C) 1997,2000,2002,2009,2010 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _XLOCALE_H
#define _XLOCALE_H	1

/* Structure for reentrant locale using functions.  This is an
   (almost) opaque type for the user level programs.  The file and
   this data structure is not standardized.  Don't rely on it.  It can
   go away without warning.  */
typedef struct __locale_struct
{
  /* Note: LC_ALL is not a valid index into this array.  */
  struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */

  /* To increase the speed of this solution we add some special members.  */
  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;

  /* Note: LC_ALL is not a valid index into this array.  */
  const char *__names[13];
} *__locale_t;

/* POSIX 2008 makes locale_t official.  */
typedef __locale_t locale_t;

#endif /* xlocale.h */

使用此命令可以看到,more命令会在最好显示一个百分比,表示已显示内容占整个文件的比例。按下空格键向下翻动一页,按enter键向下滚动一行。按Q退出。

5、阅读文件的开头和结尾:head和tail

head和tail分别用于显示文件的开头和结尾。可以使用-n参数来指定显的行号。

注:head命令的默认输出是包括了文件名的(放在==> 和 <==之间)。tail的用法和head相同。

6、查找文本内容:grep

在很多时候,并不需要列出文件的全部内容,用户要做的只是找到包含某些信息的行。这个时候,如果使用 more 命令一行一行去找的话,无疑是费时费力的。当文件特大的时候,这样的做法则完全不可行了。为了在文件中寻找某些信息,可以使用 grep 命令。grep [option] PATTERN [FILE...]

例如在day文件中查找包含un的行,可以使用如下命令。

[Zyb@linux study]$ grep un day
sunday

grep 有两个参数。第一个是被搜索的模式(关键字),第二个是所搜索的文件。grep会将文件中出现关键词的行输出。可以指定多个文件来搜索,例如 grep un day weather


五、总结

  • 命令行是Linux 的精华部分,所有的系统管理操作都可以在 Shell 下完成 有多种不同的 Shell 可供使用。目前 Linux 上使用最广泛的是 BASH。

  • 可以使用命令行补全和通配符提高使用 Shell 的效率。

  • pwd命今用于显示当前目录信息。

  • cd命今用于在目录间切换,这是 Linux 中使用最频繁的命令之一。

  • ls 命令提供了大量选项供用户查看目录内容。

  • dir和vdir是ls 命令的袖珍版本。

  • 使用 cat 命令查看文本文件。more 命令可以分页显示一个较长的文本文件

  • 使用 head 和 tail 命令显示一个文件的开头和结尾。

  • less 命令提供了查看文件的更高级功能。man 命令就是通过调用 less 显示都助信息的。

  • grep 程序是查找文件内容的利器,更高级的使用方法参见第 21 章。

  • find 命令可以按需查找某个特定的文件 (包括目录)。

  • locate 命令通过事先建立数据库提高搜索文件的速度

  • 直接输入程序名称可以从终端运行程序。可以选择在后台执行的程序,从而使 Shell 可以继续接受命令输入。

  • whereis 命令可以查找某个特定程序所在的位置。

  • 通过 who 命令可以查看当前有哪些人登录到系统。

  • uname 命令用于显示当前系统的版本信息。

  • Linux 提供了齐全的帮助手册,可以通过 man 命令查看。这些手册通常被分 节,包含特定的主题。

  • whatis 命令和apropos 命令能够从 man 手册中提取简要信息

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌岩雀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值