《Unix Linux 大学教程》 - 第二十四章 学习笔记

2024-02-09 14:38

本文主要是介绍《Unix Linux 大学教程》 - 第二十四章 学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习笔记,内容基础,适合初学者。


阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)

《Unix & Linux 大学教程》 - 第一、二章 学习笔记   Unix简介 & 什么是Linux?什么是Unix
《Unix & Linux 大学教程》 - 第三、四章 学习笔记   Unix连接 & 开始使用Unix
《Unix & Linux 大学教程》 - 第五、六章 学习笔记   GUI:图形用户界面 & Unix工作环境
《Unix & Linux 大学教程》 - 第七、八章 学习笔记   Unix键盘使用 & 能够立即使用的程序
《Unix & Linux 大学教程》 - 第九、十章 学习笔记   文档资料:Unix手册与Info & 命令语法
《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记   shell & 使用shell:变量和选项
《Unix & Linux 大学教程》 - 第十三章 学习笔记   使用shell:命令和定制
《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记   使用shell:初始化文件
《Unix & Linux 大学教程》 - 第十六、十七章 学习笔记   过滤器:简介和基本操作
《Unix & Linux 大学教程》 - 第十八章 学习笔记   过滤器:统计和格式化
《Unix & Linux 大学教程》 - 第十九章(一) 学习笔记   过滤器:选取、排序、组合及变换
《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记 过滤器:选取、排序、组合及变换 正则表达式
《Unix & Linux 大学教程》 - 第二十一章 学习笔记 显示文件
《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记 vi文本编辑器(一)
《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记 vi文本编辑器(二)
《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记 vi文本编辑器(三)
《Unix & Linux 大学教程》 - 第二十三章 学习笔记 Unix文件系统
《Unix & Linux 大学教程》 - 第二十四章 学习笔记 目录操作
《Unix & Linux 大学教程》 - 第二十五章 学习笔记 文件操作
《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记 进程和作业控制
《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记 进程和作业控制



第二十四章:目录操作

ls ~用户名:列出此用户的home目录下的文件

pwd(print working directory):显示工作目录


cd(change directory,改变目录)

语法:

cd [-LP] [directory | -]

选项LP与符号链接相关,下一章中说明

cd - :返回到之前目录中


mkdir(创建目录)

语法:

