2022-07-18 Linux入门2

本条笔记学习于https://www.lanqiao.cn/courses/1/learning/?id=2

Chapter5 文件打包与解压缩

zip, rar, tar,7z

cd /home/shiyanlou
zip -r -q -o shiyanlou.zip /home/shiyanlou/Desktop
du -h shiyanlou.zip
file shiyanlou.zip
cd /home/shiyanlou
tar -P -cf shiyanlou.tar /home/shiyanlou/Desktop # -f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后
  • 打包工具tar
*.tar.gz    -z
*.tar.xz    -J
*tar.bz2    -j

zip:
打包 :zip something.zip something (目录请加 -r 参数)
解包:unzip something.zip
指定路径:-d 参数
tar:
打包:tar -cf something.tar something
解包:tar -xf something.tar
指定路径:-C 参数

chapter6 文件系统操作与磁盘管理

-基本操作

df
# 只查看 1 级目录的信息
du -h -d 0 ~
# 查看 2 级
du -h -d 1 ~
du -h # 同 --human-readable 以 K,M,G 为单位,提高信息的可读性。
du -a # 同 --all 显示目录中所有文件的大小。
du -s # 同 --summarize 仅显示总计,只列出最后加总的值。
# 输出到文件
dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1
# 输出到标准输出
dd if=/dev/stdin of=/dev/stdout bs=10 count=1
# 在打完了这个命令后,继续在终端打字,作为你的输入

dd if=/dev/zero of=virtual.img bs=1M count=256
du -h virtual.img # if(input file,输入文件)和 of(output file,输出文件),bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如 K,M,G 等单位)
sudo mkfs.ext4 virtual.img #格式化为ext4文件系统

#挂载磁盘
mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
mount -o loop -t ext4 virtual.img /mnt
# 也可以省略挂载类型,很多时候 mount 会自动识别

# 以只读方式挂载
mount -o loop --ro virtual.img /mnt
# 或者 mount -o loop,ro virtual.img /mnt

# 查看硬盘分区表信息
sudo fdisk -l

chapter7 帮助命令

  • 内建命令与外部命令之分
    内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在 bash 源码的 builtins 里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
  • help,man,info 命令的使用以及区别

外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin 等等。比如:ls、vi 等。

#区分内外部命令
type exit
type vim
# 得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的.def中
xxx is a shell builtin
# 得到这样的结果说明是外部命令,正如上文所说,外部命令在/usr/bin or /usr/sbin等等中
xxx is /usr/bin/xxx
# 若是得到alias的结果,说明该指令为命令别名所设定的名称;
xxx is an alias for xx --xxx

help,只用于内部命令
man 没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。
info 得到的信息比 man 还要多,info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。

chapter8 Linux任务计划crontab

crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。

*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)
#每个用户使用 crontab -e 添加计划任务,都会在 /var/spool/cron/crontabs 中添加一个该用户自己的任务文档,这样目的是为了隔离。
  • 挑战:备份日志
crontab -e 表示为当前用户添加计划任务
sudo crontab -e 表示为root用户添加计划任务

