完全使用 Linux 桌面一年了,依然是个 Linux 新手

2022-05-14 08:16:43 +08:00
 0o0O0o0O0o

不熟悉系统目录结构,不了解 GRUB ,不了解文件系统,以及很多常识。

现在问我 systemd 启动顺序、iptables table 和 chain 的执行顺序、snap flatpak appimage 的区别等等,我不去 Google 也答不上来。

虽然天天用命令行,但也没有特别熟悉的命令,很依赖 bash 的自动补全。不是天天用的命令全部靠搜,要么搜自己的笔记,要么 Google 搜。

没有硬核的排错能力,不敢过多个性化,不敢升级内核,只敢跟着官方滚。

曾以为常用 Linux 是学习 Linux 的捷径,但这样下去我觉得再过几年也还是这个水平,各位有什么提升的心得和建议吗?

10731 次点击
所在节点    Linux
88 条回复
me221
2022-05-14 13:18:25 +08:00
借楼问一下:

linux 用户权限太低(比如 chmod apt 都需要 sudo) 应该怎么办. 想要的效果是: 指定的命令不需要 sudo 就可以运行.


Google 过 都是将 sudo 免密码 这样和 root 用户没啥区别了
nightwitch
2022-05-14 13:25:55 +08:00
@me221


支持特定命令的免密码
nightwitch
2022-05-14 13:26:17 +08:00
正常,我用 windows 快 15 年了,开注册表编辑器的命令都要搜一下
agagega
2022-05-14 13:32:05 +08:00
> 现在问我 systemd 启动顺序、iptables table 和 chain 的执行顺序、snap flatpak appimage 的区别等等,我不去 Google 也答不上来。

你问这个论坛用 Mac 超过一年的人 launchd 启动顺序,我猜绝大部分人也都答不出来
ynyounuo
2022-05-14 13:43:51 +08:00
@WhatIsMyUsername
你推荐的这俩人视频的布道内容已经略低于 OP 所需要的水平了,你看楼主提问记录就明白

看久了你就知道大部分 YouTube 上的 Linux 布道者,包括你推荐的这俩人,以及比如之前很火的 lunarvim 的作者 chris@machine 和大胡子 Brodie 等都是近几年从 Linux 半吊子起家的,有些时候看他们基础水平差到简直让人头皮发麻;这并不代表他们的内容不好,他们也在进步,做视频这几年以来都在自我输入自我学习;

OP 其实是想要系统得打好 OS 的基础,并且掌握 UNIX 系统设计更深层次的知识并且对 Linux core 本身更加熟悉,这些玩意儿只能看书和上课深入学习了

至于所谓命令熟练度啥的,这些东西都是熟能生巧,而且 shell completion 和 snippets 本来就是让人用的,能有效的搜索已经比一大半人强了,想在 bare shell 环境里完全自信的输入输入复杂命令那是得非常非常熟悉,看看 man 看看 tldr 自己能写出来我觉得不成问题
qakito
2022-05-14 13:48:34 +08:00
要玩转一样东西,最好的方式还是去折腾它,碰到有问题有针对性地去查资料去了解相关内容

比如 iptables ,你就需要对网络有一定了解,然后会牵涉到一大堆内容
* netdevice
* linux 上常见的网络配置管理(netplan 啥的)
* 那些表分别是用来干嘛的

对于命令啥的,熟悉常用的,碰到问题知道可以用命令 A/B/C ,用 man 可以查相关说明即可

linux 作为这么一个庞大的系统,你想一口气了解全部几乎做不到,还是要划分边界,先了解最感兴趣的 /最有需求的那一小部分,然后再慢慢往外延伸

楼主提到的那些概念,都是可以展开很多很多内容的
比如 grub/文件系统 /systemd
就是一个经典问题,一个 linux 系统如何完成引导,最终完成系统初始化
在 x86 上是 grub ,在别的平台是其他的 bootloader
然后怎么执行到内核的?内核初始化需要做些啥?最后怎么跳到 init 的? initd 需要完成啥?
systemd 和其他的 initd 有什么区别?
etc...
ynyounuo
2022-05-14 13:51:07 +08:00
@me221 local machine 不建议 NOPASSWD ,remote 可以
ncepuzs
2022-05-14 13:58:50 +08:00
先把 MIT 6.S081 和 UCB CS162 这两门课啃下来
SiLenceControL
2022-05-14 14:47:02 +08:00
如果不是高级开发工程师,学那种也没意义啊。。?
Sample
2022-05-14 15:03:36 +08:00
学习的精髓永远就一个词: **重复**.

