linux的一些基本技能
exit指令==注销linux
date:显示时间与日期
cal:显示日历 cal[月][年]
bc:计算器
tab键:命令补全
ctrl+c:终止程序
man:找指令说明,/name可以实现搜索关键词,n可以迅速找到下个关键词位置
man -f:可以把说明文件列出来
who:看目前谁在线
ls -al:列出所有档案详细的权限和属性,
(1)第一栏:第一个字符是文件的属性,后9个字符三个为一组,rwx分别代表可读 可写 可执行。第一组为档案拥有者的权限,第二组为同群组的权限,第三组为其他非本群组的权限。
(2)第二栏:表示有多少档名连接到此节点。
(3)第三栏:表示这个档案的拥有者
(4)第四栏:表示这个档案所属群组
(5)第五栏:表示这个档案的容量大小
(6)第六栏:表示这个档案最近的修改日期
(7)第七栏:表示档名,若前面以.开头,则是隐藏档
cp a.c b.c //把a.c拷贝成b.c,同时会复制执行者的属性和权限
chgrp:更改档案所属群组
chgrp sen install.log //把install.log群组更改为sen
chown:更改档案拥有者
chown sen install.log //把install,log的拥有者改为sen
chown root:root install.log //把install.log的所属和组改为root
-R可以进行递归,目录下所有次目录权限都会改变
chmod:改变档案的权限,其中r==4,w==2,x==1
chmod 777 test.c
linux下的文件颜色意义:
蓝色表示目录;
绿色表示可执行文件;
红色表示压缩文件;
浅蓝色表示链接文件;
灰色表示其它文件;
红色闪烁表示链接的文件有问题了;
黄色是设备文件
白色是一般文件
根目录下的次目录
/bin:存放一些指令,如cat、chmod、chown、date等
/dev:任何装置与接口的档案
/boot:放置开机会用到的档案,包括linux核心档案,开机选单,开机所配置文件等
/etc:系统的主要配置文件,人员的账户密码等
/home:系统默认的用户家目录,新增一个账户,账户会增加进来
/lib:开机时用到的函式库,还会有内核的驱动程序
/media:可移除的装置,硬盘,软盘等等
/mnt:暂时挂载,如共享文件夹
/opt:第三方协力软件,如系统增强功能
/root:系统管理员的家目录
/sbin:开机,修复,还原所需要的指令
/srv:一些网络服务
/tmp:存放正在执行的程序,任何人都能存取
/proc:一个虚拟的文件系统,系统核心,行程信息,网络状态等等
/sys:一个虚拟的文件系统,主要记录与核心相关的信息
/usr:里面的数据属于不可变动,unix software resource『Unix操作系统软件资源』
/var:里面存放快取,登录以及一些软件所产生的档案
绝对路径与相对路径:绝对路径一般从根目录出发,直到文件的最终位置,相对路径是从当前路径出发,找到相邻的文件的位置(一般写程序时最好用绝对路径,因为这个写法没问题)
目录:. :当前目录
.. :上一个目录
- :前一个工作目录
~ :目前用户身份所在家目录
~account:用户的家目录
cd:变换目录
pwd:显示当前目录 pwd -P:显示实际的目录(非链接)
mkdir:新建一个目录 mkdir -p:可建立多层目录 mkdir -m:可以设置权限
rmdir:删除一个目录
cp:cp a.c b.c(把a.c复制到b.c)
cp -a a.c b.c(把a.c复制到b.c,连同所有特性)
rm:删除 rm -rf:递归删除
mv:移动档案或者更名
cat:从第一行开始显示
tac:从最后一行开始显示
chattr:给文件增加特殊属性 +a:叧能增加数据,而不能删除也不能修改数据,只有 root 才能讴定这个属性。
+i:他可以让一个档案不能被删除、改名、设定连结也无法写入或新增资料
档案的特殊权限:SUID, SGID, SBIT
SUID :s 标志在档案拥有者的x 项目为 SUID,会暂时获得root权限,仅可用在 binary program 上, 不能够用在 shell script 上面,也不能用在目录上面
SGID:s 在群组的 x 时则称为 Set GID,可以针对档案或者目录来设定
SBIT :目前仅针对目录有效。
查询文件类型:file +文件
Which+指令 可以寻找常用指令的位置
locate:从已经建立的数据库通过寻找
alias ll='ls -al' :建立指令的别名
echo:用来显示变量
|:管线命令,由前一个命令所传的正确信息交给后面的指令
例如:
sen@sen-VirtualBox:~/Desktop$ echo a.txt | cat
a.txt
sen@sen-VirtualBox:~/Desktop$ vim a.txt
sen@sen-VirtualBox:~/Desktop$ echo a.txt | xargs cat
HHHHHHHHHHHHHHHHHHHHHH
从上面的例子中,我们可以得出下面的结论:
管道可以实现:将前面的标准输出作为后面的“标准输入”。
管道无法实现:将前面的标准输出作为后面的“命令参数”。
dmesg | grep 'eth' 在dmesg中找到有eth关键字的记录
grep:抓取想要的东西
grep '字符' :抓取含有特定字符的语句
grep -v '字符':抓取不含有特定字符的语句
grep -i '字符':抓取含有特定字符的语句(不区分大小写)
sed command file
command 部分:针对每行的内容所要进行的处理(这部分很重要很重要)。
file 部分:要处理的文件,如果忽略 file 参数,则 sed 会把标准输入作为处理对象。
sed 的工作原理:sed 命令是面向“行”进行处理的,每一次处理一行内容。处理时,sed 会把要处理的行存储在缓冲区中,接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。这个缓冲区被称为“模式空间”(pattern space)。
sed 所谓的删除都是在模式空间中执行的,不会真正改动原文件。)
command部分:
(1)范围设定
指定行数:比如‘3,5’表示第 3、第 4 和第 5行;而‘5,$’表示第 5 行至文件最后一行。
模式匹配:比如/^[^dD]/表示匹配行首不是以 d 或 D 开头的行。
1.sed -n '10,26p' test.txt 在test.txt中找到10到26行的数据并打印出来
2.将所有以 d 或 D 开头的行里的所有小写 x 字符变为大写 X 符:
采用了 /AA/s/BB/CC/g 的语法格式,这表示我们要匹配到文件中带有 AA 的行,并且将这些行中所有的 BB 替换成 CC。
sen@sen-VirtualBox:~/Desktop$ sed '/[dD]/s/x/X/g' test2.txt
dgadajsgduwqgdugdXgwdgjdXXXX
Ddsal;kdasdj;asidXaishXkXhakXaXhasXXhasXauhX;aXhaXX
ddaslkdjadihXXaiXhXiahX;aoisXha;sXiohasXuaXh
3.删除每行最后的两个字符
#点号表示一个单个字符, 两个点号就表示两个单个字符
[roc@roclinux ~]$ sed 's/..$//' test
有人可能会问,用 sed‘/..$/d’test 为什么不行呢,d 不是表示删除么?用 d 是不行的,这是因为 d 表示删除整行内容,而非字符。‘/..$/d表示的是匹配所有末尾含有两个字符的行,然后删除这一整行内容,显然这和我们的初衷是相悖的。
第四个例子,我们希望删除每一行的前两个字符:
[roc@roclinux ~]$ sed 's/..//' test
通过这四个例子,相信大家对 sed 命令的最常见用法已经有了很直观的认识了,不妨在自己的实际工作中把这些知识用起来吧。
这个用法值得一讲,我们在 command 部分采用了 /AA/s/BB/CC/g 的语法格式,这表示我们要匹配到文件中带有 AA 的行,并且将这些行中所有的 BB 替换成 CC。
(2)动作处理
d:表示删除行。
p:打印该行。
r:读取指定文件的内容。
w:写入指定文件。
a:在下面插入新行新内容。
#文件内容展示一下
[roc@roclinux ~]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
Beijing 2007
#我们想展示匹配了2005的行和2007的行之间的内容
[roc@roclinux ~]$ sed -n ‘/2005/,/2007/p’ mysed.txt
Beijing 2005
Beijing 2006
Beijing 2007
awk '{匹配的内容}' 匹配的文件名称
1:awk '{print $1,$4}' test 输出每行的第一,第四项内容
2:awk '{printf "%-8s %-10s\n",$1,$4}' test %-8s表示右对齐8个字符,不够的用空格补齐
%-10s表示右对齐10个字符,不够的用空格补齐
用来格式化输出printf "%-8s %-10s\n",
3:awk -F, '{print $1,$2}' test -F来控制输出格式,使用逗号分割输出每行的第一、二项内容
4:awk -va=1 '{print $1,$1+a}' test
5:awk -va=1 -vb=2 '{print $1+b,$1+a}' test
6,awk -f file.awk test 用awk脚本运行awk程序