认识Ubuntu系统
2022年9月29日大约 10 分钟
Ubuntu: 注 上篇记录的博客大概是 linux 和旗下 redhat 适用的 有些 ubuntu 稍有区别 更详细的在博客中浏览 这里只为温故有印象(已废弃,改!!)
用户配置文件 :
已知useradd -m -s /bin/bash user 能系统自动创建好一个用户 那么当自定义时 useradd username 则需要知道
几个用户配置文件.bash_history 存放历史命令 .bash_logout 用户登出 .bashrc .profile
一般在cp /etc/skel/下拷贝
source命令: 加载配置文件 一般上述没有生效(终端还是$符号没有用户名提示时)则用source .bashrc 来再加载一遍
当批量安装时 sudo apt-get install 软件名 -y(批量软件命令) -y表示全部同意 yes 直接赋值安装后自动安装
etc下的配置文件都是个所有用户配置的,其中包括 /bash.bashrc /profile 等 都是全局性的
配置环境变量:·····
一般安装软件都有/software/bin 下面目录有可执行命令
~/.profile--->PATH="要添加的路径:$PATH" 这里是修改当前用户的 设置完之后记得source
所有用户则是 /etc/profile --->同上 但是修改所有人的这种方式不推荐 一般只修改当前用户即可
env:查看当前环境变量 env
export:设置或显示环境变量 export name="SN"
source:在当前环境下读取并执行FileName中的命令。该filename文件可以无执行权限 source /etc/profile
echo: erko
默认为空换行 -n不换行 类似print echo $变量名 printf不换行==echo -n 一般不用忽略
管道符:|
把前一条命令执行的结果给后一条使用 如 cat -n p.py |sort -rn |wc -l
重定向:
>xx.txt 文件空 若文件不存在则创建 存在则清空 类似python的w模式
echo "123">>xx.txt 追加123到文件
查找:
locate 查找所有 包括路径 /etc/sh 只要路径有就能查找出来 不会扫描磁盘,而是从数据库里面拿
locate -i ~/a 搜索用户主目录下所有以a开头的文件并忽略大小写
locate是从数据库查找 每天晚上4点更新 执行sudo updatedb能更新数据库之后即可查找 因此查找当天的文件先更新
find 是把磁盘目录全部遍历一遍
find /home -iname filename 根据文件名查找 i不区分大小写 *通配符
find /home/ -type f根据文件类型查找
反引号`与~在一起 作用是把里面的当做命令来执行 如:ls -a `sudo find / -type f普通文件/l连接/d目录`
sudo find /home/ -maxdepth 2 -type f 指定目录深度来查找 max/min
sudo find /home -size +10M 根据文件大小来查找 b块(512字节)c字节w字(2字节)k千字节 -10k 小于10k
sudo find /home/ -mtime n 其中n为数字 n为5就是 第五天一天的时间段 +5表示五天前的 -5表示后的
对查找结果进行处理 -exec -ok 用的多一点针对删除等敏感操作
很多操作,不详细说明 见博客
挂载:挂载后就像系统的某个目录可以复制查看等 就是不能写
df -Th 查看分区如何挂载的 装系统时默认一个分区/dev/sda1
du -sh ./* 查看文件下的目录及大小
du -sh . 查看文件一共有多大 s后面的目录只显示一层 h每一个文件最大的大小
mount:挂载 可以挂载光驱镜像硬盘什么的
sudo mount /dev/cdrom /mnt 此时mnt就是一个挂载点 ls /mnt/挂载了一个光盘
umount:卸载 先挂载新的首先要先卸载再挂载 -l强制卸载
sudo umount /mnt
-o参数 remount 可以不卸载就挂载 还可以指定属性,模式
压缩:linux常用
tar:
-c 创建一个压缩文件create
-z 是否同时具有gzip的属性?亦是否需要用gzip压缩
-j 是否同时具有bzip2的属性?亦是否需要用bzip2压缩
-t 查看tarfile里面的文件
-x 解开一个压缩文件的参数指令
-v 压缩文件的过程中显示文件!常用 但不建议用在背景执行过程中
-f 使用档名 请留意在f之后要立即接文件名
-p 使用原来文件的属性(属性不会依据使用者而改变)
-P 可以使用绝对路径来压缩
-N 比后面接的日期还要新才能打包到新建文件中(yyyy/mm/dd)
示例:
tar czvf this.tar.gz ./*txt 将目录下面所有的.txt文件打包压缩归档到this.tar.gz当中
tar xzvf this.tar.gz ./ 将当前目录下的this.tar.gz 中的文件解压到当前文件中
不用zj的就只压缩 不打包
tar -xf this.tar.gz -C /tmp 以指定路径的方式来解压目标到/tmp路径下
Linux三剑客之一:
grep:匹配一个给定的模式 其实就是用来做检索的 搜索 过滤
-c --count 计算符合样式的列数
-l --file--with--matches 列出文件名
-i --ignore--case 不区分大小写
-v --revert-match 显示不包含匹配文本的所有行
-E 使用正则表达式RE 指定-E解析为一定使用正则表达式
正则·简 :linux下用的不要太多 几乎没有用不到的地方 后面学python的re模块才真正开始(略有不同)
^: 匹配开头 这里指的真的只是开头 在[]中^表示取反
$: 匹配结尾
[]: 范围匹配
[a-z]:匹配所有小写字母
[A-Z]:大小同上
[0-9]:匹配所有数字 [^0-9] 所有非数字
.: 匹配单个字符 也就是匹配任意字符 当 grep -E "." this.txt 时匹配所有字符
*: 表示*前面的内容出现过0次或多次 如[a-z]*表示 0个或多个小写字母 只和前面的有关 就算[0-9][a-z]*也只和az有关
+: 表示+前面的内容出现过1次或多次 至少出现一次
?: 表示?前面的内容出现过0次或1次 至多出现一次
因此开头通常为 ^sddsds$来表达
以上必须记下来 必须!!! 应用范围太广
Linux三剑客之二:
sed:流编辑器,一次处理一行的数据
sed [-nefr] [动作] [文件] 模式 下面介绍参数
-n: 使用安静模式(slient).在一般的sed用法中,所有来自STDIN的数据一般都会被列出到终端上。但如果加上-n参
数后,则只有经过sed特殊处理的一行才会被列出来
-e: 用的不多 在命令模式上进行sed编辑
-f: 直接将sed的动作写在一个文件内 -f filename 则可以运行filename内的sed动作
-r: sed的动作支持的是延伸型正规表示法语法。(默认是基础正规表示法语法)
-i: 直接修改读取的文件内容,而不是输出到终端
动作说明:[n1[,n2]]动作:
n1,n2 不一定存在,一般代表选择进行动作的行数,比如,如果我的动作是需要在10到20行之间进行的,则10,20动作为1
动作:
#a:新增,a后面可以接字符串,而这些字符串会在新的下一行出现
#c:取代,同a可以接字符串,会取代 n1,n2 之间的行
#d:删除,因为删除 因此不接任何东西
sed "3d" 删除第三行 sed "1,3d"一到三行 sed "/word/,13d"删除目标单词所在的行到第13行
+3则是之后的三行 1~2d 保留偶数行 sed "/56\|76/d"匹配行中有56或是76的则删除 |要转义 不然就当成普通字符
#i:插入,同a,c i的后面可以接字符串,而这些字符串会出现在新的上一行
sed "3i 2333" 2333则会出现在第三行的上面
#p:列印,亦将某个选择的数据印出。通常p会与参数sed -n 一起运行 用的也不少
sed "3p" 又多打印了第三行一次
sed -n "3p" 只打印了第三行 因为-n只打印了经过处理的行 sed -n "3p;5p" 只打印了三五行
sed -n "3~5p" 从第三行开始隔五行打印
sed -n "$=" 显示文件行数 sed -n "$"p 打印最后一行 p放在里面要转义 "\$p"
#s:替换 可以直接进行取代的工作。通常这个d的动作可以搭配正规表示法,例如1,20s/old/new/g 前面的还好但s用的最多
sed "s///" 标准写法>。< sed "s/than/2333/" 替换than为2333
sed -r "s/(th)(an)/\2BOOM~\1/" 转义2转义1 -r 双括号进行分组 输出 anBOOM~th
Linux三剑客之三: sed&awk 曾被"饭醉团伙"业余爱好者翻译过
awk:一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.
简单来说awk就是吧文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理
awk [-F field-separator] 'commands' input-file(s) 以上为命令行调用方式
其中 commands是真正awk命令 [-F域分隔符] 是可选的。 input-file(s) 是待处理的文件 在awk中 文件每一行 由
域分隔符分开的每一项称为一个域 通常 在不指定-F域分隔符的情况下 默认的域分隔符是空格
例:tail -10 /etc/passwd | awk -F":" '{print $1}' 取10行passwd下的以":"分割的第一个单词 0就是所有了
awk的工作流程:
读入有'\n'换行符分割的一条记录,然后将记录按指定的 域分隔符划分域,填充域, $0则表示所有域 $n表示第n个域
默认域分隔符是空白键 或 "tab"键 所以$1表示登录用户 $3 表示登录用户ip 以此类推
awk常用内置变量:
ARGC 命令行的参数个数 awk '{print ARGC,ARGV[0],ARGV[1],FILENAME}' a.txt
ARGV 命令行参数排列 其实很少用
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符 等价于命令 -F选项 awk '{FS=":"}{print NF}' /etc/passwd 这大概就是它的用法吧QAQ
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符 awk 'BEGIN{OFS="_";}{print $1,$2,$3}' a.txt 注意别用$0小心被坑
ORS 输出记录分隔符
RS 控制记录分隔符
使用方法 awk '{print ARGC}' a.txt
BEGIN就是在开始之前做一些预定义的动作 END则是结束后去做
awk -F":" '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,
NR,NF,$0)}' /etc/passwd 这种指令只是更放便阅读
vi 和 vim:
vim是vi的升级版 是一款强大的编辑器 有许多命令 小抄请见一章博客
set nu 临时显示行号 若想要每次都显示的话就把 set nu 写到vimrc里
ctrl + r重做 u撤销 ^光标跳到行首 $光标跳到行尾