首页 > 代码库 > linux 基础
linux 基础
linux的文件系统
根文件系统(rootfs)
root filesystem
LSB, FHS:
/etc ,/usr, /var, /root, /home, /dev
/boot: 引导文件存放的目录:操作系统首先启动的内核文件(vmliuxz)、引导加载器(bootloader,grub)都存放在此目录
/bin: 供所有用户使用的基本命令: 不能关联到独立分区。os启动即会用到的程序
/sbin(system binary): 管理类的基本命令,不能关联到独立分区。os启动即会用到的程序
/lib:基本共享库文件,系统启动会用的库文件,内核模块文件(/lib/modules)32位程序依赖
/lib64: 64位程序依赖。辅助共享库件存放的位置
/etc: 配置文件目录(大多数是纯文本文件),/etc/opt /etc/X11图形界面的配置文件
/home/IUSERNAME: 普通用户家目录、
/root: 管理员的家目录
/media:关联便携式移动设备 /usb /cdrom
/mnt:挂载临时的文件系统或者关联位置
/dev : 特殊文件(软件)和设备文件存放位置 b:block device(可随机访问) c:character device(线性访问,有访问先后)
/opt: 第三方应用程序(辅件类)安装位置。首次使用是空的
/srv:系统上运行的服务用的中间数据存放的位置
/tmp: 临时文件。
/usr : 通常会关联到独立分区。
/usr/bin:保证系统拥有完整功能而提供的应用程序
/usr/sbin:管理员可以使用的命令.配置文件在/etc下
/usr/ib64
/usr/include:C程序的头文件(header file)
/usr/:share:结构独立化的数据。如:doc、man
/local: 第三方应用程序安装位置 /bin /sbin /lib64 等
/var: 可变数据文件。
/cache : 应用程序缓存数据目录
/lib: 应用程序状态信息数据
/local: 专用天为/usr/local下的应用程序存储可变数据
/lock: 锁文件
/log: 日志目录及文件
/opt: 专用于为/opt下的应用程序存储可变数据
/run: 与运行中的进程相关的数据(进程的PID文件)
/spool: 缓存池
/tmp: 系统再次重启过程中产生的临时文件
/proc: 伪文件系统。虚拟文件系统。用于输出内核与进程信息相关的虚拟文件
/sys: 用于输出当前系统上硬件设备相关信息的虚拟文件系统
/misc: 备用的杂项
/lost+found: 格式化后产生的
/selinux: selinux相关的安全信息策略等信息的存储位置
Linux上的应用程序的组成部分
二进制:/bin, /sbin/ /usr/bin /usr/sbin /usr/local/bin /usr/lcoal/sbin
库文件:/lib /lin64 、/usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
配置文件: /etc /etc/DIRECTORY /etc/local/etc
帮助文件: /etc/share/man /usr/share/doc /usr/lcal/share/man /usr/local/share/doc
Linux下的文件类型
-(file): 普通文件
-d(dir): 目录文件
-b(block): 块设备.
-c(charater): 字符设备
-l( symbol link): 软件连接。符号连接
-p(pipe): 管道文件
-s(socket): 套接字文件,接口文件。
Linux系统管理命令
关机 halt reboot poweroff
-f 强制不调用shutdown
-p 切断电源
shutdown -r重启 -h关机后会切断电源。 -c取消关机或重启操作、 TIME: now 立刻 +num 从命令提交开始之后num时间之后。 hh:mm。绝对时间表示
Linux 用户信息查询命令
whoami: 显示当前登录的有效用户 who:显示当前所有的登录会话 w:系统当前所有登录会话及所做的操作。
目录管理类命令:
命令行展开:
~: 展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}: 可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp/{a,b} = /tmp/a, /tmp/b
/tmp/{a,b}/jea = /tmp/a/jea, /tmp/b/jea
命令的执行结果:
0:成功
1-255:失败
bash使用特殊变量$?保存最近一条执行状态结果
命令的执行结果:命令的返回值。 命令的执行状态
cd,pwd,ls,mkdir, rmdir 蓝色表示目录
mkdir 创建目录
-p: 递归创建目录。存在不报错。
-v(verbose): 显示创建详细过程
-m mode: 创建目录时直接指定权限
tree: 显示目录树
-d :只显示目录
-l level: 指定显示的层级数目
-P :只显示匹配Pattern 的目录
rmdir:删除目录(只能删除空目录)
-v : 显示过程
-f : 强制删除
桌面
文件查看类命令:
cat,tac
more, less , tail .head
head tail :获取文件的前几行 后几行 (默认是10)
-c: 指定获取前多少个字节
-n: 指定获取前多少行
文件的时间戳管理工具:
touch
文件:metadata , data
查看文件的状态:stat
三个时间戳:
access time: 访问时间 atime , 读取文件内容
modify time: 修改时间 mtime 改变文件内容
change time :改变时间 ctime 元数据发生改变
-a: 修改atime
-m:修改mtime
-c :如果不存在,则不创建
cp: 复制, 源, 目标
-i 交互式
-r 递归复制
-a: 归档复制
mv:移动
nano :全屏幕的文件编辑器
Bash的基础特性:
1.命令别名(alias)(仅对当前shell有效,如果想要永久有效,仅对当前用户: ~/.bashrc 对所有用户:/etc/bashrc)
alias ls="ls -l" 取消别名:unalias ls
bash进程重新读取配置文件 两个种方式:source /path.to/config_file ./path/to/config_file
2.glob (globing)可在bash中实现文件名通配 例如:* (任意长度任意字符),?(任意单个字符), [](), ^(取反,如[^0-9] 所有非数字的)
bash的快捷键、
ctrl + l 相当于clear
ctrl + a 首部
ctrl + e 尾部
ctrl + w 按单词删除
ctrl +c 终止当前命令
ctrl +u 删除命令行首到光标所在处的所有内容
ctrl + k 删除光标所在处到尾部的内容
Bash中的I/O重定向及管理
程序:指令 + 数据
读入数据:input
输入数据: output
每一个打开的文件都有一个fd:文件描述符file descriptor
标准输入:keyborad
标准输出:monitor 显示器 文件描述符为1
标准错误:monitor 显示器 文件描述符为2
I/O重定向:改变标准位置
输出重定向:command new_pos, command >> new_pos
set -C 禁止输入重定向覆盖输入到文件
2>:覆盖重定向错误输出数据流 (将错误输出输出到文件)
标准输出和标准错误输出重定向
command >file 2>file_2
合并标准输出和错误输出为同一个数据流进行重定向
&> file 把正确和错误都重定向到一个文件中
command >file 2>&1 把错误数据流重定向到第一个数据流之中
tr: 转换或删除字符 transport
tr abc ABC 输入a123bc 输出A123BC
tr -d 删除指定字符 tr -d a 输入abc 输出bc tr ‘a-z‘ ‘A-Z‘ 转换成大写
<<此处文档
例如 cat >> /tmp/test.out <<EOF 输入:hello EOF结尾 输出:hello
tee:一处输入。两处输出。 tee /tmp/test
文本操作工具
wc:
-c:字节数
-l:行数
-w:仅仅靠空白字符分开的单词
sort: 排序 -f 忽略大小写 -r 逆序。 -k # :以指定字段为标准进行排序 -u去得 -n按数据排序
cut:以指定字符对每一行进行切割。 cut -d: -f1,2 a.txt 输出root:x (原来的:root:x:0:root)
-d: 指定分隔符。decriptor
-f: 第1个到第3个字段
uniq :去重
连续且完全一样才是重复
-c:显示每行出现的次数
-d显示重复的行
用户和组管理
Linux用户:Username/UID
管理员:root 0,
普通用户:1-65535
系统用户:1-499 守护进行获取资源进行权限分配
登录用户:500+ 交互式登陆
Linux组: Group/GID
管理员组:root , 0
普通组:
系统组:1-499
普通组:500+
权限指派的一种方式。
Linux的安全上下文:
运行中的程序:进程(process)
以程序发起者的身份运行
root: cat
cwb:cat
Linux组的类别
用户的基本组(主组):
组名同用户名且仅包含一个用户:私有组。一个用户创建,系统自动给其分配私有组
cwb:x:1000:1000:cwb:/home/cwb:/bin/bash
用户名:密码(x:占位符):用户ID:组ID:主目录:默认shell
用户的附加组(额外组):
Linux用户和组相关的配置文件:
/etc/passwd 用户及其属性信息(名称。UID。基本组ID等)密码占位符
/etc/group 组及其属性信息
/etc/shadow 用户密码及相关属性
/etc/gshadow 组密码及相关属性
useradd 用户名:创建用户名
-u :指定UID
-g:基本组GID
-c “comment”:注释内容
-d:指定家目录 -d /path/to/home 用户名
-s: 指定 shell文件的路径,可能列表在/etc/shells文件
-G:指定用户所属的附加组。可以有多个附加组用户‘,’隔开、组必须事先存在
-r:创建系统用户 centos 6 ID<500 centos 7 ID<1000
例如:useradd gentoo -s /bin/csh -c "Gentoo Distribution" -G linux
组创建:groupadd
-g:指明GID。
-r:创建系统组 centos 6 ID<500 centos 7 ID<1000
查看用户相关的ID信息:id
-u:UID
-g:GID
-G:groups
-n: Name
切换用户或以其他用户身份执行命令:su
su UserName: 非登陆式切换,即不会读取目标用户的配置文件
su - UserName: 登录式切换。会读取目标用户的配置文件。完全切换
root su到其它用户无须密码, 非root用户需要密码
用户属性修改:usermod
-u:新的UID
-g:新的基本组GID
-G:groups新附加组,原来的附加组会被覆盖,若保留原来的,需要使用-a选项。表示append
-l login:修改为新的名字
-c :新的注释
-d Home :新的家目录
-L锁定用户。锁定之后无法登陆, -U:解锁用户
-e YY-MM-DD:设定用户过期日期
给用户添加密码:passwd
passwd UserName: 修改指定用户的密码。仅root可以
passwd :用户修改自己的密码
-l(小写的): 锁定用户 -u:解锁用户
-n mindays :指定最短使用期限
-x maxdays:指定最大使用期限
-w warning:提前多少开始警告
--stdin : 从标准输入接收用户密码 echo "PASSWORD" | passwd --stdin USERNAME(把PASSWORD当作密码通过管道传入passwd 中)
/dev/null: 数据黑洞。
/dev/zero:
删除用户:userdel:
-r: 删除用户家目录
组属性修改:groupmod
-n group_name:新的名字
-g GID:新的GID
组删除:groupdel
组添加密码:gpasswd 组名
-a user :将user添加到指定组中
-d user:删除用户user的以当前组名的附加组
-A user1,user2,user3: 设置有管理权限的用户 gpasswd -A user1,user2,user3 root
newgrp :临时切换基本组
如何用户本不属于此组,则需要密码
修改用户属性:chage 更改用户密码过期信息
其它命令:chfn (finger显示信息).chsh 修改shell.
权限管理:
ower 主u
group 组g
other 其它o
r:readable 可读 可以使用文件查看类工具获取其内容 4
w:writable 可写 。 2
x:excutable 执行 1
修改权限:chmod
-R :递归修改权限。父目录和子目录、文件等权限都会被修改
直接指定:Mode u=rx g=r-x o= 或 ug=
chmod --reference=RFILE FILE 参考RFILE文件的权限,修改为和RFILE权限一样
chown:修改文件的属主 chown cwb file
OWNER:GROUP
:GROUP
-R递归修改
修改文件的属性:chgrp
文件或创建时的遮罩码 :umask
FILE: 666-umask 如果某类的用户的权限减得的结果中存在x权限,则将其权限+1
DIR : 777-umask
umask :查看 0022:第一个0不要看,创建的目录权限都是666-022=644权限,如果有x行权限会+1、如果是目录别不会+1、只有文件会+1.
umask # 设定
本文出自 “祝融与火” 博客,请务必保留此出处http://notezr.blog.51cto.com/9424982/1917193
linux 基础