Linux目录结构、bash的基础特性、I/O重定向及管道

Linux目录结构

LSB(Linux StandardsBase)是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合规定了一系列标准,其中包括文件系统层级结构标准(FHS Filesystem Hierarchy Standard)

Linux系统根目录下有众多子目录,这些目录都参照了FHS协定

/

├── bin

├── boot

├── dev

├── etc

├── home

├── lib

├── lib64

├── lost+found

├── media

├── mnt

├── opt

├── proc

├── root

├── sbin

├── selinux

├── srv

├── sys

├── tmp

├── usr

└── var

/bin binary供用户使用的基本命令;OS启动即会用到的程序

/boot:存放系统启动相关的文件,如内核、initrd,以及grub(bootloader)

/dev: 存放设备文件

块设备:随机访问,数据块(如硬盘)

字符设备:线性访问,按字符为单位(如键盘)

设备号:主设备号(major)和次设备号(minor)

/etc: 配置文件的存放目录;(需要经常备份)

/etc/sysconfig:系统级别的应用配置

/etc/init.d:系统服务脚本

/home用户的家目录,每一个用户的家目录通常默认为/home/USERNAME

/lib 基本共享库;内核模块

/lib/modules:内核模块文件

静态库,  .a

动态库, .dll, .so (shared object)

库文件是不能单独执行的,它因为没有程序的执行入口,只能被调用

/lib64 x86_64系统的库文件

/Lost+Found用来存放fsck过程中部分修复的文件的

/media挂载点目录,通常用于挂载移动设备(一般在该目录下建立子目录进行挂载)

/mnt挂载点目录,通常用于挂载额外的临时文件系统

/opt可选目录,第三方程序的安装目录(一般不用)

/proc伪文件系统,内核参数映射文件(用于输出内核与进程的相关信息)

/root管理员的家目录;

/sbin 管理类的基本命令

/selinux

/srv services,系统上运行的服务用到的中间数据

/sys 伪文件系统,输出内核所识别的当前系统上硬件设备相关的属性映射文件

/tmp: 临时文件目录

/usr Universal Shared Read-onlydata 全局共享的只读数据(可独立分区)

/usr/bin:

/usr/sbin:

/usr/lib:

/usr/lib64:

/usr/include:(应用程序的头文件:header files)

/usr/share:结构化的独立数据

doc, man(应用程序的帮助文档)

/usr/local: 现在常用的第三方程序的安装位置

/usr/local/bin

/usr/local/sbin

/usr/local/lib

/usr/local/lib64

/usr/local/etc

/usr/local/share

/var variable date files(存放经常需要发生变化的数据)

/var/cache: 应用程序缓存数据

/var/lib: 应用程序的状态信息数据

/var/local: 专用于为/usr/local下的应用程序存储可变数据

/var/lock: 锁文件

/var/log: 日志文件

/var/opt: 专用于/opt

/var/spool: 应用程序的数据池

/var/run: 运行中的进程的相关数据:通常用守护进程的pid文件

Linux的文件类型:

使用ls -l 命令列出目录内文件时,排在每行第一列的第一个字符,表示该文件的类型

[[email protected]]# ll /usr

total124

dr-xr-xr-x.   2 root root 36864 Aug 23 10:15 bin

-: 普通文件

d: 目录文件

b: 块设备文件

c: 字符设备文件

l: 符号链接文件(类似快捷方式)

p: 命名管道文件

s: 套接字文件

<<=====================================>>

bash的基础特性(一)

1)命令历史

bash保存的过去曾经执行过的命令的列表

当前shell进程的命令历史保存在缓冲区中    ;

-c: 清空列表

-d #: 删除指定的历史命令

-a: 追加当前会话的命令历史至历史文件中去;

-r:读取历史文件内容,并追加当前会话的命令历史至历史文件中去

-w:把当前会话的命令历史追加到文件

命令历史相关的环境变量:

缓冲区中的命令会在shell退出时保存至文件中用户家目录 .bash_history

