linux基础 chapter 2

一、简单命令

* 关机:halt,poweroff
* 重启:reboot (-f:强制,不调用shutdown;-p:切断电源)
* 关机或重启:shutdown(-r:reboot;-h:halt;-c:cancel)
	TIME:无指定,默认相当于 +1
	now:立刻,相当于+0
	+m:相对时间表示法,几分钟之后;例如:shutdown -h 3
	hh:mm:节点时间表示,指具体时间;例如:shutdown 10:01
* 用户登录信息查看命令:
	whoami: 显示当前登录有效用户
	who: 系统当前所有的登录会话
	w: 系统当前所有的登录会话及所做的操作
* nano 文本编辑 ctrl + x 退出 y保存
* screen命令
	(类似windows系统的远程连接)命令没有安装,可以mount /dev/sr0 目录;本		地安装:rpm -	ivh 目录/Packages/screen-(tab补全)
	screen命令前提同一个用户远程连接同一台主机:
	A窗口:screen -S help111 开一个服务窗口名字叫help111
	B窗口:screen -ls列出窗口信息,screen -x help111加入help111窗口
	退出并关闭screen会话
	exit
	剥离当前screen会话
	Ctrl+a,d
	显示所有已经打开的screen会话
	screen -ls
	恢复某screen会话
	screen -r [SESSION]
* ps aux查看运行进程
* hexdump -C file,txt十六进制转储查看文件
* echo file{1..10}.txt括号扩展:{ }
	file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt file7.txt file8.txt file9.txt file10.txt
