linux输入linux ls命令实现ls /dev/sg* 显示/dev/sg0是什么意思

Linux 设备文件简介 [金步国]
Linux 设备文件简介作者:
本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失。
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
本文作者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于作者水平有限,因此不能保证作品内容准确无误。如果你发现了作品中的错误(哪怕是错别字也好),请来信指出,任何提高作品质量的建议我都将虚心接纳。
Email(QQ):在QQ邮箱
公司:某保险公司信息技术部职位:Linux SA, PostgreSQL DBA坐标:上海/北京要求:Gentoo粉优先有意者请直接加我QQ了解详情(加我时请注明"应聘")
设备管理是 Linux 中比较基础的知识,与内核的关系也比较密切。随着 Udev 的广泛使用,Linux 发行版的智能程度越来越高,许多 Linux 新用户对 /dev 目录下的东西变得不再熟悉,有时候遇见问题就会抓狂。
Linux 中的设备按照存取方式的不同,可以分为两种:
字符设备无缓冲且只能顺序存取
块设备有缓冲且可以随机(乱序)存取
而按照是否对应物理实体,也可以分为两种:
物理设备对实际存在的物理硬件的抽象
虚拟设备不依赖于特定的物理硬件,仅是内核自身提供的某种功能
无论是哪种设备,在 /dev 目录下都有一个对应的文件(节点),并且每个设备文件都必须有主/次设备号,主设备号相同的设备是同类设备,使用同一个驱动程序(虽然目前的内核允许多个驱动共享一个主设备号,但绝大多数设备依然遵循一个驱动对应一个主设备号的原则)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。
内核能够识别的所有设备都记录在原码树下的
文件中。另外,在
也有一份,貌似已经失去维护。
注意:在 /dev 目录下除了各种设备节点之外还通常还会存在:FIFO管道、Socket、软/硬连接、目录。这些东西并不是设备文件,因此也就没有主/次设备号。
了解这些设备的最基本要求就是对每个设备文件的含义了如指掌,下面列出了 Linux-3.13.2 内核中常见的已注册设备及其含义(省略了生僻与罕见的设备)。
----------------------------------------------------------------------
次设备号=文件名
----------------------------------------------------------------------
未命名设备(例如NFS之类非设备的挂载)
0 = 为空设备号保留
参见主设备号为144,145,146的块设备,以了解"扩展区域"(expansion area)
1 = /dev/mem
物理内存的全镜像。可以用来直接存取物理内存。
2 = /dev/kmem
内核看到的虚拟内存的全镜像。可以用来访问内核中的内容(查看内核变量或用作rootkit之类)。
3 = /dev/null
空设备。任何写入都将被直接丢弃(但返回"成功");任何读取都将得到EOF(文件结束标志)。
4 = /dev/port
存取I/O端口
5 = /dev/zero
零流源。任何写入都将被直接丢弃(但返回"成功");任何读取都将得到无限多的二进制零流。
7 = /dev/full
满设备。任何写入都将失败,并把errno设为ENOSPC(没有剩余空间);任何读取都将得到无限多的二进制零流。
这个设备通常被用来测试程序在遇到磁盘无剩余空间错误时的行为。
8 = /dev/random
真随机数发生器。以背景噪声数据或硬件随机数发生器作为熵池,读取时会返回小于熵池噪声总数的随机字节。
若熵池空了,读操作将会被阻塞,直到收集到了足够的环境噪声为止。建议用于需要生成高强度密钥的场合。
[注意]虽然允许写入,但企图通过写入此文件来"预存"随机数是徒劳的,因为写入的数据对输出并无影响。
9 = /dev/urandom
伪随机数发生器。更快,但是不够安全。仅用于对安全性要求不高的场合。
即使熵池空了,读操作也不会被阻塞,而是把已经产生的随机数做为种子来产生新的随机数。
[注意]虽然允许写入,但企图通过写入此文件来"预存"随机数是徒劳的,因为写入的数据对输出并无影响。
10 = /dev/aio
异步I/O通知接口
11 = /dev/kmsg
任何对该文件的写入都将作为printk的输出;而读取则得到printk的输出缓冲区内容。
[已过时,请用TMPFS]
0 = /dev/ram0
第1个 RAM disk
1 = /dev/ram1
第2个 RAM disk
[说明]将/dev/ram0用作的做法已过时(因为它仅针对image-initrd格式),当下的主流是cpio-initrd格式。
TTY(终端)设备
0 = /dev/tty0
当前虚拟控制台
1 = /dev/tty1
第1个虚拟控制台
63 = /dev/tty63
第63个虚拟控制台
64 = /dev/ttyS0
第1个UART串口
255 = /dev/ttyS191
第192个UART串口
[说明]"UART串口"是指 /16550 UART串行控制芯片
如果根文件系统以是以只读方式挂载的,那么就不可能创建真正的设备节点,
此时就使用该设备作为动态分配的主设备的别名,并挂载为根文件系统。
0 = /dev/root
辅助 TTY 设备
0 = /dev/tty
当前 TTY 设备
1 = /dev/console
系统控制台(一般是/dev/tty0)
2 = /dev/ptmx
所有 Unix98 PTY master 的复用器
3 = /dev/ttyprintk
内核通过此设备使用printk发送内嵌的用户消息(依赖于CONFIG_TTY_PRINTK)
64 = /dev/cua0
对应于 ttyS0 的呼出(Callout)设备
255 = /dev/cua191
对应于 ttyS191 的呼出(Callout)设备
虚拟控制台捕捉设备(这些设备既允许读也允许写)
0 = /dev/vcs
当前虚拟控制台(vc)的文本内容
1 = /dev/vcs1
tty1 的文本内容
63 = /dev/vcs63
tty63 的文本内容
128 = /dev/vcsa
当前虚拟控制台(vc)的文本/属性内容
129 = /dev/vcsa1
tty1 的文本/属性内容
191 = /dev/vcsa63
tty63 的文本/属性内容
回环设备(用一个普通的文件来模拟一个块设备)
0 = /dev/loop0
第1个回环设备
1 = /dev/loop1
第2个回环设备
[提示]对回环设备的绑定由 mount(8) 或 (8) 处理
SCSI 磁盘(0-15)
0 = /dev/sda
第1个 SCSI 磁盘(整个磁盘)
16 = /dev/sdb
第2个 SCSI 磁盘(整个磁盘)
32 = /dev/sdc
第3个 SCSI 磁盘(整个磁盘)
240 = /dev/sdp
第16个 SCSI 磁盘(整个磁盘)
分区表示方法如下(以第3个 SCSI 磁盘为例)
33 = /dev/sdc1
34 = /dev/sdc2
47 = /dev/sdc15
第15个分区
[提示]对于DOS分区来说,1-4是主分区,5-15是逻辑分区。但对于GPT分区来说,全是主分区,没有逻辑分区的概念。
[提示]目前的内核将SATA/PATA/IED硬盘统一使用 /dev/sd* 来表示,已经不再使用 /dev/hd* 这种过时的设备文件了。
Metadisk(RAID)设备
0 = /dev/md0
第1组 metadisk
1 = /dev/md1
第2组 metadisk
[说明]MD驱动(CONFIG_BLK_DEV_MD)的作用是将同一个文件系统分割到多个物理磁盘上。
各种杂项设备(含非串口鼠标)
1 = /dev/psaux
128 = /dev/beep
能够让主板的蜂鸣器发出不同频率声音的设备()
130 = /dev/watchdog
看门狗(CONFIG_WATCHDOG)
131 = /dev/temperature 机器内部温度
135 = /dev/rtc
实时时钟(Real Time Clock)
143 = /dev/pciconf
PCI配置空间
144 = /dev/nvram
非易失配置RAM
151 = /dev/led
发光二极管(LED)灯
152 = /dev/kpoll
内核轮询(Poll)驱动
156 = /dev/lcd
液晶(LCD)显示屏
161 = /dev/userdma
用户空间DMA访问
162 = /dev/smbus
系统管理总线(System Management Bus)
164 = /dev/ipmo
Intel的智能平台管理(Intelligent Platform Management)接口
165 = /dev/vmmon
VMware虚拟机监视器
170 = /dev/thinkpad/thinkpad
Thinkpad设备
173 = /dev/ipmikcs
智能平台管理(Intelligent Platform Management)接口
175 = /dev/agpgart
AGP图形地址重映射表(Graphics Address Remapping Table)
182 = /dev/perfctr
性能监视计数器
183 = /dev/hwrng
通用硬件随机数发生器
184 = /dev/cpu/microcode
CPU微代码更新接口(依赖于CONFIG_MICROCODE)
186 = /dev/atomicps
进程状态数据的原子快照
188 = /dev/smbusbios
SMBus(系统管理总线) BIOS
189 = /dev/ussp_ctl
用户空间串口控制器
200 = /dev/net/tun
TAP/TUN 网络设备(TAP/TUN以软件的方式实现了网络设备)
TAP模拟了以太网帧(第二层),TUN模拟了IP包(第三层)。
202 = /dev/emd/ctl
增强型 Metadisk RAID (EMD) 控制器
203 = /dev/cuse
用户空间的字符设备(Character device in user-space)
212 = /dev/watchdogs/0 第一只看门狗
213 = /dev/watchdogs/1 第二只看门狗
214 = /dev/watchdogs/2 第三只看门狗
215 = /dev/watchdogs/3 第四只看门狗
220 = /dev/mptctl
Message passing technology (MPT) control
223 = /dev/input/uinput
用户层输入设备
224 = /dev/tpm
TCPA TPM driver
227 = /dev/mcelog
X86_64 Machine Check Exception driver
228 = /dev/hpet
高精度事件定时器(HPET)
229 = /dev/fuse
Fuse(用户空间的虚拟文件系统)
231 = /dev/snapshot
系统内存快照
232 = /dev/kvm
内核虚构机(基于AMD SVM和Intel VT硬件虚拟技术)
234 = /dev/btrfs-control
Btrfs文件系统控制设备
235 = /dev/autofs
Autofs控制设备
236 = /dev/mapper/control
设备映射(Device-Mapper)控制器
237 = /dev/loop-control
回环设备控制器
238 = /dev/vhost-net
用于 virtio net 的宿主内核加速器
SCSI CD-ROM 设备
0 = /dev/scd0
第1个 SCSI CD-ROM
1 = /dev/scd1
第2个 SCSI CD-ROM
核心输入设备
0 = /dev/input/js0
第一个游戏杆(joystick)
1 = /dev/input/js1
第二个游戏杆(joystick)
32 = /dev/input/mouse0
33 = /dev/input/mouse1
63 = /dev/input/mice
所有鼠标的合体
64 = /dev/input/event0
第1个事件队列
65 = /dev/input/event1
第2个事件队列
OSS(Open Sound System)兼容设备[已过时]
0 = /dev/mixer
OSS混音控制器(CONFIG_SND_MIXER_OSS)
1 = /dev/sequencer
OSS音序器(CONFIG_SND_SEQUENCER_OSS)
3 = /dev/dsp
OSS数字音频波形输出设备(CONFIG_SND_PCM_OSS)
8 = /dev/sequencer2
第二OSS音序器(CONFIG_SND_SEQUENCER_OSS)
16 = /dev/mixer1
第二OSS混音控制器(CONFIG_SND_MIXER_OSS)
19 = /dev/dsp1
第二OSS数字音频波形输出设备(CONFIG_SND_PCM_OSS)
通用 SCSI 设备(通常是SCSI光驱)
0 = /dev/sg0
第1个通用 SCSI 设备
1 = /dev/sg1
第2个通用 SCSI 设备
[说明]许多发行版还将这些设备命名为 /dev/sga, /dev/sgb, /dev/sgc ...
通用帧缓冲(frame buffer)设备
0 = /dev/fb0
第1个帧缓冲设备
1 = /dev/fb1
第2个帧缓冲设备
31 = /dev/fb31
第32个帧缓冲设备
网络块设备(Network block devices)
0 = /dev/nb0
第1个网络块设备
1 = /dev/nb1
第2个网络块设备
闪存转换层(Flash Translation Layer)文件系统
0 = /dev/ftla
第1个MTD(Memory Technology Device)上的FTL
16 = /dev/ftlb
第2个MTD(Memory Technology Device)上的FTL
32 = /dev/ftlc
第3个MTD(Memory Technology Device)上的FTL
240 = /dev/ftlp
第16个MTD(Memory Technology Device)上的FTL
[说明]分区的表示方法与SCSI磁盘相同(最大15个)
SCSI 磁盘(16-31)
0 = /dev/sdq
第17个 SCSI 磁盘(整个磁盘)
16 = /dev/sdr
第18个 SCSI 磁盘(整个磁盘)
32 = /dev/sds
第19个 SCSI 磁盘(整个磁盘)
240 = /dev/sdaf
第32个 SCSI 磁盘(整个磁盘)
SCSI 磁盘(32-47)
0 = /dev/sdag
第33个 SCSI 磁盘(整个磁盘)
16 = /dev/sdah
第34个 SCSI 磁盘(整个磁盘)
32 = /dev/sdai
第35个 SCSI 磁盘(整个磁盘)
240 = /dev/sdav
第48个 SCSI 磁盘(整个磁盘)
SCSI 磁盘(48-63)
0 = /dev/sdaw
第49个 SCSI 磁盘(整个磁盘)
16 = /dev/sdax
第50个 SCSI 磁盘(整个磁盘)
32 = /dev/sday
第51个 SCSI 磁盘(整个磁盘)
240 = /dev/sdbl
第64个 SCSI 磁盘(整个磁盘)
video4linux
0 = /dev/video0
第1个视频采集设备(摄像头)
63 = /dev/video63
第64个视频采集设备(摄像头)
64 = /dev/radio0
第1个无线电设备(收音机之类)
127 = /dev/radio63
第64个无线电设备(收音机之类)
224 = /dev/vbi0
第1个垂直中断(vertical blank interrupt)
255 = /dev/vbi31
第64个垂直中断(vertical blank interrupt)
I2C 总线接口
0 = /dev/i2c-0
第1个 I2C 适配器
1 = /dev/i2c-1
第2个 I2C 适配器
内存技术设备(Memory Technology Device) (RAM, ROM, Flash)
0 = /dev/mtd0
第1个 MTD (读写)
1 = /dev/mtdr0
第1个 MTD (只读)
30 = /dev/mtd15
第16个 MTD (读写)
31 = /dev/mtdr15
第16个 MTD (只读)
NAND闪存转换层(Flash Translation Layer)文件系统
0 = /dev/nftla
第1个NFTL层
16 = /dev/nftlb
第2个NFTL层
240 = /dev/nftlp
第16个NFTL层
[说明]分区的表示方法与SCSI磁盘相同(最大15个)
用户模式下的虚拟块设备(分区处理方式与 SCSI 磁盘相同)
0 = /dev/ubda
第1个用户模式块设备
16 = /dev/udbb
第2个用户模式块设备
独立于特定设备的 PPP 接口
0 = /dev/ppp
独立于特定设备的 PPP 接口(CONFIG_PPP)
企业卷管理系统(Enterprise Volume Management System)
0 = /dev/evms/block_device
EVMS块设备
1 = /dev/evms/legacyname1
第1个EVMS传统设备
2 = /dev/evms/legacyname2
第2个EVMS传统设备
两个范围都可以相互延伸(向上/向下)一直到它们相遇
254 = /dev/evms/EVMSname2
第2个EVMS本地设备
255 = /dev/evms/EVMSname1
第1个EVMS本地设备
[说明]"legacyname"来源于普通的块设备名,
例如 /dev/sda5 将会变成 /dev/evms/sda5
VMware虚拟网路控制器
0 = /dev/vnet0
第1个虚拟网路
1 = /dev/vnet1
第2个虚拟网路
128-135 char
Unix98 PTY master
这些设备不应当存在设备节点,而应当通过 /dev/ptmx 接口访问。
136-143 char
Unix98 PTY slave
0 = /dev/pts/0
第1个 Unix98 PTY slave
1 = /dev/pts/1
第2个 Unix98 PTY slave
这些设备节点是自动生成的(伴有适当的权限和模式),不能手动创建。
方法是通过使用适当的 mount 选项(通常是:mode=0620,gid=&"tty"组的gid&)
将 devpts 文件系统挂载到 /dev/pts 目录即可。
用于更多非设备型挂载的扩展区域(Expansion Area)#1
0 = mounted device 256
255 = mounted device 511
用于更多非设备型挂载的扩展区域(Expansion Area)#2
0 = mounted device 512
255 = mounted device 767
用于更多非设备型挂载的扩展区域(Expansion Area)#3
0 = mounted device 768
255 = mounted device 1023
DRBD(Distributed Replicated Block Device)
0 = /dev/drbd0
第1个 DRBD 设备
1 = /dev/drbd1
第2个 DRBD 设备
EMD(Enhanced Metadisk RAID)存储单元(分区处理方式与 SCSI 磁盘相同)
0 = /dev/emd/0
第1个存储单元
1 = /dev/emd/0p1
第1个存储单元的第1个分区
2 = /dev/emd/0p2
第1个存储单元的第2个分区
15 = /dev/emd/0p15
第1个存储单元的第15个分区
16 = /dev/emd/1
第2个存储单元
32 = /dev/emd/2
第3个存储单元
240 = /dev/emd/15
第16个存储单元
MMC(MultiMeidaCard)块设备
0 = /dev/mmcblk0
第1块 SD/MMC 卡
1 = /dev/mmcblk0p1
第1块 SD/MMC 卡的第1个分区
8 = /dev/mmcblk1
第2块 SD/MMC 卡
[说明]每个MMC块设备保留的次设备号数量由 CONFIG_MMC_BLOCK_MINORS 决定(默认=8)。
或者也可以通过内核引导参数 mmcblk.perdev_minors 进行修改。
USB字符设备
0 = /dev/usb/lp0
第1个USB打印机
15 = /dev/usb/lp15
第16个USB打印机
48 = /dev/usb/scanner0 第1个USB扫描仪
63 = /dev/usb/scanner15
第16个USB扫描仪
96 = /dev/usb/hiddev0
第1个USB人机界面设备(鼠标/键盘/游戏杆/手写版等)
111 = /dev/usb/hiddev15 第16个USB人机界面设备(鼠标/键盘/游戏杆/手写版等)
132 = /dev/usb/idmouse
ID Mouse (指纹扫描仪)
0 = /dev/uba
第1个USB块设备
8 = /dev/ubb
第2个USB块设备
16 = /dev/ubc
第3个USB块设备
内核 profiling 接口
0 = /dev/profile
Profiling 控制设备
1 = /dev/profile0
CPU 0 的 Profiling 设备
2 = /dev/profile1
CPU 1 的 Profiling 设备
内核事件跟踪接口
0 = /dev/trace
跟踪控制设备
1 = /dev/trace0
CPU 0 的跟踪设备
2 = /dev/trace1
CPU 1 的跟踪设备
Nvidia 图形设备(比如显卡)
0 = /dev/nvidia0
第1个 Nvidia 卡
1 = /dev/nvidia1
第2个 Nvidia 卡
255 = /dev/nvidiactl
Nvidia卡控制设备
特定于CPU模式的寄存器(model-specific register,MSR)
0 = /dev/cpu/0/msr
CPU 0 的 MSRs
1 = /dev/cpu/1/msr
CPU 1 的 MSRs
Xen 虚拟块设备
0 = /dev/xvda
第1个 Xen 虚拟磁盘(整块磁盘)
16 = /dev/xvdb
第2个 Xen 虚拟磁盘(整块磁盘)
32 = /dev/xvdc
第3个 Xen 虚拟磁盘(整块磁盘)
240 = /dev/xvdp
第16个 Xen 虚拟磁盘(整块磁盘)
[说明]分区的表示方法与SCSI磁盘相同(最大15个)
CPU CPUID 信息
0 = /dev/cpu/0/cpuid
CPU0的CPUID
1 = /dev/cpu/1/cpuid
CPU1的CPUID
DRI(Direct Rendering Infrastructure)
0 = /dev/dri/card0
1 = /dev/dri/card1
生物识别设备
0 = /dev/biometric/sensor0/fingerprint
第1个设备的第1个指纹传感器
1 = /dev/biometric/sensor0/iris
第1个设备的第1个虹膜传感器
2 = /dev/biometric/sensor0/retina
第1个设备的第1个视网膜传感器
3 = /dev/biometric/sensor0/voiceprint
第1个设备的第1个声波传感器
4 = /dev/biometric/sensor0/facial
第1个设备的第1个面部传感器
5 = /dev/biometric/sensor0/hand
第1个设备的第1个手掌传感器
10 = /dev/biometric/sensor1/fingerprint
第2个设备的第1个指纹传感器
20 = /dev/biometric/sensor2/fingerprint
第3个设备的第1个指纹传感器
/dev 目录中的其他内容
这部分详细说明一些应该或可能存在于 /dev 目录中的其他文件。链接最好使用与这里完全相同的格式(绝对路径或相对路径)。究竟是使用硬链接(hard)还是软连接(symbolic)取决于不同的设备,但最好与这里给出示范保持一致。
必须的链接
必须在所有的系统上都存在这些连接:
------------------------------------------------------------------------
/proc/self/fd
文件描述符
/dev/stdin
stdin(标准输入)文件描述府
/dev/stdout
stdout(标准输出)文件描述府
/dev/stderr
stderr(标准错误)文件描述府
仅为 iBCS-2 所必须
仅为 iBCS-2 所必须
推荐的链接
推荐在所有的系统上都存在这些连接:
------------------------------------------------------------------------
/proc/kcore
为了向后兼容
/dev/ramdisk
为了向后兼容
/dev/ftape
为了向后兼容
/dev/bttv0
为了向后兼容
/dev/radio
为了向后兼容
/dev/i2o/*
为了向后兼容
代替 SCSI CD-ROM 的名字
本地定义的链接
下面的链接很可能需要根据机器的实际硬件配置创建其中的一部分甚至全部。这些链接仅仅是为了迎合习惯用法,它们既非必须也非推荐。
------------------------------------------------------------------------
/dev/mouse
当前鼠标设备
当前磁带设备
/dev/cdrom
当前光盘设备
/dev/cdwriter
刻录机设备
当前刻录机设备
/dev/scanner
扫描仪设备
当前扫描仪设备
/dev/modem
调制解调器(猫)
当前拨号设备
根文件系统设备
当前根文件系统设备
当前swap设备
/dev/modem 不应当用于能够同时支持接入(dialin)和呼出(dialout)的猫,因为往往会导致锁文件问题。如果存在 /dev/modem ,那么它应当指向一个恰当的主 TTY 设备。
对于SCSI设备,/dev/tape 应该指向 /dev/st* ,而 /dev/cdrom 应该指向 /dev/sr* ;而 /dev/cdwriter 和 /dev/scanner 应当分别指向对应的 /dev/sg* 。
/dev/mouse 可以指向一个主串行 TTY 设备、一个硬件鼠标、或者一个对应鼠标驱动程序的套接字(例如 /dev/gpmdata )。
套接字和管道
持久套接字和命名管道可以存在于 /dev 中。常见的有:
/dev/printer
lpd 本地套接字
syslog 本地套接字
/dev/gpmdata
gpm 鼠标多路复用器(multiplexer)
/dev/initctl
init 监听它并从中获取信息(用户与 init 进程交互的通道)
以下目录被保留用于挂载特殊的文件系统。这些特殊的文件系统只提供内核接口而不提供标准的设备节点。
PTY slave 文件系统
提供对 POSIX 共享内存的直接访问
设备是一种特殊的字符设备。终端设备是可以在会话中用作控制终端的任何设备,包括:虚拟控制台、串行接口、伪终端(PTY)。
所有终端设备共享一个通用的功能集合(线路规则),这包含常规的终端线路规程以及SLIP和PPP模式。所有的终端设备的命名都很相似。这部分内容将解释命名规则和各种类型的TTY(终端)的使用。需要注意的是这些命名习惯包含了几个历史遗留包袱。其中的一些是Linux所特有的,另一些则是继承自其他系统,还有一些反映了Linux在成长过程中抛弃了原来借用自其它系统的一些习惯。井号(#)在设备名里表示一个无前导零的十进制数。
虚拟控制台和控制台设备
虚拟控制台是在系统视频监视器上显示的全屏终端。虚拟控制台被命名为 /dev/tty# (编号从 /dev/tty1 开始)。/dev/tty0 是当前虚拟控制台。/dev/tty0 用于在不能使用帧缓冲设备(/dev/fb*)的机器上存取系统显卡,但 /dev/console 并不用于此目的。控制台设备(/dev/console)由内核直接管理,用于接收和显示系统消息,以及单用户模式登陆。
这里所说的"串行接口"是指 RS-232 串口和任何模拟这种接口的设备,无论是硬件(如调制解调器)还是软件(如ISDN驱动)。Linux中的每一个串口都有两个设备名:主设备或呼入(callin)设备、辅设备或呼出(callout)设备。两者之间使用字母的大小写进行区分。比如,对于任意字母"X",设备名分别为 /dev/ttyX# 与 /dev/cux# 。由于历史原因,/dev/ttyS# 和 /dev/ttyC# 分别等价于 /dev/cua# 和 /dev/cub# 。名称 /dev/ttyQ# 和 /dev/cuq# 被保留为仅供本地使用。
串口的仲裁是通过锁文件(/var/lock/LCK..ttyX#)来提供的。锁文件的内容应该是以ASCII码表示的锁定进程的PID。常见的做法是安装一个诸如 /dev/modem 这样的链接来指向串口。为了确保能够正确的预先锁定这些链接,软件应该追踪符号链接并锁定所有可能的名字。此外,还建议为相应的辅设备安装对应的锁文件。为了避免死锁,建议按以下顺序获取锁,并按相反的顺序释放锁:
符号链接名,如果有(/var/lock/LCK..modem)
"tty"名(/var/lock/LCK..ttyS2)
辅设备名(/var/lock/LCK..cua2)
在符号链接出现嵌套的情况下,锁文件应按照符号链接的解析顺序来安装。
在任何情况下,应用程序都应该等待另一个程序释放锁之后,再持有这个锁。此外,试图为辅设备创建锁文件的应用程序应考虑被用于非串口的TTY端口的可能性(此时不存在辅设备)。
伪终端(PTY)
伪终端既可以用于创建登陆会话,也可以为其他需要通过TTY线路规则(包括SLIP或者PPP功能)来生成数据的进程提供帮助。每一个 PTY 都有一个master端和一个slave端。按照 System V/Unix98 的 PTY 命名方案,所有master端共享同一个 /dev/ptmx 设备节点(打开它内核将自动给出一个未分配的PTY),所有slave端都位于 /dev/pts/ 目录下,名为 /dev/pts/# (内核会根据需要自动生成和删除它们)。
一旦master端被打开,相应的slave设备就可以按照与 TTY 设备完全相同的方式使用。master设备与slave设备之间通过内核进行连接,等价于拥有 TTY 功能的双向管道(pipe)。linux的常用命令
linux的常用命令
主要讲解Linux下基本命令的使用,无法列出所有Linux命令的使用说明。读者在使用没有列出的命令时,可以使用&--help&参数查询该命令所附的在线帮助,或者利用man来查询更详细的使用说明。
ash --a shell
这是由Kenneth Almquist在1989年编写的,ash是Linux下的许多命令解释器中的一个,它的许多特性接近于SYSTEM V的shell。
(2)部分参数说明
ash [ -efIijnsxz ] [ +efIijnsxz ] [ -c命令] [ 参数 ]
-c 命令:若用-c参数,则ash从标准输入中读入命令(在执行完-c带的命令之后)。
-s:若用-s参数,则ash从标准输入中读入命令(在执行完-c带的命令之后)。
如果不跟-c -s参数则ash以所跟的第一个参数为文件名,从此文件中读入命令。如无参数则ash缺省设定-s参数,从标准输入中读入命令,直到输入exit。
如果参数0的第一个字母是&-&则ash确定为login shell,ash将从/etc/profile或用户的根目录中的.profile读入相应的设置和环境变量。
-e:若用-e参数,则ash执行命令后返回值为非零值时则退出ash。
-f:若用-f参数,则ash关闭自动产生文件名功能。
-j:打开伯克利UNIX风格的工作控制。
-n:读入命令但是并不执行。
ash执行ls这个命令后退回原先的目录和shell。
ash执行一个新的shell,现在可以在这个shell中工作,按(Ctrl-D)或输入exit后,则退回原先的目录和shell,所设定的环境变量返回原先的值。
at,batch,atq,atrm:安排、检查、删除队列中的工作。
由Thomas Koenig编写。
(2)部分参数说明
at [-V] [-q队列] [-f文件名] [-mldbv] 时间
at -c 作业 [作业…]
atq [-V] [-q队列] [-v]
atrm [-V] 作业 [作业…]
batch [-V] [-q队列] [-f文件名] [-mv] [时间]
at在设定的时间执行作业。
atq列出用户排在队列中的作业,如果是超级用户,则列出队列中的所有工作。
atrm删除队列中的作业。
batch用低优先级运行作业,只要系统的loadavg(系统平均负载)&1.5(或者在atrun中设定的值)它就开始执行作业。
-V:若用-V参数,则显示版本号到标准错误输出。
-q队列:若用-q参数,则指定可选队列名称,队列名称可以是a到z或A到Z之间的任意字母。at的缺省队列名是c,batch的缺省队列名是E,队列的字母顺序越高,则队列的优先级越低。如果是大写字母的话则提交给batch,如果atq使用-q参数,则只显示这个队列中的作业。
-m:执行完作业后即使此作业并没有输也给提交作业的用户发送提示mail。
-f文件名:从文件中读取作业。
-l:等于atq。
-d:等于atrm。
-b:等于batch。
时间:这是用户设定的作业开始执行的时间。时间的格式分成三个部分:时间、日期、偏移量。可接受的时间形式是HHMM或HH:MM,在一天中指定的时间运行,如果时间过去了就在第二天执行。可以在时间后加入AM或PM使其在上午或下午运行,也可以指定在哪一天执行,给出日期的格式应为MMDDYY或MM/DD/YY或MM.DD.YY,也可以给出偏移量:
时间+计数时间间隔
时间间隔可以是minutes,hours,days,weeks。
也可以指定today让作业在今天执行,指定tommorow让作业在明天执行。
(3)注意事项
如果没有指定-f选项,是at从标准输入读入所有的命令,所以可以通过管道、重定向或交互输入来输入命令。
超级用户可以在任何情况下使用at系列的命令。一般用户使用at系列命令的权利由文件/etc/at.allow,/etc/at.deny控制。如果/etc/at.allow存在,则只有列在这个文件中的用户才能使用at系列的命令。如果/etc/at.allow文件不存在,则检查/etc/at.deny这个文件。只要不列在这个文件中的用户都可以使用at系列的命令。缺省的配置是/etc/at.deny,是一个空文件,这表明所有的用户都可以使用at系列的命令。
at -f work 4pm + 3 days
在三天后下午4点执行文件work中的作业。
at -f work 10am Jul 31
在七月31日上午10点执行文件work中的作业。
banner:打印大标题。
banner在标准输出上打印高质量的标题,如果没有输入要打印的文字,则其等待从标准输入输入一行文字。其标题由&*&组成。由Mark Horton编写。
(2)部分参数说明
/usr/bin/banner [ -wn ]信息
-w宽度 输出宽度从131到n,n缺省为80列。
(3)注意事项
不能打印字符:& ,&,[,],\,^,_,{,},|,-。信息长度为10个英文字符,如果用空格分开字符串,还是连续打印字符串,两个字符串可以被括在引号(&)中。这命名banner把这些字任串置于同一行中。
bash:GNU Bourne-Again Shell
自由软件基金会(Free Software Foundation Inc)拥有bash版权。
bash是Linux下的许多命令解释器中的一个,同sh兼容,并且包含了ksh和csh中一些有用的特性。遵从IEEE Posix Shell and Tools specification(IEEE Working Group 1003.2)。
(2)部分参数说明
bash [参数] [文件名]
-c字符串:若用-c参数,则bash从字符串中读入命令,如果字符串后还有变量就被设定为从$0开始的位置参数。
-i:若用-i参数,则bash是交互的。
-s:若用-s参数,则bash从标准输入中读入命令(在执行完-c带的命令之后。)直到输入exit。
-:单一的-符号表明参数执行完毕,并且屏蔽此后所跟参数,后面的所有变量都被看作是文件名。
-norc:如果hash是交互的,则不执行个人初始化文件:-/.bashrc,如果bash作为sh来运行,这个参数缺省是关闭的。
-noprofile:不执行系统范围的启动文件/etc/profile也不执行个人的启动文件-/.bash_profile,-/.bash_login或-/.profile,缺省情况下,bash作为登录的shell时以这些文件作为启动文件。
--refile文件名:如果bash是交互的,则以此文件作为bash的启动文件。替代-/.bashrc。
-version:在bash开始时显示此bash的版本号。
-quiet:不显示版本号和其他信息,这是缺省值。
-login:激活bash,伪装为登录shell。
-nobraceexpansion:不执行大括号扩展。
-nolineediting:在交互状态下不使用GNU的readline库去读取命令。即取消了命令行编辑功能。
-posix:改变bash的行为,使其符合Posix 1003.2规定的标准。
(3)注意事项
bash过于庞大,运行速度也太慢,并且不符合Posix标准。在某些情况下aliases
模糊不清。
lark:-&bash -version
GNU bash, version 1.14.7(1)
显示此bash的版本号,并进入一个交互的shell。
bc:一个简单的计算器。
作者为Philip A.Nelson.,bc是一个支持交互式的表达式计算的语言,其格式类似于C语言,在命令行上还可以加载一个标准的数学库。
(2)部分参数说明
bc [-lwsqv] [长选项] [文件名…]
-l和--mathlib:定义标准数学库。
-w和--warn:给出对不符合Posix标准的扩展功能的警告。
-s和--standard:变成符合Posix标准的bc。
-q和--quiet:不输出GNU bc的欢迎信息。
-v和--version:输出版本号和版权信息后退出。
Copyright (c) , , 1997 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type 'warranty'.
1+2*3.1415926
cal:显示一个日历。
最早出现在Version 6 AT&T UNIX。cal在标准输出上显示日历。对于查询某年某月某日的用户来说是十分有用的。
(2)部分参数说明
cal [-jy] [月[年]]
-j:显示julian日期(日子是从1月1日开始累加的)
-y:显示今年的日历
年份必须写全,&cal 89&是错误的,应该为&cal 1989&。
月份必须是在1~12之间的数字,或英文的全称(过少无法区分)。不加参数则输出当前月的日历。
lark:-& cal 3 1998
March 1998
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
但是 日历就非常奇怪,少了13天。
lark:-&cal 3 1998
September 1752
Su Mo Tu We Th Fr Sa
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
这是因为这个月开始整个大不列颠帝国(美国那时还是英国殖民地),从凯撒历史更换成现行的公历。[注:教皇格列高里十三世(Pope Gregory XIII)于1582年改革历法,可是大不列颠帝国直到1752年才换用新的公历。]
cat:连接文件并打印到标准输出。
cat是CA Tenate的缩写,常常用来显示文件,类似于DOS下的TYPE命令。
(2)部分参数说明
cat [-benstuvAET] [--number] [--number-nonblank]
[--squeeze-blank] [--show-nonprinting] [--show--ends]
[--show-tabs] [--show-all] [--help] [--version] [文件名…]
-b,--number-nonblank:计算所有非空输出行,从第一行开始计数。
-e:作用等于-vE。
-n:--number:计算所有输出行,从第一行开始计数。
-s,--squeeze-blank:将所有连续的多个空行替换为一个空行。
-t:作用等于-vT。
-u:没有作用,只是为了某些UNIX的兼容性而设。
-v,--show-nonprinting:显示除换行符和TAB以外的所有控制符。使用^作标志,并在字符的高位放置Escape控制符。
-A,--show-all:作用等于-vET.
-E,--show-ends:在每一行的结尾加上字符&$&。
-T,--show-tabs:显示控制符TAB为'^I'。
--help:输出帮助信息并退出(返回值为非零值)。
--version:输出版本信息并退出。
lark:-&cat -b -E.lessrc 显示文件.lessrc的内容
1 back-line $ $
3 forw-scroll $ $
4 back-scroll $
5 goto-line $
6 goto-end $
lark:-&cat myfile1 myfile2 &tmp 将文件myfile1,myfile2连结起来输出到文件tmp
cd:改变当前目录。
(2)部分参数说明
如果不加目录名,则回到用户的根目录,此外用户必须拥有该目录的权限。进入另外一个用户的目录只要cd -用户名即可。
lark:/tmp&cd id1 进入id1目录
lark:/tmp/id1&cd-chenxy 进入用户chenxy的目录
lark:-chenxy&
chgr:改变文件的组。
(2)部分参数说明
chgrp [-Refv] [--recursive] [--changes] [--silent]
[--quiet] [--verbose] [--help] [--version]组文件名…
-c --changes:只有在文件的组确实改变时才进行详细说明。
-f --quiet --silent:不输出组不能改变的文件的错误信息。
-v --verbose:详细说明组的变化。
-R --recursive:改变本目录及其所有子目录的文件的组。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
组:要改变到的组可以是组号对应的数字;也可以是/etc/group文件中的组名。
文件名:以空格分开的要改变组所有权的文件列表,支持通配符。
如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
lark:-&chgrq -R book /opt/local/book/*.*
改变/opt/local/book/及其子目录下的所有文件的组为book。
chmod:改变文件保护,文件保护控制用户对文件的访问权,有三个安全级别,所有者级别,组访问级别,其他用户访问级别,在这三个级别中,又有三种权限:读(r),写(w),执行(x)。(用户可以ls-lg来观看某一文件的所属的group)对于文件来说读权限意味着可以看文件的内容,写文件可以修改或删除文件,执行权限则可以执行它(类似于DOS下的EXE,COM,BAT文件)。对于目录来说,读权限意味着可以查看目录下的内容,写权限意味着能在目录下建立新文件,并可以从目录中删除文件,执行权限意味着可以从一个目录转变到另一个目录。
(2)部分参数说明
chmod [-Rcfv] [--recursive] [--changes] [--silent]
[--quiet] [--verbose] [--help] [--version] 保护权限 文件名…
-c --changes:只有在文件的权限确实改变时才进行详细说明。
-f --silent -quiet:不输出权限不能改变的文件的错误信息。
-v --verbose:详细说明权限的变化。
-R --recursive:改变本目录及其所有子目录的文件的权限。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
保护权限:格式为[ugoa…][[+ - =] [r w x Xstugo…]…] […]
&ugoa&控制哪些用户对该文件的权限将被改变:(u)文件的所有者,(g)与文件所有者同组的用户(o)其他组的用户(a)所有用户,操作符&+&使用用户选择的权限被追加到每个目标文件。操作符&-&使得这些权限被撤销。&=&使得目标文件只具有这些权限。&r w x Xstugo&选择新的属性。(r)读权限(w)写权限(x)执行权(或对目录的访问权)(X)只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性(s)同时设定用户或组ID(t)保存程序的文本到交换设备上(u)目标文件属主(g)目标文件属主所在组(o)其他用户。如果用数字来表示属性,则(0)没有权限,(1)执行权,(2)读权,(4)写权,然后将其相加,所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
文件名:以空格分开的需要改变权限的文件列表,支持通配符。
lark-&chmod a + x destfile 使所有用户对文件destfile有读写执行权
lark-&chmod 644 destfile 使所有用户可以读文件destfile只有属主才能改变
chown:改变文件的属主和组。
(2)部分参数说明
chown [-Refv] [--recursive] [--changes] [--help] [--ver-sion] [--silent] [--quiet] [--verbose] [用户] [: .] [组] 文件名…
-c --changes:只有在文件的属主确实改变时才进行详细说明。
-f --silent -quiet:不输出属主不能改变的文件的错误信息。
-v --verbose:详细说明属主的变化。
-R --recursive:改变本目录及其所有子目录的文件的属主。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
用户:可以是用户名或用户id。
组:可以是组名或组的id。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
lark-&chown dfbb:book destfile 将文件destfile的属主改成dfbb,组改成book
改变用户登录的shell。
作者Julianne Frances Haugh
(2)部分参数说明
chsh [-s 登录的shell] [用户名]
普通用户可以改变自己的登录shell,超级用户可以改变其他用户的登录shell,所有的shell必须是在/etc/shells文件中列出的shell,但是超级用户不受这个限制。如果用户的shell是一个受限制的shell则用户不能改变其登录shell。如果不加-s参数则chsh输出用户的当前登录shell并提示用户输入新shell的路径。改变shell时都需要输入用户的密码。
lark:-&chsh
Changing the login shell for dfbb
Enter the new value, or press return for the default
Login Shell [/bin/csh]:/bin/tcsh
clear:清除屏幕(类似于DOS的cls)
lark-&clear 清除屏幕,提示符被移动到左上角
14.compress
compress,uncompress, zcat:压缩,展开文件。
compress利用LZW原理来压缩文件,原文件将被替代为扩张名为.Z的新文件。
uncompree和zcat则被用来展开压缩文件。
(2)部分参数说明
compress [-f] [-v] [-c] [-V] [-b bits] [文件名…]
uncompress [-f] [-v] [-c] [-V] [-b bits] [文件名…]
zcat [-v] [文件名…]
-f :强制替代所有原文件,如果不加此参数且compress工作在前台则compress将提示用户,该参数对于压缩整个目录的文件特别有用。
-v:在压缩过程中输出每个文件的压缩比。
-c:将压缩结果输出到标准输出。
-V:输出版权信息。
-b bits:bits为9-16的数字,用来控制LZW的压缩深度。
文件名:以空格分开的要压缩的文件列表,支持通配符。
lark: -&compress -f -v -V destfile 压缩文件destfile
Based on compress.c, v 4.0 85/07/30 12:50:00 joe Release
Options: BITS=16
destfile: Compression:5.55% --replaced with destfile.Z
lark:-&uncompress destfile.Z 还原文件destfile
cp:拷贝文件
(2)部分参数说明
cp[options] 源文件 目标文件
cp[options] 源文件…目标目录
[-abdfilprsuvxPR] [-S backup-suffix] [-V {numbered, existing, simple}] [--backup] [--no-dereference] [--force] [--interactive] [--one-file-system] [--preserve] [--recursive] [--update] [--verbose] [--suffix=backup-suffix] [--version-control={numbered, existing, simple] [--archive] [--parents] [--link] [--symbolic-link] [--help] [--version]
-a, --archive:在拷贝过程中保留尽可能多的源文件的结构和属性,同-dpR作用相同。
-b, --backup:给将要覆盖和删除的文件作备份。
-d, --no-dereference:只拷贝符号连接,而不拷贝其所指向的文件并在拷贝中保留原有的连接关系。
-f --force:删除已存在的目标文件。
-I, --interactive:在删除已存在的目标文件时给出提示。
-l, --link:用硬连接来代替非目录文件的拷贝。
-P, --parents:将给出路径的源文件连路径一起拷贝。
cp --parents a/b/c exist-ing_dir' copies
将文件a/b/c拷贝到exist-ing_dir/a/b/c。
-p, --preserve:保留源文件的属主,组,权限和时间标志。
-r,:整目录拷贝
-s, --symbolic-link:用建立符号连接来代替非目录文件的拷贝,除非目标文件也在当前目录不然所有源文件都是绝对路径(从&/&开始)。在不支持符号连接的系统上将给出出错信息。
-u, --update:如果非目录目标文件已存在具有相同或更新的修改时间则不拷贝。
-v,--verbose:在拷贝时输出每个文件的名称。
-x, --one-file-systme:从开始拷贝的文件开始跳过在不同文件系统上的子目录。
-R, --recursive整目录拷贝。
--help 在标准输出上输出帮助信息并退出。
--version 在标准输出上输出版本信息并退出。
-S, --suffixbackup-suffix:用于产生备份文件的后缀,此选项修改由环境变量SIMPLE…BACKUP…SUFFIX设定的后缀,如果都没有定义则缺省是&-&。
-V, --version-control {numbered, existing, simple}:备份产生的类型。此选项修改由环境变量VERSION…CONTROL设定的备份产生的类型,如果都没有定义则缺省是&'existing&其有效选项是:
't' or 'numbered'总是建立编号备份。
'nil' or 'existing'只为已经有编号备份的文件建立编号备份,其他文件作单一备份。
'never' or 'simple'只建立单一备份。
lark:-&cp sourcefile destflie 拷贝文件sourcefil到文件destfile。
lark:-&cp */tmp 拷贝当前目录下所有文件到/tmp目录。
cpio:向存档中拷贝文件或从存档中拷贝文件。
(2)部分参数说明
cpio {-o|--create} [-0acvABLV] [-C bytes] [-H format] [-M message] [-O [ [user @]host:] archive] [-F[[user@]host:]archive] [--file=[[user@]host:]archive] [--format=format] [--message=message] [--null] [--restet-access-time] [--verbose] [--dot] [--append] [--block-size=blocks] [--dereference] [--io-size=bytes] [--quiet] [--force-local] [--help] [--version] & name-list [&archive]
cpio {-I |--extract}[-bcdfmnrtsuvBSV] [-C bytes] [-E file] [-H format] [-M message] [-R [user][: .][group]] [-I [[user@]host:]archive] [-F [[user@]host:]archive] [--file=[[user@]host:]archive] [--make-directories]
[--nonmatching] [--preserve-modification-time] [--numericuid-gid] [--rename] [--list] [--swap-bytes] [--swap] [--dot] [--unconditional] [--verbose] [--block-size=blocks] [-swap-halfwords] [--io-size=bytes] [--pattern-file=file] [--format=format]
[--owner=[user][: .] [group]] [--no-preserve-owner] [--message=message] [--force-local] [no-absolute-filenames] [--sparse] [--only-verify-crc] [--quiet] [--help] [--version] [pattern…] [&archive]cpio {-p|--pass-through} [-0adlmuvLV] [-R [user][: .] [group]] [--null][--resct-access-time] [--make-directories] [--link] [--puiet] [--preserve-modificationtime] [--unconditional] [--verbose] [--dot] [--derefer-ence] [--owner=[uwer][: .] [group]] [--no-preserve-owner] [--sparse] [--help] [--version] destination-directory &name-list
cpio有三种模式:
·copy-out模式:向存档文件中拷贝文件,从标准输入给出的文件列表(这个文件列表可以用find命令来产生)读取源文件名,向标准输出写入存档文件。
·copy-in模式:从存档文件中拷贝文件,从标准输入读入存档文件,可以用通配符来确定要拷贝的文件名,如果不给出文件名则拷贝所有文件。
·copy-pass模式:将文件从一个目录拷贝到另外一个目录,实际上是把copy-out和copy-in模式结合起来,只不过不真的用一个存档文件,从标准输入给出的文件列表
读取源文件名,目标目录作为一个不带&-&的参数给出。
cpio支持下列文件格式:
binary,old ASCII,new ASCII,crc,HPUX binary,HPUX old ASCII,old tar,and POSIX.1 tar
缺省的cpio产生binary格式的存档文件。
-O, --null:在copy-out和copy-pass模式,文件列表由空字符结束而不是由换行结束。
-a, reset-access-time:在读取文件时重置文件的时间。
-A, --append:附加到已有的存档文件后,只工作在copy-out模式,存档文件必须是由-O,-F指定的磁盘文件。
-b, --swap:在copy-in模式既交换bytes又交换halfwords等于-sS。
-B:将I/O的块大小改变为5120bytes缺省是512bytes。
--block-size=BLOCK-SIZE:将I/O的块大小改变为IO-SIZE bytes。
-d, --make-directories:如果需要就创建目录。
-E FILE, --pattern-fil=FILE:在copy-in模式从文件FILE中读出要解开的文件列表。
-f, --nonmatching:只拷贝文件列表中没有文件。
-F, --file=archive:存档文件的文件名,如果目标设备是另外一台机器上的磁带机则用&HOSTNAME:文件名&来处理,cpio自动加上username@(用户必须在那台机器的-/.rhosts文件中添加本机器)。
--forc-local:在使用-F,-I,-O选项时即使文件名中有&:&号也把它作为一个本地文件来处理
-H FORMAT, --format=FORMAT:存档文件使用FORMAT(bin, odc, newc, crc, tar, ustar, hpbin, hpodc)格式。
-I, --extract:使用copy-in模式。
-I archive:等同于 -F, --file=archive。
-k:无用(为某些兼容性而设)。
-l, --link:如果可能用连接文件代替拷贝文件。
-L, --dereference:对于文件连接直接拷贝文件而不是连接。
-m, --preserve-modification-time:产生文件时恢复文件的修改时间。
-M MESSAGE,--message=MESAGE:在备份媒体用完时给出提示信息MESSAGE(中间用%d给出卷标)。
-n, --numeric-uid-gid:在文件列表时用数字的UID和GID代替名字。
--no-absolute-filenames:在copy-in模式用相对路径代替绝对路径。
--no-preserve-owner:在copy-in和copy-pass模式不改变文件的属主在恢复时恢复这些属主,本参数对于普通用户是缺省选项。
-o, --create:使用copy-out模式。
-O archive:等同于-F, --file=archive。
only-verify-crc:在读CRC格式的存档文件时只检查每个文件的CRC而不解开文件。
-p, --pass-through:使用copy-pass模式。
quiet:不输出已拷贝的块的数目。
-r, --rename:交互式地给文件改名。
-R [user] [: .] [group], --owner [user] [: .] [group] :在copy-out和copy-pass模式将所有文件的属主和组改变成设定的用户和组(只有超级用户才能使用)。
-sparse:在copy-out和copy-pass模式将小文件写入一个大块时用零来填补剩余部分。
-s, --swap-bytes:在copy-in模式交换bytes。
-S, --swap-halfwords:在copy-in模式交换halfwords。
-t, --list:s'输出输入的文件列表。
-u, --unconditional:替代所有同名的现存文件而不给出提示。
-v, --verose:列出正在处理的文件给出&ls -1&格式的文件列表。
-V --dot:在处理每个文件时输出&.&。
--version:输出版权信息并退出。
lark:-&cpio -0 &filelist& d
cpio: sourcefile: truncating inode number
从文件filelis中读出源文件列表,读入源文件并写入存档文件d。
lark:-&cpio -i -v -F d
sourcefile
从存档文件d中拷贝出文件。
17.crontab
crontab:操作每个用户的守护程序和该执行的时间表。
作者 Matthew Dillon
(2)部分参数说明
crontab file [-u user]:用指定的文件替代目前的crontab。
crontab - [-u user]:用标准输入替代目前的crontab。
crontab -l [ user]:列出用户目前的crontab。
crontab -e[ user]:编辑用户目前的crontab。
crontab -d[ user]:删除用户目前的crontab。
crontab -c[ user]:指定crontab的目录。
crontab文件的格式:M H D m d cmd
M:分钟(0-59)
H:小时(0-23)
D:天(1-31)
m:月(1-12)
d:一星期内的天(0-6,0为星期天)
cmd:要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。
下面是一个例子文件:
# MIN HOUR DAY MONTH DAYOFWEEK COMMAND
# 每天早上6点
10 6 * * * date
# 每两个小时
0 */2 * * * date
# 晚上11点以早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 14 4 * mon-wed date
# 1月份日早上4点
0 4 1 jan * date
lark:-&crontab -1 列出用户目前的crontab。
# MIN HOUR DAY MONTH DAYOF WEEK COMMAND
10 6 * * * date
0 */2 * * * date
0 23-7/2, 8 * * * date
cut:将文件中的每一行都去掉一个域。
(2)部分参数说明
cut {-b byte-list, --bytes=byte-list} [-n] [--help]
[--version] [file...]
cut {-c character-list, --characters=character-list}
[--help] [--version] [file...]
cut {-f field-list, --fields=field-list} [-d delim] [-s]
[-delimiter=delim] [--only-delimited] [--help] [--veresion] [file...]
byte-list,character-list,和field-list是数字或一个区间,最小是1,区间格式为&n-m&,n为开始的数字,m为结束的数字,&n-&意味着行尾。
-b, --bytes bytd-list:只输出在byte-list区间的bytes,TABs和backspaces都占1byte。
-c, --characters character-list:只输出在区间character-list内的字符TABs和backspaces都占一个字符。
-f, --fields field-list:只输出在field-list内的域。
-d, --delimiter delim:指定在-f参数中的field-list的分割符(为delim中的第一个字符,缺省为TAB)。
-n:不分割多byte的字符。
-s, --only-delimited:在-f参数中不输出没有域分割符的行。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
lark:-&cat sourcefile
-rw-r--r-- 1 fangh users 0 Aug 23 21:46 destfile
lark:-&cat -c 5-20 sourcefile
r--r-- 1 fangh
date:打印或设置系统日期和时间。
(2)部分参数说明
date [-u] [-d datestr] [-s datestr] [--utc] [--universal]
[--date=datestr] [--set=datestr] [--help] [--version]
[+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
+FORMAT:控制如何显示日期
指令:%:%号
%H 小时(00..23)
%I 小时(01..12)
%k 小时(0..23)
%1 小时(1..12)
%M 分钟(00..59)
%p AM或PM
%r 12小时(hh:mm:ss[AP]M)
%s 从 00:00:00 UTC开始的时间
%S 秒(00..61)
%T 24小时(hh:mm:ss)
%X 时间表示(%H:%M:%S)
%Z 时区(如EDT)如没有指定时区则不显示
%a 缩写形式的星期名(Sun..Sat)
%A 星期名(Sunday..Saturday)
%b 缩写形式的月名(Jan..Dec)
%B 月名(January..December)
%c 日期和时间(Sat Nov 04 12:02:33 EST 1989)
%d 每个月的第几天(01..31)
%D 日期(mm/dd/yy)
%h 等同于%b
%j 一年的第几天(001..366)
%m 月份(01..12)
%U 一年中的第几个星期,星期天为星期的第一天(00..53)
%w 每个星期的第几天(0..6)0为星期天
%W 一年中的第几个星期,星期一为星期的第一天(00..53(00..53))
%x 日期(mm/dd/yy)
%y 年份的后两个数字(00..99)
%Y 年份(1970...)
[MMDDhhmm[[CC]YY][.ss]]
CC 年份的前两位(可选项)
YY 年份的后两位(可选项)
ss 秒(可选项)
只有超级用户才有权限设置系统时间(启动时在CMOS中读出)。
-d datestr, --date dates :显示datestr中指定的日期和时间。
-s datestr, --set datestr :设定datestr中指定的日期和时间。
-u, --universal:显示或设定格林威治时间(缺省为本地时间)。
-help:在标准输出上输出帮助信息并退出。
-version:在标准输出上输出版权信息并退出。
(3)范例。打印两天前的时间:
lark:-&date --date '2 days ago'
Fri Aug 22 20:20:08 CDT 1997
打印月份和日期:
lark:-&date ' + % B % d'
dd:拷贝一个文件(并可以同时转化它)。
(2)部分参数说明
dd [--help] [--version] [if=file] [of=file] [ibs=bytes]
[obs=bytes] [bs=bytes] [cbs=bytes] [skip=blocks]
[seek=blocks] [count=blocks]
[conv={ascii, ebcdic, ibm, block, unblock, lease, ucase, noerror, notrunc,sync}]
if=file:以file作为源文件以代替标准输入。
of=file:以file作为目标文件一代替标准输出。
ibs=bytes:一次读bytes个byte。
obs=bytes:一次写bytes个byte。
cbs=bytes:一次读写bytes个byte,这个参数将改写bit和obs的值。
skip=blocks:从开头忽略blocks个ibs大小的块。
seek=blocks:从开头忽略blocks个obs大小的块。
count=blocks:只拷贝blocks个ibs大小的块。
conv=conversion[,conversion...]:转换文件,可转换的格式计算有:
ascll, ebcdic, ibm, block, unblock, lcase, ucase, swab, noerror, notrunc, sync
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例。将文件sourcefile拷贝到文件destfile。
lark-&dd if =sourcefile of=destfile
0 + 1 records in
0 +1 records out
df:报告磁盘剩余空间。
(2)部分参数说明
df [-aikPv] [-t fstype] [-x fstype] [--all] [--inodes]
[--type=fstype] [--exclude-type=fstype] [--kilobytes]
[--portabiliry] [--print-type] [--help] [--version] [file-name. . .]
-a, --all:列出BLOCK为零的文件系统缺省是不列出。
-i, --inodes:用inode使用状况来代替block使用状况。
-k, --kilobytes:用1K为单位来输出block(缺省是512bytes)。
-P, --portability:使用POSIX格式输出。
-T, --print-type:输出每个文件系统的类型。
-t, --type=fstype:只输出列在fstype中的类型的文件系统。
-x, --exclude-type=fstype:只输出不在fstype中的类型的文件系统。
-v:无用,只是为了同SYSTEM V版本的df兼容。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
lark:-&df -a -T
Filesystem Type 1024-blocks Used Avaiable Capacity Mounted on
/dev/hdal ext2 214 % /
none proc 0 0 0 0% /proc
/dev/hda1 ext2 267 % /home
/dev/hda2 ext2 03 89413 5% /usr/local
diff:比较两个文件的不同。
(2)部分参数说明
diff [选项] 源文件 目标文件
-a:将所有文件当作文本文件来处理。
-b:忽略空格造成的不同。
-B:忽略空行造成的不同。
-q --brief:只报告何处不同,不报告具体信息。
-c:使用纲要输出格式。
-e --ed:输出ed可以编辑的格式。
-f:输出同-c类似的反序格式。
-H:利用试探法加速对大文件的搜索。
-i:忽略大小写的变化。
-l --paginate:用pr对输出分页。
-n --rcs:输出RCS格式。
-r --recursive:比较目录时比较所有子目录。
--report-identical-files -s:两文件相同才报告。
-v --version:在标准输出上输出版本信息并退出。
常常利用diff来产生补丁程序(patch)。
(3)范例。比较destfile和sourcefile:
lark:-&diff sourcefile destfile
& -rw-r--r-- 1 fangh users 0 Aug 23 21:46 filelist
& ./sourcefile
用来在shell编程中产生对话框。作者:John Gatewood Ham。
ark:-& dialog --title &test& --yesno &this is a test& 7 40
lqqqqqqqqqqqqqqqq test qqqqqqqqqqqqqqqqk
x this is a test x
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
x &Yes& &No& x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
du:报告磁盘空间使用情况
(2)部分参数说明
du[-abcklsxDLS] [--all] [--total] [--count-links] [--sum-marize]
[--bytes] [--kilobytes] [--one-file-system]
[--separate-dirs] [--dereference] [--dereference-arge]
[--help] [--version] [filename...]
-a , --all:显示文件总和。
-b, --bytes:以byte为单位输出所占空间大小。
-c, --total:在处理完所有参数后给出所有这些参数的总计。
-k ,--kilobytes:以kilobytes为单位输出所占空间大小。
-l, --count-links:统计所有文件的大小即使它已经在另一个连接中被统计过了。
-s --summarize:对于每个参数只显示总和。
-x, --one-file-system:忽略不在本文件系统上的目录。
-D, --dereference-args:不统计是命令行的话参数的符号连接的文件。
-L, --dereference:不统计符号连接的文件。
-S, --separate-dirs:单独计算每个目录的大小,不包括子目录的大小。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
lark:-&tmp&du
1 ./.X11-unix
15274 ./.data
lark:/tmp&
echo:显示一行文本。
(2)部分参数说明
echo [-ne] [字符串. . .]
echo {--help, --version}
-n :不输出新行。
-e:使echo可以输出下列ESC字符;
\a 警告(响铃)。
\c 在行尾不另起一行。
\t 制表符。
\V 垂直制表符号。
\ \ 反斜杠。
\ nnn 字符的八进制码是nnn。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
注意大多数shell内建echo命令,上述参数只对/usr/bin/echo起作用。
lark:-&/bin/echo -e just \ \ wait
just \ wait
ed red:文本行编辑器。
(2)部分参数说明
ed [-] [-Gs] [-p字符串] [文件名]
red [-] [-Gs] [-p字符穿] [文件名]
-:在使用e,r,w,q和!命令时不输出信息。
-G:禁止向后一致性,作用于命令'G','V','f','l','m','t',和'!!'。
-s:禁止诊断,一般当ed的输入是一个脚本文件时使用该项。
-p字符串:以该字符串为提示符。
文件名:要编辑的文件名。
lark:-&ed .lessrc
env:在修改过的环境中运行程序,运行完毕后不影响原环境设置。
(2)部分参数说明
env [-] [-1] [-u name] [--ignore-environment]
[--unset=name] [help] [--version][name=value]...[命令
[参数...]]
-u, --unset name:从原环境中删除变量(name为变量名)。
-, -I, --ignore-environment:开始一个空环境,忽略原环境的所有设置。
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
lark:-&env - ls
destfil destfile sourcefile
昵称: 天才白痴 &时间:
昵称: 天才白痴 &时间:
昵称: 天才白痴 &时间:
昵称: 天才白痴 &时间:
昵称: 天才白痴 &时间:
昵称: ckf &时间:
昵称: 北南南北 &时间:
昵称: mantou &时间:
昵称: 小老鼠 &时间:
昵称: Kuye &时间:
昵称: 北南南北 &时间:
昵称: 天才白痴 &时间:

我要回帖

更多关于 linux ls命令找不到 的文章

 

随机推荐