history快捷方式:

!#: #为命令历史列表中的命令编号;可用执行第#条命令;

!!: 执行上一条命令;

!-#: 执行命令历史列表中的倒数第#条命令;

!string: 执行命令历史列表中的最近一次以string开头的命令;

!$: 引用上个命令的最后一个参数; ESC ——> .

history命令

HISTSIZE: 命令历史中可以保存的命令的个数;

HISTFILE: 命令历史文件;

HISTFILESIZE: 命令历史文件可以保存的命令的个数;

HISTCONTROL: 控制命令历史的生成;

ignoredups: 忽略记录重复的命令;连续的相同命令才为重复;

ignorespace: 不记录以空白字符开头的命令;

ignoreboth: 同时具有上面两种特性;

2)命令补全

在Linux系统中,输入一个命令时如果不记得完整的命令,可先输入该命令的前几个字符,再按两次TAB键,就会列出所有以输入字符开头的可用命令。

[[email protected] ~]# mkd   // 此处敲两次TAB键盘,显示下列命令

mkdict    mkdir     mkdosfs  mkdumprd

[[email protected] ~]# mkdi   // 此处敲两次TAB键盘,则显示下列命令,逐渐缩小命中的范围

mkdict  mkdir

[[email protected] ~]#

bash的命令分为两类:(如命令既有内部又有外部,优先使用内部目录位置)

内部命令:系统内建的命令

外部命令:在系统某路径下有一个可执行程序

★使用type命令可识别命令属于哪类,使用 -a选项可以查找到该命令的可执行文件

[[email protected]~]# type history

history is a shell builtin

[[email protected]~]#

[[email protected]~]# type -a ls