sudo cron -f & #启动crontab
crontab -e # 添加
0 3 * * * sudo rm /home/shiyanlou/tmp/*
0 3 * * * sudo cp /var/log/alternatives.log /home/shiyanlou/tmp/$(date +%Y-%m-%d)

chapter9 命令执行顺序控制与管道

  • 顺序
    ; || &&
    -管道
# 前五个(包含第五个)
cut /etc/passwd -c -5
# 前五个之后的(包含第五个)
cut /etc/passwd -c 5-
# 第五个
cut /etc/passwd -c 5
# 2 到 5 之间的(包含第五个)
cut /etc/passwd -c 2-5

grep [命令选项]... 用于匹配的表达式 [文件]...
# 查看环境变量中以 "yanlou" 结尾的字符串
export | grep ".*yanlou$"

wc 计数
# 行数
wc -l /etc/passwd
# 单词数
wc -w /etc/passwd
# 字节数
wc -c /etc/passwd
# 字符数
wc -m /etc/passwd
# 最长行字节数
wc -L /etc/passwd

sort
cat /etc/passwd | sort
cat /etc/passwd | sort -t':' -k 3#上面的-t参数用于指定字段的分隔符,这里是以":"作为分隔符;-k 字段号用于指定对哪一个字段进行排序。这里/etc/passwd文件的第三个字段为数字,默认情况下是以字典序排序的,如果要按照数字排序就要加上-n参数

uniq #去重
# 输出重复过的行(重复的只输出一个)及重复次数
history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -dc
# 输出所有重复的行
history | cut -c 8- | cut -d ' ' -f 1 | sort | uniq -D

chapter10 简单的文本处理

tr
# 删除 "hello shiyanlou" 中所有的'o','l','h'
$ echo 'hello shiyanlou' | tr -d 'olh'
# 将"hello" 中的ll,去重为一个l
$ echo 'hello' | tr -s 'l'
# 将输入文本,全部转换为大写或小写输出
$ echo 'input some text here' | tr '[:lower:]' '[:upper:]'
# 上面的'[:lower:]' '[:upper:]'你也可以简单的写作'[a-z]' '[A-Z]',当然反过来将大写变小写也是可以的

col 命令可以将Tab换成对等数量的空格键,或反转这个操作。
# 查看 /etc/protocols 中的不可见字符,可以看到很多 ^I ,这其实就是 Tab 转义成可见字符的符号
cat -A /etc/protocols
# 使用 col -x 将 /etc/protocols 中的 Tab 转换为空格,然后再使用 cat 查看,你发现 ^I 不见了
cat /etc/protocols | col -x | cat -A

join
join [option]... file1 file2
-t  指定分隔符,默认为空格
-i  忽略大小写的差异
-1  指明第一个文件要用哪个字段来对比,默认对比第一个字段
-2  指明第二个文件要用哪个字段来对比,默认对比第一个字段

paste
-d  指定合并的分隔符,默认为 Tab
-s  不合并到一行,每个文件为一行

chapter11数据流重定向

Linux 默认提供了三个特殊设备,用于终端的显示和输出,分别为 stdin(标准输入,对应于你在终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)

文件描述符   设备文件    说明
0   /dev/stdin          标准输入
1   /dev/stdout 标准输出
2   /dev/stderr 标准错误

mkdir Documents
cat > Documents/test.c <<EOF
#include <stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}

EOF

-标准错误重定向

重定向标准输出到文件,这是一个很实用的操作,另一个很实用的操作是将标准错误重定向,标准输出和标准错误都被指向伪终端的屏幕显示,所以我们经常看到的一个命令的输出通常是同时包含了标准输出和标准错误的结果的。比如下面的操作:
# 使用cat 命令同时读取两个文件,其中一个存在,另一个不存在
cat Documents/test.c hello.c
# 你可以看到除了正确输出了前一个文件的内容,还在末尾出现了一条错误信息
# 下面我们将输出重定向到一个文件
cat Documents/test.c hello.c > somefile

exec 命令实现永久重定向
  • xargs 传递参数列表

是一条 UNIX 和类 UNIX 操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题

chapter12 正则表达式

grep,sed,awk


image.png
# 将匹配以'z'开头以'o'结尾的所有字符串
echo 'zero\nzo\nzoo' | grep 'z.*o'
# 将匹配以'z'开头以'o'结尾,中间包含一个任意字符的字符串
echo 'zero\nzo\nzoo' | grep 'z.o'
# 将匹配以'z'开头,以任意多个'o'结尾的字符串
echo 'zero\nzo\nzoo' | grep 'zo*'
# grep默认是区分大小写的,这里将匹配所有的小写字母
echo '1234\nabcd' | grep '[a-z]'
# 将匹配所有的数字
echo '1234\nabcd' | grep '[0-9]'
# 将匹配所有的数字
echo '1234\nabcd' | grep '[[:digit:]]'
# 将匹配所有的小写字母
echo '1234\nabcd' | grep '[[:lower:]]'
# 将匹配所有的大写字母
echo '1234\nabcd' | grep '[[:upper:]]'
# 将匹配所有的字母和数字,包括0-9,a-z,A-Z
echo '1234\nabcd' | grep '[[:alnum:]]'
# 将匹配所有的字母
echo '1234\nabcd' | grep '[[:alpha:]]'
# 排除字符
echo 'geek\ngood' | grep '[^o]'# 当 ^ 放到中括号内为排除字符,否则表示行首。

-sed 流编辑器

sed [参数]... [执行命令] [输入文件]...
# 形如:
$ sed -i 's/sad/happy/' test # 表示将test文件中的"sad"替换为"happy"

命令  说明
s   行内替换
c   整行替换
a   插入到指定行的后面
i   插入到指定行的前面
p   打印指定行,通常与 -n 参数配合使用
d   删除指定行

-awk

chapter13 Linux软件安装

四种安装方式
在线安装; 从磁盘安装 deb 软件包;从二进制软件包安装;从源代码编译安装

apt-get
工具  说明
install 其后加上软件包名,用于安装一个软件包
update  从软件源镜像服务器上下载/更新用于更新本地软件源的软件包列表
upgrade 升级本地可更新的全部软件包,但存在依赖问题时将不会升级,通常会在更新之前执行一次 update
dist-upgrade    解决依赖关系并升级(存在一定危险性)
remove  移除已安装的软件包,包括与被移除软件包有依赖关系的软件包,但不包含软件包的配置文件
autoremove  移除之前被其他软件包依赖,但现在不再被使用的软件包
purge   与 remove 相同,但会完全移除软件包,包含其配置文件
clean   移除下载到本地的已经安装的软件包,默认保存在 /var/cache/apt/archives/
autoclean   移除已安装的软件的旧版本软件包
-y  自动回应是否安装软件包的选项,在一些自动化安装脚本中使用这个参数将十分有用
-s  模拟安装
-q  静默安装方式,指定多个 q 或者 -q=#,# 表示数字,用于设定静默级别,这在你不想要在安装软件包时屏幕输出过多时很有用
-f  修复损坏的依赖关系
-d  只下载不安装
--reinstall 重新安装已经安装但可能存在问题的软件包
--install-suggests  同时安装 APT 给出的建议安装的软件包

dpkg #本地磁盘安装deb软件包
-i  安装指定 deb 包
-R  后面加上目录名,用于安装该目录下的所有 deb 安装包
-r  remove,移除某个已安装的软件包
-I  显示 deb 包文件的信息
-s  显示已安装软件的信息
-S  搜索已安装的软件包
-L  显示已安装软件包的目录信息

chapter14进程及相关、日志等

top

内容  解释
top 表示当前程序的名称
11:05:18    表示当前的系统的时间
up 8 days,17:12 表示该机器已经启动了多长时间
1 user  表示当前系统中只有一个用户
load average: 0.29,0.20,0.25    分别对应 1、5、15 分钟内 cpu 的平均负载

除以核心数以后的值,不要混淆了

若是 load < 0.7 并不会去关注他;
若是 0.7< load < 1 的时候我们就需要稍微关注一下了,虽然还可以应付但是这个值已经离临界不远了;
若是 load = 1 的时候我们就需要警惕了,因为这个时候已经没有更多的资源的了,已经在全力以赴了;
若是 load > 5 的时候系统已经快不行了,这个时候你需要加班解决问题了

PID 进程 id
USER    该进程的所属用户
PR  该进程执行的优先级 priority 值
NI  该进程的 nice 值
VIRT    该进程任务所使用的虚拟内存的总数
RES 该进程所使用的物理内存数,也称之为驻留内存数
SHR 该进程共享内存的大小
S   该进程进程的状态: S=sleep R=running Z=zombie
%CPU    该进程 CPU 的利用率
%MEM    该进程内存的利用率
TIME+   该进程活跃的总时间
COMMAND 该进程运行的名字

ps, pstree

后记: 先把课程囫囵吞枣一遍。很多东西学完又忘了。希望7月份能把linux入门。🤣

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343