mkdir [-pdirectory...

注意:不能创建两个相同的文件夹;子目录不能在父目录之前创建

-p(make parent,创建父目录):自动创建所需的父目录


rmdir(删除目录)

语法:

rmdir [-pdirectory...

注意:只有空目录才能被删除;不能删除工作目录和根目录之间的任何目录

-p(delete parent,删除父目录):自动移除所有需要移除的父目录

比如:当前文件夹下有一下目录结构

1/2/3/4/5

并且所有文件夹中都没有文件,如果想一次全部移除,使用rmdir 1/是不行的,因为文件夹不为空,使用rmdir 1/2/3/4/5也只会删除一层目录

这时可以使用rmdir -p 1/2/3/4/5


mv(移动或重命名目录)

语法:

mv directory target

directorytarget相同时,将重命名directorytarget

mv也可以对文件进行操作(25章)


目录栈

pushd、popd、dirs(shell内部命令,Korn Shell中不可用)

命令动作
dirs显示名称:home目录显示为~
dirs -l显示名称:home目录显示为完整路径
dirs -v显示名称,每行一个,并且有数字标识
pushd directory改变工作目录,将directory压入到栈中
pushd +n改变工作目录:将目录#n移到栈顶
popd改变工作目录:弹出栈顶
popd +n从栈中移除目录#n
dirs -c出当前工作目录外,移除栈中的全部目录

注意:dirs使用选项时必须单独指定,不能连在一起

(从此以后,切换目录就方便多了。。。)


ls

语法:

ls [-aCdFglrRs1] [name...]

ls默认按字母表顺序显示目录中文件名,关于环境变量LC_COLLATE说明参考第19章

export LC_COLLATE=C

-C:强制以列的形式显示

-1:每个文件名占一行的方式显示

-r:反序显示

-R:递归显示

-h(human-readable):更适合人类阅读,以合适的单位显示

-a:查看隐藏文件和隐藏文件夹

shell和vi/Vim使用的隐藏文件

文件名应用
.bash_login登录文件:Bash
.bash_logout注销文件:Bash
.bash_profile登录文件:Bash
.bashrc环境文件:Bash
.cshrc环境文件:C-Shell、Tcsh
.exrc初始化文件:vi、Vim
.history历史文件:Bash、Korn Shell、C-Shell、Tcsh
.login登录文件:C-Shell、Tcsh
.logout注销文件:C-Shell、Tcsh
.profile登录文件:Bash、Korn Shell、Bourne Shell
.tcshrc环境文件:Tcsh
.vimrc初始化文件:Vim


-F:检查文件类型

标志含义
普通文件:非执行文件
*普通文件:可执行文件
/目录
@符号链接(见第25章)
|命名管道/FIFO(见第25章)



使用颜色表示不同类型的文件

ls --color[=always|=auto|=never] [name...]

下面3条命令等价

ls --color=always

ls --color=yes

ls --color=force

如果使用ls --color=yes | less,那么会看到一些用于生成颜色的”乱码“


不使用颜色,下面3条命令等价

ls --color=never

ls --color=no

ls --color=none


仅当输出要在终端上显示时使用颜色,下面3条命令等价

ls --color=auto

ls --color=tty

ls --color=if-tty


file [name...]

检查文件类型,给出更大量的技术信息

来看看android4.0原生email下的文件


file *

Android.mk:                 ASCII English text

AndroidManifest.xml:        XML  document text

CleanSpec.mk:               ASCII English text

MODULE_LICENSE_APACHE2:     empty

NOTICE:                     ASCII English text

assets:                     directory

bin:                        directory

emailcommon:                directory

gen:                        directory

proguard.flags:             ASCII C++ program text

remove-exchange-support.sh: Bourne-Again shell script text executable

res:                        directory

src:                        directory

tests:                      directory


再来看看less程序文件的信息
file /bin/less
/bin/less: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped


磁盘空间使用情况

ls -hs

-s(size):每个文件以KB为单位列出文件的大小,可以列出目录大小

-h(human-readable):更适合人类阅读,以合适的单位显示



du [-achks] [name...]

默认只统计文件夹,不显示文件大小信息

-h(human-readable):更适合人类阅读,以合适的单位显示

-k:强制du以1KB作为单位

-s(sum,总和):只显示总和

-a(all,全部):显示文件信息(否则只显示文件夹信息)

-c(count,统计):在末尾显示总量



df(disk free-space,磁盘可用空间)

-h(human-readable):更适合人类阅读,以合适的单位显示


df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1              47G  5.0G   40G  12% /

none                  1.9G  240K  1.9G   1% /dev

none                  1.9G  1.4M  1.9G   1% /dev/shm

none                  1.9G  340K  1.9G   1% /var/run

none                  1.9G     0  1.9G   0% /var/lock

/dev/sda7             197G  165G   23G  89% /home

能看到分区情况


看看我的手机空间使用情况(这里无法使用-h选项,默认就是-h,即使执行了\df也是如此,没有起过别名)

df

Filesystem             Size   Used   Free   Blksize

/dev                   291M    64K   291M   4096

/system                787M   657M   129M   4096

/data                    1G   762M   371M   4096

/cache                 118M     4M   114M   4096

/devlog                 19M    13M     5M   4096

/vendor/firmware/misc   199M    21M   178M   4096

/vendor/firmware/adsp   199M     5M   194M   4096

/mnt/asec              291M     0K   291M   4096

/mnt/obb               291M     0K   291M   4096

/app-cache               8M     0K     8M   4096

/data/secure/data      291M     0K   291M   4096

/data/DxDrm/fuse: Permission denied

/mnt/sdcard              7G     6G     1G   16384

/mnt/secure/asec         7G     6G     1G   16384

/mnt/asec/com.skyjetinter.chaoslite-1    50M    48M     2M   4096

/mnt/asec/cn.buding.moviecoupon-1     4M     2M     1M   4096

/mnt/asec/com.revo.sog-1    15M    12M     3M   4096



quota -v

如果在共享系统上,可以使用此命令查看使用及限制情况

-v(verbose,详细):详细信息


注意:ls -s、du、df、quota几个程序以不同的方式估计存储空间的使用情况,所以结果可能会有些不同



文件系统中,空间以固定大小的组块进行分配

固定大小的组块称为块(block)

根据系统的不同,块的大小有512字节、1KB、2KB、4KB等几种

为文件所分配的最小磁盘空间数量就是一个块


磁盘存储空间也以固定大小的组块分配,称之为分配单元(allocation unit)或簇(cluster)

分配单元的大小取决于文件系统和存储设备。块大小为1K,分配单元为8K,只有一个字节的文件实际需要占用8K的磁盘空间


超块(superblock):特殊区域,存放与文件系统本身有关的关键信息


查看块大小方法

Linux:dumpe2fs

Solaris:fstyp -v

FreeBSD:dumpfs


df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1              47G  5.0G   40G  12% /

none                  1.9G  232K  1.9G   1% /dev

none                  1.9G  1.4M  1.9G   1% /dev/shm

none                  1.9G  340K  1.9G   1% /var/run

none                  1.9G     0  1.9G   0% /var/lock

/dev/sda7             197G  165G   23G  89% /home


比如我想查看/dev/sda1的情况

sudo dumpe2fs /dev/sda1 | grep "Block size"

dumpe2fs 1.41.12 (17-May-2010)

Block size:               4096



通配符(wildcard)

注意与正则区别开,他们比正则简单

符号含义
*匹配任何0个或多个字符构成的序列
?匹配任何单个字符
[list]匹配list中任何字符
[^list]匹配不在list中的任何字符
{string1|string2...}匹配其中一个指定的字符串


预定义类和第20章说的一样

含义类似于
[:lower:]小写字母a-z
[:upper:]大写字母A-Z
[:alpha:]大小写字母a-zA-Z
[:alnum:]大小写字母、数字a-zA-Z0-9
[:digit:]数字0-9


在android源码中查看packages和frameworks下的文件


ls {packages,frameworks}

frameworks:

base  compile  ex  media  opt  support


packages:

apps  experimental  inputmethods  providers  wallpapers





ls -dltu

-l(long listing,长列表):长列表

-u:显示文件的访问时间(默认显示为最后修改时间)

-t:按时间顺序排序(最近到最远)

-r:按时间顺序排序(最远到最近)(与-t一起使用)

-d:显示目录本身信息,而不是目录里面的内容信息


ls -ltr

total 76

drwxr-xr-x   3 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:31 abi

drwxr-xr-x   9 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 bionic

drwxr-xr-x   5 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 bootable

drwxr-xr-x   7 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 build

-r--r--r--   1 suzhaoqiang suzhaoqiang   87 2012-07-24 12:32 Makefile

drwxr-xr-x   8 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 cts

第一行结果为被列举文件所使用的文件系统块总数量

结果最左边的字符为文件指示符,含义如下

文件指示符

指示符含义
-普通文件
d目录
l符号连接
b特殊文件(块设备)
c特殊文件(字符设备)
p命名管道/FIFO
ssocket

涉及特殊文件时,Unix区分两种类型的设备

每次处理一个字节数据的设备(如终端)称为字符设备

每次处理固定数量字节数据的设备(如磁盘)称为块设备



tree(显示目录树)

语法:

tree [-adfFilrst] [-L level] [directory...]

下面5个选项与ls的选项作用相同


-r:反序显示

-a:查看隐藏文件和隐藏文件夹


-t:按时间顺序排序(最近到最远)

-F:检查文件类型

-s(size):每个文件以KB为单位列出文件的大小,可以列出目录大小


-d:只显示目录(也与ls的选项类似)

-f:显示完整路径名

-i:选项省略缩进

-L:指定深度

-l:跟随所有的符号连接


看看原生4.0下面的emailcommon目录结构,效果如下

packages/apps/Email/emailcommon$ tree -Fds

.

└── [       4096]  src

    ├── [       4096]  com

    │   └── [       4096]  android

    │       └── [       4096]  emailcommon

    │           ├── [       4096]  internet

    │           ├── [       4096]  mail

    │           ├── [       4096]  provider

    │           ├── [       4096]  service

    │           └── [       4096]  utility

    └── [       4096]  org

        └── [       4096]  apache

            ├── [       4096]  commons

            │   └── [       4096]  io

            │       ├── [       4096]  comparator

            │       ├── [       4096]  filefilter

            │       ├── [       4096]  input

            │       └── [       4096]  output

            └── [       4096]  james

                └── [       4096]  mime4j

                    ├── [       4096]  codec

                    ├── [       4096]  decoder

                    ├── [       4096]  field

                    │   ├── [       4096]  address

                    │   │   └── [       4096]  parser

                    │   ├── [       4096]  contenttype

                    │   │   └── [       4096]  parser

                    │   └── [       4096]  datetime

                    │       └── [       4096]  parser

                    ├── [       4096]  message

                    └── [       4096]  util


30 directories



一些图形文件管理器,大家可自行尝试

File Runner

Gentoo

Nautilus(Gnome提供)

Konqueror(KDE提供)

XFE[X File Explorer]

基于文本的文件管理器

FDclone(日本版的FD,一种DOS文件管理器)

Midnight Commander(经典Norton Commander的兼容产品)

Vim(基于vi命令的文件管理器)





转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

这篇关于《Unix Linux 大学教程》 - 第二十四章 学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694489

相关文章

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例