首页 > 代码库 > linux系统结构
linux系统结构
呈倒树型
/bin:存放二进制命令文件(binnary),针对所有用户
/sbin:存放系统管理员的命令,/bin的升级版,超级用户专用
/boot:存放启动分区,负责系统启动的文件。相当于windows的C盘,启动项。存储系统的引导信息,内核信息
/proc:系统信息 /proc/cpuinfo:系统cpu信息
/sys:系统管理,主要是关于内核的
/etc:存放大多数系统管理文件,即配置文件
/dev:存放设备管理文件
/lib:存放32位系统库文件
/lib64:存放64位系统库文件
/root:超级用户家目录存放点
/home:是普通用户家目录
/opt:第三方软件的安装位置
/usr:存放系统用户相关信息数据及用户自定义软件,存储系统应用软件的安装信息
/srv、/var:系统数据存放点,存储系统日志信息
/tmp:存放临时文件存放位置
/media、/run、/mnt:系统临时设备挂载点
【绝对路径、相对路径】
据对路径:文件在系统的真实位置,文件名以“/”开头
相对路径:文件相对于当前所在位置的位置,不以“/”开头,且会自动添加pwd显示的值
【基本命令】
在shell中如何使用命令(必须在提示符之后输入)
命令输入模式:command+[space]+options+[space]+target
命令 参数(选项) 操作对象
补充:命令是系统中可执行的文件,参数是命令功能的指定
*** ls###list,列出当前目录的所有文件
-a ##显示指定目录下所有文件以及子目录,包含隐藏文件
-d ##只显示目录列表,不显示文件
-l ##除文件名称外,同时将文件或子目录的权限、使用者及大小等信息详
细列出
-s ##在每个文件名前输出其大小,以k字节的形式表示文件的大小
-S ##以文件大小顺序排列,从大到小排列
-u ##以文件上次被访问的时间排序
-t ##以时间排序,从晚到早
-o ##显示除组信息以外的详细信息
-x ##按列输出,横向排序
-C ##按列输出,纵向排序
-r ##对目录中的文件及子目录反向排序(与默认排序相反)
-m ##横向输出文件名,并以逗号作为分隔符
-Q ##把输出的文件名用双引号括起来
-R ##列出所有子目录下的文件
-pF ##在每个文件名后附上一个字符以说明该文件的类型。“*”表示可执
行的普通文件,“@”表示链接,“|”表FIFOs,“=”表套接字,
“/”表示目录
-q ##用?代替不可输出的字符
-i ##列出节点号
-Z ##列出标签
例:
# ls -l(同ll)###列出文件属性
$ ls -l ps.txt
-rw-rw-r-- 1 kiosk kiosk 11691 May 4 18:06 ps.txt
使用 ls -l 命令 执行结果,展示结果大体分为七列(部分) :
第一列 : “drwxr-x---” 表识文件的类型 和文件权限
第二列: “2”是纯数字 ,表示 文件链接个数
第三列 : “root” 表示文件的所有者
第四列:“adm” 表示为文件的所在群组
第五列:“4096”,表示为文件大小(以字节为单位)
第六列:“2013-08-07 11:03”,表示文件最后更新(修改)时间
第七列:“apache2” 表示文件的名称
# ls -l test/###长显示目录test下的文件,显示目录test下的文件
total 0###缓存个数
# ls -ld test/###显示目录本身的属性
# ls -s note/ <=====>###列出文件或目录大小
# ls -s passwd
4 passwd###文件默认分配4K字节=4096字节
# ls -a###列出所有
# ls -R test/###递归式列出
#ls -Z ###列出标签
# ls -Zd /mnt/
drwxr-xr-x. root root system_u:object_r:mnt_t:s0 /mnt/
# ls -Z /mnt/
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 firefox
# ls -i file ##查看节点号文件
***cd ##进入目标目录中
[student@localhost mnt]$ pwd
/mnt
[student@localhost mnt]$ cd ~(同cd)###回到当前用户家目录
[student@localhost ~]$ pwd
/home/student
[root@localhost ~]# cd ~student###进入到指定用户家目录
[root@localhost student]# pwd
/home/student
[root@localhost student]# cd ..###进入当前目录的上一级
[root@localhost home]# pwd
/home
[root@localhost home]# cd -###进入之前所在系统目录
/home/student
*** touch:新建文件
*** mkdir:建立目录
# mkdir -p test/test/test###递归式建立目录
注意:
[student@localhost ~]$ cd /root/Desktop
bash: cd: /root/Desktop: Permission denied###权限不够被拒绝
***pwd //显示当前路径
*** cp 被复制文件 目的地###将文将复制到指定目的地
cp -r dir1 dir2###递归式复制
*** mv
mv 被移动文件 目的地###将文将移动到指定目的地
mv 原名 新名###重新命名
mv 被移动文件 .###将文件移动到当前
***rm -f 文件###强制删除文件
rm -fr 目录###强制删除目录
***date [MMDDhhmm.ss]###更改时间[月日小时分钟.秒]
date [选项] 显示时间格式(以+开头,后面跟时格式)
-s ##设置时间
-d ##显示描述的日期
时间格式:
%H ##显示小时,表示范围00~23
%k ##显示小时,表示范围0~23
%I ##显示小时,表示范围01~12
%l ##显示小时,表示范围为1~12
%M ##显示分钟,显示格式00~59
%S ##显示秒,显示格式00~59
%X ##显示时间,相当于%H:%M:%S的组合
%r ##显示时间,格式为hh:mm:ss ,12小时显示
%T ##显示时间,格式为hh:mm:ss,24小时显示
%p ##显示AM还是PM
%F ##显示日期,格式yyyy-mm-dd
%x ##显示年份和日期,格式为mm/dd/yyyy
%D ##显示年份号和日期,格式为mm/dd/yy
%b或%B ##显示月份,b是简称,B是全称
%m ##显示月份,格式为01~12
%Y或%y ##显示年份,Y表示完整的年份,y表示年份的最后两个数字
%d ##显示一个月的第几天
%c ##显示日期和时间格式,相当于”%a %d %b %Y %r %Z”
%a或%A ##显示星期,%a是星期的简称,%A是星期的全称
%Z ##显示时区
eg:
设置时间:
# date -s "20160505 10:03" ##格式yyyymmdd hh:mm:ss
显示描述的日期:
# date -d "3 days ago" +%F
2016-05-02
显示时间:
$ date "+%F %a %T %Z"
2016-05-04 Wed 21:55:51 CST
# date
Tue Dec 1 17:38:18 CST 2015
CST可视为美国,澳大利亚,中国,古巴的标准时间;格林威治标准时间GSM;世界协调时间UTC;夏日节约时间DST
# date 06281234.21
Sun Jun 28 12:34:21 CST 2015
# date -d +83day
Fri Dec 18 14:49:39 CST 2015
# date -d -83day
Sun Jul 5 14:49:51 CST 2015
# date +%F
2015-09-26
# date +"%F %H:%M:%S"
2015-12-01 17:42:19
#date "+%Y-%m-%d %H:%M:%S"
2015-12-05 11:55:32
# date --help###获取帮助用help或man
***passwd
passwd username###更改用户密码(只有超级用户root可以)
passwd###普通用户修改自己的密码
注意:
普通用户只能修改自己的密码,且须知自己原始密码,修改密码必须大于8位,不能与原始密码字符重复
# passwd -l student###冻结普通用户
Locking password for user student.
passwd: Success
# passwd -u student###解锁冻结用户
Unlocking password for user student.
passwd: Success
*** file ###查看文件类型
*** head -数字 文件名###显示文件内容前几行,默认显示前十行
*** tail -数字 文件名###显示文件内容后几行
eg:# cat num
1
2
3
4
5
6
7
8
# head -6 num | tail -3
4
5
6
***cat
cat 文件名 ##查看文件所有内容
cat >文件名 <<biaozhi ###输出内容到另一个文件
cat -b file ##给文件file中的每一行编号并查看
cat -b file > file1 ##给file文件的每一行加编号,并将编好号的放到file1文件中
eg: $ cat > file << end
> hello world
> u are a good student
> end
$ cat file
hello world
u are a good student
***wc ###统计文件行,单词数,字节数
# wc -l文件名###行数
-c文件名###字节数
-m文件名###字符数
-w文件名###单词数
***whoami ##查看当前用户名称
*** what is+命令 ##查看命令的意思
eg:# whatis wc
wc (1) - print newline, word, and byte counts for each file
wc (1p) - word, line, and byte or character count
*** history ###查看历史
!数字###执行第多少条命令
!关键字###执行最近一条以关键字开头的命令
Ctrl+r+关键字###调出最近一条含有关键字的命令
上下键###从最后一条命令开始向前或向后查看
*** which+命令 //查看系统命令的路径
***echo $abc 在变量赋值之后,只需在变量前面加一个$去引用.
***cb 格式化源代码
***lint 语法检查程序
***more 显示文件
*** tab键:补齐系统中存在的文件名称,命令和命令参数
*** 改变用户身份的命令:su
su - ##加载相应用户下的环境变量,不加-在root身份下执行某些命令可能显示
“command not found”
-l ##使目前的shell成为改变身份后用户默认的shell
-c ##改变身份后运行一个指令后退出
-m ##改变用户身份但不改变环境变量
***who ##显示目前登录到系统的用户
who [选项] [file]
在linux下who默认通过/var/run/utmp文件来获取信息,若“file”选项指定另一个文件,则who不再读取/var/run/utmp文件,而是读取指定文件来获取信息
# who
root tty1 2016-05-05 10:00
root pts/0 2016-05-05 10:15 (172.25.50.250)
who -s ##仅显示名称、线路、和时间字段信息。这是who默认的输出,相当于
who
-a ##列出所有信息,相当于所有选项
-b ##列出系统最近启动的时间日期
-r ##显示当前系统的运行机级别
-T或-w ##显示tty终端的状态,“+”表示对任何人都可写,“-”表示仅
对root用户或所有者可写,“?”表遇到线路故障
-l ##列出所有可登录的终端信息
-m ##仅列出当前终端的信息,相当于who am i 和who am I
-u ##显示当前每个用户的用户名、登录终端、登录时间、活动和进程
标识,除状态以外的所有输出
-q ##列出本地系统上的用户和用户数的清单
who命令的一般输出格式:
用户名 [状态] 线路 时间 [活动] [进程标识] (主机名)
用户名:用户的登录名
状态:表明线路是否对登录用户都是可写的,如”+””-”
线路:登录终端,类似于pts/1,pts/2,tty等,此线路标识在/dev中可以找到
时间:用户登录系统的时间
活动:某个用户在自己的线路上最后一次活动发生以来到现在所用时间。如果此项是个“.”,就表示一分钟内地线路活动;如果线路保持静止已经超过24小时或者自从系统启动以来还没被使用过,那么此项的标记为“old”
进程标识:用户登录shell的进程id
主机名:登录到linux系统上的客户端机器标识,没有主机名解析写ip
***w ##显示用户登录到系统的时间
w [选项] [用户]
-h ##不显示输出信息的标题
-l ##用长格式输出,相当于直接用w
-s ##用短格式输出,不显示登录时间、JCPU、PCPU时间
-V ##显示版本信息
第一行:显示了当前的系统时间、系统从启动到现在已经运行的时间,登录到系统中的用户数,系统平均负载(系统1min、5min、15min内系统负载状况)
USER:登录系统的用户
TTY:用户使用的TTY(字符终端)名称
FROM:表示用户从哪里登录进来,一般显示远程登录主机的IP地址或主机名
LOGIN@:用户登录的日期和时间
IDLE:表某个程序上次从终端开始执行到现在所持续的时间
JCPU:表该终端上的所有进程及子进程使用系统的总时间
PCPU:当前活动进程使用的系统时间
WHAT:当前用户执行的进程名称和选项
***uname ##显示操作系统相关信息
uanme -s ##显示操作系统类型,相当于uname
-a ##显示操作系统所有信息
-n ##显示操作系统的主机名
-r ##显示操作系统内核版本
***uptime ##输出系统队列信息
表示当前系统时间、系统从开机到现在的运行时间,系统登录用户数,系统平均负载(与w命令第一行输出相同)
***last ##列出目前与过去登入系统的用户相关信息
last [选项] [-n 显示列数]
执行last命令时,默认读取/var/log/wtmp文件,并把该文件记录的等入系统的用户名全部显示出来
last -a ##将从何处等入系统的IP或主机名显示在每一行的末尾
-R ##不显示登入系统的主机名或IP
-x ##显示系统关机、重新开机及执行等级的改变等信息
-d ##将显示的IP地址转换为主机名
-n ##设置列出名单的显示列数
***dmesg ##显示开机的信息
内核会将开机信息存储在系统缓冲区(ring buffer)中,如果开机来不及查看相关信息,可以在开机后用dmesg命令查看,或者查看/var/log/dmesg文件
dmesg -c ##显示开机信息后,清除ring buffer信息
-s ##设置缓冲区打大小,默认为8192
-n ##设置记录信息的层级
***free ##显示系统内存状态的命令
free [选项] [-s 间隔秒数]
free -b ##以字节为单位显示内存的使用情况
-k ##以千字节(KB)为单位
-m ##以兆字节为单位
-t ##显示内存的总和列
-o ##不显示缓冲区列
-s(间隔秒数) ##根据指定的间隔秒数持续显示内存的使用情况
系统的物理内存是490M,已经使用了94M,空闲396M。系统可用内存为443M(mem+buffer/cache);swap分区还未使用
***ps(process status) ##显示系统进程瞬间的运行状态
参数:
-a ##显示现行终端中的所有进程(所有用户的进程),包括其他用户进程
-x ##显示所有系统程序,包括那些没有终端的程序
所以ax表示显示所有在终端中和不在终端中执行的程序
-u ##以用户为主显示进程
aux ##以用户为主显示所有进程
x ##通常与参数u一起使用,列出较完整的信息。
a ##显示所有进程
-a ##显示现行终端中的所有进程(所有用户的进程),包括其他用户进程
-e ##显示所有进程,与-A相同(将除内核进程以外所有进程的信息写到
标准输出)
-f ##详细显示程序执行的路径群
-ef ##详细显示所有进程
-C <命令> ##列出指定命令的进程
e ##显示环境变量
f ##显示程序间的关系
r ##显示当前终端的进程
T ##显示当前终端的所有进程
u ##指定用户的所有进程
c ##显示进程的真实名称
-c ##只显示进程的名称,不显示进程的完整路径
-N ##反向选择
-H ##显示树状结构
--lines <行数> ##每页显示的行数
--width <字符数> ##每页显示的字符数
--version ##显示版本信息
# ps -u postfix ##显示指定用户的进程信息
PID TTY TIME CMD
953 ? 00:00:00 qmgr
1182 ? 00:00:00 pickup
默认ps命令输出使用者自己的进程:
PID:进程的标识号
TTY:进程所属的终端控制台
TIME:进程所使用的总的CPU时间
CMD:正在执行的命令行
带-的参数和不带-的参数表示意义不同:
linux上进程由5中状态:
(1)运行:张在运行或在运行队列中等待
(2)中断:休眠中,受阻,在等待某个条件的形成或接收到信号
(3)不可中断:收到信号后不能唤醒和不可运行,进程必须等待直到有中断发生
(4)停止:进程收到SIGSTOP,SIGSTP,SIGTOU信号后停止运行
(5)僵死:进程已经终止,但进程描述符存在,直到父进程调用wait()4系统调用后释放
ps工具标识进程的5中状态码:
(1)R 运行 runabled
(2)S 中断 sleeping
(3)D 不可中断
(4)T 停止 traced or stopped
(5)Z 僵死 a defunct(“zombie”) process
相关项目明细:
USER:用户名
UID:用户ID
PID:进程ID
PPID:父进程的进程ID(parent process id)
SID:会话ID
%CPU:进程的cpu占用率
%MEM:进程的内存占用率
VSZ:进程所使用的虚拟内存的大小
RSS:进程使用的驻留集大小或者是实际内存的大小,k字节
TTY:与字节关联的终端
STAT:进程的状态,进程状态使用字符表示的stat状态码
R运行(Runabled,on run queue):正在运行或者在运行队列中等待
S 睡眠(Sleeping):休眠中,受阻,在等待某个条件的形成或接收到信号
I 空闲(idle)
Z 僵死(Zombie,a defunct process):进程已终止,但进程描述符依然存在,直到父进程调用wait4()系统调用后释放
D 不可中断(Uninterruptible Sleep,usually IO):收到信号不唤醒和不可运行,进程必须等待直到有中断发生
T 终止(Terminate):进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行
P 等待交换页
W 无驻留页:进入内存交换((从内核2.6开始无效)没有足够的记忆体分页可分配)
X 死掉的进程
< 高优先级进程
N 低优先级进程
L 内存锁页(Lock):由记忆体分页分配并锁在记忆体内
s 进程的领导者(在它之下有子进程)
| 多进程的(使用clone_thread,类似于nptl pthreads)
+ 位于后台的进程组
START :进程启动时间和日期
TIME:进程使用的总的CPU占用时间(进程消耗CPU的时间)
COMMAND:执行命令的名称和参数
NI(nice)优先级
PRI(priority):进程优先级的编号
WCHAN:正在等待的进程资源(进程正在睡眠的内核函数名称(从/root/system.map中获得))
FLAGS:与进程相关的数字标识
例:
# ps aux或ps -ef ##查看所有进程信息
# ps -eo ‘pid,uid,stat,pri,comm‘ --sort uid ##查看当前系统进程的pid,uid,stat,pri,以uid号排序
# ps -aux | grep 进程关键字
# ps ax -o %cpu,%mem,user,pid,comm ###查看进程某项信息
# ps ax -o pid,comm 相当于 ps -eo pid,comm
# ps aux --sort +|-%cpu|%mem...###进程按指定方式排序
例一:将目前属于自己本次登入的PID等相关信息显示出来
各相关信息的意义:
F(flag):代表这个程序的旗标,4代表使用者为superuser;1代表分叉的但没有被执行
S(STAT):代表这个程序的状态
UID:代表执行者的身份
PID:进程的ID号
PPID:父进程的ID号
C:cpu占用资源的百分比
PRI(Priority):指进程的执行优先权,其值越小优先级越大,越早被执行
NI:该进程的nice值,其表示进程可被执行的优先级的修正数值
ADDR:内核参数,指出该进程在内存的哪个部分。如果是可执行的程序,一般为-
SZ:使用掉的内存大小,单位为k字节
WCHAN:目前该程序是否正在运行中,若为-表示正在工作
TTY:登入者的终端机位置
CMD:所下达的指令名称
例二:以例一的显示格式,显示出所有的程序
例三:列出目前所有的正在内存当中的程序
USER:该进程属于哪个使用者
PID:该进程的进程id号
%CPU:该进程使用掉的CPU资源百分比
%MEM:该进程所占用的物理内存百分比
VSZ:该进程已使用的虚拟内存量(k字节)
RSS:该进程占用的固定内存量(k字节)
TTY:该进程是在哪个终端机上运行——若与终端机无关则显示?,从本机中登入的用户程序显示为tty1~tty6;网络连接进主机的程序显示为pts/0、pts/1等
STAT:该程序目前的状态,主要的状态有——
R:该程序目前正在运行,或者是可以被运行
S:该程序目前正处于休眠状态,但是可以被某些信号(signal)唤醒
T:该程序目前正在侦测或者停止
Z:该程序应该已终止,但其父进程无法正常终止它,造成僵尸(zombie)程序的状态
START:该进程被触发启动的时间
TIME:该进程实际使用CPU运作的时间
COMMAND:该进程的指令的名称
例四:列出类似程序树的信息
例五:找出cron与syslog这两个服务有关的PID号码
# ps -eo ‘pid,comm‘ | grep -E ‘syslog|cron‘
# ps aux | egrep ‘syslog|cron‘
***top:实时监控系统处理器状态
top -d ##指定每两次屏幕信息刷新之间的时间间隔
-i ##不显示闲置或僵死的进程
-c ##显示进程的整个命令路径,而不是只显示命令名称
-s ##使top命令在安全模式下运行,此时top的交互式指令被取消,避免
潜在危险
-b ##分屏显示输出信息,结合-n选项可将屏幕信息输出到文档
-n ##top输出信息更新的次数,完成后将退出top指令
top的交互式命令:
h或? ##显示帮助信息,给出交互式命令的一些说明总结
m ##切换显示内存信息,这是一个开关命令
t ##切换显示进程和cpu信息,这是一个开关命令
l ##切换显示平均负载和启动时间信息,这是一个开关命令
i ##忽略闲置进程和僵死进程,这是一个开关式命令
c ##切换显示完整命令行和命令名称信息
M ##根据驻留内存大小进行排序输出
P ##根据cpu使用百分比大小进行排序输出
T ##根据时间/累计时间进行排序输出
S ##切换到累计模式
k ##终止一个进程,系统将提示用户以输入一个需要终止进程的PID
s ##改变top输出信息的两次刷新之间的时间。系统将提示输入新的时间,单位
是秒。如果是小数则换算成毫秒。如果输入0,系统输出将不断刷新,默认
刷新时间为5s。如果设置较小的时间,则会引起系统不断刷新,无法看清
楚输出显示情况,而且系统负载也会加大
o 或O ##改变输出信息中显示项目的顺序,按的a~z将相应地列向右移动,按
A~Z将相应地列向左移动
f或F ##从当前的显示列表中添加或者删除项目。按f后会显示列的列表,按a~
z键即可显示或隐藏对应的列。最后按回车键确定
r ##重新设置一个进程的优先级。系统提示用户输入需要改变的进程PID及需
要设置的进程优先级。输入一个正值使优先级降低,输入一个负值使该进
程由更高的优先级。默认值是10
W ##将当前top设置写入~/.toprc中
q ##退出top命令
例:查看当前系统活动的进程
# top
项目明细:
top的输出可以分为统计时间区(前5行)和进程信息区
第一行为任务队列信息:
15:23:44 表示当前系统时间
up 3 min 表示系统已启动3分钟。
1 user 当前登录系统的用户数
load average:0.04,0.03,0.00 表示系统平均负载,3个数值1min、5min、15min前到现在的系统平均负载值
第二行为进程信息:
Tasks:71total 进程的总数
1 Running:正在运行的进程数
70 sleeping:处于休眠的进程数
0 stopped:停止的进程数
0 zombie:僵死的进程数
第三行为cpu信息:
CPU(s):0.0%us 表示用户进程占用CPU百分比
0.0%sy 系统进程占用CPU的百分比
0.0%ni 用户进程空间内改变过优先级的进程占用cpu的百分比
100.0% id 空闲CPU占用的百分比
0.0%wa 等待输入输出的进程占用CPU的百分比
0.0%hi
0.0%si
0.0%st
第四行、第五行为内存信息:
Mem:502276k total 系统物理内存大小
93572k used 已使用物理内存大小
50412k free 目前空余内存大小
buffers 用作内存缓冲区的内存大小
swap 交换分区内存大小
cached 高速缓存
进程信息区:
PID 进程的PID
USER 进程所有者的用户名
PR 进程优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位KB。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位KB。RES=CODE+DATA
SHR 共享内存大小,单位KB
S 进程状态,D表示不可中断的睡眠状态,R表示运行状态,S表示睡眠状态,T表示跟踪或停止,Z表示僵死进程
%CPU 上次更新到现在的CPU时间占用比
%MEM 进程占用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位为0.01s
COMMAND 正在运行进程的命令名
【通配符】
(1)*:匹配0-任意字符
(2) ?:匹配任意单个字符
[root@localhost Desktop]# ls
file file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
[root@localhost Desktop]# rm -fr file?
[root@localhost Desktop]# ls
file file10
(3)~:匹配当前用户家目录
(4)~username:匹配到username用户家目录
[root@localhost Desktop]# ls
file file10
[root@localhost Desktop]# cp * ~student
[root@localhost Desktop]# ls /home/student/
Desktop Downloads file10 Pictures Templates
Documents file Music Public Videos
(5)~+(同.):当前目录
[root@localhost Desktop]# ls
file file10
[root@localhost Desktop]# cp /etc/passwd ~+
[root@localhost Desktop]# ls
file file10 passwd
[root@localhost Desktop]# cp /etc/group .
[root@localhost Desktop]# ls
file file10 group passwd
(6)~-(cd ~-同cd -):当前目录之前所在的目录
[root@localhost mnt]# pwd
/mnt
[root@localhost mnt]# cd /root/Desktop/
[root@localhost Desktop]# ls
file file10 passwd
[root@localhost Desktop]# cp * ~-
[root@localhost Desktop]# ls /mnt/
file file10 passwd
(7)[abc]:文件名包含有a或b或c
[root@localhost Desktop]# ls
filea fileb filec filed filee filef test
[root@localhost Desktop]# cp file[abc] test/
[root@localhost Desktop]# ls test/
filea fileb filec
[root@localhost Desktop]# touch file{1..5}{a..e}
[root@localhost Desktop]# ls
file1a file1d file2b file2e file3c file4a file4d file5b file5e
file1b file1e file2c file3a file3d file4b file4e file5c test
file1c file2a file2d file3b file3e file4c file5a file5d
[root@localhost Desktop]# cp file?[ace] test/
[root@localhost Desktop]# ls test/
file1a file1e file2c file3a file3e file4c file5a file5e
file1c file2a file2e file3c file4a file4e file5c
(8)[!abc](同<^abc>):文件名除了含有a或b或c
[root@localhost Desktop]# ls
file1a file1d file2b file2e file3c file4a file4d file5b file5e file1b file1e file2c file3a file3d file4b file4e file5c test file1c file2a file2d file3b file3e file4c file5a file5d
[root@localhost Desktop]# cp file?[!ace] test/
[root@localhost Desktop]# ls test/
file1b file2b file3b file4b file5b file1d file2d file3d file4d file5d
(9)[[:alpha:]]:单个字母
[root@localhost Desktop]# ls
2file fi2le file @file File file2 test
[root@localhost Desktop]# cp [[:alpha:]]* test/ -r
cp: cannot copy a directory, ‘test’, into itself, ‘test/test’
[root@localhost Desktop]# ls test/
fi2le file File file2 test
[root@localhost Desktop]# ls test/test/
fi2le file File file2
(10)[[:lower:]]:单个小写字母
[root@localhost Desktop]# ls
2file fi2le file @file File file2 test
[root@localhost Desktop]# cp [[:lower:]]* test/
cp: omitting directory ‘test’
[root@localhost Desktop]# ls test/
fi2le file file2
(11)[[:upper:]]:单个大写字母
[root@localhost Desktop]# ls
2file fi2le file @file File file2 test
[root@localhost Desktop]# cp [[:upper:]]* test/
[root@localhost Desktop]# ls test/
File
(12)[[:alnum:]]:单个字母或数字
[root@localhost Desktop]# ls
2file fi2le file @file File file2 test
[root@localhost Desktop]# cp [[:alnum:]]* test/
cp: omitting directory ‘test’
[root@localhost Desktop]# ls test/
2file fi2le file File file2
(13)[[:punct:]]:单个符号,不包含空格或数字
[root@localhost Desktop]# ls
2file fi2le file @file File file2 test
[root@localhost Desktop]# cp [[:punct:]]* test/
[root@localhost Desktop]# ls test/
@file
(14)[[:digit:]]:数字
[root@localhost Desktop]# ls
2file fi2le file @file File file2 test
[root@localhost Desktop]# cp *[[:digit:]]* test/
[root@localhost Desktop]# ls test/
2file fi2le file2
(15)[[:space:]]:单个空格
[root@localhost Desktop]# touch file " "file
[root@localhost Desktop]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 27 18:34 file
-rw-r--r--. 1 root root 0 Sep 27 18:34 file
drwxr-xr-x. 2 root root 42 Sep 27 18:33 test
[root@localhost Desktop]# ls test/
hello
[root@localhost Desktop]# cp [[:space:]]* test/
[root@localhost Desktop]# ll test/
total 0
-rw-r--r--. 1 root root 0 Sep 27 18:39 file
-rw-r--r--. 1 root root 0 Sep 27 18:38 hello
【vim编辑器】
vimtutor是vim的说明工具,:q退出此工具
<1> 命令模式
#vim /etc/vimrc
在结尾一行加上set nu,以后用vim打开的文件会自动添加标号
:set nu | number //显示行号
:set mouse=a //设定鼠标可以操作光标位置
:help //获得帮助;:q退出帮助文档
u //后退,恢复到未操作前
ctrl+r //前进,恢复到操作后
ctrl+v //高量选择模式
:数字 //移动光标到指定行 如:1 //光标停在第一行
G //移动光标到文件末尾
g //移动光标到文件开头
『 批量添加字符』
ctrl+v可以选中一片区域,ctrl+v选中要加字符的位置,按I加入想添加的字符,按esc退出
『分屏功能』
ctrl+w s //上下分屏
ctrl+w v //左右分屏
ctrl+w c //撤销光标所在屏幕
ctrl+w 上下左右 //移动光标到指定屏幕中
『替换字符』
:%s/原字符/替换后字符/g
:1,5s/asdf/hello/g ##替换1到5行
『 搜索功能』
在命令模式下,/关键字
N向上匹配;n向下匹配
『字符管理』
d+w //删除光标所在单词
d+l //删除光标所在字母
d数字d //删除数字指定的行数 eg:d3d //一共删除了3行
d数字+上键 //向上删除指定的行数 eg: d3上键 //删除从光标所在行向上数起的三行,并且删除光标所在行;一共删除了4行
d + g //从光标所在位置删除到文件开始处
d + G //从光标所在位置删除到文件末尾
D //从光标所在位置向后删除光标所在行
y+w //复制光标所在单词
y+l //复制光标所在字母
y数字y //向下复制数字指定的行数
p //粘贴
c+w //剪切光标所在单词
c+l //剪切光标所在字母
c数字c //剪切数字指定行数
注意:剪切完后会进入插入模式,按esc退出插入模式后再按p要粘贴
<2> 插入模式
i //光标所在位置插入字符
a //光标所在字符的下一位插入
I //光标所在行首插入
A //光标所在行的行尾插入
o //光标所在行的下一行插入
O //光标所在行的上一行插入
s //删除光标所在字符插入
S //删除光标所在行插入
<3> 退出模式
在命令模式下输入
:q###未对文件作任何修改时退出
:q!###强制退出
:wq###退出保存
:wq!###强制退出保存
【对命令的输出进行管理】
>file1或设备 ##把正确的输出结果定向到file1这个文件中
>>file1 ##把正确的输出结果定向到file1这个文件中,并且不覆盖file1中的内容
2>file2 ##把错误的输出结果定向到file1这个文件中
&>file3 ##把输出结果(包括正确和错误的)定向到file1这个文件中
2>&1 ##把错误的当成正确的
/dev/null ##系统中的垃圾箱
管道(可以多个使用,默认情况下,管道只接受正确的信息)
如:ls /bin 2>&1 | wc-l
ls /bin 2>& |tee file |wc-l ##tee把输出复制到file中,我们可以看到
find /etc/ name passwd >file 2>&1 ##把正确的和错误的都放到file中
find /etc/ name passwd 2>&1 >file ##不能实现以上功能,当执行>file时,2>&1的结果已经被“扔到了地上”,不会记录
linux系统结构