可能那些聪明的人很不屑这个词, 但是对你我这样的普通人, 这永远是一个学习的最佳途径.
我们唯一的捷径可能就是怎么让重复的次数少一些, 让每一次的重复效率更高.

以我的经验, 可能还是**记笔记**. 把每次搜索引擎查到的记下来, git 管理, 如果表达能力不强可以就记在自己的本地.
很多人一上来就是让你看 man page, 写博客. 但这些是需要先决条件的:

- 英文好.
很多时候那些长长的 man 英文文档会劝退新人, 即使 man 文档光确实很准确. 这里推荐 `tldr`

- 表达能力强.
如果表达能力不行, 强行写博客可能会打击你的自信, 尤其你没有一定的知识体系的时候, 写出来自己都不愿意看, 何论别人. 再说了, 写了错误的东西还会误导别人, 在我看来就是互联网垃圾(比如某 sdn). 如果非要写博客, 可以把自己记下来的笔记每隔一周进行整理, 然后发出来, 这样光既做到了复习, 又可以形成体系, 言之有物.

- 有恒心, 有毅力. 这点最难.

学习无论什么办法, 学到了才是自己的. 不要管别人怎么一日千里, 土办法学到了就是自己的, 不信你看教员.
me221
2022-05-14 15:03:47 +08:00
@nightwitch 添加了这一条还是不行: username ALL=(ALL) NOPASSWD:/usr/bin/chmod
linglin0924
2022-05-14 15:13:37 +08:00
是多大点事,我 14 年开始用,到现在 iptables 都记不清,每次都得查一下手册
nightwitch
2022-05-14 15:23:42 +08:00
@me221 我刚刚试了下 chmod 是可以的,再排查下原因叭。是不是用户没有在 sudoer 组里😬
msg7086
2022-05-14 15:26:31 +08:00
你说的学 Linux ,学的是他的内核?他的设计?他的文件系统?包管理?用户态软件包? Shell ?常用 CLI 小程序?

Grub 是启动管理器,并不是必备的 Linux 组件。你完全可以用 EFISTUB 之类其他工具。
顺便,你熟悉 Windows Boot Manager 吗?

Systemd 是一个 init ,也不是必备的 Linux 组件。你完全可以用 sysvinit 甚至别的替代品。
顺便,你熟悉 Windows services 的启动顺序吗?

iptables 现在也已经变成 nft 了。snap 之类的类似于 docker ,也不是什么必须要了解的东西。

Linux 其实几乎所有的东西都是可以替换的(甚至 Linux 内核自己也可以被换掉,变成非 Linux 的发行版,例如 Debian GNU/Hurd )。

至于 bash 和其他的用户态命令行小程序,这些随便搞个 msys2 就有了,常用的 Linux 命令我基本天天在 Windows 下用,比如经常用到的 grep 和 rsync 。
Biwood
2022-05-14 15:33:27 +08:00
1. 直接看源码,不管是内核源码还是某个软件工具包源码
2. 从头开始自己编译一个发行版
3. 从头开始自己安装一边 Arch Linux ,不要用一键安装包之类的东西

不要说折腾,如果你本身是带着学习和了解的目的用 Linux ,那就不存在所谓的“浪费时间”和“折腾”,这是你自己的选择,完成任何事情都需要花费一些经历。如果你只想开箱即用,习惯了让别人把东西都送到嘴边,那么建议用 Windows/macOS 。
idragonet
2022-05-14 15:44:54 +08:00
正常!用 Win20 年+了也不敢说熟悉。
ynyounuo
2022-05-14 15:45:32 +08:00
@me221
所有用户定义的修改要放到 %sudo 行的下面,另外参见 #47
c0xt30a
2022-05-14 16:30:44 +08:00
OP 不妨花两天时间在自己的虚拟机上完整做一遍 LFS 。https://www.linuxfromscratch.org/
我在折腾它的时候感觉学到了很多。
记得在笔记本上折腾的 LFS 时候,内核还是一位 LinuxSir 上的朋友帮忙配置的。
imydou
2022-05-14 17:35:32 +08:00
正在做的一个单,回扣 66.67%,我说减需求就减,我说延期就延
fox0001
2022-05-14 17:36:24 +08:00
感觉现在 Linux 发行版都比较成熟了,用起来没那么折腾,加上 Web 和移动端发展迅猛,很多事情都可以浏览器上完成,再不行手机也可以弄(例如微信、QQ )

建议楼主先从感兴趣的入手,另外,自己部署个服务器也是很好的手段。毕竟工作上,Linux 还是主要用作服务器。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852740

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX