一 Linux操作系统和Shell

简介

操作系统(Operating Systems, OS)实际上是一种用于计算机的软、硬件资源管理调度的系统级软件,它的主体是内核(Kernel),其主要负责进程管理、内存管理、文件管理和外设管理等功能,而它也向外界提供了内核的接口即系统调用(System Call)以便于通过OS来利用计算机资源。

此外,OS还为用户提供了一种交互式的命令行软件,即Shell,它接受命令并将其传递给OS去执行。Shell本质上是一种命令行解释器,而我们通常通过命令行终端去访问Shell程序。

Unix是上世纪60年代开发出的多用户、多任务的操作系统,而Linux是目前最为流行的类Unix系统。Linux将Bash作为默认的Shell。接下来,本文主要将根据UNIX Tutorial for Beginners对常用Shell命令做介绍。

系统目录结构

Linux树状目录结构:

以下为部分目录的解释:

  • /bin:该目录存放着最经常使用的命令,即可运行的Binaries (二进制文件)。
  • /boot:该目录下存放的是启动Linux时使用的一些核心文件。
  • /dev:该目录下存放的是Linux的外部设备。
  • /etc:该目录下存放的是所有的系统管理所需要的配置文件和子目录。
  • /home:用户的主目录,每个用户都有一个以用户的账号命名的的目录。
  • /lib:该目录下存放系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。
  • /root:该目录为系统管理员(超级权限者的用户)的主目录。
  • /usr:该目录存放的是用户的很多应用程序和文件。
  • /usr/bin:系统用户使用的应用程序。给系统用户使用的指令。

二 常用Shell命令

1 目录和路径

当第一次登录时,当前的工作目录即主目录。你的主目录与你的用户名具有相同的名称,例如user123,它是你的个人文件和子目录的保存位置。

注意,在Liunx中,目录本身是一种特殊的文件。


1.1 列出文件和目录

ls (list)

$ ls,列出当前工作目录下的文件和子目录

$ ls -a要列出主目录中的所有文件,包括名称以点开头的文件(隐藏文件,通常包含重要的程序配置信息)

$ ls -l,以长模式(long)列出主目录中的文件

ls -l中各个输出字段的含义(包括文件大小-字节,修改时间)

大多数命令使用的选项形式是command -options arguments,由一个中划线加上一个字符以及参数组成。

但是许多命令,也支持长选项,长选项由两个中划线加上一个字组成。许多命令也允许把多个短选项串在一起使用。

例如,ls命令的选项如下

注意:dirls功能相同,但ls会高亮目录始终会返回主目录。


1.2 创建目录

mkdir (make directory),在工作目录中创建一个子目录

$ mkdir subdir


1.3 切换目录

cd (change directory),将当前工作目录更改为目标目录(当前工作目录是你所在的目录,即你在文件系统树中的当前位置)

$ cd subdir


1.4 目录 . 和 ..

当你键入$ ls -a时,可以发现有两个特殊目录,分别称为(.)和(..)

当前目录 (.)

(.)表示当前目录,因此键入$ cd .会留在原地

父目录 (..)

( .. ) 表示当前目录的父目录,因此键入$ cd ..会将你带到文件系统树中的上一层目录(父级目录)。

注意:键入不带参数的即,$ cd始终会返回主目录。


1.5 路径名

pwd(print work directory)

$ pwd,路径名使你能够确定与整个文件系统相关的位置。

主目录~

$ ls ~,可通过波浪号~字符来引用主目录。它可用于指定从主目录开始的路径。

$ cd ~$ cd都可以切换到主目录

2 操纵文件

使用命令行程序可以更轻松地完成复杂的文件操作任务。

例如,使用如下命令:$ cp -u *.html destination可将所有HTML文件从一个目录复制到另一个目录,但只复制目标目录中不存在或比目标目录中的版本更新的文件。


通配符

使用在介绍和文件相关的命令前,有必要了解一下使这些命令如此强大的通配符

由于shell大量使用文件名,它提供了特殊字符来帮助您快速指定文件名组。这些特殊字符称为通配符。通配符允许您根据字符模式选择文件名。

下表列出了通配符及其选择的内容:



使用通配符,可以为文件名构建非常复杂的选择标准。以下是一些模式示例及其匹配内容:



我们可以将通配符用于任何接受文件名参数的命令。


2.1 复制文件

cp(copy)

$ cp file1 file2是在当前工作目录中复制file1,并将其称为file2的命令。

例如,将当前目录的文件复制到子目录,并重命名。


2.2 移动文件

mv(移动)

$ mv file1 file2 移动(或重命名)file1到file2

要将文件从一个地方移动到另一个地方,请使用mv命令。

mv命令还可以用于重命名文件,其方法是将文件移动到同一目录,但给它一个不同的名称。


2.3 删除文件和目录

rm(remove),rmdir(remove directory)

要删除文件,请使用rm命令。



使用rm file1 file2可以同时删除file1和file2

使用递归选项 ( -r),rm 也可用于删除目录:

rm -r dir1, 目录dir1连同它们的所有内容一起被删除。

注意,Linux没有取消删除命令。一旦你用rm删除了一些东西,它就消失了。如果您不小心rm,尤其是使用通配符*,可能会对系统造成严重损害。

在使用rm通配符之前,请尝试这个有用的技巧:

使用ls来构造命令。通过这样做,可以在删除文件之前查看通配符的效果。使用ls测试命令后,使用向上箭头键调用命令,然后在命令中rm

ls使用rmdir命令删除一个目录(首先确保它是空的,Linux不允许您删除非空目录)。


2.4 查看文件类型

file命令可以查看文件的数据类型。file将检查一个文件并告诉我们它是什么类型的文件。

要使用该file程序,我们只需键入:$ file name_of_file

该file程序可以识别大多数类型的文件,例如:


2.5 在屏幕上显示文件的内容

clear(clear screen)

clear命令可用于清除前面命令的终端窗口

cat (concatenate)

cat命令可用于在屏幕上显示文件的内容(cat本质上是一种重定向)

less

less命令一次将文件的内容写入屏幕一页。

如果要查看另一页,请按空格键,如果要退出阅读,请按q。对于长文件, less优先于cat使用。

head

head命令将文件的前10行写入屏幕。先清屏再输入

$ head -5 readme.txt, 将文件的前5行写入屏幕。

tail

tail命令将文件的最后10行写入屏幕。


2.6 搜索文件内容

使用less的简单搜索

使用less命令,您可以在文本文件中搜索关键字(模式)。例如,要在science.txt中搜索单词science,请输入$ less science.txt

然后,仍然在less中,键入正斜杠 [ / ],后跟要搜索的单词

less将查找并突出显示关键字。键入 [ n ] 以搜索下一个出现的单词。

grep(不要问为什么叫grep)

$ grep 'keyword' file, grep在文件中搜索指定的单词或模式。

grep命令区分大小写

先清屏,再输入% grep 科学 science.txt

要忽略大小写区别,请使用 -i 选项,即键入

$ grep -i 科学 science.txt

要搜索短语或模式,您必须将其括在单引号中(撇号)。例如要搜索陀螺,输入$ grep -i '陀螺' science.txt

grep的其他一些选项是:

  • v显示那些不匹配的行
  • n在每个匹配行之前加上行号
  • c只打印匹配行的总数

    一次可以使用多个选项。例如,没有单词science或Science的行数是$ grep -ivc science science.txt

wc(word count)

wc命令是一个方便的小工具。

要对readme.txt进行字数统计,请键入% wc -w readme.txt

要找出文件有多少行,请键入% wc -l readme.txt

使用带有通配符的命令

上述介绍的几个命令接受多个文件和目录名称作为参数,因此可以使用通配符来指定它们。这里有一些例子:

未完待续

Reference

  1. UNIX Tutorial for Beginners http://www.ee.surrey.ac.uk/Teaching/Unix/index.html
  2. Linux教程

    https://www.runoob.com/linux/linux-system-contents.html
  3. TLCL

    http://billie66.github.io/TLCL/book/index.html

    http://linuxcommand.org/lc3_lts0050.php

【开发】操作系统应用基础-Linux常用Shell命令的更多相关文章

  1. Linux常用shell命令

    1.>>>>>刚安装好的ubuntu需要为root创建密码[解决]passwd root 2.>>>>>安装完ubuntu后需要更新[解决] ...

  2. 「功能笔记」Linux常用Shell命令(终端命令)备忘录

    长期更新,空置.缺漏的部分会逐渐补上.未指明时,均为GNU版本. 文件命令 基础操作 ls 默认显示非隐藏文件.以文件名进行排序.文件名有颜色(蓝色文件夹.白色一般文件.绿色可执行文件). Cheat ...

  3. Linux - 常用Shell命令

    珠玉在前,不再赘言. 对Linux新手非常有用的20个命令 对中级Linux用户非常有用的20个命令 对Linux专家非常有用的20个命令

  4. linux 常用shell命令 ls

    ls:查看文件名和目录,用法:$ ls [选项] 1. $ ls 直接输入ls命令,则列出当前目录下的所有文件和目录,不显示详细信息,如类型,大小,日期权限等. 2. $ ls -l -l 选项,每行 ...

  5. linux 常用shell命令之wc

    wc:查看文件统计信息 用法:$ wc filename 1. $ wc fileName $ wc fileName X Y Z /Desktop/hello X:表示行数 Y:表示单词数 Z:表示 ...

  6. Linux常用shell命令持续总结

    1. 查看端口运行 netstat -lnp|grep 80 2. 定时任务 Crontab -e 编辑任务 Crontab -l 查看当前任务列表 /var/log/cron-* 任务日志

  7. Linux Shell常用shell命令

    Linux Shell常用shell命令 一.文件.目录操作命令 1.ls命令 功能:显示文件和目录的信息 ls 以默认方式显示当前目录文件列表 ls -a 显示所有文件包括隐藏文件 ls -l 显示 ...

  8. Linux主要shell命令详解(上)

    [摘自网络] kill -9 -1即实现用kill命令退出系统 Linux主要shell命令详解 [上篇] shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的 ...

  9. Linux常用脚本命令总结

    基本操作 通用操作 1. export 显示所有的环境变量,也可以获取到某个变量的详细信息: export # 显示所有 echo $SHELL # 只显示SHELL 2. whereis 使用系统自 ...

  10. Python下调用Linux的Shell命令

    有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 ...

随机推荐

  1. 如何控制Tomcat的catalina.out的大小

    catalina.out文件,数据主要来源为:System.out 和 System.err 在控制台上直接输出的信息. 编码时应避免使用System.out.println()和e.printSta ...

  2. [SpringBoot][Maven]关于maven pom文件的packaging属性

    关于maven pom文件的packaging属性 前几天在调试源码运行程序的时候,因为将项目中pom文件的packaging属性用错导致源码包无法引入使用而报Bean注入错误,在此进行总结整理记录. ...

  3. 【译】.NET 8 网络改进(二)

    原文 | Máňa,Natalia Kondratyeva 翻译 | 郑子铭 修改 HttpClient 日志记录 自定义(甚至简单地关闭)HttpClientFactory 日志记录是长期请求的功能 ...

  4. JS Leetcode 155. 最小栈 题解分析

    壹 ❀ 引 本题来自LeetCode155. 最小栈,难度简单,题目描述如下: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x ...

  5. NC204871 求和

    题目链接 题目 题目描述 已知有 \(n\) 个节点,有 \(n-1\) 条边,形成一个树的结构. 给定一个根节点 \(k\) ,每个节点都有一个权值,节点i的权值为 \(v_i\) . 给 \(m\ ...

  6. NC14291 Cut

    题目链接 题目 题目描述 给你一个长度为 \(n\) 的序列,你每次可以将一个序列分割成两个连续的的子序列, 分割的代价为原序列的总和. 现在允许你在初始时将序列重新排列一次. 问分割成 \(n\) ...

  7. 如何从零实现属于自己的 API 网关?

    序言 上一篇文章:你连对外接口签名都不会知道?有时间还是要学习学习. 有很多小伙伴反应,对外的 API 中相关的加签,验签这些工作可以统一使用网关去处理. 说到网关,大家肯定比较熟悉.市面上使用比较广 ...

  8. 【Android】使用ContentProvider实现跨进程通讯

    1 前言 ​ ContentProvider 即内容提供器,是 Android 四大组件之一,为 App 存取数据提供统一的对外接口,让不同的应用之间可以共享数据. ​ 如图,Server 端通过 C ...

  9. 【快速排序】采用D&C(divide and conquer)方法求解

    介绍 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists).平均状况下,排序 n 个项目要 Ο(nlogn) 次比较,在最坏状况下 ...

  10. CentOS 7 SSH连接超时自动断开解决方案

    用SSH登录到Linux的时候,由于默认的连接超时时间很短,经常断开! 1.修改文件 # vi /etc/ssh/sshd_config # vi /etc/ssh/sshd_config 找到 #C ...