lsis aliased to `ls --color=auto‘

ls is /bin/ls

[[email protected]~]#

命令搜索机制:

PATH环境变量:由冒号分割的路径,自左而右搜索

[[email protected] ~]# echo $PATH

/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

命令搜索并非每次都搜索PATH路径,而是通过搜索hash以达到更高的效率。

hash:把此前搜索到的路径缓存到内存中

kv: key-value

ls --> /bin/ls

[[email protected] ~]# hash

hits        command

5        /bin/cat

1        /usr/bin/man

3        /bin/ls

8        /usr/bin/tree

3        /usr/bin/clear

3)路径补全(避免出错、提高效率)

路径补全:跟命令补全一样的概念,当用户输入路径名的开头字符,连续敲TAB键,则会搜索指定字符串卡头的目录,并补全路径。

如果该路径名是唯一:直接补全

否则:两次TAB,可列出

4)命令行展开的功能

bash命令行展开能够把一个特殊字符换成别的字符

~  展开为当前用户的主目录(家目录)

~USERNAME  展开为指定用户的家目录

{,}  可承载一个以逗号分割的列表,并其展开为多个路径

例如:

/var/{log,cache,run} = /var/log /var/cache /var/run

如何创建目录x_n、x_m、y_n、y_m

[[email protected] /]# mkdir  -pv /zjj/{x,y}_{n,m}

mkdir: created directory ‘/zjj’

mkdir: created directory ‘/zjj/x_n’

mkdir: created directory ‘/zjj/x_m’

mkdir: created directory ‘/zjj/y_n’

mkdir: created directory ‘/zjj/y_m’

目录管理命令:

mkdir :创建目录

-p:创建父目录

-v:显示创建过程

rmdir  :删除空目录

tree   :以树状结构方式显示目录

-d:只显示层级目录文件

-L level:只显示几个层级

5)命令的执行状态结果,由bash追踪和保存

命令的执行结果有两种:

命令执行结果的返回值

命令执行后的状态返回值

bash使用特殊变量$? 保存最近一条命令的状态结果,可使用 echo $?  显示

bash:每个命令,状态返回值。

成功:0

失败:1-255,(其中1、2、127被系统保留)

$?:

实例:

[[email protected] tmp]#

[[email protected] tmp]# ls /usr

bin  etc games  include  lib lib64  libexec  local sbin  share  src tmp

//以上为命令执行结果的返回值

[[email protected] tmp]# echo $?

0 //此为命令执行后的状态返回值,数值0表示命令执行成功

[[email protected] tmp]#

[[email protected] tmp]# ls /usrr

ls: cannot access /usrr: Nosuch file or directory

//以上是故意输错目录名,所以命令执行失败

[[email protected] tmp]#

[[email protected] tmp]# echo $?

2 //此为命令执行后的状态返回值,数值2表示命令执行成功

[[email protected] tmp]#

6)命令别名

命令别名:命令的另一个引用符号,由bash程序维护

直接输入alias可显示当前系统上所有已定义的命令别名

定义别名:alias 别名=‘原始命令’

例如:alias cls=‘clear‘

取消定义的别名:unalias 别名

例如:unalias cls

★如果别名同原命令名:想直接执行原命令,则需在命令前加\\,表示使用命令本身,而不是别名

★~/.bashrc#如果要使指定的别名永久生效,则修改此文件,把命令别名添加为此文件内容。

bash的基础特性(二)

1globing

bash中的文件名通配

通配符:

*:匹配任意长度的任意字符

?:匹配任意单个字符

[^] #(脱字符)匹配指定范围之外的任意单个字符

[]:匹配指定字符范围内的任意单个字符,不区分大小写

[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]

[:space:]  空白字符

[:punct:]  标点符号

[:lower:]  小写字母

[:upper:]  大写字母

[:alpha:]  大小写字母

[:digit:]  数字

[:alnum:]  数字和大小写字母

# man 7 glob  查看globing帮助手册

2)组合键

bash中有众多的快捷键,我们熟练掌握它们将会提高工作效率

光标跳转:

Ctrl+a:跳到命令行首

Ctrl+e:跳到命令行尾

Ctrl+f:光标往前跳一个字符

Ctrl+b:光标往后跳一个字符

删除OR粘贴:

Ctrl+d:删除光标所在字符

Ctrl+u: 剪切光标至命令行首的内容

Ctrl+k: 剪切光标至命令行尾的内容

Ctrl+y:粘贴所剪切的内容

Ctrl+l #清屏

Ctrl+c #终止命令

Ctrl+z #暂停命令(把进程放在后台运行)

输入jobs 查看后台运行命令

输入fg 回到前台运行

Ctrl+r #搜索历史

3IO重定向和管道

输入输出重定向

I/O: 设备, 寄存器

INPUT:标准输入:stdin, 0

OUPUT:标准输出:stdout, 1

标准错误:stderr,2

输入重定向:<,<<< p="">

<: 输入重定向(基本用不上,以下命令 < 都可省略)

cat < /etc/passwd

tr ‘a-z‘ ‘A-Z‘ < /etc/passwd

<< EOF: 此处创建文件, Here Document

常用于在脚本中创建文件或生成菜单;

#!/bin/bash

#

cat > /tmp.menu.txt << EOF

a: a is asshole

b: b is bastard

c: c is cadger

d: d is damn

EOF

输出重定向:>,>>

>: 覆盖输出

>>: 追加输出

set -C:禁止使用覆盖重定向至已经存在的文件;

set +C: 关闭上述特性;

>|:在-C特性下,强制使用覆盖重定向;

/dev/null: bit bucket,位桶

错误重定向:2>,2>>

2>: 覆盖

2>>: 追加

同时重定标准输出和错误输出:

COMMAND > /path/to/outfile 2> /path/to/errfile

重定向标准输出或错误输出至同一个文件

COMMAND &> /path/to/somefile

COMMAND > /path/to/somefile 2>&1

管道

管道:把一个命令的执行结果传递给下一条命令,作为下一条命令的参数

COMMAND1 | COMMAND2 | COMMAND3 | ...

不能在管道中传递变量,尤其不能在前面的命令中生成变量

tee的用法:

cat /etc/rc.d/rc.sysinit | tee /tmp/a.out | wc -l

分叉输出:tee,命令不会处理,会送到下一个管道

时间: 2024-10-13 10:13:19

Linux目录结构、bash的基础特性、I/O重定向及管道的相关文章

Linux命令之bash的基础特性(1)(命令历史、命令补全、路径补全、命令行展开。)

命令历史 history: 环境变量: HISTSIZE:命令历史记录的条数 HISTFILE:~/.bash_history HISTFILESIZE:命令历史文件记录历史的条数 history -d OFFSET : 删除某条历史记录 history + 数字:显示最近n条历史记录命令 调用历史命令: !+数字:例如!3:重复第三条历史命令 !!:重复上一条命令 !string:最近一次以指定字符串开头的命令 调用上一条命令最后一个参数: !$ ESC  然后再按  . Alt + . 控制

Linux目录结构、bash的基础命令学习

日期: 2015年08月23日 Linux目录结构 LSB(Linux StandardsBase)是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合规定了一系列标准,其中包括文件系统层级结构标准(FHS Filesystem Hierarchy Standard) Linux系统根目录下有众多子目录,这些目录都参照了FHS协定 / ├── bin ├── boot ├── dev ├── etc ├── home ├── lib ├── lib64 ├── lost+f

Linux基础知识--Linux的文件系统和bash的基础特性

Linux基础知识--linux的文件系统和bash的基础特性 一.Linux文件系统: Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中 linux文件系统遵循FHS(Filesystem Hierarchy Standard,文件系统目录标准),多数Linux版本采用这种文件组织形式.FHS采用了树行组织文件. FHS定义了两层规范,第一层是,/目录下面的各个目录应该要

运维基础--Linux中bash的基础特性

bash 的基础特性如下: 一.命令的别名--alias 命令 用来定义和显示命令的别名,unalias撤销定义的别名:但是要注意以下几点: 1.alias的效果仅限于当前shell的生命期: 2.如果修改.bashrc配置文件,其中保存的别名不会立即生效,只有在重新加载该文件的内容后,才会生效且永久生效: 3.为了能够保证设置的别名有效,通常两种操作都要做: 二.命令历史 shell进程会其会话中保存此前用户提交执行过的命令,history是shell的内置命令   1.命令语法格式: his

Linux 目录结构及文件基本操作

整理来自 https://www.shiyanlou.com/courses/running/59 在讲 Linux 目录结构之前,你首先要清楚一点东西,那就是 Linux 的目录与 Windows 的目录的区别,或许对于一般操作上的感受来说没有多大不同,但从它们的实现机制来说是完全不同的. 一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系上,以往的 Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘...)及分区的来实现文件管理,然后之下才是目录,目录就显得不是那

CentOS6.5菜鸟之旅:纯转载Linux目录结构

来自:http://www.iteye.com/topic/1125162 使用linux也有一年多时间了  最近也是一直在维护网站系统主机  下面是linux目录结构说明 本人使用的是centos系统,很久没有发表博文了 近期会整理自己所用所了解知识点,发表linux相关的文章,记录自己的linux点点滴滴. linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执

(转)Linux 目录结构

二.Linux 目录结构 在讲 Linux 目录结构之前,你首先要清楚一点,那就是 Linux 的目录与 Windows 的目录的区别,或许对于一般操作上的感受来说没有多大不同,但从它们的实现机制来说是完全不同的. 一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系上,以往的 Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘...)及分区来实现文件管理,然后之下才是目录,目录就显得不是那么重要,除系统文件之外的用户文件放在任何地方任何目录也是没有多大关系.所以通常

linux 目录结构(转)

原文:http://www.centoscn.com/CentOS/2014/1222/4347.html linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls.tar.mv.cat等./boot: 放置linux系统启动时用到的一些文件./boot/vmlinuz为linux的内核文件,以及/boot/grub.建议单独分区,

每天一个linux命令(23):Linux 目录结构

对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识. 当在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc.usr.var.bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件.文件系统在Linux下看上去就象树形结构,所以我们