* ctrl-r来在命令历史中搜索命令
	(reverse-i-search)`’:
* ctrl+g:从历史搜索模式退出
* history历史命令
	-c: 清空命令历史
	n: 显示最近的n条历史
* whatis显示命令的简短描述
	使用数据库,刚安装后不可立即使用。makewhatis (centos6)或者 	mandb(centos7)制作数据库
	使用示例:whatis passwd====passwd在第5章
	passwd (5) - password file
	passwd (1) - update user’s authentication tokens
	sslpasswd (1ssl) - compute password hashes
* man 5 passwd看详细讲解(配合whatis一起使用)
	/搜索内容 n下一个 N上一个
* basename确定文件名称
	basename /etc/sysconfig/network-scripts/ifcfg-ens33
	ifcfg-ens33
* dirname确定目录名称
	dirname /etc/sysconfig/network-scripts/ifcfg-ens33
	/etc/sysconfig/network-scripts
* touch f{1..5432323}.txt参数太多,touch命令实现不了,可以通过
* echo f{1..5432323}|xargs touch同理,touch命令也可以换成rm命令

二、文件系统与目录结构

在这里插入图片描述

文件系统

 文件和目录被组织成一个单根倒置树结构
    文件系统从根目录下开始,用“/”表示
    根文件系统(rootfs):root filesystem
    文件名称区分大小写
    以.开头的文件为隐藏文件
    路径分隔的 /
    文件有两类数据:
    元数据:metadata
    数据:data
    文件系统分层结构:LSB Linux Standard Base
    FHS: (Filesystem Hierarchy Standard)
    http://www.pathname.com/fhs/

文件名规则

文件名最长255个字节
包括路径在内文件名称最长4095个字节
蓝色–>目录 绿色–>可执行文件 红色–>压缩文件 浅蓝色–>链接文件 灰色–>其他文件
除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。
标准Linux文件系统(如ext4),文件名称大小写敏感。例如:MAIL, Mail, mail, mAiL

文件系统结构

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据

Linux上的应用程序的组成部分

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

Linux下的文件类型

-:普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket

CentOS 7目录变化

/bin 和 /usr/bin
/sbin 和 /usr/sbin
/lib 和/usr/lib
/lib64 和 /usr/lib64

列出目录内容

列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
示例:
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归通过
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序

查看文件状态

stat
文件:metadata, data
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变

文件通配符

*· 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符

创建空文件和刷新时间

touch命令:
touch [OPTION]... FILE...
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建

复制文件和目录cp

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
-i:覆盖前提示 –n:不覆盖,注意两者顺序
-r, -R: 递归复制目录及内部的所有内容
-a: 归档,相当于-dR --preserv=all
-d:–no-dereference --preserv=links 不复制原文件,只复制链接名
–preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p: 等同–preserv=mode,ownership,timestamp
-v: --verbose
-f: --force
-u:–update 只复制源比目标更新文件或目标不存在的文件
--backup=numbered 目标存在,覆盖前先备份加数字后缀
cp /dev/zero /dir 可以迅速占满磁盘,几秒钟就能4、5百兆
[root@centos7 ~]# cp /dev/zero /boot/
cp: error writing ‘/boot/zero’:No space left on device
cp: failed to extend ‘/boot/zero’: No space left on device

三、标准输入和输出

运行的程序都有一个fd: file descriptor (文件描述符)
在/proc目录下创建一个目录
在这里插入图片描述

例如:

使用tailf命令

tailf /data/test.log

  • 查看一下tailf进程的PID:

[root@centos7 ~]#ps aux |grep tailf
root 7835 0.0 0.0 107948 624 pts/0 S+ 20:44 0:00 tailf /data/test.txt
root 7897 0.0 0.0 112708 976 pts/2 S+ 20:46 0:00 grep --color=auto tailf

  • 进入/proc目录下

发现已经创建了目录
在这里插入图片描述

  • 使用命令ll $(pidof tailf)/fd/

可以查看当前命令的文件描述符
在这里插入图片描述

tty命令

终端A的命令在终端B的窗口显示,使用tty命令查看终端号
终端A:/dev/pts/0
终端B:/dev/pts/1
在这里插入图片描述
在这里插入图片描述

stdin命令

echo 123456|passwd --stdin bamboo >/dev/null /dev/null(空设备)可以接收所有不想显示的信息

符号>把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件

  • 需求1:对的放f1文件,错的放f2文件
    ls /data/test /xxxx > f1 2>f2
    在这里插入图片描述
  • 需求2:对的错误的放在一个文件里面
    ls /data/test.txt /xxxx &> /tmp/f3
    在这里插入图片描述

标准输入

提前准备好要运算的公式写入bc.log,然后输入到bc命令
命令:bc < bc.log

|管道命令

cmd1 | cmd2

管道符左边有标准输出,管道符右边有标准输入。错误传不过去
echo 2*3 | bc

tr命令

转换的意思

  • 需求1、把小写字母转换成大写字母
    echo Zhang| tr ‘a-z’ ‘A-Z’
    在这里插入图片描述
  • 需求2、把小写字母转换成大写字母并且删除数字 -d参数
    echo Zhang123abc |tr ‘a-z’ ‘A-Z’ |tr -d ‘0-9’
    在这里插入图片描述
  • 需求3、把小写字母转换成大写字母并且删除多余的空格 -s参数
    df |tr ‘a-z’ ‘A-Z’ |tr -s ’ ’
    在这里插入图片描述

cat命令

单行输入

cat > /tmp/test

多行输入

cat >>tmp/test <<EOF
asd
asdasd
EOF

tee命令

把命令1的STDOUT保存在文件中,做为命令2的输入
同时查看和记录输出

ls | tee /tmp/tee.log
在这里插入图片描述

四、用户组和权限管理

每个用户都有一个不同的UID,根据UID区分不同用户
id命令
在这里插入图片描述

用户创建命令:useradd

例子:
useradd -s /sbin/nologin -M apache

useradd [options] LOGIN
-u UID
-o 配合-u 选项,不检查UID的唯一性
-g GID:指明用户所属基本组,可为组名,也可以GID
-c “COMMENT”:用户的注释信息
-d HOME_DIR: 以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…]:为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户

修改文件的属主和属组

chown和chgrp

chown root.ftp f1
在这里插入图片描述

修改文件权限

文件的权限主要针对三类对象进行定义
owner: 属主, u
group: 属组, g
other: 其他, o
每个文件针对每类访问者都定义了三种权限
r: Readable
w: Writable
x: eXcutable
文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
目录:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录
在这里插入图片描述
chmod [OPTION]… OCTAL-MODE FILE…
-R: 递归修改权限
chmod [OPTION]… MODE[,MODE]… FILE…
MODE:
修改一类用户的所有权限:
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + -
chmod [OPTION]… --reference=RFILE FILE…
参考RFILE文件的权限,将FILE的修改为同RFILE
需求:想让某文件拥有读写执行权限

方法1:chmod 777 /tmp/test

在这里插入图片描述

方法2:chmod u=rwx,g=rwx,o=rwx /tmp/test

在这里插入图片描述

*** 备注:想批量创建具有读写权限的文件,修改umask ***
新建FILE权限: 666-umask
如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限: 777-umask
全局设置: /etc/bashrc 用户设置:~/.bashrc

Linux文件系统上的特殊权限------(很特殊)

ll /usr/bin/passwd
在这里插入图片描述

suid权限: 当用户运行程序来访问资源,资源变成访问者权限

例如:
nano命令加suid权限:chmod u+s /usr/bin/nano或chmod 4755 /usr/bin/nano
nano命令取消suid权限:chmod 755 /usr/bin/nano或者chmod u-s /usr/bin/nano

sticky权限(t权限):普通用户只能对自己的文件进行操作

例如:
f1文件夹加sticky权限:chmod o+t f1
f1文件夹权限sticky权限:chmod o-t f1

sgid权限:在有sgid权限的文件夹下创建文件会继承所属组

例如:chmod 2777 /tmp/wan/
在这里插入图片描述

访问控制列表(重要!!!)
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
ACL生效顺序:所有者,自定义用户,自定义组,其他人
为多用户或者组的文件和目录赋予访问权限rwx
setfacl命令 针对某一个文件
格式:setfacl -m u:wang:rwx file|directory

例如:
1、给bamboo账号不能操作test的权限setfacl -m u?0 /tmp/test
在这里插入图片描述
2、给bamboo用户/tmp目录下读写执行权限:setfacl -m -R u?rwx /tmp/
3、取消bamboo用户/tmp目录下的acl:setfacl -Rb /tmp
4、查看/tmp/test文件的acl权限:getfacl /tmp/test

五、正则表达式

cat -n f1 看文件加行号
cat -A f1 看文件显示特殊符号 $ 空格
rev f1 反正显示123 显示成321
tac f1 从最后一行向上显示
tail -f f 参数是follow意思,f跟踪文件fd追加内容,F追踪文件名
cut -d: -f1,3 /etc/passwd -d:指定字段的分隔符,默认的字段分隔符为“TAB”; -f:显示指定字段的内容 -c: 仅显示行中指定范围的字符;
paste f1 f2横着合并显示文件

wc行数 字数 字节数 cat /test/1.txt | wc -l
常用选项
-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度

sort [options] file(s)
-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique)删除输出中的重复行
-t 选项使用c做为字段界定符
-k 选项按照使用c字符分隔的X列来整理能够使用多次
例如:把/etc/passwd文件中uuid按照倒叙排序
sort -t: -k 3 -nr 6.txt

uniq 删掉相邻的重复行
处理访问日志
cut -d " " -f1 access_log |sort|uniq -c|sort -nr|head

Linux文本处理三剑客

grep

grep: Global search REgular expression and Print out the line
	作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行
	模式:由正则表达式字符及文本字符所编写的过滤条件
	grep [OPTIONS] PATTERN [FILE…]
	grep root /etc/passwd
	grep “USER” /etc/passwd
	grep ‘USER’ /etc/passwd
	grep whoami /etc/passwd

参数:
	–color=auto: 对匹配到的文本着色显示
	-m # 匹配#次后停止
	-v 显示不被pattern匹配到的行
	-I 忽略字符大小写
	-n 显示匹配的行号
	-c 统计匹配的行数
	-o 仅显示匹配到的字符串
	-q 静默模式,不输出任何信息
	-A # after, 后#行
	-B # before, 前#行
	-C # context, 前后各#行
	-e 实现多个选项间的逻辑or关系
		grep –e ‘cat ’ -e ‘dog’ file
	-w 匹配整个单词
	-E 使用ERE
	-F 相当于fgrep,不支持正则表达式

备注:通配符是 文件名,正则表达式是 内容

例如:
	echo aaaa | egrep "aab?" 有没有b不确定
	echo aaaaaaaaacccc|egrep "a{5,7}"至少5,至多7次
	grep -v "^$" f1 排除空行
	echo abcabcabcabc|egrep "(abc){3}"显示3个(abc)
	echo abcefcgasfasdefg |egrep "abc|efg"显示abc或efg
	ifconfig ens33|grep "broad"|egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}"|head -n1 查看ip
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值