├── .zshrc
├── 000219
└── oeasy
│ ├── WEB-INF
│ ├── .web.xml.swp
│ ├── classes
│ │ ├── HelloWorldExample.class
│ │ ├── HelloWorldExample.java
│ │ ├── InsertServlet.class
│ │ ├── InsertServlet.java
│ │ ├── OeasyServlet.class
│ │ ├── OeasyServlet.java
│ │ ├── jdbc.class
│ │ └── jdbc.java
│ ├── lib
│ │ └── postgresql-42.2.23.jar
│ └── web.xml
│ └── oeasy.html
├── LICENSE
├── Oeasy教您玩转linux.docx
├── README.md
├── md
├── 001-45529-什么是内核_uname.sy.md
├── 002-575454-自由软件运动_free_software_unix.sy.md
├── 002-575454-自由软件运动与开源运动.sy.md
├── 003-45530-什么是发行版_distro.sy.md
├── 003-802604-开源运动_opensource_linux.sy.md
├── 004-45530-什么是发行版_distro_debian_ubuntu_canonical.sy.md
├── 004-45531-我在哪_pwd.sy.md
├── 005-45532-灵魂之问_whatis.sy.md
├── 005-802605-红帽_red_hat_centos_rhel_fedora.sy.md
├── 006-45531-我在哪_pwd.sy.md
├── 006-45533-详查手册_man.sy.md
├── 007-45532-灵魂之问_whatis.sy.md
├── 007-45534-这儿都有啥_ls.sy.md
├── 008-45533-详查手册_man.sy.md
├── 008-45535-那啥在哪_whereis.sy.md
├── 009-45534-这儿都有啥_ls.sy.md
├── 009-45536-到底哪个_which.sy.md
├── 010-45535-那啥在哪_whereis.sy.md
├── 010-45537-清屏_clear.sy.md
├── 011-45536-到底哪个_which.sy.md
├── 011-48362-命令_command_总结.sy.md
├── 012-45537-清屏_clear.sy.md
├── 012-575455-自由软件运动和开源运动.sy.md
├── 013-45538-持续输出_yes.sy.md
├── 013-48362-命令_command_总结.sy.md
├── 014-45538-持续输出_yes.sy.md
├── 014-562131-包管理_dpkg.sy.md
├── 014-575455-[趣味拓展]自由软件运动_free_software_stallman.sy.md
├── 015-45538-持续输出_yes.sy.md
├── 015-45541-高级软件包工具_apt.sy.md
├── 015-562131-包管理_dpkg.sy.md
├── 016-45541-高级软件包工具_apt.sy.md
├── 016-562048-编译_compile_安装_install.sy.md
├── 016-562131-包管理_dpkg.sy.md
├── 017-45541-高级软件包工具_apt.sy.md
├── 017-45542-标志_linuxlogo.sy.md
├── 017-562048-编译_compile_安装_install.sy.md
├── 018-45542-标志_linuxlogo.sy.md
├── 018-45568-字符画_figlet.sy.md
├── 018-562048-编译_compile_安装_install.sy.md
├── 019-45542-标志_linuxlogo.sy.md
├── 019-45568-字符画_figlet.sy.md
├── 019-45569-风格文字_toilet.sy.md
├── 020-45568-字符画_figlet.sy.md
├── 020-45569-风格文字_toilet.sy.md
├── 020-45571-蒸汽机车_sl.sy.md
├── 021-45569-风格文字_toilet.sy.md
├── 021-45571-蒸汽机车_sl.sy.md
├── 021-45574-黑客帝国_cmatrix.sy.md
├── 022-45571-蒸汽机车_sl.sy.md
├── 022-45572-满屏乱码_bb.sy.md
├── 022-45574-黑客帝国_cmatrix.sy.md
├── 023-45570-更新源_apt_update_hollywood.sy.md
├── 023-45572-满屏乱码_bb.sy.md
├── 023-45574-黑客帝国_cmatrix.sy.md
├── 024-45570-更新源_apt_update_hollywood.sy.md
├── 024-45572-满屏乱码_bb.sy.md
├── 024-45581-应用管理_aptitude.sy.md
├── 025-45570-更新源_apt_update_hollywood.sy.md
├── 025-45575-牛说_cowsay.sy.md
├── 025-45581-应用管理_aptitude.sy.md
├── 026-45575-牛说_cowsay.sy.md
├── 026-45578-管道_pipe.sy.md
├── 026-45581-应用管理_aptitude.sy.md
├── 027-45575-牛说_cowsay.sy.md
├── 027-45576-中文输入_fcitx.sy.md
├── 027-45578-管道_pipe.sy.md
├── 028-45576-中文输入_fcitx.sy.md
├── 028-45578-管道_pipe_boxes.sy.md
├── 028-48588-自制字符图_asciiview.sy.md
├── 029-45576-中文输入_fcitx.sy.md
├── 029-48588-自制字符图_asciiview.sy.md
├── 029-48590-随机笑话_fortune.sy.md
├── 030-45580-中文诗词_fortune-zh.sy.md
├── 030-48588-自制字符图_asciiview.sy.md
├── 030-48590-随机笑话_fortune.sy.md
├── 031-209842-分屏工具_tmux_会话_session.sy.md
├── 031-45580-中文诗词_fortune-zh.sy.md
├── 031-48590-随机笑话_fortune.sy.md
├── 032-209842-分屏工具_tmux_会话_session.sy.md
├── 032-45580-中文诗词_fortune-zh.sy.md
├── 032-562349-分屏工具_tmux_窗口_window.sy.md
├── 033-209842-分屏工具_tmux_会话_session.sy.md
├── 033-562349-分屏工具_tmux_窗口_window.sy.md
├── 033-562394-分屏工具_tmux_窗格_pane.sy.md
├── 034-45583-桌面宠物_pet.sy.md
├── 034-562349-分屏工具_tmux_窗口_window.sy.md
├── 034-562394-分屏工具_tmux_窗格_pane.sy.md
├── 035-45586-火狐_firefox.sy.md
├── 035-562394-分屏工具_tmux_窗格_pane.sy.md
├── 035-733260-终端浏览器_w3m.sy.md
├── 036-45583-桌面宠物_pet.sy.md
├── 036-45587-文件管理器_nautilus.sy.md
├── 036-733260-终端浏览器_w3m.sy.md
├── 037-45579-桌面环境_xfce.sy.md
├── 037-45583-桌面宠物_pet.sy.md
├── 037-45586-火狐_firefox.sy.md
├── 038-45566-总结.sy.md
├── 038-45586-火狐_firefox.sy.md
├── 038-45587-文件管理器_nautilus.sy.md
├── 039-45579-桌面环境_xfce.sy.md
├── 039-45587-文件管理器_nautilus.sy.md
├── 039-565216-新建文件夹_mkdir.sy.md
├── 040-45566-总结.sy.md
├── 040-45579-桌面环境_xfce.sy.md
├── 040-565221-绝对路径和相对路径_cd.sy.md
├── 041-45566-总结.sy.md
├── 041-565216-新建文件夹_mkdir.sy.md
├── 041-566031-路径_dirs_堆栈.sy.md
├── 042-565216-新建文件夹_mkdir.sy.md
├── 042-565221-绝对路径和相对路径_cd.sy.md
├── 042-565244-复制_copy.sy.md
├── 043-565221-绝对路径和相对路径_cd.sy.md
├── 043-565252-软连接_link.sy.md
├── 043-802603-查找文件_find_输出文件的绝对路径_realpath.sy.md
├── 044-565280-查看文件信息_stat.sy.md
├── 044-566031-路径_dirs_堆栈.sy.md
├── 044-802603-查找文件_find_输出文件的绝对路径_realpath.sy.md
├── 045-565244-复制_copy.sy.md
├── 045-565281-别名_alias.sy.md
├── 045-566031-路径_dirs_堆栈.sy.md
├── 046-565244-复制_copy.sy.md
├── 046-565252-软链接_link_硬链接_读取链接_readlink.sy.md
├── 046-566138-删除文件夹_rmdir.sy.md
├── 047-565252-软链接_link_硬链接_读取链接_readlink.sy.md
├── 047-566139-移动_mv.sy.md
├── 047-732316-拷贝粘贴文件内容_pbcopy_pbpaste.sy.md
├── 048-565280-查看文件信息_stat.sy.md
├── 048-566166-时间日期_date.sy.md
├── 048-732316-拷贝粘贴文件内容_pbcopy_pbpaste.sy.md
├── 049-565280-查看文件信息_stat.sy.md
├── 049-565281-别名_alias.sy.md
├── 049-566237-日历_cal.sy.md
├── 050-565281-别名_alias.sy.md
├── 050-566138-删除文件夹_rmdir.sy.md
├── 050-566238-阴历_lunar.sy.md
├── 051-566138-删除文件夹_rmdir.sy.md
├── 051-566139-移动_mv.sy.md
├── 051-566239-树形结构_tree.sy.md
├── 052-566139-移动_mv.sy.md
├── 052-566166-时间日期_date.sy.md
├── 052-566697-文件夹总结.sy.md
├── 053-566166-时间日期_date.sy.md
├── 053-566237-日历_cal.sy.md
├── 053-567189-我是谁_who.sy.md
├── 054-566237-日历_cal.sy.md
├── 054-566238-阴历_lunar.sy.md
├── 054-567656-列出用户信息_id.sy.md
├── 055-566238-阴历_lunar.sy.md
├── 055-566239-树形结构_tree.sy.md
├── 055-569355-添加用户_adduser.sy.md
├── 056-566239-树形结构_tree.sy.md
├── 056-566697-文件夹总结.sy.md
├── 056-569368-修改密码_passwd.sy.md
├── 057-250350-脚本解释器_zsh.sy.md
├── 057-566697-文件夹总结.sy.md
├── 057-567189-我是谁_who.sy.md
├── 058-567189-我是谁_who.sy.md
├── 058-567656-列出用户信息_id.sy.md
├── 058-569386-个性化颜色方案_Oh-My-Zsh.sy.md
├── 059-210191-远程登录_ssh.sy.md
├── 059-567656-列出用户信息_id.sy.md
├── 059-569355-添加用户_adduser.sy.md
├── 060-210190-远程拷贝_scp.sy.md
├── 060-569355-添加用户_adduser.sy.md
├── 060-569368-修改密码_passwd.sy.md
├── 061-250350-脚本解释器_zsh.sy.md
├── 061-569368-修改密码_passwd.sy.md
├── 061-569446-提权_sudo.sy.md
├── 062-250350-脚本解释器_zsh.sy.md
├── 062-569386-个性化颜色方案_Oh-My-Zsh.sy.md
├── 062-578030-用户组_group.sy.md
├── 063-210191-远程登录_ssh.sy.md
├── 063-569386-个性化颜色方案_Oh-My-Zsh.sy.md
├── 063-578057-给用户组发信息_wall.sy.md
├── 064-210190-远程拷贝_scp.sy.md
├── 064-210191-远程登录_ssh.sy.md
├── 064-578060-用户和用户组总结.sy.md
├── 065-210190-远程拷贝_scp.sy.md
├── 065-569446-提权_sudo.sy.md
├── 065-578028-修改文件权限模式_chmod.sy.md
├── 066-569446-提权_sudo.sy.md
├── 066-578030-用户组_group.sy.md
├── 066-578722-修改所属组_chgrp_修改执行权限_chmod_execute.sy.md
├── 067-578030-用户组_group.sy.md
├── 067-578057-给用户组发信息_wall.sy.md
├── 067-580756-修改所有者_chown_递归修改_查看细节.sy.md
├── 068-578057-给用户组发信息_wall.sy.md
├── 068-578058-临时拥有文件所有者用户身份_suid.sy.md
├── 068-578060-用户和用户组总结.sy.md
├── 069-578028-修改文件权限模式_chmod.sy.md
├── 069-578059-临时拥有文件所有组身份_sgid.sy.md
├── 069-578060-用户和用户组总结.sy.md
├── 070-578028-修改文件权限模式_chmod.sy.md
├── 070-578722-修改所属组_chgrp_修改执行权限_chmod_execute.sy.md
├── 070-582912-设置粘滞位_sticky.sy.md
├── 071-578722-修改所属组_chgrp_修改执行权限_chmod_execute.sy.md
├── 071-580756-修改所有者_chown_递归修改_查看细节.sy.md
├── 071-582918-批量添加用户和文件夹.sy.md
├── 072-199464-数据库_postgresql.sy.md
├── 072-578058-临时拥有文件所有者用户身份_suid.sy.md
├── 072-580756-修改所有者_chown_递归修改_查看细节.sy.md
├── 073-192426-nginx.sy.md
├── 073-578058-临时拥有文件所有者用户身份_suid.sy.md
├── 073-578059-临时拥有文件所有组身份_sgid.sy.md
├── 074-260422-apache.sy.md
├── 074-578059-临时拥有文件所有组身份_sgid.sy.md
├── 074-582912-设置粘滞位_sticky.sy.md
├── 075-199465-tomcat源起.sy.md
├── 075-582912-设置粘滞位_sticky.sy.md
├── 075-582918-批量添加用户和文件夹.sy.md
├── 076-199464-数据库_postgresql.sy.md
├── 076-260421-tomcat结构.sy.md
├── 076-582918-批量添加用户和文件夹.sy.md
├── 077-192426-nginx.sy.md
├── 077-199464-数据库_postgresql.sy.md
├── 077-526680-徒手建立应用.sy.md
├── 078-192426-nginx.sy.md
├── 078-260422-apache.sy.md
├── 078-260423-搭建开发环境.sy.md
├── 079-199465-tomcat源起.sy.md
├── 079-260422-apache.sy.md
├── 079-265117-调试模式_debug_mode_log日志.sy.md
├── 080-199465-tomcat源起.sy.md
├── 080-260421-tomcat结构.sy.md
├── 080-261125-前端和后端.sy.md
├── 081-260421-tomcat结构.sy.md
├── 081-485593-双层架构(2-tier).sy.md
├── 081-526680-徒手建立应用.sy.md
├── 082-260423-搭建开发环境.sy.md
├── 082-485612-请求和响应.sy.md
├── 082-526680-徒手建立应用.sy.md
├── 083-260423-搭建开发环境.sy.md
├── 083-265117-调试模式_debug_mode_log日志.sy.md
├── 083-495450-请求参数.sy.md
├── 084-261125-前端和后端.sy.md
├── 084-265117-调试模式_debug_mode_log日志.sy.md
├── 084-498649-处理异常.sy.md
├── 085-200308-连接postgresql数据库引擎.sy.md
├── 085-261125-前端和后端.sy.md
├── 085-485593-双层架构(2-tier).sy.md
├── 086-485593-双层架构(2-tier).sy.md
├── 086-485612-请求和响应.sy.md
├── 086-527010-通过驱动访问postgres数据库引擎.sy.md
├── 087-485612-请求和响应.sy.md
├── 087-495450-请求参数.sy.md
├── 087-527011-JDBC理解.sy.md
├── 088-263205-通过动态页面访问postgres数据库引擎.sy.md
├── 088-495450-请求参数.sy.md
├── 088-498649-处理异常.sy.md
├── 089-200308-连接postgresql数据库引擎.sy.md
├── 089-263206-自动加载更新的class_tomcat无需重启.sy.md
├── 089-498649-处理异常.sy.md
├── 090-200308-连接postgresql数据库引擎.sy.md
├── 090-263207-修改表结构.sy.md
├── 090-527010-通过驱动访问postgres数据库引擎.sy.md
├── 091-265977-管理约束条件CONSTRAINT.sy.md
├── 091-527010-通过驱动访问postgres数据库引擎.sy.md
├── 091-527011-JDBC理解.sy.md
├── 092-263205-通过动态页面访问postgres数据库引擎.sy.md
├── 092-527011-JDBC理解.sy.md
├── 092-527013-使用jdbc向数据库插入数据.sy.md
├── 093-263205-通过动态页面访问postgres数据库引擎.sy.md
├── 093-263206-自动加载更新的class_tomcat无需重启.sy.md
├── 093-527012-使用servlet向数据库插入数据.sy.md
├── 094-263206-自动加载更新的class_tomcat无需重启.sy.md
├── 094-263207-修改表结构.sy.md
├── 094-527130-响应重定向.sy.md
├── 095-263207-修改表结构.sy.md
├── 095-264932-使用网页提交数据_文本框post提交表单.sy.md
├── 095-265977-管理约束条件CONSTRAINT.sy.md
├── 096-265977-管理约束条件CONSTRAINT.sy.md
├── 096-266982-使用网页插入数据库.sy.md
├── 096-527013-使用jdbc向数据库插入数据.sy.md
├── 097-263308-先查再插入.sy.md
├── 097-527012-使用servlet向数据库插入数据.sy.md
├── 097-527013-使用jdbc向数据库插入数据.sy.md
├── 098-271131-文本框前端验证.sy.md
├── 098-527012-使用servlet向数据库插入数据.sy.md
├── 098-527130-响应重定向.sy.md
├── 099-263208-密码二次输入验证复杂性.sy.md
├── 099-264932-使用网页提交数据_文本框post提交表单.sy.md
├── 099-527130-响应重定向.sy.md
├── 100-264932-使用网页提交数据_文本框post提交表单.sy.md
├── 100-266982-使用网页插入数据库.sy.md
├── 100-483456-封装数据库连接.sy.md
├── 101-263308-先查再插入.sy.md
├── 101-266982-使用网页插入数据库.sy.md
├── 101-483477-PrepareStatement准备语句.sy.md
├── 102-263308-先查再插入.sy.md
├── 102-271131-文本框前端验证.sy.md
├── 102-484450-JNDI.sy.md
├── 103-263208-密码二次输入验证复杂性.sy.md
├── 103-271131-文本框前端验证.sy.md
├── 103-485586-JDBC数据库连接池.sy.md
├── 104-263208-密码二次输入验证复杂性.sy.md
├── 104-483456-封装数据库连接.sy.md
├── 104-497989-准备删除.sy.md
├── 105-483456-封装数据库连接.sy.md
├── 105-483477-PrepareStatement准备语句.sy.md
├── 106-483477-PrepareStatement准备语句.sy.md
├── 106-484450-JNDI.sy.md
├── 107-484450-JNDI.sy.md
├── 107-485586-JDBC数据库连接池.sy.md
├── 108-485586-JDBC数据库连接池.sy.md
├── 108-497989-准备删除.sy.md
├── 109-497989-准备删除.sy.md
└── README.md
├── md2html.sh
├── oeasy
├── META-INF
│ └── context.xml
├── WEB-INF
│ ├── .web.xml.swp
│ ├── classes
│ │ ├── .ErrorServlet.java.swp
│ │ ├── .PostgresJdbc.java.swo
│ │ ├── .PostgresJdbc.java.swp
│ │ ├── AddServlet.class
│ │ ├── AddServlet.java
│ │ ├── ConnectionPool.class
│ │ ├── DBConUtil.class
│ │ ├── DBConUtil.java
│ │ ├── ErrorServlet.class
│ │ ├── ErrorServlet.java
│ │ ├── HelloWorld.class
│ │ ├── HelloWorldExample.class
│ │ ├── HelloWorldExample.java
│ │ ├── InsertServlet.class
│ │ ├── InsertServlet.java
│ │ ├── JNDIServlet.class
│ │ ├── JNDIServlet.java
│ │ ├── OeasyServlet.class
│ │ ├── OeasyServlet.java
│ │ ├── PostgresJdbc.class
│ │ ├── PostgresJdbc.java
│ │ ├── RequestHeader.class
│ │ ├── RequestHeader.java
│ │ ├── SelectServlet.class
│ │ ├── SelectServlet.java
│ │ ├── TestServlet.class
│ │ ├── TestServlet.java
│ │ └── UserManager.class
│ └── web.xml
├── oeasy
├── oeasy.html
├── prepareAdd.html
└── prepareInsert.html
├── test.txt
└── test2.csv
/000219/oeasy/WEB-INF/.web.xml.swp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/000219/oeasy/WEB-INF/.web.xml.swp
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/HelloWorldExample.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/000219/oeasy/WEB-INF/classes/HelloWorldExample.class
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/HelloWorldExample.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import javax.servlet.ServletException;
4 | import javax.servlet.http.HttpServlet;
5 | import javax.servlet.http.HttpServletRequest;
6 | import javax.servlet.http.HttpServletResponse;
7 | public class HelloWorldExample extends HttpServlet {
8 | @Override
9 | public void doGet(HttpServletRequest request,
10 | HttpServletResponse response)
11 | throws IOException, ServletException{
12 | response.setContentType("text/html");
13 | response.setCharacterEncoding("UTF-8");
14 | PrintWriter out = response.getWriter();
15 | out.print("你好,Tomcat!");
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/InsertServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/000219/oeasy/WEB-INF/classes/InsertServlet.class
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/InsertServlet.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import javax.servlet.ServletException;
4 | import javax.servlet.http.HttpServlet;
5 | import javax.servlet.http.HttpServletRequest;
6 | import javax.servlet.http.HttpServletResponse;
7 | import java.sql.Connection;
8 | import java.sql.DriverManager;
9 | import java.sql.Statement;
10 | import java.sql.ResultSet;
11 | public class InsertServlet extends HttpServlet {
12 | @Override
13 | public void doPost(HttpServletRequest request,
14 | HttpServletResponse response)
15 | throws IOException, ServletException{
16 | String topic = request.getParameter("topic");
17 | String url = request.getParameter("url");
18 | Connection c = null;
19 | response.setContentType("text/html");
20 | response.setCharacterEncoding("UTF-8");
21 | PrintWriter out = response.getWriter();
22 | try {
23 | Class.forName("org.postgresql.Driver");
24 | c = DriverManager
25 | .getConnection("jdbc:postgresql://localhost:5432/oeasy",
26 | "postgres", "oeasy@linux");
27 | Statement stmt = c.createStatement();
28 | String sql = "insert into urls(topic,url) values('"+topic+"','"+url+"')";
29 | stmt.executeUpdate(sql);
30 | System.out.println("======"+sql);
31 | stmt.close();
32 | c.close();
33 | } catch (Exception e) {
34 | e.printStackTrace();
35 | System.err.println(e.getClass().getName()+": "+e.getMessage());
36 | System.exit(0);
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/OeasyServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/000219/oeasy/WEB-INF/classes/OeasyServlet.class
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/OeasyServlet.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import javax.servlet.ServletException;
4 | import javax.servlet.http.HttpServlet;
5 | import javax.servlet.http.HttpServletRequest;
6 | import javax.servlet.http.HttpServletResponse;
7 | import java.sql.Connection;
8 | import java.sql.DriverManager;
9 | import java.sql.Statement;
10 | import java.sql.ResultSet;
11 | public class OeasyServlet extends HttpServlet {
12 | @Override
13 | public void doGet(HttpServletRequest request,
14 | HttpServletResponse response)
15 | throws IOException, ServletException{
16 | Connection c = null;
17 | response.setContentType("text/html");
18 | response.setCharacterEncoding("UTF-8");
19 | PrintWriter out = response.getWriter();
20 | try {
21 | Class.forName("org.postgresql.Driver");
22 | c = DriverManager
23 | .getConnection("jdbc:postgresql://localhost:5432/oeasy",
24 | "postgres", "oeasy@linux");
25 | c.setAutoCommit(false);
26 | Statement stmt = c.createStatement();
27 | ResultSet rs = stmt.executeQuery("select * from urls");
28 | while(rs.next()){
29 | String topic = rs.getString("topic");
30 | String url = rs.getString("url");
31 | out.print(topic + ":" + url);
32 | }
33 | rs.close();
34 | stmt.close();
35 | c.close();
36 | } catch (Exception e) {
37 | e.printStackTrace();
38 | System.err.println(e.getClass().getName()+": "+e.getMessage());
39 | System.exit(0);
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/jdbc.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/000219/oeasy/WEB-INF/classes/jdbc.class
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/classes/jdbc.java:
--------------------------------------------------------------------------------
1 | import java.sql.Connection;
2 | import java.sql.DriverManager;
3 | import java.sql.Statement;
4 | import java.sql.ResultSet;
5 | public class jdbc{
6 | public static void main(String args[]) {
7 | Connection c = null;
8 | try {
9 | Class.forName("org.postgresql.Driver");
10 | c = DriverManager
11 | .getConnection("jdbc:postgresql://localhost:5432/oeasy",
12 | "postgres", "oeasy@linux");
13 | c.setAutoCommit(false);
14 | Statement stmt = c.createStatement();
15 | ResultSet rs = stmt.executeQuery("select * from urls");
16 | while(rs.next()){
17 | String topic = rs.getString("topic");
18 | String url = rs.getString("url");
19 | System.out.println(topic + ":" + url + "\n");
20 | }
21 | rs.close();
22 | stmt.close();
23 | c.close();
24 | } catch (Exception e) {
25 | e.printStackTrace();
26 | System.err.println(e.getClass().getName()+": "+e.getMessage());
27 | System.exit(0);
28 | }
29 | }
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/lib/postgresql-42.2.23.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/000219/oeasy/WEB-INF/lib/postgresql-42.2.23.jar
--------------------------------------------------------------------------------
/000219/oeasy/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
23 |
24 | Hello, World Application
25 |
26 | This is a simple web application with a source code organization
27 | based on the recommendations of the Application Developer's Guide.
28 |
29 |
30 |
31 | HelloWorldExample
32 | HelloWorldExample
33 |
34 |
35 | HelloWorldExample
36 | /hello
37 |
38 |
39 |
40 | InsertServlet
41 | InsertServlet
42 |
43 |
44 | InsertServlet
45 | /insert
46 |
47 |
48 |
49 | OeasyServlet
50 | OeasyServlet
51 |
52 |
53 |
54 | OeasyServlet
55 | /oeasy
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/000219/oeasy/oeasy.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/Oeasy教您玩转linux.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/Oeasy教您玩转linux.docx
--------------------------------------------------------------------------------
/md/010-45537-清屏_clear.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 清屏
8 |
9 | ## 回忆上次内容 😌
10 |
11 | - 有了这三个命令
12 | - whatis
13 | - whereis
14 | - which
15 | - 也就是灵魂三问
16 | - 我们就可以了解任何命令的基本信息了!
17 | - 我们再去问问什么命令呢?🤔
18 |
19 | ## 清屏
20 |
21 | - 我们这次的命令
22 | - `clear`
23 | - 很简单
24 |
25 | - `clear` 作用是清屏
26 | - 下面我们对他提出灵魂三问:
27 |
28 | ```shell
29 | whatis clear
30 | whereis clear
31 | which clear
32 | ```
33 |
34 | - 这样我们就可以对 clear 有个基本了解
35 | - 如果想更深入了解
36 | - 可以查询手册。
37 | - man📕
38 | - 另外我们也可以使用ctrl+l快捷键来清屏
39 |
40 | ### 特殊情况
41 |
42 | - 有些文件问不出具体位置,比如:
43 | - cd
44 | - pwd
45 |
46 | - 他们是 `shell built-in command`
47 | - 那么这些命令在哪?🤔
48 |
49 | ### 内建命令
50 |
51 | - 这些内建命令
52 | - 是在这个 shell 里面的
53 | - shell 启动的时候
54 | - 就在内存中了
55 | - 所以叫 shell built-in command
56 | - 没有具体的硬盘对应的命令文件
57 | - 和ls、python不同
58 | - ls 一开始没在内存中
59 | - 调用的时候才从硬盘加载到内存中运行的
60 |
61 | - 那么shell `啥时候`启动的呢?
62 |
63 | ### 加载过程
64 | - 终端 terminal 启动时候
65 | - 把硬盘上的 shell 代码
66 | - 如 zsh、bash
67 | - 加载到内存里
68 | - 如果要找相应的源代码
69 | - 就需要去 shell 的源代码里面找
70 |
71 | ### 尝试找源码
72 |
73 | - 更新源
74 |
75 | 
76 |
77 | - 尝试下载
78 |
79 | 
80 |
81 | - 尝试下载但失败
82 | - 给了个提示
83 |
84 | ### github
85 |
86 | - 到github上面可以找到相应的源码
87 |
88 | 
89 |
90 | - 可以找到一个位置
91 |
92 | 
93 |
94 | - 真的可以找到pwd的源码
95 | - cd也可以找到吗?
96 |
97 | ### cd源码
98 | - 同一个文件中
99 |
100 | 
101 |
102 | - cd也可以找到
103 | - 我们去总结一下
104 |
105 | ### 总结
106 |
107 | - 这次我们的命令
108 | - clear 非常简单
109 | - 就是清屏
110 | - 还可以用ctrl+l快捷键来清屏
111 | - 练习灵魂三问
112 | - whatis clear
113 | - whereis clear
114 | - which clear
115 | - 有些内建(builtin)命令(command)找不到硬盘位置
116 | - 比如pwd、cd
117 | - 可以在zsh的源码中找到相应的位置
118 | - 基本的命令了解了不少
119 | - 是时候总结一下了
120 | - 下次总结!👋
121 |
--------------------------------------------------------------------------------
/md/011-48362-命令_command_总结.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 我们都讲了什么?🤔
12 | - Linux 的历史 ⌨️
13 | - 各种发行版的生生灭灭
14 | - 系统运作的过程 🖥
15 | - 程序运行的过程
16 | - 各种命令 ⌨️
17 | - 都有什么命令呢
18 |
19 | ### 命令 Command🧐
20 |
21 | - 命令分两种
22 | - 一种是在硬盘上的
23 | - 可以用apt 找到源码和帮助
24 | - 比如
25 | - uname
26 | - ls
27 | - cat
28 | - pwd
29 | - 灵魂三问
30 | - whatis
31 | - whereis
32 | - which
33 | - man
34 | - clear
35 |
36 | - 另一种是在系统内置(builtin)的
37 | - 可以在shell的源代码中找到实现过程
38 | - 比如
39 | - cd
40 | - pwd
41 | ‘
42 | - 还有一个比较特殊
43 | - 特别有权限的`sudo`
44 |
45 | - 命令行还有什么技巧? 💡
46 |
47 | ### 命令行快捷方式 💡
48 |
49 | - 记忆命令
50 | - ⬆️ 上一条命令
51 | - ⬇️️ 下一条命令
52 | - ctrl+r 搜索历史命令
53 | - 快速移动
54 | - ⬅️ 向左一格
55 | - ➡️️ 向右一格
56 | - ctrl+⬅️ 向左一个单词
57 | - ctrl+➡ 向右一个单词
58 | - ctrl+a 直接到头ahead
59 | - ctrl+e 直接到尾end
60 | - 快捷键清屏
61 | - ctrl+l清屏
62 | - 快速删除
63 | - ctrl+c 忽略当前行
64 | - ctrl+u 从光标位置开始,删除左方所有的字符,直到该行开始的位置
65 | - ctrl+k 从光标位置开始,删除右方所有的字符,直到该行结束的位置
66 | - 登出系统
67 | - ctrl+d 快快退出终端
68 | - ctrl+w 向前删除到词头
69 | - 急急如律令
70 | - 可以打印到一个鼠标垫上
71 |
72 | ### 总结
73 |
74 | - 这就是我们最开始接触到的
75 | - Linux
76 |
77 | 
78 |
79 | - 严格的说
80 | - 应该是基于linux内核的
81 | - gnu的shell环境和各种命令
82 | - 很有趣
83 | - 准备进入更好玩的游乐场吧!!
84 | - 🎡
85 |
86 | 
87 |
--------------------------------------------------------------------------------
/md/012-45537-清屏_clear.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 清屏
8 |
9 | ## 回忆上次内容 😌
10 |
11 | - 有了这三个命令
12 | - whatis
13 | - whereis
14 | - which
15 | - 也就是灵魂三问
16 | - 我们就可以了解任何命令的基本信息了!
17 | - 我们再去问问什么命令呢?🤔
18 |
19 | ## 清屏
20 |
21 | - 我们这次的命令
22 | - `clear`
23 | - 很简单
24 |
25 | - `clear` 作用是清屏
26 | - 下面我们对他提出灵魂三问:
27 |
28 | ```shell
29 | whatis clear
30 | whereis clear
31 | which clear
32 | ```
33 |
34 | - 这样我们就可以对 clear 有个基本了解
35 | - 如果想更深入了解
36 | - 可以查询手册。
37 | - man📕
38 | - 另外我们也可以使用ctrl+l快捷键来清屏
39 |
40 | ### 特殊情况
41 |
42 | - 有些文件问不出具体位置,比如:
43 | - cd
44 | - pwd
45 |
46 | - 他们是 `shell built-in command`
47 | - 那么这些命令在哪?🤔
48 |
49 | ### 内建命令
50 |
51 | - 这些内建命令
52 | - 是在这个 shell 里面的
53 | - shell 启动的时候
54 | - 就在内存中了
55 | - 所以叫 shell built-in command
56 | - 没有具体的硬盘对应的命令文件
57 | - 和ls、python不同
58 | - ls 一开始没在内存中
59 | - 调用的时候才从硬盘加载到内存中运行的
60 |
61 | - 那么shell `啥时候`启动的呢?
62 |
63 | ### 加载过程
64 | - 终端 terminal 启动时候
65 | - 把硬盘上的 shell 代码
66 | - 如 zsh、bash
67 | - 加载到内存里
68 | - 如果要找相应的源代码
69 | - 就需要去 shell 的源代码里面找
70 |
71 | ### 尝试找源码
72 |
73 | - 更新源
74 |
75 | 
76 |
77 | - 尝试下载
78 |
79 | 
80 |
81 | - 尝试下载但失败
82 | - 给了个提示
83 |
84 | ### github
85 |
86 | - 到github上面可以找到相应的源码
87 |
88 | 
89 |
90 | - 可以找到一个位置
91 |
92 | 
93 |
94 | - 真的可以找到pwd的源码
95 | - cd也可以找到吗?
96 |
97 | ### cd源码
98 | - 同一个文件中
99 |
100 | 
101 |
102 | - cd也可以找到
103 | - 我们去总结一下
104 |
105 | ### 总结
106 |
107 | - 这次我们的命令
108 | - clear 非常简单
109 | - 就是清屏
110 | - 还可以用ctrl+l快捷键来清屏
111 | - 练习灵魂三问
112 | - whatis clear
113 | - whereis clear
114 | - which clear
115 | - 有些内建(builtin)命令(command)找不到硬盘位置
116 | - 比如pwd、cd
117 | - 可以在zsh的源码中找到相应的位置
118 | - 基本的命令了解了不少
119 | - 是时候总结一下了
120 | - 下次总结!👋
121 |
--------------------------------------------------------------------------------
/md/013-45538-持续输出_yes.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 上一部分我们都讲了什么?
12 | - 历史
13 | - 命令
14 | - 终端快捷键
15 |
16 | - 接下来
17 | - 我们怎么玩呢
18 | - 快跟我一起去看看那个
19 | - yes~
20 |
21 | ## yes 🤔
22 |
23 | - 没错
24 | - 这次我们来看看这个 yes
25 | - yes 是什么呢?
26 | - 让我们来试试吧!👊
27 |
28 | ```shell
29 | yes
30 | ```
31 |
32 | - 我们发现只能看见屏幕上闪动的 y
33 | - 没错
34 | - 这个命令就是要持续输出 y!
35 | - 还有这么变态的命令吗?
36 | - 😱 是的!🤪
37 |
38 | - 那怎么让他停下来?😫
39 | - 我们可以这样做:
40 | - ctrl+c
41 | - 就可以让他取消 (cancel)
42 | - 赶紧去拷问他的灵魂!!!
43 |
44 |
45 | ### 灵魂三问 😇
46 |
47 | ```shell
48 | whatis yes
49 | whereis yes
50 | which yes
51 | ```
52 |
53 |
54 | - 下面我们来解析一下:
55 |
56 | - yes 就是持续输出
57 | - 想查看源文件?
58 | - dpkg -S /usr/bin/yes
59 | - 这个也属于 coreutils
60 | - 可以找到源代码看看
61 | - 方法可见 whereis 那个实验
62 |
63 | 
64 |
65 | - 更新源之后
66 | - 下载源
67 |
68 | 
69 |
70 | - 需要找到源文件
71 |
72 | ### 找到位置
73 |
74 | 
75 |
76 | - 打开yes.c
77 |
78 | 
79 |
80 | - 134行代码
81 | - yes具体还能干什么呢?
82 |
83 | ### 手册
84 |
85 | - 想了解 yes 命令更多?😉
86 | - 首选肯定是查手册啊!📕
87 |
88 | ```shell
89 | man yes
90 | ```
91 |
92 | 
93 |
94 | ### yes 可以带两个选项 🎛
95 |
96 | - --help
97 | - --version
98 |
99 | - 比如:
100 |
101 | ```shell
102 | yes --help
103 | ```
104 |
105 |
106 | - 我们可以得出结论:
107 |
108 | - `手册 man` 📕 最详尽 👍
109 | - `yes --help` 稍显简略
110 | - `whatis yes` 一句话最简略
111 |
112 | ### 可以带一个字符串参数
113 |
114 | ```shell
115 | yes oeasy
116 | yes "oeasy o2z"
117 | ```
118 | 
119 |
120 | - `oeasy o2z` 是作为一个字符串一起被输出的
121 |
122 | ### 总结
123 | - 这yes有什么意义么?
124 | - 写个c语言程序不是很容易么?
125 | - 别着急
126 | - 我们先往下看?😉
127 |
128 | 
129 | - 下次再说!👋
130 |
--------------------------------------------------------------------------------
/md/013-48362-命令_command_总结.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 我们都讲了什么?🤔
12 | - Linux 的历史 ⌨️
13 | - 各种发行版的生生灭灭
14 | - 系统运作的过程 🖥
15 | - 程序运行的过程
16 | - 各种命令 ⌨️
17 | - 都有什么命令呢
18 |
19 | ### 命令 Command🧐
20 |
21 | - 命令分两种
22 | - 一种是在硬盘上的
23 | - 可以用apt 找到源码和帮助
24 | - 比如
25 | - uname
26 | - ls
27 | - cat
28 | - pwd
29 | - 灵魂三问
30 | - whatis
31 | - whereis
32 | - which
33 | - man
34 | - clear
35 |
36 | - 另一种是在系统内置(builtin)的
37 | - 可以在shell的源代码中找到实现过程
38 | - 比如
39 | - cd
40 | - pwd
41 | ‘
42 | - 还有一个比较特殊
43 | - 特别有权限的`sudo`
44 |
45 | - 命令行还有什么技巧? 💡
46 |
47 | ### 命令行快捷方式 💡
48 |
49 | - 记忆命令
50 | - ⬆️ 上一条命令
51 | - ⬇️️ 下一条命令
52 | - ctrl+r 搜索历史命令
53 | - 快速移动
54 | - ⬅️ 向左一格
55 | - ➡️️ 向右一格
56 | - ctrl+⬅️ 向左一个单词
57 | - ctrl+➡ 向右一个单词
58 | - ctrl+a 直接到头ahead
59 | - ctrl+e 直接到尾end
60 | - 快捷键清屏
61 | - ctrl+l清屏
62 | - 快速删除
63 | - ctrl+c 忽略当前行
64 | - ctrl+u 从光标位置开始,删除左方所有的字符,直到该行开始的位置
65 | - ctrl+k 从光标位置开始,删除右方所有的字符,直到该行结束的位置
66 | - 登出系统
67 | - ctrl+d 快快退出终端
68 | - ctrl+w 向前删除到词头
69 | - 急急如律令
70 | - 可以打印到一个鼠标垫上
71 |
72 | ### 总结
73 |
74 | - 这就是我们最开始接触到的
75 | - Linux
76 |
77 | 
78 |
79 | - 严格的说
80 | - 应该是基于linux内核的
81 | - gnu的shell环境和各种命令
82 | - 很有趣
83 | - 准备进入更好玩的游乐场吧!!
84 | - 🎡
85 |
86 | 
87 |
--------------------------------------------------------------------------------
/md/014-45538-持续输出_yes.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 上一部分我们都讲了什么?
12 | - 历史
13 | - 命令
14 | - 终端快捷键
15 |
16 | - 接下来
17 | - 我们怎么玩呢
18 | - 快跟我一起去看看那个
19 | - yes~
20 |
21 | ## yes 🤔
22 |
23 | - 没错
24 | - 这次我们来看看这个 yes
25 | - yes 是什么呢?
26 | - 让我们来试试吧!👊
27 |
28 | ```shell
29 | yes
30 | ```
31 |
32 | - 我们发现只能看见屏幕上闪动的 y
33 | - 没错
34 | - 这个命令就是要持续输出 y!
35 | - 还有这么变态的命令吗?
36 | - 😱 是的!🤪
37 |
38 | - 那怎么让他停下来?😫
39 | - 我们可以这样做:
40 | - ctrl+c
41 | - 就可以让他取消 (cancel)
42 | - 赶紧去拷问他的灵魂!!!
43 |
44 |
45 | ### 灵魂三问 😇
46 |
47 | ```shell
48 | whatis yes
49 | whereis yes
50 | which yes
51 | ```
52 |
53 |
54 | - 下面我们来解析一下:
55 |
56 | - yes 就是持续输出
57 | - 想查看源文件?
58 | - dpkg -S /usr/bin/yes
59 | - 这个也属于 coreutils
60 | - 可以找到源代码看看
61 | - 方法可见 whereis 那个实验
62 |
63 | 
64 |
65 | - 更新源之后
66 | - 下载源
67 |
68 | 
69 |
70 | - 需要找到源文件
71 |
72 | ### 找到位置
73 |
74 | 
75 |
76 | - 打开yes.c
77 |
78 | 
79 |
80 | - 134行代码
81 | - yes具体还能干什么呢?
82 |
83 | ### 手册
84 |
85 | - 想了解 yes 命令更多?😉
86 | - 首选肯定是查手册啊!📕
87 |
88 | ```shell
89 | man yes
90 | ```
91 |
92 | 
93 |
94 | ### yes 可以带两个选项 🎛
95 |
96 | - --help
97 | - --version
98 |
99 | - 比如:
100 |
101 | ```shell
102 | yes --help
103 | ```
104 |
105 |
106 | - 我们可以得出结论:
107 |
108 | - `手册 man` 📕 最详尽 👍
109 | - `yes --help` 稍显简略
110 | - `whatis yes` 一句话最简略
111 |
112 | ### 可以带一个字符串参数
113 |
114 | ```shell
115 | yes oeasy
116 | yes "oeasy o2z"
117 | ```
118 | 
119 |
120 | - `oeasy o2z` 是作为一个字符串一起被输出的
121 |
122 | ### 总结
123 | - 这yes有什么意义么?
124 | - 写个c语言程序不是很容易么?
125 | - 别着急
126 | - 我们先往下看?😉
127 |
128 | 
129 | - 下次再说!👋
130 |
--------------------------------------------------------------------------------
/md/015-45538-持续输出_yes.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 上一部分我们都讲了什么?
12 | - 历史
13 | - 命令
14 | - 终端快捷键
15 |
16 | - 接下来
17 | - 我们怎么玩呢
18 | - 快跟我一起去看看那个
19 | - yes~
20 |
21 | ## yes 🤔
22 |
23 | - 没错
24 | - 这次我们来看看这个 yes
25 | - yes 是什么呢?
26 | - 让我们来试试吧!👊
27 |
28 | ```shell
29 | yes
30 | ```
31 |
32 | - 我们发现只能看见屏幕上闪动的 y
33 | - 没错
34 | - 这个命令就是要持续输出 y!
35 | - 还有这么变态的命令吗?
36 | - 😱 是的!🤪
37 |
38 | - 那怎么让他停下来?😫
39 | - 我们可以这样做:
40 | - ctrl+c
41 | - 就可以让他取消 (cancel)
42 | - 赶紧去拷问他的灵魂!!!
43 |
44 |
45 | ### 灵魂三问 😇
46 |
47 | ```shell
48 | whatis yes
49 | whereis yes
50 | which yes
51 | ```
52 |
53 |
54 | - 下面我们来解析一下:
55 |
56 | - yes 就是持续输出
57 | - 想查看源文件?
58 | - dpkg -S /usr/bin/yes
59 | - 这个也属于 coreutils
60 | - 可以找到源代码看看
61 | - 方法可见 whereis 那个实验
62 |
63 | 
64 |
65 | - 更新源之后
66 | - 下载源
67 |
68 | 
69 |
70 | - 需要找到源文件
71 |
72 | ### 找到位置
73 |
74 | 
75 |
76 | - 打开yes.c
77 |
78 | 
79 |
80 | - 134行代码
81 | - yes具体还能干什么呢?
82 |
83 | ### 手册
84 |
85 | - 想了解 yes 命令更多?😉
86 | - 首选肯定是查手册啊!📕
87 |
88 | ```shell
89 | man yes
90 | ```
91 |
92 | 
93 |
94 | ### yes 可以带两个选项 🎛
95 |
96 | - --help
97 | - --version
98 |
99 | - 比如:
100 |
101 | ```shell
102 | yes --help
103 | ```
104 |
105 |
106 | - 我们可以得出结论:
107 |
108 | - `手册 man` 📕 最详尽 👍
109 | - `yes --help` 稍显简略
110 | - `whatis yes` 一句话最简略
111 |
112 | ### 可以带一个字符串参数
113 |
114 | ```shell
115 | yes oeasy
116 | yes "oeasy o2z"
117 | ```
118 | 
119 |
120 | - `oeasy o2z` 是作为一个字符串一起被输出的
121 |
122 | ### 总结
123 | - 这yes有什么意义么?
124 | - 写个c语言程序不是很容易么?
125 | - 别着急
126 | - 我们先往下看?😉
127 |
128 | 
129 | - 下次再说!👋
130 |
--------------------------------------------------------------------------------
/md/020-45571-蒸汽机车_sl.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 两种字符画
14 | - 从 figlet 开始 🅰️
15 | - 到 toilet
16 | - 字符画选项
17 | - 变彩色 🤡
18 | - 字体风格
19 |
20 | ```shell
21 | figlet oeasy
22 | toilet oeasy
23 | ```
24 |
25 | - 突然好奇
26 | - 这里面还有什么好玩的游戏吗?🤨
27 |
28 | ## 动力机车 sl
29 |
30 | - 我们可以这样写:
31 |
32 | ```shell
33 | sudo apt install sl
34 | sl
35 | ```
36 |
37 | - 一回车
38 | - 我们竟然看到一列火车隆隆驶过!😱
39 | - 赶快查询一下手册
40 |
41 | ### 手册
42 |
43 | 
44 |
45 | ### 参数含义
46 | - `SL` 代表 `Steam Locomotive`
47 | - 这个命令和 ls 很像
48 | - 这个命令就是在 ls 打错的情况下提提神:😓
49 | - 试试选项
50 | - `-a` 出现了事故,车里人在叫
51 | - `-l` 会出现一个小火车
52 | - `-F` 会让火车越飞越高,要注意是大写F
53 | - `-e` 允许中途被 ctrl+c 打断
54 |
55 | ### 总结
56 |
57 | - 开车挺有意思
58 | - 蒸汽机车 sl 🚂
59 | - 变身小机车-l 🚂
60 | - 变身飞天机车-F 🚂
61 | - 让我们再开一次车 🚂
62 | - 不过不够酷啊
63 |
64 | 
65 |
66 | - 有没有像黑客帝国那么酷的呢?🤪
67 | - 下次再说!👋
68 |
69 |
70 |
--------------------------------------------------------------------------------
/md/021-45571-蒸汽机车_sl.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 两种字符画
14 | - 从 figlet 开始 🅰️
15 | - 到 toilet
16 | - 字符画选项
17 | - 变彩色 🤡
18 | - 字体风格
19 |
20 | ```shell
21 | figlet oeasy
22 | toilet oeasy
23 | ```
24 |
25 | - 突然好奇
26 | - 这里面还有什么好玩的游戏吗?🤨
27 |
28 | ## 动力机车 sl
29 |
30 | - 我们可以这样写:
31 |
32 | ```shell
33 | sudo apt install sl
34 | sl
35 | ```
36 |
37 | - 一回车
38 | - 我们竟然看到一列火车隆隆驶过!😱
39 | - 赶快查询一下手册
40 |
41 | ### 手册
42 |
43 | 
44 |
45 | ### 参数含义
46 | - `SL` 代表 `Steam Locomotive`
47 | - 这个命令和 ls 很像
48 | - 这个命令就是在 ls 打错的情况下提提神:😓
49 | - 试试选项
50 | - `-a` 出现了事故,车里人在叫
51 | - `-l` 会出现一个小火车
52 | - `-F` 会让火车越飞越高,要注意是大写F
53 | - `-e` 允许中途被 ctrl+c 打断
54 |
55 | ### 总结
56 |
57 | - 开车挺有意思
58 | - 蒸汽机车 sl 🚂
59 | - 变身小机车-l 🚂
60 | - 变身飞天机车-F 🚂
61 | - 让我们再开一次车 🚂
62 | - 不过不够酷啊
63 |
64 | 
65 |
66 | - 有没有像黑客帝国那么酷的呢?🤪
67 | - 下次再说!👋
68 |
69 |
70 |
--------------------------------------------------------------------------------
/md/021-45574-黑客帝国_cmatrix.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ### 我们来回顾一下 😌
10 |
11 | - 开车挺有意思
12 | - 蒸汽机车 sl 🚂
13 | - 变身小机车-l 🚂
14 | - 变身飞天机车-F 🚂
15 | - 让我们再开一次车 🚂
16 | - 不过不够酷啊
17 |
18 | 
19 |
20 | - 有没有像黑客帝国那么酷的呢?🤪
21 |
22 | ## 黑客帝国 Matrix 📟
23 |
24 | ```shell
25 | apt search cmatrix
26 | apt show cmatrix
27 | ```
28 |
29 | 
30 |
31 | - 我们发现一个叫做 cmatrix 的软件包
32 | - 下载需要 2M
33 | - 好像可以玩
34 | - 走起来!
35 |
36 | ### 安装
37 |
38 | ```shell
39 | apt install cmatrix
40 | ```
41 |
42 | 
43 |
44 | - yes
45 |
46 | ### 运行
47 |
48 | ```shell
49 | cmatrix
50 | ```
51 |
52 | - 运行起来
53 |
54 | 
55 |
56 | - 好看~!!!
57 |
58 | ### 细节
59 |
60 | - 那么我们可以看看手册里的选项细节吗?
61 |
62 | 
63 |
64 | ### 矩阵细节 📟
65 |
66 | - `-b`: 部分加粗头部变色 bold
67 | - `-B`: 全部加粗头部变色 Bold
68 | - `-o`: 老式的 old school
69 | - `-s`: 屏保模式 Screensaver
70 | - `-u`: 我们可以设置中间 0-9 的间隔时间 ⏲
71 | - 0 为无间隔非常快
72 | - 9 为比较慢
73 | - `-C` 后面加上想要的颜色 (Color) 模式
74 | - 目前支持红绿蓝青品黄黑白
75 |
76 | - 举个栗子🌰
77 |
78 | ```shell
79 | # 加粗头部
80 | cmatrix -b
81 | # 间隔极慢
82 | cmatrix -u 9
83 | # 蓝色黑客帝国
84 | cmatrix -C blue
85 | ```
86 |
87 | ### 还有什么?🤨
88 |
89 | - 黑客帝国矩阵确实很酷
90 | - 但是还想更酷
91 | - 让人感觉电脑直接炸裂那种😱
92 | - 我们得去找找
93 | - 下次再说!👋
94 |
--------------------------------------------------------------------------------
/md/022-45571-蒸汽机车_sl.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 两种字符画
14 | - 从 figlet 开始 🅰️
15 | - 到 toilet
16 | - 字符画选项
17 | - 变彩色 🤡
18 | - 字体风格
19 |
20 | ```shell
21 | figlet oeasy
22 | toilet oeasy
23 | ```
24 |
25 | - 突然好奇
26 | - 这里面还有什么好玩的游戏吗?🤨
27 |
28 | ## 动力机车 sl
29 |
30 | - 我们可以这样写:
31 |
32 | ```shell
33 | sudo apt install sl
34 | sl
35 | ```
36 |
37 | - 一回车
38 | - 我们竟然看到一列火车隆隆驶过!😱
39 | - 赶快查询一下手册
40 |
41 | ### 手册
42 |
43 | 
44 |
45 | ### 参数含义
46 | - `SL` 代表 `Steam Locomotive`
47 | - 这个命令和 ls 很像
48 | - 这个命令就是在 ls 打错的情况下提提神:😓
49 | - 试试选项
50 | - `-a` 出现了事故,车里人在叫
51 | - `-l` 会出现一个小火车
52 | - `-F` 会让火车越飞越高,要注意是大写F
53 | - `-e` 允许中途被 ctrl+c 打断
54 |
55 | ### 总结
56 |
57 | - 开车挺有意思
58 | - 蒸汽机车 sl 🚂
59 | - 变身小机车-l 🚂
60 | - 变身飞天机车-F 🚂
61 | - 让我们再开一次车 🚂
62 | - 不过不够酷啊
63 |
64 | 
65 |
66 | - 有没有像黑客帝国那么酷的呢?🤪
67 | - 下次再说!👋
68 |
69 |
70 |
--------------------------------------------------------------------------------
/md/022-45572-满屏乱码_bb.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 | - 黑客帝国矩阵确实很酷
11 | - 各种速度颜色参数
12 | - 但是还想更酷
13 | - 让人感觉电脑直接炸裂那种😱
14 | - 我们得去找找
15 |
16 | ### 崩溃
17 | - 想找一个让人完全崩溃的软件包
18 | - 这不就来了
19 | - 话不多说
20 | - 先试试
21 |
22 | ```shell
23 | apt show bb
24 | apt search bb
25 | sudo apt install bb
26 | ```
27 |
28 | ### bb 👻
29 |
30 | - 首先选一下是否带音乐
31 | - 然后选择 continue
32 | - 这个 bb 太带劲了!
33 | - 有各种波形晃眼
34 | - 还有音效
35 | - 人物简历等等
36 | - 还有屏幕紊乱的效果!
37 |
38 | 
39 |
40 | ### 文档
41 |
42 | - 查手册
43 |
44 | 
45 |
46 | - 看参数
47 |
48 |
49 | ```shell
50 | # -loop 永远循环
51 | bb -loop
52 | #-driver 选择输出位置 stdout 在当前窗口,有时要向上翻一下才能看见
53 | bb -driver stdout
54 | #-dim 半亮半暗
55 | bb -dim
56 | ```
57 |
58 | ### 总结
59 | - bb是我目前看到最眼花缭乱的应用了
60 | - 这个东西吓唬人很好啊!💀
61 | - 让人以为自己的机器崩溃了!☠️
62 | - 循环崩溃中...
63 | - 哈哈哈
64 | - 还有啥好玩的?👻
65 | - 下次再说!👋
66 |
--------------------------------------------------------------------------------
/md/022-45574-黑客帝国_cmatrix.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ### 我们来回顾一下 😌
10 |
11 | - 开车挺有意思
12 | - 蒸汽机车 sl 🚂
13 | - 变身小机车-l 🚂
14 | - 变身飞天机车-F 🚂
15 | - 让我们再开一次车 🚂
16 | - 不过不够酷啊
17 |
18 | 
19 |
20 | - 有没有像黑客帝国那么酷的呢?🤪
21 |
22 | ## 黑客帝国 Matrix 📟
23 |
24 | ```shell
25 | apt search cmatrix
26 | apt show cmatrix
27 | ```
28 |
29 | 
30 |
31 | - 我们发现一个叫做 cmatrix 的软件包
32 | - 下载需要 2M
33 | - 好像可以玩
34 | - 走起来!
35 |
36 | ### 安装
37 |
38 | ```shell
39 | apt install cmatrix
40 | ```
41 |
42 | 
43 |
44 | - yes
45 |
46 | ### 运行
47 |
48 | ```shell
49 | cmatrix
50 | ```
51 |
52 | - 运行起来
53 |
54 | 
55 |
56 | - 好看~!!!
57 |
58 | ### 细节
59 |
60 | - 那么我们可以看看手册里的选项细节吗?
61 |
62 | 
63 |
64 | ### 矩阵细节 📟
65 |
66 | - `-b`: 部分加粗头部变色 bold
67 | - `-B`: 全部加粗头部变色 Bold
68 | - `-o`: 老式的 old school
69 | - `-s`: 屏保模式 Screensaver
70 | - `-u`: 我们可以设置中间 0-9 的间隔时间 ⏲
71 | - 0 为无间隔非常快
72 | - 9 为比较慢
73 | - `-C` 后面加上想要的颜色 (Color) 模式
74 | - 目前支持红绿蓝青品黄黑白
75 |
76 | - 举个栗子🌰
77 |
78 | ```shell
79 | # 加粗头部
80 | cmatrix -b
81 | # 间隔极慢
82 | cmatrix -u 9
83 | # 蓝色黑客帝国
84 | cmatrix -C blue
85 | ```
86 |
87 | ### 还有什么?🤨
88 |
89 | - 黑客帝国矩阵确实很酷
90 | - 但是还想更酷
91 | - 让人感觉电脑直接炸裂那种😱
92 | - 我们得去找找
93 | - 下次再说!👋
94 |
--------------------------------------------------------------------------------
/md/023-45570-更新源_apt_update_hollywood.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 |
11 | - 上次讲了bb
12 | - bb是我目前看到最眼花缭乱的应用了
13 | - 这个东西吓唬人很好啊!💀
14 | - 让人以为自己的机器崩溃了!☠️
15 | - 循环崩溃中...
16 | - 哈哈哈
17 | - 还有啥好玩的?👻
18 |
19 | 
20 |
21 | ### hollywood
22 |
23 | - 我们这次装一个酷
24 | - 下个 hollywood 软件包:🎭
25 |
26 | ```shell
27 | apt search hollywood
28 | apt show hollywood
29 | ```
30 |
31 | 
32 |
33 | ### hollywood🎭
34 |
35 | - 这软件可以模拟出好莱坞情景剧中
36 | - 黑客电脑的样子
37 |
38 | 
39 |
40 | - 安装时遇到了问题?😳
41 |
42 | ### 问题
43 |
44 | 
45 |
46 | - 按照他最后一行的提示
47 | - 可以更新源
48 | - 为什么要更新源?
49 |
50 | ### 更新源
51 |
52 | - 源服务器上的软件可能有更新
53 | - 不用改变源 `sources.list` 的配置
54 | - 源服务器地址没变
55 | - 更新源是为了把源(sources.list 上对应的 url)的最新信息同步到本地
56 | - 如果软件包有更新的话
57 | - 会发布更新到主服务器对应的发行版版本的位置
58 | - 主服务器内容六小时之内同步到镜像服务器
59 |
60 | ### 更新源
61 |
62 | ```shell
63 | sudo apt update
64 | ```
65 |
66 | - `sudo` 是用管理员面具 👺 执行
67 | - `apt` 是高级软件包管理程序
68 | - `update` 更新的内容包括
69 | - 把最新的软件包信息从镜像同步到本地
70 | - 在本地记录软件包列表信息
71 | - 在本地分析软件包依赖关系树
72 | - 在本地读取状态信息
73 |
74 | ### 安装软件
75 |
76 |
77 | ```
78 | sudo apt install hollywood
79 | ```
80 |
81 | - 再安装 hollywood 🎭
82 |
83 | 
84 |
85 | - 这回安装很顺利
86 | - 然后我们去跑一下 hollywood🎭
87 |
88 | ### 执行
89 |
90 | ```shell
91 | hollywood
92 | ```
93 |
94 | 
95 |
96 | ### 总结 🤨
97 |
98 | - 这个hollywood真的很酷
99 | - 👻 退出的话用 ctrl+c
100 | - 回到原来的 shell 用命令 zsh
101 | - 下面的关于 cpu、日期等信息仍然保留
102 | - 用这个当做屏保
103 | - 无意中让 MM 看看
104 | - 哈哈!
105 | - 目前我们只会安装软件包
106 | - 如何删除软件包呢?🤔
107 | - 下次再说!👋
108 |
--------------------------------------------------------------------------------
/md/023-45572-满屏乱码_bb.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 | - 黑客帝国矩阵确实很酷
11 | - 各种速度颜色参数
12 | - 但是还想更酷
13 | - 让人感觉电脑直接炸裂那种😱
14 | - 我们得去找找
15 |
16 | ### 崩溃
17 | - 想找一个让人完全崩溃的软件包
18 | - 这不就来了
19 | - 话不多说
20 | - 先试试
21 |
22 | ```shell
23 | apt show bb
24 | apt search bb
25 | sudo apt install bb
26 | ```
27 |
28 | ### bb 👻
29 |
30 | - 首先选一下是否带音乐
31 | - 然后选择 continue
32 | - 这个 bb 太带劲了!
33 | - 有各种波形晃眼
34 | - 还有音效
35 | - 人物简历等等
36 | - 还有屏幕紊乱的效果!
37 |
38 | 
39 |
40 | ### 文档
41 |
42 | - 查手册
43 |
44 | 
45 |
46 | - 看参数
47 |
48 |
49 | ```shell
50 | # -loop 永远循环
51 | bb -loop
52 | #-driver 选择输出位置 stdout 在当前窗口,有时要向上翻一下才能看见
53 | bb -driver stdout
54 | #-dim 半亮半暗
55 | bb -dim
56 | ```
57 |
58 | ### 总结
59 | - bb是我目前看到最眼花缭乱的应用了
60 | - 这个东西吓唬人很好啊!💀
61 | - 让人以为自己的机器崩溃了!☠️
62 | - 循环崩溃中...
63 | - 哈哈哈
64 | - 还有啥好玩的?👻
65 | - 下次再说!👋
66 |
--------------------------------------------------------------------------------
/md/023-45574-黑客帝国_cmatrix.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ### 我们来回顾一下 😌
10 |
11 | - 开车挺有意思
12 | - 蒸汽机车 sl 🚂
13 | - 变身小机车-l 🚂
14 | - 变身飞天机车-F 🚂
15 | - 让我们再开一次车 🚂
16 | - 不过不够酷啊
17 |
18 | 
19 |
20 | - 有没有像黑客帝国那么酷的呢?🤪
21 |
22 | ## 黑客帝国 Matrix 📟
23 |
24 | ```shell
25 | apt search cmatrix
26 | apt show cmatrix
27 | ```
28 |
29 | 
30 |
31 | - 我们发现一个叫做 cmatrix 的软件包
32 | - 下载需要 2M
33 | - 好像可以玩
34 | - 走起来!
35 |
36 | ### 安装
37 |
38 | ```shell
39 | apt install cmatrix
40 | ```
41 |
42 | 
43 |
44 | - yes
45 |
46 | ### 运行
47 |
48 | ```shell
49 | cmatrix
50 | ```
51 |
52 | - 运行起来
53 |
54 | 
55 |
56 | - 好看~!!!
57 |
58 | ### 细节
59 |
60 | - 那么我们可以看看手册里的选项细节吗?
61 |
62 | 
63 |
64 | ### 矩阵细节 📟
65 |
66 | - `-b`: 部分加粗头部变色 bold
67 | - `-B`: 全部加粗头部变色 Bold
68 | - `-o`: 老式的 old school
69 | - `-s`: 屏保模式 Screensaver
70 | - `-u`: 我们可以设置中间 0-9 的间隔时间 ⏲
71 | - 0 为无间隔非常快
72 | - 9 为比较慢
73 | - `-C` 后面加上想要的颜色 (Color) 模式
74 | - 目前支持红绿蓝青品黄黑白
75 |
76 | - 举个栗子🌰
77 |
78 | ```shell
79 | # 加粗头部
80 | cmatrix -b
81 | # 间隔极慢
82 | cmatrix -u 9
83 | # 蓝色黑客帝国
84 | cmatrix -C blue
85 | ```
86 |
87 | ### 还有什么?🤨
88 |
89 | - 黑客帝国矩阵确实很酷
90 | - 但是还想更酷
91 | - 让人感觉电脑直接炸裂那种😱
92 | - 我们得去找找
93 | - 下次再说!👋
94 |
--------------------------------------------------------------------------------
/md/024-45570-更新源_apt_update_hollywood.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 |
11 | - 上次讲了bb
12 | - bb是我目前看到最眼花缭乱的应用了
13 | - 这个东西吓唬人很好啊!💀
14 | - 让人以为自己的机器崩溃了!☠️
15 | - 循环崩溃中...
16 | - 哈哈哈
17 | - 还有啥好玩的?👻
18 |
19 | 
20 |
21 | ### hollywood
22 |
23 | - 我们这次装一个酷
24 | - 下个 hollywood 软件包:🎭
25 |
26 | ```shell
27 | apt search hollywood
28 | apt show hollywood
29 | ```
30 |
31 | 
32 |
33 | ### hollywood🎭
34 |
35 | - 这软件可以模拟出好莱坞情景剧中
36 | - 黑客电脑的样子
37 |
38 | 
39 |
40 | - 安装时遇到了问题?😳
41 |
42 | ### 问题
43 |
44 | 
45 |
46 | - 按照他最后一行的提示
47 | - 可以更新源
48 | - 为什么要更新源?
49 |
50 | ### 更新源
51 |
52 | - 源服务器上的软件可能有更新
53 | - 不用改变源 `sources.list` 的配置
54 | - 源服务器地址没变
55 | - 更新源是为了把源(sources.list 上对应的 url)的最新信息同步到本地
56 | - 如果软件包有更新的话
57 | - 会发布更新到主服务器对应的发行版版本的位置
58 | - 主服务器内容六小时之内同步到镜像服务器
59 |
60 | ### 更新源
61 |
62 | ```shell
63 | sudo apt update
64 | ```
65 |
66 | - `sudo` 是用管理员面具 👺 执行
67 | - `apt` 是高级软件包管理程序
68 | - `update` 更新的内容包括
69 | - 把最新的软件包信息从镜像同步到本地
70 | - 在本地记录软件包列表信息
71 | - 在本地分析软件包依赖关系树
72 | - 在本地读取状态信息
73 |
74 | ### 安装软件
75 |
76 |
77 | ```
78 | sudo apt install hollywood
79 | ```
80 |
81 | - 再安装 hollywood 🎭
82 |
83 | 
84 |
85 | - 这回安装很顺利
86 | - 然后我们去跑一下 hollywood🎭
87 |
88 | ### 执行
89 |
90 | ```shell
91 | hollywood
92 | ```
93 |
94 | 
95 |
96 | ### 总结 🤨
97 |
98 | - 这个hollywood真的很酷
99 | - 👻 退出的话用 ctrl+c
100 | - 回到原来的 shell 用命令 zsh
101 | - 下面的关于 cpu、日期等信息仍然保留
102 | - 用这个当做屏保
103 | - 无意中让 MM 看看
104 | - 哈哈!
105 | - 目前我们只会安装软件包
106 | - 如何删除软件包呢?🤔
107 | - 下次再说!👋
108 |
--------------------------------------------------------------------------------
/md/024-45572-满屏乱码_bb.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 | - 黑客帝国矩阵确实很酷
11 | - 各种速度颜色参数
12 | - 但是还想更酷
13 | - 让人感觉电脑直接炸裂那种😱
14 | - 我们得去找找
15 |
16 | ### 崩溃
17 | - 想找一个让人完全崩溃的软件包
18 | - 这不就来了
19 | - 话不多说
20 | - 先试试
21 |
22 | ```shell
23 | apt show bb
24 | apt search bb
25 | sudo apt install bb
26 | ```
27 |
28 | ### bb 👻
29 |
30 | - 首先选一下是否带音乐
31 | - 然后选择 continue
32 | - 这个 bb 太带劲了!
33 | - 有各种波形晃眼
34 | - 还有音效
35 | - 人物简历等等
36 | - 还有屏幕紊乱的效果!
37 |
38 | 
39 |
40 | ### 文档
41 |
42 | - 查手册
43 |
44 | 
45 |
46 | - 看参数
47 |
48 |
49 | ```shell
50 | # -loop 永远循环
51 | bb -loop
52 | #-driver 选择输出位置 stdout 在当前窗口,有时要向上翻一下才能看见
53 | bb -driver stdout
54 | #-dim 半亮半暗
55 | bb -dim
56 | ```
57 |
58 | ### 总结
59 | - bb是我目前看到最眼花缭乱的应用了
60 | - 这个东西吓唬人很好啊!💀
61 | - 让人以为自己的机器崩溃了!☠️
62 | - 循环崩溃中...
63 | - 哈哈哈
64 | - 还有啥好玩的?👻
65 | - 下次再说!👋
66 |
--------------------------------------------------------------------------------
/md/025-45570-更新源_apt_update_hollywood.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 |
11 | - 上次讲了bb
12 | - bb是我目前看到最眼花缭乱的应用了
13 | - 这个东西吓唬人很好啊!💀
14 | - 让人以为自己的机器崩溃了!☠️
15 | - 循环崩溃中...
16 | - 哈哈哈
17 | - 还有啥好玩的?👻
18 |
19 | 
20 |
21 | ### hollywood
22 |
23 | - 我们这次装一个酷
24 | - 下个 hollywood 软件包:🎭
25 |
26 | ```shell
27 | apt search hollywood
28 | apt show hollywood
29 | ```
30 |
31 | 
32 |
33 | ### hollywood🎭
34 |
35 | - 这软件可以模拟出好莱坞情景剧中
36 | - 黑客电脑的样子
37 |
38 | 
39 |
40 | - 安装时遇到了问题?😳
41 |
42 | ### 问题
43 |
44 | 
45 |
46 | - 按照他最后一行的提示
47 | - 可以更新源
48 | - 为什么要更新源?
49 |
50 | ### 更新源
51 |
52 | - 源服务器上的软件可能有更新
53 | - 不用改变源 `sources.list` 的配置
54 | - 源服务器地址没变
55 | - 更新源是为了把源(sources.list 上对应的 url)的最新信息同步到本地
56 | - 如果软件包有更新的话
57 | - 会发布更新到主服务器对应的发行版版本的位置
58 | - 主服务器内容六小时之内同步到镜像服务器
59 |
60 | ### 更新源
61 |
62 | ```shell
63 | sudo apt update
64 | ```
65 |
66 | - `sudo` 是用管理员面具 👺 执行
67 | - `apt` 是高级软件包管理程序
68 | - `update` 更新的内容包括
69 | - 把最新的软件包信息从镜像同步到本地
70 | - 在本地记录软件包列表信息
71 | - 在本地分析软件包依赖关系树
72 | - 在本地读取状态信息
73 |
74 | ### 安装软件
75 |
76 |
77 | ```
78 | sudo apt install hollywood
79 | ```
80 |
81 | - 再安装 hollywood 🎭
82 |
83 | 
84 |
85 | - 这回安装很顺利
86 | - 然后我们去跑一下 hollywood🎭
87 |
88 | ### 执行
89 |
90 | ```shell
91 | hollywood
92 | ```
93 |
94 | 
95 |
96 | ### 总结 🤨
97 |
98 | - 这个hollywood真的很酷
99 | - 👻 退出的话用 ctrl+c
100 | - 回到原来的 shell 用命令 zsh
101 | - 下面的关于 cpu、日期等信息仍然保留
102 | - 用这个当做屏保
103 | - 无意中让 MM 看看
104 | - 哈哈!
105 | - 目前我们只会安装软件包
106 | - 如何删除软件包呢?🤔
107 | - 下次再说!👋
108 |
--------------------------------------------------------------------------------
/md/027-45576-中文输入_fcitx.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 |
11 |
12 | - 管道的符号是|
13 | - 管道的作用是连接
14 | - 原来应该输出到屏幕内容
15 | - 通过管道流到了另一个命令做为参数
16 | - 是否可以让 cow 说出一些中文呢?
17 |
18 | ### 下载安装小企鹅输入法 ✏️fcitx
19 |
20 | - 系统已经安装中文输入法了
21 | - 退一步说
22 | - 如果没有安装
23 | - 应该如何安装呢?
24 |
25 | ```shell
26 | sudo apt install fcitx
27 | ```
28 |
29 |
30 | - fcitx[ˈfaɪtɪks]
31 | - fcitx是 (Free Chinese Input Toy for X) 的英文缩写
32 | - 中文名为小企鹅输入法
33 | - 是一个以 GPL 方式发布的输入法框架
34 | - 编写它的目是为桌面环境提供一个灵活的输入方案
35 | - 彻底解决在GNU/Linux下没有一个好的中文输入法的问题
36 |
37 |
38 | 
39 |
40 | ### 下载搜狗输入法 🐶
41 |
42 | ```
43 | #直接安装
44 | sudo apt install sogoupinyin
45 | ```
46 |
47 | 
48 |
49 |
50 | ### 网页安装
51 |
52 | - 网页访问 [搜狗官网](https://pinyin.sogou.com/linux/)
53 | - 下载之后安装软件包
54 |
55 | ```shell
56 | #安装 debian package,XXXX指的是下载的名字。
57 | sudo dpkg -i sogoupinyin_XXXX_amd64.deb
58 | #如果存在冲突,进行修复或删除
59 | sudo apt -f install sogoupinyin
60 | ```
61 |
62 | ## 配置输入法 ⚙️
63 |
64 | 
65 |
66 | 运行 sogou,在终端里面就可以输入中文了,让牛作为 dragon 说"我会中文"。
67 |
68 | 
69 |
70 | ### 分析牛 🐂 说
71 |
72 | - 牛说在哪?
73 |
74 | ```shell
75 | #找到牛说的位置
76 | whereis cowsay
77 | #进入牛说的素材文件夹位置
78 | cd /usr/share/cowsay/cows
79 | #查看图形素材文件
80 | cat meow.cow
81 | ```
82 |
83 | - /usr/games/cowsay(命令的位置)
84 | - /usr/share/cowsay/cow(素材的位置)
85 | - 动物的形象的文件都在 .cow 文件中,比如 meow.cow
86 |
87 | 
88 |
89 | ### 总结 🤨
90 |
91 | - 这次输出了中文
92 | - 并且找到了 cowsay 的图像素材的位置 💡
93 | - 我们能否把现实世界的 jpg 图片
94 | - 变成ascii形式的cow文件呢?🤔
95 | - 下次再说!👋
96 |
--------------------------------------------------------------------------------
/md/028-45576-中文输入_fcitx.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 |
11 |
12 | - 管道的符号是|
13 | - 管道的作用是连接
14 | - 原来应该输出到屏幕内容
15 | - 通过管道流到了另一个命令做为参数
16 | - 是否可以让 cow 说出一些中文呢?
17 |
18 | ### 下载安装小企鹅输入法 ✏️fcitx
19 |
20 | - 系统已经安装中文输入法了
21 | - 退一步说
22 | - 如果没有安装
23 | - 应该如何安装呢?
24 |
25 | ```shell
26 | sudo apt install fcitx
27 | ```
28 |
29 |
30 | - fcitx[ˈfaɪtɪks]
31 | - fcitx是 (Free Chinese Input Toy for X) 的英文缩写
32 | - 中文名为小企鹅输入法
33 | - 是一个以 GPL 方式发布的输入法框架
34 | - 编写它的目是为桌面环境提供一个灵活的输入方案
35 | - 彻底解决在GNU/Linux下没有一个好的中文输入法的问题
36 |
37 |
38 | 
39 |
40 | ### 下载搜狗输入法 🐶
41 |
42 | ```
43 | #直接安装
44 | sudo apt install sogoupinyin
45 | ```
46 |
47 | 
48 |
49 |
50 | ### 网页安装
51 |
52 | - 网页访问 [搜狗官网](https://pinyin.sogou.com/linux/)
53 | - 下载之后安装软件包
54 |
55 | ```shell
56 | #安装 debian package,XXXX指的是下载的名字。
57 | sudo dpkg -i sogoupinyin_XXXX_amd64.deb
58 | #如果存在冲突,进行修复或删除
59 | sudo apt -f install sogoupinyin
60 | ```
61 |
62 | ## 配置输入法 ⚙️
63 |
64 | 
65 |
66 | 运行 sogou,在终端里面就可以输入中文了,让牛作为 dragon 说"我会中文"。
67 |
68 | 
69 |
70 | ### 分析牛 🐂 说
71 |
72 | - 牛说在哪?
73 |
74 | ```shell
75 | #找到牛说的位置
76 | whereis cowsay
77 | #进入牛说的素材文件夹位置
78 | cd /usr/share/cowsay/cows
79 | #查看图形素材文件
80 | cat meow.cow
81 | ```
82 |
83 | - /usr/games/cowsay(命令的位置)
84 | - /usr/share/cowsay/cow(素材的位置)
85 | - 动物的形象的文件都在 .cow 文件中,比如 meow.cow
86 |
87 | 
88 |
89 | ### 总结 🤨
90 |
91 | - 这次输出了中文
92 | - 并且找到了 cowsay 的图像素材的位置 💡
93 | - 我们能否把现实世界的 jpg 图片
94 | - 变成ascii形式的cow文件呢?🤔
95 | - 下次再说!👋
96 |
--------------------------------------------------------------------------------
/md/029-45576-中文输入_fcitx.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 回忆 😌
10 |
11 |
12 | - 管道的符号是|
13 | - 管道的作用是连接
14 | - 原来应该输出到屏幕内容
15 | - 通过管道流到了另一个命令做为参数
16 | - 是否可以让 cow 说出一些中文呢?
17 |
18 | ### 下载安装小企鹅输入法 ✏️fcitx
19 |
20 | - 系统已经安装中文输入法了
21 | - 退一步说
22 | - 如果没有安装
23 | - 应该如何安装呢?
24 |
25 | ```shell
26 | sudo apt install fcitx
27 | ```
28 |
29 |
30 | - fcitx[ˈfaɪtɪks]
31 | - fcitx是 (Free Chinese Input Toy for X) 的英文缩写
32 | - 中文名为小企鹅输入法
33 | - 是一个以 GPL 方式发布的输入法框架
34 | - 编写它的目是为桌面环境提供一个灵活的输入方案
35 | - 彻底解决在GNU/Linux下没有一个好的中文输入法的问题
36 |
37 |
38 | 
39 |
40 | ### 下载搜狗输入法 🐶
41 |
42 | ```
43 | #直接安装
44 | sudo apt install sogoupinyin
45 | ```
46 |
47 | 
48 |
49 |
50 | ### 网页安装
51 |
52 | - 网页访问 [搜狗官网](https://pinyin.sogou.com/linux/)
53 | - 下载之后安装软件包
54 |
55 | ```shell
56 | #安装 debian package,XXXX指的是下载的名字。
57 | sudo dpkg -i sogoupinyin_XXXX_amd64.deb
58 | #如果存在冲突,进行修复或删除
59 | sudo apt -f install sogoupinyin
60 | ```
61 |
62 | ## 配置输入法 ⚙️
63 |
64 | 
65 |
66 | 运行 sogou,在终端里面就可以输入中文了,让牛作为 dragon 说"我会中文"。
67 |
68 | 
69 |
70 | ### 分析牛 🐂 说
71 |
72 | - 牛说在哪?
73 |
74 | ```shell
75 | #找到牛说的位置
76 | whereis cowsay
77 | #进入牛说的素材文件夹位置
78 | cd /usr/share/cowsay/cows
79 | #查看图形素材文件
80 | cat meow.cow
81 | ```
82 |
83 | - /usr/games/cowsay(命令的位置)
84 | - /usr/share/cowsay/cow(素材的位置)
85 | - 动物的形象的文件都在 .cow 文件中,比如 meow.cow
86 |
87 | 
88 |
89 | ### 总结 🤨
90 |
91 | - 这次输出了中文
92 | - 并且找到了 cowsay 的图像素材的位置 💡
93 | - 我们能否把现实世界的 jpg 图片
94 | - 变成ascii形式的cow文件呢?🤔
95 | - 下次再说!👋
96 |
--------------------------------------------------------------------------------
/md/029-48590-随机笑话_fortune.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # fortune 笑话
8 |
9 | ## 中文笑话 😌
10 |
11 | - asciiview把图像转化为了 ascii🅰️ 字符画
12 | - 并且修改了 cowsay 的图像素材 💡
13 | - 我们能让 cowsay 随机讲讲笑话吗?
14 |
15 | 
16 |
17 | ## 我们想要让牛讲一个随机的笑话
18 |
19 | - 首先我们要有个说笑话的软件包:
20 |
21 | ```shell
22 | # 下载 fortune
23 | sudo apt install fortune
24 | #使用 fortune
25 | fortune
26 | ```
27 |
28 | ### 深入重定向
29 |
30 | ```shell
31 | # 把本该输出到屏幕的 fortune 的结果,输出到 cowsay
32 | fortune | cowsay
33 | ```
34 |
35 | - fortune 输出重定向到 figlet
36 | - figlet 输出重定向到 cowsay
37 |
38 | 
39 |
40 | ### 三重重定向
41 | ```shell
42 | fortune
43 | fortune | boxes -d cat
44 | fortune | boxes -d cat | pv -qL 10
45 | fortune | boxes -d cat | lolcat
46 | fortune | boxes -d cat | pv -qL 10 |lolcat
47 | ```
48 |
49 | 
50 |
51 | 
52 |
53 | ### boxes的细节
54 |
55 | ```shell
56 | #查询详细帮助
57 | man boxes
58 | #列出所有图形
59 | boxes -l
60 | ```
61 | 
62 |
63 | - 有些还挺好看的
64 | - 还有很多适合于制作注释之类的
65 |
66 | ### 内边距
67 |
68 | - 可以设置一些padding 内边距
69 |
70 | 
71 |
72 | ### 大小
73 |
74 | - 可以控制大小
75 |
76 | 
77 |
78 | ### 对齐
79 | - 还可以控制对齐方式
80 | - 垂直方向
81 | - 水平方向
82 |
83 | 
84 |
85 | - 可以居中
86 |
87 | 
88 |
89 | ## fortune 的细节 📒
90 |
91 | - 具体笑话文件在/usr/share/games/fortunes
92 | - 可以用 cat 查看相应的字典 dat📒 文件
93 | - 攻击性笑话在/usr/share/games/fortunes/off
94 | - 想删除某类的笑话,就删除相应的 dat 文件
95 | - 可以用-f 列出所有列表
96 | - 可以用百分比控制笑话来源
97 |
98 | 
99 |
100 | ### 总结 🤨
101 |
102 | - fortune是英文的
103 | - 如果想来点中文的笑话或者诗歌可以么?
104 | - 怎么来呢?🤔
105 |
106 | 
107 |
108 | - 下次再说!👋
109 |
--------------------------------------------------------------------------------
/md/030-45580-中文诗词_fortune-zh.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - fortune是英文的
14 | - 如果想来点中文的笑话或者诗歌可以么?
15 | - 怎么来呢?🤔
16 |
17 | 
18 |
19 | ### 那有没有中 🀄️ 文的 fortune 呢?
20 |
21 | ```shell
22 | # 搜索一下 fortune
23 | apt search fortune chinese
24 | ```
25 |
26 | - 简介里匹配也可以
27 |
28 | 
29 |
30 | - 搜索到了
31 | - 去下载吧~
32 |
33 | ### 中文 fortune
34 |
35 | ```shell
36 | sudo apt install fortune-zh
37 | fortune-zh
38 | ```
39 |
40 | - /usr/share/games/fortunes/{tang300,song100}
41 | - 这两个是中 🀄️ 文的是诗歌库
42 | - tang300 唐诗三百首
43 | - song100 一百首宋词
44 |
45 | ### pipe
46 | - 输出重定向到 cowsay
47 |
48 | 
49 |
50 | ```shell
51 | fortune-zh tangb300 | cowsay -f beavis.zen
52 | ```
53 |
54 | ### 彩色 🎨 的原理‼️
55 |
56 | ```shell
57 | #进入fortunes-zh的素材文件夹
58 | cd /usr/share/games/fortunes/
59 | #查看素材
60 | vi tang300
61 | ```
62 |
63 | 
64 |
65 | ### 打开唐诗
66 | 
67 |
68 | - ^[[32m《感遇·其一》^[[m
69 | - 这里面的^[是esc转义字符
70 | - 相当于"\033"
71 | - [32m代表绿的字体
72 | - ^[[m代表回到原始字体
73 | - 下面的33m意味着橙色字体
74 |
75 | 
76 |
77 | - 30~37 都可以设置并修改颜色 🎨
78 | - 也可以建立自己的彩色俗语库
79 |
80 | ### 总结 🤨
81 |
82 | - 下载了中 🀄️ 文谚语
83 | - 输出重定向了中文谚语
84 | - 理解词典和颜色
85 | - 下次讲什么?🤔
86 | - 下次再说!👋
87 |
88 | 
89 |
--------------------------------------------------------------------------------
/md/030-48590-随机笑话_fortune.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # fortune 笑话
8 |
9 | ## 中文笑话 😌
10 |
11 | - asciiview把图像转化为了 ascii🅰️ 字符画
12 | - 并且修改了 cowsay 的图像素材 💡
13 | - 我们能让 cowsay 随机讲讲笑话吗?
14 |
15 | 
16 |
17 | ## 我们想要让牛讲一个随机的笑话
18 |
19 | - 首先我们要有个说笑话的软件包:
20 |
21 | ```shell
22 | # 下载 fortune
23 | sudo apt install fortune
24 | #使用 fortune
25 | fortune
26 | ```
27 |
28 | ### 深入重定向
29 |
30 | ```shell
31 | # 把本该输出到屏幕的 fortune 的结果,输出到 cowsay
32 | fortune | cowsay
33 | ```
34 |
35 | - fortune 输出重定向到 figlet
36 | - figlet 输出重定向到 cowsay
37 |
38 | 
39 |
40 | ### 三重重定向
41 | ```shell
42 | fortune
43 | fortune | boxes -d cat
44 | fortune | boxes -d cat | pv -qL 10
45 | fortune | boxes -d cat | lolcat
46 | fortune | boxes -d cat | pv -qL 10 |lolcat
47 | ```
48 |
49 | 
50 |
51 | 
52 |
53 | ### boxes的细节
54 |
55 | ```shell
56 | #查询详细帮助
57 | man boxes
58 | #列出所有图形
59 | boxes -l
60 | ```
61 | 
62 |
63 | - 有些还挺好看的
64 | - 还有很多适合于制作注释之类的
65 |
66 | ### 内边距
67 |
68 | - 可以设置一些padding 内边距
69 |
70 | 
71 |
72 | ### 大小
73 |
74 | - 可以控制大小
75 |
76 | 
77 |
78 | ### 对齐
79 | - 还可以控制对齐方式
80 | - 垂直方向
81 | - 水平方向
82 |
83 | 
84 |
85 | - 可以居中
86 |
87 | 
88 |
89 | ## fortune 的细节 📒
90 |
91 | - 具体笑话文件在/usr/share/games/fortunes
92 | - 可以用 cat 查看相应的字典 dat📒 文件
93 | - 攻击性笑话在/usr/share/games/fortunes/off
94 | - 想删除某类的笑话,就删除相应的 dat 文件
95 | - 可以用-f 列出所有列表
96 | - 可以用百分比控制笑话来源
97 |
98 | 
99 |
100 | ### 总结 🤨
101 |
102 | - fortune是英文的
103 | - 如果想来点中文的笑话或者诗歌可以么?
104 | - 怎么来呢?🤔
105 |
106 | 
107 |
108 | - 下次再说!👋
109 |
--------------------------------------------------------------------------------
/md/031-45580-中文诗词_fortune-zh.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - fortune是英文的
14 | - 如果想来点中文的笑话或者诗歌可以么?
15 | - 怎么来呢?🤔
16 |
17 | 
18 |
19 | ### 那有没有中 🀄️ 文的 fortune 呢?
20 |
21 | ```shell
22 | # 搜索一下 fortune
23 | apt search fortune chinese
24 | ```
25 |
26 | - 简介里匹配也可以
27 |
28 | 
29 |
30 | - 搜索到了
31 | - 去下载吧~
32 |
33 | ### 中文 fortune
34 |
35 | ```shell
36 | sudo apt install fortune-zh
37 | fortune-zh
38 | ```
39 |
40 | - /usr/share/games/fortunes/{tang300,song100}
41 | - 这两个是中 🀄️ 文的是诗歌库
42 | - tang300 唐诗三百首
43 | - song100 一百首宋词
44 |
45 | ### pipe
46 | - 输出重定向到 cowsay
47 |
48 | 
49 |
50 | ```shell
51 | fortune-zh tangb300 | cowsay -f beavis.zen
52 | ```
53 |
54 | ### 彩色 🎨 的原理‼️
55 |
56 | ```shell
57 | #进入fortunes-zh的素材文件夹
58 | cd /usr/share/games/fortunes/
59 | #查看素材
60 | vi tang300
61 | ```
62 |
63 | 
64 |
65 | ### 打开唐诗
66 | 
67 |
68 | - ^[[32m《感遇·其一》^[[m
69 | - 这里面的^[是esc转义字符
70 | - 相当于"\033"
71 | - [32m代表绿的字体
72 | - ^[[m代表回到原始字体
73 | - 下面的33m意味着橙色字体
74 |
75 | 
76 |
77 | - 30~37 都可以设置并修改颜色 🎨
78 | - 也可以建立自己的彩色俗语库
79 |
80 | ### 总结 🤨
81 |
82 | - 下载了中 🀄️ 文谚语
83 | - 输出重定向了中文谚语
84 | - 理解词典和颜色
85 | - 下次讲什么?🤔
86 | - 下次再说!👋
87 |
88 | 
89 |
--------------------------------------------------------------------------------
/md/032-45580-中文诗词_fortune-zh.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - fortune是英文的
14 | - 如果想来点中文的笑话或者诗歌可以么?
15 | - 怎么来呢?🤔
16 |
17 | 
18 |
19 | ### 那有没有中 🀄️ 文的 fortune 呢?
20 |
21 | ```shell
22 | # 搜索一下 fortune
23 | apt search fortune chinese
24 | ```
25 |
26 | - 简介里匹配也可以
27 |
28 | 
29 |
30 | - 搜索到了
31 | - 去下载吧~
32 |
33 | ### 中文 fortune
34 |
35 | ```shell
36 | sudo apt install fortune-zh
37 | fortune-zh
38 | ```
39 |
40 | - /usr/share/games/fortunes/{tang300,song100}
41 | - 这两个是中 🀄️ 文的是诗歌库
42 | - tang300 唐诗三百首
43 | - song100 一百首宋词
44 |
45 | ### pipe
46 | - 输出重定向到 cowsay
47 |
48 | 
49 |
50 | ```shell
51 | fortune-zh tangb300 | cowsay -f beavis.zen
52 | ```
53 |
54 | ### 彩色 🎨 的原理‼️
55 |
56 | ```shell
57 | #进入fortunes-zh的素材文件夹
58 | cd /usr/share/games/fortunes/
59 | #查看素材
60 | vi tang300
61 | ```
62 |
63 | 
64 |
65 | ### 打开唐诗
66 | 
67 |
68 | - ^[[32m《感遇·其一》^[[m
69 | - 这里面的^[是esc转义字符
70 | - 相当于"\033"
71 | - [32m代表绿的字体
72 | - ^[[m代表回到原始字体
73 | - 下面的33m意味着橙色字体
74 |
75 | 
76 |
77 | - 30~37 都可以设置并修改颜色 🎨
78 | - 也可以建立自己的彩色俗语库
79 |
80 | ### 总结 🤨
81 |
82 | - 下载了中 🀄️ 文谚语
83 | - 输出重定向了中文谚语
84 | - 理解词典和颜色
85 | - 下次讲什么?🤔
86 | - 下次再说!👋
87 |
88 | 
89 |
--------------------------------------------------------------------------------
/md/034-45583-桌面宠物_pet.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 | - 我们这次使用了tmux
11 | - tmux连接不同服务器可以有不同的session
12 | - 同一个session里面可以有多个窗口window
13 | - 同一个window里面可以有多个窗格pane
14 | - 如果只连一个服务器
15 | - 没有必要用session
16 | - 只用新建和切分window就够用了
17 | - ctrl+b c新建窗口
18 | - ctrl+b %拆分窗格pane
19 | - ctrl+b 方向键选择窗格pane
20 | - ctrl+b x 关闭窗格pane
21 | - 还有什么好玩的么?🤔
22 | - 我们看看桌面的小宠物
23 |
24 | ## oneko🐱
25 |
26 | #### 我们可以下载并运行这个小应用
27 |
28 | ```shell
29 | sudo apt install oneko
30 | oneko
31 | ```
32 |
33 | - 然后就会出现一只小猫 🐱
34 | - 小猫会跟着你的鼠标走
35 | - 走到你的鼠标 🐭 附近她还会撒娇
36 |
37 | 
38 |
39 | - 可以把桌宠换成狗 🐶、木之本樱?大道寺知世?
40 | - 可以控制时间间隔、移动速度
41 | - -towindow 可以让她指定停靠在某个窗口上
42 | - 可以设置前景背景色
43 | - 我们再来看另一个桌宠
44 |
45 | ## xeyes👀
46 |
47 | #### 可以下载并运行这个程序
48 |
49 | ```shell
50 | sudo apt install xeyes
51 | xeyes
52 | ```
53 |
54 | - 出现一个眼睛 👀
55 | - 眼球追着鼠标走
56 |
57 | 
58 |
59 | #### 总结 🤨
60 |
61 | - 这次下载了两个桌面宠物
62 | - 配置了参数
63 | - 其实浏览器火狐 🦊 也算是桌面应用啊!
64 | - 下次我们来看看火狐 🤔
65 | - 下次再说!👋
66 |
--------------------------------------------------------------------------------
/md/035-45586-火狐_firefox.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了两个桌宠
14 | - oneko🐱
15 | - xeyes👀
16 |
17 | 这次我们来看看这个火狐~🦊
18 |
19 | ## 火狐 🦊
20 |
21 | 看看当前版本,看是否可以更新,如果需要更新就更新一下:
22 |
23 | ```shell
24 | firefox -v
25 | apt search firefox
26 | sudo apt upgrade
27 | ```
28 |
29 | ### 打开火狐 🦊
30 |
31 | 直接运行程序,浏览网页:
32 |
33 | ```shell
34 | #打开oeasy.org
35 | firefox oeasy.org
36 | #在两个标签页中打开网站
37 | firefox lanqiao.cn bilibili.com
38 | ```
39 |
40 | - 使用 ctrl+c结束进程
41 | - 如果想在桌面创建快捷方式
42 | - 首先需要明确软件包位置
43 | - 使用灵魂三问吗
44 |
45 | ### 添加桌面超链接
46 |
47 | - 创建一个桌面的快捷方式launcher
48 |
49 | 
50 |
51 | - 然后进行设置
52 |
53 | ### 设置launcher
54 |
55 | 
56 |
57 | ### 总结 🤨
58 |
59 | - 这次升级了浏览器火狐 🦊
60 | - 制作了桌面上的快捷方式
61 | - gui 和 cli 之间的路径有什么关系呢?
62 | - 下次再说!👋
63 |
--------------------------------------------------------------------------------
/md/035-733260-终端浏览器_w3m.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 分屏工具tmux
8 |
9 | ## 回忆
10 | - 我们上次使用了tmux
11 | - tmux连接不同服务器可以有不同的session
12 | - 同一个session里面可以有多个窗口window
13 | - 同一个window里面可以有多个窗格pane
14 | - 只用新建和切分window就够用了
15 | - ctrl+b c新建窗口
16 | - ctrl+b %或"拆分窗格pane
17 | - ctrl+b 方向键选择窗格pane
18 | - ctrl+b x 关闭窗格pane
19 | - 还有什么好玩的么?
20 |
21 | ### 终端浏览器
22 |
23 | - 安装
24 | - sudo apt install w3m
25 | - sudo apt install w3m-img
26 |
27 | 
28 |
29 | - 默认颜色有点看不清楚
30 | - 可以调整终端颜色方案
31 |
32 | - 访问网页
33 | - w3m oeasy.org
34 |
35 | ### 常用方法
36 |
37 | 
38 |
39 | - 远程和本地的html都可以访问
40 | - 这个浏览器浏览有什么快捷键吗?
41 |
42 | ### 查看帮助
43 |
44 | - 在浏览状态下按H
45 |
46 | 
47 |
48 | ### 总结 🤨
49 | - 这次我们研究了终端上的浏览器
50 | - w3m
51 | - 可以浏览各种网页
52 | - 还是很好玩的😄
53 | - 还有什么好玩的吗?
54 | - 下次再说!👋
55 |
56 |
--------------------------------------------------------------------------------
/md/036-45583-桌面宠物_pet.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 | - 我们这次使用了tmux
11 | - tmux连接不同服务器可以有不同的session
12 | - 同一个session里面可以有多个窗口window
13 | - 同一个window里面可以有多个窗格pane
14 | - 如果只连一个服务器
15 | - 没有必要用session
16 | - 只用新建和切分window就够用了
17 | - ctrl+b c新建窗口
18 | - ctrl+b %拆分窗格pane
19 | - ctrl+b 方向键选择窗格pane
20 | - ctrl+b x 关闭窗格pane
21 | - 还有什么好玩的么?🤔
22 | - 我们看看桌面的小宠物
23 |
24 | ## oneko🐱
25 |
26 | #### 我们可以下载并运行这个小应用
27 |
28 | ```shell
29 | sudo apt install oneko
30 | oneko
31 | ```
32 |
33 | - 然后就会出现一只小猫 🐱
34 | - 小猫会跟着你的鼠标走
35 | - 走到你的鼠标 🐭 附近她还会撒娇
36 |
37 | 
38 |
39 | - 可以把桌宠换成狗 🐶、木之本樱?大道寺知世?
40 | - 可以控制时间间隔、移动速度
41 | - -towindow 可以让她指定停靠在某个窗口上
42 | - 可以设置前景背景色
43 | - 我们再来看另一个桌宠
44 |
45 | ## xeyes👀
46 |
47 | #### 可以下载并运行这个程序
48 |
49 | ```shell
50 | sudo apt install xeyes
51 | xeyes
52 | ```
53 |
54 | - 出现一个眼睛 👀
55 | - 眼球追着鼠标走
56 |
57 | 
58 |
59 | #### 总结 🤨
60 |
61 | - 这次下载了两个桌面宠物
62 | - 配置了参数
63 | - 其实浏览器火狐 🦊 也算是桌面应用啊!
64 | - 下次我们来看看火狐 🤔
65 | - 下次再说!👋
66 |
--------------------------------------------------------------------------------
/md/036-45587-文件管理器_nautilus.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了火狐 🦊
14 | - 火狐的位置
15 | - 用命令行打开多个网址
16 | - 火狐 🦊 的升级
17 | - 火狐 🦊 桌面建立快捷方式
18 |
19 | 那么我们可以知道桌面快捷方式文件的名称么?
20 |
21 | ## 从文件管理器 🗂 到命令行 📟
22 |
23 | 
24 |
25 | 按住文件,拖动到 terminal📟 上面,这样我们就知道文件的绝对路径了。文件夹也可以拖动,我们也可以先打上命令,然后把文件作为参数拖动过来。
26 |
27 | 
28 |
29 | ## 从命令行 📟 到文件管理器 🗂
30 |
31 | 我们首先在命令行的位置输入 pwd,把路径复制到剪贴板:
32 |
33 | 
34 |
35 | 之后把路径粘贴到文件管理器的地址栏,这样就可以到达命令行所在的位置了。
36 |
37 | **也可以用 nautilus 命令打开文件管理器,让我们一起来看看吧~**
38 |
39 | ## nautilus
40 |
41 | ```shell
42 | sudo apt update
43 | sudo apt install nautilus
44 | nautilus .
45 | nautilus /etc
46 | ```
47 |
48 | - `nautilus .` 打开当前路径
49 | - `nautilus /etc` 打开根下的 etc 文件夹
50 |
51 | 然后使用 ctrl+c 结束进程。
52 |
53 | ### 总结 🤨
54 |
55 | - 这次了解了 gui(图形用户界面)和 cli(命令行界面)之间关系
56 | - 可以把文件从 gui 拖到 cli
57 | - 也可以吧 cli 的路径在 gui 中打开
58 | - 了解了桌面上的快捷方式的本质是个文件
59 | - 图形用户界面还有什么可玩的呢?
60 | - 下次再说!👋
61 |
--------------------------------------------------------------------------------
/md/036-733260-终端浏览器_w3m.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 分屏工具tmux
8 |
9 | ## 回忆
10 | - 我们上次使用了tmux
11 | - tmux连接不同服务器可以有不同的session
12 | - 同一个session里面可以有多个窗口window
13 | - 同一个window里面可以有多个窗格pane
14 | - 只用新建和切分window就够用了
15 | - ctrl+b c新建窗口
16 | - ctrl+b %或"拆分窗格pane
17 | - ctrl+b 方向键选择窗格pane
18 | - ctrl+b x 关闭窗格pane
19 | - 还有什么好玩的么?
20 |
21 | ### 终端浏览器
22 |
23 | - 安装
24 | - sudo apt install w3m
25 | - sudo apt install w3m-img
26 |
27 | 
28 |
29 | - 默认颜色有点看不清楚
30 | - 可以调整终端颜色方案
31 |
32 | - 访问网页
33 | - w3m oeasy.org
34 |
35 | ### 常用方法
36 |
37 | 
38 |
39 | - 远程和本地的html都可以访问
40 | - 这个浏览器浏览有什么快捷键吗?
41 |
42 | ### 查看帮助
43 |
44 | - 在浏览状态下按H
45 |
46 | 
47 |
48 | ### 总结 🤨
49 | - 这次我们研究了终端上的浏览器
50 | - w3m
51 | - 可以浏览各种网页
52 | - 还是很好玩的😄
53 | - 还有什么好玩的吗?
54 | - 下次再说!👋
55 |
56 |
--------------------------------------------------------------------------------
/md/037-45579-桌面环境_xfce.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了文件管理器和命令行终端互相交互
14 | - 用命令 nautilus 在文件管理器打开某路径
15 |
16 | **这次我们一起来看看 图形用户界面 (GUI) 的情况。**
17 |
18 | ### 图形界面和发行版的关系
19 |
20 | - 一个发行版可以使用多个图形界面
21 | - 常见的有
22 | - kde
23 | - gnome
24 | - xfce
25 |
26 | 下图是 debian 安装过程中的一步,可以多选图形用户界面,图形用户界面也是一种应用软件包。
27 |
28 | 
29 |
30 | ### KDE
31 |
32 | **KDE = K Desktop Environment**
33 |
34 | - KDE 桌面图形环境是 Linux 几大桌面里的老大
35 | - 第一个诞生出来的 linux 桌面环境 (1996 年,由德国人 Matthias Ettrich 发起的)
36 | - KDE 是为了类 unix 环境制作的 (unix、bsd 都能用)
37 | - KDE 基于 Qt
38 |
39 | 那什么是 Qt 呢?
40 |
41 | ### Qt
42 |
43 | - Qt 是一个开源的 C++ 跨平台图形界面开发库
44 | - Qt 是成形的开发用户界面开发平台
45 | - WPS 就是用 Qt 开发的
46 | - Qt 属于 Trolltech(直译为喷子科技),后被 nokia 收购,又被出售给 Digia
47 | - Qt 升级带动 KDE 升级,有一段 KDE 为了追 Qt4 新特性,重写了 KDE,稳定性降低,KDE4.2 才恢复,这段时间很多人转投 gnome。
48 |
49 | ### GNOME
50 |
51 | GNOME [ɡˈnoʊm] 两种发音 格弄姆,现在处于主流,以下发行版默认:
52 |
53 | - gui
54 | - rhel
55 | - centos
56 | - ubuntu
57 |
58 | GNOME 使用 C 语言编写,使用的库是 gtk。
59 |
60 | #### gtk
61 |
62 | - gtk+是 gnu 计划的一部分,使用 gpl 协议
63 | - 什么是gpl协议呢?
64 | - GNU 公共许可
65 | - 是一种开源协议
66 | - 如果你的软件中包含gpl的内容
67 | - 也必须开源
68 | - 那什么是gnu呢?
69 |
70 | 
71 |
72 | ### gnu
73 | - Gnu is Not Unix
74 | - 在at&t把unix商业化之后
75 | - 由stallman发起了free software revolution 自由软件革命
76 | - 后来演化为今天的open source movement 开源运动
77 | - 希望代码有全人类共有
78 | - 对于软件做开源、免费的限定
79 | - 希望把大资本屏蔽在外面
80 | - 这一情况发生在各个领域
81 | - 东方
82 | - v家
83 | - mmd
84 | - 等等
85 | - 软件领域就是gnu
86 | - gtk 的全称是 GIMP Toolkit
87 | - GIMP 是著名开源图像制作软件
88 | - 以下软件使用 gtk:
89 |
90 | - Inkscape
91 | - firefox
92 | - chrome
93 | - gnome
94 | - xfce
95 |
96 | ### Xfce
97 |
98 | - 发音就是四个字母
99 | - "Xfce" 的名字最初是代表的是"XForms Common Environment"
100 | - Xfce 是用 GTK2 toolkit 编写基于 c 语言
101 | - 轻量,占用资源少,速度快,适合老硬件
102 | - 历史悠久,96 年就有
103 | - 可用作 u 盘系统
104 | - linus 本人觉得好用
105 |
106 | #### 升级
107 |
108 | ```shell
109 | sudo apt update
110 | sudo apt upgrade xfce4
111 | ```
112 |
113 | ### 总结 🤨
114 |
115 | **查看当前 gui:**
116 |
117 | ```shell
118 | echo $DESKTOP_SESSION
119 | ```
120 |
121 | - 这次了解了各种 gui(估衣)🥋
122 | - 各种图形界面五光十色
123 | - 五色令人目盲 👁
124 | - 命令行才是根本!!!
125 | - 下次再说!👋
126 |
--------------------------------------------------------------------------------
/md/037-45583-桌面宠物_pet.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 | - 我们这次使用了tmux
11 | - tmux连接不同服务器可以有不同的session
12 | - 同一个session里面可以有多个窗口window
13 | - 同一个window里面可以有多个窗格pane
14 | - 如果只连一个服务器
15 | - 没有必要用session
16 | - 只用新建和切分window就够用了
17 | - ctrl+b c新建窗口
18 | - ctrl+b %拆分窗格pane
19 | - ctrl+b 方向键选择窗格pane
20 | - ctrl+b x 关闭窗格pane
21 | - 还有什么好玩的么?🤔
22 | - 我们看看桌面的小宠物
23 |
24 | ## oneko🐱
25 |
26 | #### 我们可以下载并运行这个小应用
27 |
28 | ```shell
29 | sudo apt install oneko
30 | oneko
31 | ```
32 |
33 | - 然后就会出现一只小猫 🐱
34 | - 小猫会跟着你的鼠标走
35 | - 走到你的鼠标 🐭 附近她还会撒娇
36 |
37 | 
38 |
39 | - 可以把桌宠换成狗 🐶、木之本樱?大道寺知世?
40 | - 可以控制时间间隔、移动速度
41 | - -towindow 可以让她指定停靠在某个窗口上
42 | - 可以设置前景背景色
43 | - 我们再来看另一个桌宠
44 |
45 | ## xeyes👀
46 |
47 | #### 可以下载并运行这个程序
48 |
49 | ```shell
50 | sudo apt install xeyes
51 | xeyes
52 | ```
53 |
54 | - 出现一个眼睛 👀
55 | - 眼球追着鼠标走
56 |
57 | 
58 |
59 | #### 总结 🤨
60 |
61 | - 这次下载了两个桌面宠物
62 | - 配置了参数
63 | - 其实浏览器火狐 🦊 也算是桌面应用啊!
64 | - 下次我们来看看火狐 🤔
65 | - 下次再说!👋
66 |
--------------------------------------------------------------------------------
/md/037-45586-火狐_firefox.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了两个桌宠
14 | - oneko🐱
15 | - xeyes👀
16 |
17 | 这次我们来看看这个火狐~🦊
18 |
19 | ## 火狐 🦊
20 |
21 | 看看当前版本,看是否可以更新,如果需要更新就更新一下:
22 |
23 | ```shell
24 | firefox -v
25 | apt search firefox
26 | sudo apt upgrade
27 | ```
28 |
29 | ### 打开火狐 🦊
30 |
31 | 直接运行程序,浏览网页:
32 |
33 | ```shell
34 | #打开oeasy.org
35 | firefox oeasy.org
36 | #在两个标签页中打开网站
37 | firefox lanqiao.cn bilibili.com
38 | ```
39 |
40 | - 使用 ctrl+c结束进程
41 | - 如果想在桌面创建快捷方式
42 | - 首先需要明确软件包位置
43 | - 使用灵魂三问吗
44 |
45 | ### 添加桌面超链接
46 |
47 | - 创建一个桌面的快捷方式launcher
48 |
49 | 
50 |
51 | - 然后进行设置
52 |
53 | ### 设置launcher
54 |
55 | 
56 |
57 | ### 总结 🤨
58 |
59 | - 这次升级了浏览器火狐 🦊
60 | - 制作了桌面上的快捷方式
61 | - gui 和 cli 之间的路径有什么关系呢?
62 | - 下次再说!👋
63 |
--------------------------------------------------------------------------------
/md/038-45566-总结.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 这一部分我们都讲了什么?
12 | - 各种 gui
13 | - qt 和 gtk 两个开源工具跨平台开发库
14 | - 发行版和 gui 之间的关系
15 | - 平铺桌面i3wm,bspwm更高效
16 |
17 | - 我们一起来回顾一下整个学习过程
18 | - 我们从零开始
19 | - 了解了一些关于 linux 基本的东西
20 | - 一起来回顾一下~
21 |
22 | ## 终端
23 |
24 | - linux 系统的基本逻辑
25 | - 什么是内核
26 | - uname
27 | - 什么是发行版
28 | - distro
29 | - 我在哪
30 | - pwd
31 |
32 | - 灵魂三问
33 | - 这儿都有啥
34 | - ls
35 | - 灵魂之问
36 | - whatis
37 | - 那啥在哪
38 | - whereis
39 | - 到底哪个
40 | - which
41 | - 详查手册
42 | - man
43 | - 清屏
44 | - clear
45 |
46 | ### 终端命令
47 |
48 | - 命令基本
49 | - 持续输出
50 | - yes
51 | - 软件包管理
52 | - apt
53 | - 标志
54 | - linuxlogo
55 | - 字符画
56 | - figlet
57 | - 风格文字
58 | - toilet
59 |
60 | - 动态效果
61 | - 蒸汽机车
62 | - sl
63 | - 黑客帝国
64 | - cmatrix
65 | - 满屏乱码
66 | - bb
67 | - 装酷屏幕
68 | - hollywood
69 |
70 | ### 深入理解终端
71 |
72 | - 深入软件
73 | - 应用管理
74 | - aptitude
75 | - 牛说
76 | - cowsay
77 | - 管道
78 | - pipe(很重要)
79 | - 字符图
80 | - asciiview
81 | - 随机笑话
82 | - fortune
83 | - 中文诗词
84 | - fortune-zh
85 |
86 | ## 桌面命令
87 |
88 | - 桌面宠物
89 | - pet
90 | - 火狐
91 | - firefox
92 | - 文件管理器
93 | - nautilus
94 | - 用户界面
95 | - xfce
96 |
97 | ### 总结 🤨
98 |
99 | - 我们熟悉了基本软件包的使用
100 | - 本地的dpkg
101 | - 远程的apt
102 | - 安装、卸载、搜索、查看
103 | - 了解了 gui 和 cli 的关系
104 |
105 | 
106 |
107 | - 体会到命令行才是根本!!!
108 | - 后面讲什么呢?🤔
109 | - 下一个系列再说!👋
110 |
--------------------------------------------------------------------------------
/md/038-45586-火狐_firefox.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了两个桌宠
14 | - oneko🐱
15 | - xeyes👀
16 |
17 | 这次我们来看看这个火狐~🦊
18 |
19 | ## 火狐 🦊
20 |
21 | 看看当前版本,看是否可以更新,如果需要更新就更新一下:
22 |
23 | ```shell
24 | firefox -v
25 | apt search firefox
26 | sudo apt upgrade
27 | ```
28 |
29 | ### 打开火狐 🦊
30 |
31 | 直接运行程序,浏览网页:
32 |
33 | ```shell
34 | #打开oeasy.org
35 | firefox oeasy.org
36 | #在两个标签页中打开网站
37 | firefox lanqiao.cn bilibili.com
38 | ```
39 |
40 | - 使用 ctrl+c结束进程
41 | - 如果想在桌面创建快捷方式
42 | - 首先需要明确软件包位置
43 | - 使用灵魂三问吗
44 |
45 | ### 添加桌面超链接
46 |
47 | - 创建一个桌面的快捷方式launcher
48 |
49 | 
50 |
51 | - 然后进行设置
52 |
53 | ### 设置launcher
54 |
55 | 
56 |
57 | ### 总结 🤨
58 |
59 | - 这次升级了浏览器火狐 🦊
60 | - 制作了桌面上的快捷方式
61 | - gui 和 cli 之间的路径有什么关系呢?
62 | - 下次再说!👋
63 |
--------------------------------------------------------------------------------
/md/038-45587-文件管理器_nautilus.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了火狐 🦊
14 | - 火狐的位置
15 | - 用命令行打开多个网址
16 | - 火狐 🦊 的升级
17 | - 火狐 🦊 桌面建立快捷方式
18 |
19 | 那么我们可以知道桌面快捷方式文件的名称么?
20 |
21 | ## 从文件管理器 🗂 到命令行 📟
22 |
23 | 
24 |
25 | 按住文件,拖动到 terminal📟 上面,这样我们就知道文件的绝对路径了。文件夹也可以拖动,我们也可以先打上命令,然后把文件作为参数拖动过来。
26 |
27 | 
28 |
29 | ## 从命令行 📟 到文件管理器 🗂
30 |
31 | 我们首先在命令行的位置输入 pwd,把路径复制到剪贴板:
32 |
33 | 
34 |
35 | 之后把路径粘贴到文件管理器的地址栏,这样就可以到达命令行所在的位置了。
36 |
37 | **也可以用 nautilus 命令打开文件管理器,让我们一起来看看吧~**
38 |
39 | ## nautilus
40 |
41 | ```shell
42 | sudo apt update
43 | sudo apt install nautilus
44 | nautilus .
45 | nautilus /etc
46 | ```
47 |
48 | - `nautilus .` 打开当前路径
49 | - `nautilus /etc` 打开根下的 etc 文件夹
50 |
51 | 然后使用 ctrl+c 结束进程。
52 |
53 | ### 总结 🤨
54 |
55 | - 这次了解了 gui(图形用户界面)和 cli(命令行界面)之间关系
56 | - 可以把文件从 gui 拖到 cli
57 | - 也可以吧 cli 的路径在 gui 中打开
58 | - 了解了桌面上的快捷方式的本质是个文件
59 | - 图形用户界面还有什么可玩的呢?
60 | - 下次再说!👋
61 |
--------------------------------------------------------------------------------
/md/039-45579-桌面环境_xfce.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了文件管理器和命令行终端互相交互
14 | - 用命令 nautilus 在文件管理器打开某路径
15 |
16 | **这次我们一起来看看 图形用户界面 (GUI) 的情况。**
17 |
18 | ### 图形界面和发行版的关系
19 |
20 | - 一个发行版可以使用多个图形界面
21 | - 常见的有
22 | - kde
23 | - gnome
24 | - xfce
25 |
26 | 下图是 debian 安装过程中的一步,可以多选图形用户界面,图形用户界面也是一种应用软件包。
27 |
28 | 
29 |
30 | ### KDE
31 |
32 | **KDE = K Desktop Environment**
33 |
34 | - KDE 桌面图形环境是 Linux 几大桌面里的老大
35 | - 第一个诞生出来的 linux 桌面环境 (1996 年,由德国人 Matthias Ettrich 发起的)
36 | - KDE 是为了类 unix 环境制作的 (unix、bsd 都能用)
37 | - KDE 基于 Qt
38 |
39 | 那什么是 Qt 呢?
40 |
41 | ### Qt
42 |
43 | - Qt 是一个开源的 C++ 跨平台图形界面开发库
44 | - Qt 是成形的开发用户界面开发平台
45 | - WPS 就是用 Qt 开发的
46 | - Qt 属于 Trolltech(直译为喷子科技),后被 nokia 收购,又被出售给 Digia
47 | - Qt 升级带动 KDE 升级,有一段 KDE 为了追 Qt4 新特性,重写了 KDE,稳定性降低,KDE4.2 才恢复,这段时间很多人转投 gnome。
48 |
49 | ### GNOME
50 |
51 | GNOME [ɡˈnoʊm] 两种发音 格弄姆,现在处于主流,以下发行版默认:
52 |
53 | - gui
54 | - rhel
55 | - centos
56 | - ubuntu
57 |
58 | GNOME 使用 C 语言编写,使用的库是 gtk。
59 |
60 | #### gtk
61 |
62 | - gtk+是 gnu 计划的一部分,使用 gpl 协议
63 | - 什么是gpl协议呢?
64 | - GNU 公共许可
65 | - 是一种开源协议
66 | - 如果你的软件中包含gpl的内容
67 | - 也必须开源
68 | - 那什么是gnu呢?
69 |
70 | 
71 |
72 | ### gnu
73 | - Gnu is Not Unix
74 | - 在at&t把unix商业化之后
75 | - 由stallman发起了free software revolution 自由软件革命
76 | - 后来演化为今天的open source movement 开源运动
77 | - 希望代码有全人类共有
78 | - 对于软件做开源、免费的限定
79 | - 希望把大资本屏蔽在外面
80 | - 这一情况发生在各个领域
81 | - 东方
82 | - v家
83 | - mmd
84 | - 等等
85 | - 软件领域就是gnu
86 | - gtk 的全称是 GIMP Toolkit
87 | - GIMP 是著名开源图像制作软件
88 | - 以下软件使用 gtk:
89 |
90 | - Inkscape
91 | - firefox
92 | - chrome
93 | - gnome
94 | - xfce
95 |
96 | ### Xfce
97 |
98 | - 发音就是四个字母
99 | - "Xfce" 的名字最初是代表的是"XForms Common Environment"
100 | - Xfce 是用 GTK2 toolkit 编写基于 c 语言
101 | - 轻量,占用资源少,速度快,适合老硬件
102 | - 历史悠久,96 年就有
103 | - 可用作 u 盘系统
104 | - linus 本人觉得好用
105 |
106 | #### 升级
107 |
108 | ```shell
109 | sudo apt update
110 | sudo apt upgrade xfce4
111 | ```
112 |
113 | ### 总结 🤨
114 |
115 | **查看当前 gui:**
116 |
117 | ```shell
118 | echo $DESKTOP_SESSION
119 | ```
120 |
121 | - 这次了解了各种 gui(估衣)🥋
122 | - 各种图形界面五光十色
123 | - 五色令人目盲 👁
124 | - 命令行才是根本!!!
125 | - 下次再说!👋
126 |
--------------------------------------------------------------------------------
/md/039-45587-文件管理器_nautilus.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了火狐 🦊
14 | - 火狐的位置
15 | - 用命令行打开多个网址
16 | - 火狐 🦊 的升级
17 | - 火狐 🦊 桌面建立快捷方式
18 |
19 | 那么我们可以知道桌面快捷方式文件的名称么?
20 |
21 | ## 从文件管理器 🗂 到命令行 📟
22 |
23 | 
24 |
25 | 按住文件,拖动到 terminal📟 上面,这样我们就知道文件的绝对路径了。文件夹也可以拖动,我们也可以先打上命令,然后把文件作为参数拖动过来。
26 |
27 | 
28 |
29 | ## 从命令行 📟 到文件管理器 🗂
30 |
31 | 我们首先在命令行的位置输入 pwd,把路径复制到剪贴板:
32 |
33 | 
34 |
35 | 之后把路径粘贴到文件管理器的地址栏,这样就可以到达命令行所在的位置了。
36 |
37 | **也可以用 nautilus 命令打开文件管理器,让我们一起来看看吧~**
38 |
39 | ## nautilus
40 |
41 | ```shell
42 | sudo apt update
43 | sudo apt install nautilus
44 | nautilus .
45 | nautilus /etc
46 | ```
47 |
48 | - `nautilus .` 打开当前路径
49 | - `nautilus /etc` 打开根下的 etc 文件夹
50 |
51 | 然后使用 ctrl+c 结束进程。
52 |
53 | ### 总结 🤨
54 |
55 | - 这次了解了 gui(图形用户界面)和 cli(命令行界面)之间关系
56 | - 可以把文件从 gui 拖到 cli
57 | - 也可以吧 cli 的路径在 gui 中打开
58 | - 了解了桌面上的快捷方式的本质是个文件
59 | - 图形用户界面还有什么可玩的呢?
60 | - 下次再说!👋
61 |
--------------------------------------------------------------------------------
/md/040-45566-总结.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 这一部分我们都讲了什么?
12 | - 各种 gui
13 | - qt 和 gtk 两个开源工具跨平台开发库
14 | - 发行版和 gui 之间的关系
15 | - 平铺桌面i3wm,bspwm更高效
16 |
17 | - 我们一起来回顾一下整个学习过程
18 | - 我们从零开始
19 | - 了解了一些关于 linux 基本的东西
20 | - 一起来回顾一下~
21 |
22 | ## 终端
23 |
24 | - linux 系统的基本逻辑
25 | - 什么是内核
26 | - uname
27 | - 什么是发行版
28 | - distro
29 | - 我在哪
30 | - pwd
31 |
32 | - 灵魂三问
33 | - 这儿都有啥
34 | - ls
35 | - 灵魂之问
36 | - whatis
37 | - 那啥在哪
38 | - whereis
39 | - 到底哪个
40 | - which
41 | - 详查手册
42 | - man
43 | - 清屏
44 | - clear
45 |
46 | ### 终端命令
47 |
48 | - 命令基本
49 | - 持续输出
50 | - yes
51 | - 软件包管理
52 | - apt
53 | - 标志
54 | - linuxlogo
55 | - 字符画
56 | - figlet
57 | - 风格文字
58 | - toilet
59 |
60 | - 动态效果
61 | - 蒸汽机车
62 | - sl
63 | - 黑客帝国
64 | - cmatrix
65 | - 满屏乱码
66 | - bb
67 | - 装酷屏幕
68 | - hollywood
69 |
70 | ### 深入理解终端
71 |
72 | - 深入软件
73 | - 应用管理
74 | - aptitude
75 | - 牛说
76 | - cowsay
77 | - 管道
78 | - pipe(很重要)
79 | - 字符图
80 | - asciiview
81 | - 随机笑话
82 | - fortune
83 | - 中文诗词
84 | - fortune-zh
85 |
86 | ## 桌面命令
87 |
88 | - 桌面宠物
89 | - pet
90 | - 火狐
91 | - firefox
92 | - 文件管理器
93 | - nautilus
94 | - 用户界面
95 | - xfce
96 |
97 | ### 总结 🤨
98 |
99 | - 我们熟悉了基本软件包的使用
100 | - 本地的dpkg
101 | - 远程的apt
102 | - 安装、卸载、搜索、查看
103 | - 了解了 gui 和 cli 的关系
104 |
105 | 
106 |
107 | - 体会到命令行才是根本!!!
108 | - 后面讲什么呢?🤔
109 | - 下一个系列再说!👋
110 |
--------------------------------------------------------------------------------
/md/040-45579-桌面环境_xfce.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | **上一部分我们都讲了什么?**🤔
12 |
13 | - 讲了文件管理器和命令行终端互相交互
14 | - 用命令 nautilus 在文件管理器打开某路径
15 |
16 | **这次我们一起来看看 图形用户界面 (GUI) 的情况。**
17 |
18 | ### 图形界面和发行版的关系
19 |
20 | - 一个发行版可以使用多个图形界面
21 | - 常见的有
22 | - kde
23 | - gnome
24 | - xfce
25 |
26 | 下图是 debian 安装过程中的一步,可以多选图形用户界面,图形用户界面也是一种应用软件包。
27 |
28 | 
29 |
30 | ### KDE
31 |
32 | **KDE = K Desktop Environment**
33 |
34 | - KDE 桌面图形环境是 Linux 几大桌面里的老大
35 | - 第一个诞生出来的 linux 桌面环境 (1996 年,由德国人 Matthias Ettrich 发起的)
36 | - KDE 是为了类 unix 环境制作的 (unix、bsd 都能用)
37 | - KDE 基于 Qt
38 |
39 | 那什么是 Qt 呢?
40 |
41 | ### Qt
42 |
43 | - Qt 是一个开源的 C++ 跨平台图形界面开发库
44 | - Qt 是成形的开发用户界面开发平台
45 | - WPS 就是用 Qt 开发的
46 | - Qt 属于 Trolltech(直译为喷子科技),后被 nokia 收购,又被出售给 Digia
47 | - Qt 升级带动 KDE 升级,有一段 KDE 为了追 Qt4 新特性,重写了 KDE,稳定性降低,KDE4.2 才恢复,这段时间很多人转投 gnome。
48 |
49 | ### GNOME
50 |
51 | GNOME [ɡˈnoʊm] 两种发音 格弄姆,现在处于主流,以下发行版默认:
52 |
53 | - gui
54 | - rhel
55 | - centos
56 | - ubuntu
57 |
58 | GNOME 使用 C 语言编写,使用的库是 gtk。
59 |
60 | #### gtk
61 |
62 | - gtk+是 gnu 计划的一部分,使用 gpl 协议
63 | - 什么是gpl协议呢?
64 | - GNU 公共许可
65 | - 是一种开源协议
66 | - 如果你的软件中包含gpl的内容
67 | - 也必须开源
68 | - 那什么是gnu呢?
69 |
70 | 
71 |
72 | ### gnu
73 | - Gnu is Not Unix
74 | - 在at&t把unix商业化之后
75 | - 由stallman发起了free software revolution 自由软件革命
76 | - 后来演化为今天的open source movement 开源运动
77 | - 希望代码有全人类共有
78 | - 对于软件做开源、免费的限定
79 | - 希望把大资本屏蔽在外面
80 | - 这一情况发生在各个领域
81 | - 东方
82 | - v家
83 | - mmd
84 | - 等等
85 | - 软件领域就是gnu
86 | - gtk 的全称是 GIMP Toolkit
87 | - GIMP 是著名开源图像制作软件
88 | - 以下软件使用 gtk:
89 |
90 | - Inkscape
91 | - firefox
92 | - chrome
93 | - gnome
94 | - xfce
95 |
96 | ### Xfce
97 |
98 | - 发音就是四个字母
99 | - "Xfce" 的名字最初是代表的是"XForms Common Environment"
100 | - Xfce 是用 GTK2 toolkit 编写基于 c 语言
101 | - 轻量,占用资源少,速度快,适合老硬件
102 | - 历史悠久,96 年就有
103 | - 可用作 u 盘系统
104 | - linus 本人觉得好用
105 |
106 | #### 升级
107 |
108 | ```shell
109 | sudo apt update
110 | sudo apt upgrade xfce4
111 | ```
112 |
113 | ### 总结 🤨
114 |
115 | **查看当前 gui:**
116 |
117 | ```shell
118 | echo $DESKTOP_SESSION
119 | ```
120 |
121 | - 这次了解了各种 gui(估衣)🥋
122 | - 各种图形界面五光十色
123 | - 五色令人目盲 👁
124 | - 命令行才是根本!!!
125 | - 下次再说!👋
126 |
--------------------------------------------------------------------------------
/md/041-45566-总结.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 本章回顾
8 |
9 | ## 我们来回顾一下 😌
10 |
11 | - 这一部分我们都讲了什么?
12 | - 各种 gui
13 | - qt 和 gtk 两个开源工具跨平台开发库
14 | - 发行版和 gui 之间的关系
15 | - 平铺桌面i3wm,bspwm更高效
16 |
17 | - 我们一起来回顾一下整个学习过程
18 | - 我们从零开始
19 | - 了解了一些关于 linux 基本的东西
20 | - 一起来回顾一下~
21 |
22 | ## 终端
23 |
24 | - linux 系统的基本逻辑
25 | - 什么是内核
26 | - uname
27 | - 什么是发行版
28 | - distro
29 | - 我在哪
30 | - pwd
31 |
32 | - 灵魂三问
33 | - 这儿都有啥
34 | - ls
35 | - 灵魂之问
36 | - whatis
37 | - 那啥在哪
38 | - whereis
39 | - 到底哪个
40 | - which
41 | - 详查手册
42 | - man
43 | - 清屏
44 | - clear
45 |
46 | ### 终端命令
47 |
48 | - 命令基本
49 | - 持续输出
50 | - yes
51 | - 软件包管理
52 | - apt
53 | - 标志
54 | - linuxlogo
55 | - 字符画
56 | - figlet
57 | - 风格文字
58 | - toilet
59 |
60 | - 动态效果
61 | - 蒸汽机车
62 | - sl
63 | - 黑客帝国
64 | - cmatrix
65 | - 满屏乱码
66 | - bb
67 | - 装酷屏幕
68 | - hollywood
69 |
70 | ### 深入理解终端
71 |
72 | - 深入软件
73 | - 应用管理
74 | - aptitude
75 | - 牛说
76 | - cowsay
77 | - 管道
78 | - pipe(很重要)
79 | - 字符图
80 | - asciiview
81 | - 随机笑话
82 | - fortune
83 | - 中文诗词
84 | - fortune-zh
85 |
86 | ## 桌面命令
87 |
88 | - 桌面宠物
89 | - pet
90 | - 火狐
91 | - firefox
92 | - 文件管理器
93 | - nautilus
94 | - 用户界面
95 | - xfce
96 |
97 | ### 总结 🤨
98 |
99 | - 我们熟悉了基本软件包的使用
100 | - 本地的dpkg
101 | - 远程的apt
102 | - 安装、卸载、搜索、查看
103 | - 了解了 gui 和 cli 的关系
104 |
105 | 
106 |
107 | - 体会到命令行才是根本!!!
108 | - 后面讲什么呢?🤔
109 | - 下一个系列再说!👋
110 |
--------------------------------------------------------------------------------
/md/041-566031-路径_dirs_堆栈.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 路径堆栈
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了cd
12 | - 也就是chdir
13 | - 可以改变当前路径(pwd)
14 | - cd 是一个内建的命令
15 | - 可以在linux内核(kernel)找到相关的实现
16 | - 我想跳转到上次的文件夹可以么?
17 |
18 | ### 用户文件夹~
19 |
20 | - ~就是当前用户的用户文件夹
21 | - 当前用户是shiyanlou
22 | - 用户文件夹是
23 | - /home/shiyanlou
24 |
25 | 
26 |
27 | - cd ~
28 | - 可以进入用户文件夹
29 | - ls ~
30 | - 可以查看~下的文件和文件夹
31 |
32 | ### 上一个文件夹 -
33 |
34 | - - 就是上一个路径
35 | - 就是cd之前的路径
36 |
37 | 
38 |
39 | - 这样很容易来回跳转
40 | - 但是很久之前的路径找不到了怎么办?
41 |
42 | ### dirs
43 |
44 | - 我们可以试一下这个路径堆栈
45 | - dirs可以查询目前路径堆栈中所有的路径
46 |
47 | 
48 |
49 | - 可以支持绝对路径么?
50 |
51 | ### 绝对路径
52 |
53 | - 尝试
54 |
55 | 
56 |
57 | - 绝对路径也是支持的
58 | - 通过这个路径堆栈如何调转呢?
59 |
60 | ### 跳转
61 |
62 | - 可以用编号来跳转
63 |
64 | 
65 |
66 | - 那如何调整路径堆栈呢?
67 |
68 | ### popd弹栈
69 |
70 | 
71 |
72 | - 可以把前面的路径删除掉
73 | - 如果我想只删除某个路径呢?
74 |
75 | ### 指定路径删除
76 |
77 | 
78 |
79 | - 可以删除指定路径
80 | - 1号路径autumn
81 |
82 | ### 总结
83 | - 我们这次研究了路径堆栈
84 | - dirs
85 | - pushd
86 | - popd
87 | - 可以控制一个路径堆栈
88 | - 这样跳转的时候就可以快速进行跳转
89 | - 不用来回来打路径了
90 | - 可以文件夹和文件可以复制么?🤔
91 | - 下次再说👋
92 |
--------------------------------------------------------------------------------
/md/043-802603-查找文件_find_输出文件的绝对路径_realpath.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 目录跳转
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了cd
12 | - 也就是chdir
13 | - 可以改变当前路径(pwd)
14 | - cd 是一个内建的命令
15 | - 可以在linux内核(kernel)找到相关的实现
16 |
17 | 
18 |
19 | - 相对路径有点抽象
20 | - 可以将相对路径
21 | - 转化为绝对路径吗?🤔
22 |
23 | ### realpath
24 |
25 | 
26 |
27 | - 确实可以得到文件的绝对路径
28 | - 可以将绝对路径和文件名合并吗?
29 |
30 | ### ls -ld /path/a.txt
31 |
32 | 
33 |
34 | - 好像这个 -d 参数可以
35 |
36 | 
37 |
38 | - 如果只要路径和文件名
39 |
40 | 
41 |
42 | - 不过有的时候我不知道passwd的位置怎么办呢?
43 |
44 | ### find 命令
45 |
46 | - find / -name "passwd"
47 | - 在根下(/)
48 | - 查找名为passwd的文件
49 |
50 | 
51 |
52 | - 权限不够
53 |
54 | ### sudo提权
55 |
56 | - 权限依然不够
57 |
58 | 
59 |
60 | - 我不想看到这些error信息
61 |
62 | ### 跳过error
63 |
64 | - 只输出标准输出流(1)
65 | - 将错误输出(2) 重定向到 黑洞 (/dev/null)
66 |
67 | 
68 |
69 | - 有的时候不清楚文件名
70 | - 可以用模糊查询吗?
71 |
72 | ### 模糊查询
73 |
74 | - 先建环境
75 |
76 | 
77 |
78 | - 通配符 2 种
79 | - *
80 | - 0到任意多个任意字符
81 | - ?
82 | - 1个任意字符
83 | ### 总结🤔
84 | - 这次研究了
85 | - realpath
86 | - 可以将相对路径输出为绝对路径
87 | - find
88 | - 可以根据文件名来查询文件
89 | - 通配符有两个
90 | - *
91 | - ?
92 | - 路径好多好复杂
93 | - 可以把曾经进入过的路径记录下来吗?
94 |
95 | 
96 |
97 | - 下次再说👋
98 |
--------------------------------------------------------------------------------
/md/044-565280-查看文件信息_stat.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 文件存储信息(stat)
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了ln
12 | - ln指的是链接(link)
13 | - 可以建立硬链接、软链接
14 | - 硬链接
15 | - 直接指向原来文件所在的硬盘位置
16 | - 指向索引节点(inode)
17 | - 索引节点被引用数量+1
18 | - 如果源文件被删除
19 | - 硬链接仍然指向索引节点(inode)
20 | - 软链接
21 | - 指向原来的文件而不是索引节点
22 | - 所以如果源文件被删除
23 | - 软链接指向目标消失
24 | - 也就失效了
25 | - 这个索引节点究竟长什么样子?🤔
26 | - 背后又是什么原理?
27 |
28 | ### 构建环境
29 |
30 | - 先建立
31 | - 源
32 | - 软链接
33 | - 硬链接
34 |
35 | 
36 |
37 | - 用stat 观察文件
38 |
39 |
40 | ### stat
41 |
42 | - 这三个文件都不大
43 | - 可以看到source和hardlink对应同一个索引节点(inode)
44 | - symboliclink 引用到一个新的索引节点
45 |
46 | 
47 |
48 | - 索引节点上面引用数为2
49 | - 如果我们删除掉hardlink
50 | - 引用数会有变化么?
51 |
52 | ### 删除硬链接
53 |
54 | 
55 |
56 | - 删除之后引用数确实少了1
57 | - 如果再把source删掉
58 | - 应用数为0
59 | - 就可以被删掉用作别的用途了
60 | - 那究竟什么是inode呢
61 |
62 | ### inode
63 |
64 | - inode存储着文件的元数据
65 | - 元数据中包括
66 | - 大小
67 | - 硬链接数
68 | - 权限
69 | - 最近访问
70 | - 最近更改
71 | - 最近打开时间
72 | - blocks等
73 |
74 | 
75 |
76 | - blocks是硬盘上具体存储文件内容的块
77 | - 落实到物理硬盘的扇区上
78 |
79 | - 我们看看python的那个软链接
80 |
81 | ### 观察
82 |
83 | 
84 |
85 | - 这个python是一个符号链接
86 | - 链接到python2.7
87 | - python2.7文件不小
88 | - 有6816块
89 | - 我想把python链接到python3可以么?
90 | - 首先看看什么是python3
91 |
92 | ### 观察
93 |
94 | 
95 |
96 | - python3也是一个软链接
97 | - 指向python3.5
98 | - python3.5文件不小
99 | - 8712块
100 | - 比python2.7的6816块大
101 | - 我可以让python软链接指向python3.5么?
102 |
103 | ### 查文档
104 |
105 | 
106 |
107 | - -f 强制替换
108 | - 去试试
109 |
110 | ### 更新软链接
111 |
112 | 
113 |
114 | - 这样我们就把这个软链接更新了
115 |
116 | ### 总结
117 |
118 | - 我们这次研究了文件存储信息
119 | - stat
120 | - stat可以显示文件的元数据,包括
121 | - 大小
122 | - 硬链接数
123 | - 权限
124 | - 最近访问
125 | - 最近更改
126 | - 最近打开时间
127 | - blocks等
128 | - 如果一个索引节点(inode)被引用数为0
129 | - 那么这个索引节点就可以被回收了
130 | - 这个就是硬链接的基础
131 | - 除了硬链接之外我们还有什么办法定义命令吗?🤔
132 | - 下次再说👋
133 |
--------------------------------------------------------------------------------
/md/044-566031-路径_dirs_堆栈.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 路径堆栈
8 |
9 | ## 回忆
10 |
11 | - 上次研究了
12 | - realpath
13 | - 可以将相对路径输出为绝对路径
14 | - find
15 | - 可以根据文件名来查询文件
16 | - 通配符有两个
17 | - *
18 | - ?
19 | - 路径好多好复杂
20 | - 可以把曾经进入过的路径记录下来吗?
21 |
22 | 
23 |
24 | ### 用户文件夹~
25 |
26 | - ~就是当前用户的用户文件夹
27 | - 当前用户是shiyanlou
28 | - 用户文件夹是
29 | - /home/shiyanlou
30 |
31 | 
32 |
33 | - cd ~
34 | - 可以进入用户文件夹
35 | - ls ~
36 | - 可以查看~下的文件和文件夹
37 |
38 | ### 上一个文件夹 -
39 |
40 | - - 就是上一个路径
41 | - 就是cd之前的路径
42 |
43 | 
44 |
45 | - 这样很容易来回跳转
46 | - 但是很久之前的路径找不到了怎么办?
47 |
48 | ### dirs
49 |
50 | - 我们可以试一下这个路径堆栈
51 | - dirs可以查询目前路径堆栈中所有的路径
52 |
53 | 
54 |
55 | - 可以支持绝对路径么?
56 |
57 | ### 绝对路径
58 |
59 | - 尝试
60 |
61 | 
62 |
63 | - 绝对路径也是支持的
64 | - 通过这个路径堆栈如何调转呢?
65 |
66 | ### 跳转
67 |
68 | - 可以用编号来跳转
69 |
70 | 
71 |
72 | - 那如何调整路径堆栈呢?
73 |
74 | ### popd弹栈
75 |
76 | 
77 |
78 | - 可以把前面的路径删除掉
79 | - 如果我想只删除某个路径呢?
80 |
81 | ### 指定路径删除
82 |
83 | 
84 |
85 | - 可以删除指定路径
86 | - 1号路径autumn
87 |
88 | ### 总结
89 | - 我们这次研究了路径堆栈
90 | - dirs
91 | - pushd
92 | - popd
93 | - 可以控制一个路径堆栈
94 | - 这样跳转的时候就可以快速进行跳转
95 | - 不用来回来打路径了
96 | - 可以文件夹和文件可以复制么?🤔
97 | - 下次再说👋
98 |
--------------------------------------------------------------------------------
/md/044-802603-查找文件_find_输出文件的绝对路径_realpath.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 目录跳转
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了cd
12 | - 也就是chdir
13 | - 可以改变当前路径(pwd)
14 | - cd 是一个内建的命令
15 | - 可以在linux内核(kernel)找到相关的实现
16 |
17 | 
18 |
19 | - 相对路径有点抽象
20 | - 可以将相对路径
21 | - 转化为绝对路径吗?🤔
22 |
23 | ### realpath
24 |
25 | 
26 |
27 | - 确实可以得到文件的绝对路径
28 | - 可以将绝对路径和文件名合并吗?
29 |
30 | ### ls -ld /path/a.txt
31 |
32 | 
33 |
34 | - 好像这个 -d 参数可以
35 |
36 | 
37 |
38 | - 如果只要路径和文件名
39 |
40 | 
41 |
42 | - 不过有的时候我不知道passwd的位置怎么办呢?
43 |
44 | ### find 命令
45 |
46 | - find / -name "passwd"
47 | - 在根下(/)
48 | - 查找名为passwd的文件
49 |
50 | 
51 |
52 | - 权限不够
53 |
54 | ### sudo提权
55 |
56 | - 权限依然不够
57 |
58 | 
59 |
60 | - 我不想看到这些error信息
61 |
62 | ### 跳过error
63 |
64 | - 只输出标准输出流(1)
65 | - 将错误输出(2) 重定向到 黑洞 (/dev/null)
66 |
67 | 
68 |
69 | - 有的时候不清楚文件名
70 | - 可以用模糊查询吗?
71 |
72 | ### 模糊查询
73 |
74 | - 先建环境
75 |
76 | 
77 |
78 | - 通配符 2 种
79 | - *
80 | - 0到任意多个任意字符
81 | - ?
82 | - 1个任意字符
83 | ### 总结🤔
84 | - 这次研究了
85 | - realpath
86 | - 可以将相对路径输出为绝对路径
87 | - find
88 | - 可以根据文件名来查询文件
89 | - 通配符有两个
90 | - *
91 | - ?
92 | - 路径好多好复杂
93 | - 可以把曾经进入过的路径记录下来吗?
94 |
95 | 
96 |
97 | - 下次再说👋
98 |
--------------------------------------------------------------------------------
/md/045-565281-别名_alias.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 别名(alias)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了文件存储信息
12 | - stat
13 | - stat可以显示文件的元数据,包括
14 | - 大小
15 | - 硬链接数
16 | - 权限
17 | - 最近访问
18 | - 最近更改
19 | - 最近打开时间
20 | - blocks等
21 | - 如果一个索引节点(inode)被引用数为0
22 | - 那么这个索引节点就可以被回收了
23 | - 这个就是硬链接的基础
24 | - 除了硬链接之外我们还有什么办法定义命令吗?
25 |
26 | ### alias
27 |
28 | - 我们看一些常用的命令
29 |
30 | 
31 |
32 | - 其实都是一些alias
33 | - 那么什么是alias呢?
34 |
35 | ### alias别名
36 |
37 | - alias
38 | - 发音 [ˈeɪliəs]
39 | - 意思是别名
40 | - 就是起绰号、外号
41 |
42 | 
43 |
44 | - 起个外号有什么用么?
45 |
46 | ### 自动加上参数
47 |
48 | 
49 |
50 | ### 简化命令
51 |
52 | ```
53 | alias
54 | ```
55 |
56 | - alias可以看到所有的别名
57 |
58 | 
59 |
60 | - 确实可以少打很多字
61 | - 每次都要先打alias
62 | - 然后才能用别名
63 | - 有点麻烦
64 | - 可以直接定义好吗?
65 |
66 | ### 定义
67 |
68 | - vi ~/.zshrc
69 | - 编辑这个zshell 的 run command
70 | - 系统每次初始化zsh都要运行这个文件
71 | - 把这句话加到最后一行
72 |
73 | ```
74 | alias ls='echo "Dir Size|Perms|Link Count|Owner|Group|Size|Mod.Time|Name"; ls -Fhls --color --group-directories-first'
75 | ```
76 |
77 | - :wq 保存并退出
78 | - 重启zsh
79 |
80 | 
81 |
82 | - ls命令有了标题行
83 |
84 | ### 别名和链接
85 |
86 | - alias和ln有什么不一样呢?
87 | - alias
88 | - 建立一个别名
89 | - 在~/.zshrc里面完成初始化
90 | - 直接就能用起来
91 | - alias改了就变化
92 | - ln
93 | - 建立一个链接
94 | - 有具体的文件
95 | - 即使是符号链接也有文件
96 | - 想要修改就要重新建立链接
97 |
98 |
99 | ### 总结
100 |
101 | - 这次我们研究了alias别名
102 | - 可以给命令起一些别名
103 | - 这些别名可以
104 | - 简化命令文本
105 | - 还可以为命令添加默认参数
106 | - 回到我们上次研究的那个一年四季
107 | - 可以删除文件和文件夹么?🤔
108 | - 下次再说👋
109 |
--------------------------------------------------------------------------------
/md/045-566031-路径_dirs_堆栈.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 路径堆栈
8 |
9 | ## 回忆
10 |
11 | - 上次研究了
12 | - realpath
13 | - 可以将相对路径输出为绝对路径
14 | - find
15 | - 可以根据文件名来查询文件
16 | - 通配符有两个
17 | - *
18 | - ?
19 | - 路径好多好复杂
20 | - 可以把曾经进入过的路径记录下来吗?
21 |
22 | 
23 |
24 | ### 用户文件夹~
25 |
26 | - ~就是当前用户的用户文件夹
27 | - 当前用户是shiyanlou
28 | - 用户文件夹是
29 | - /home/shiyanlou
30 |
31 | 
32 |
33 | - cd ~
34 | - 可以进入用户文件夹
35 | - ls ~
36 | - 可以查看~下的文件和文件夹
37 |
38 | ### 上一个文件夹 -
39 |
40 | - - 就是上一个路径
41 | - 就是cd之前的路径
42 |
43 | 
44 |
45 | - 这样很容易来回跳转
46 | - 但是很久之前的路径找不到了怎么办?
47 |
48 | ### dirs
49 |
50 | - 我们可以试一下这个路径堆栈
51 | - dirs可以查询目前路径堆栈中所有的路径
52 |
53 | 
54 |
55 | - 可以支持绝对路径么?
56 |
57 | ### 绝对路径
58 |
59 | - 尝试
60 |
61 | 
62 |
63 | - 绝对路径也是支持的
64 | - 通过这个路径堆栈如何调转呢?
65 |
66 | ### 跳转
67 |
68 | - 可以用编号来跳转
69 |
70 | 
71 |
72 | - 那如何调整路径堆栈呢?
73 |
74 | ### popd弹栈
75 |
76 | 
77 |
78 | - 可以把前面的路径删除掉
79 | - 如果我想只删除某个路径呢?
80 |
81 | ### 指定路径删除
82 |
83 | 
84 |
85 | - 可以删除指定路径
86 | - 1号路径autumn
87 |
88 | ### 总结
89 | - 我们这次研究了路径堆栈
90 | - dirs
91 | - pushd
92 | - popd
93 | - 可以控制一个路径堆栈
94 | - 这样跳转的时候就可以快速进行跳转
95 | - 不用来回来打路径了
96 | - 可以文件夹和文件可以复制么?🤔
97 | - 下次再说👋
98 |
--------------------------------------------------------------------------------
/md/047-732316-拷贝粘贴文件内容_pbcopy_pbpaste.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 拷贝粘贴文件内容_pbcopy_pbpaste
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了ln
12 | - ln指的是链接(link)
13 | - 可以建立硬链接、软链接
14 | - 硬链接
15 | - 直接指向原来文件所在的硬盘位置
16 | - 指向索引节点(inode)
17 | - 索引节点被引用数量+1
18 | - 如果源文件被删除
19 | - 硬链接仍然指向索引节点(inode)
20 | - 软链接
21 | - 指向原来的文件而不是索引节点
22 | - 所以如果源文件被删除
23 | - 软链接指向目标消失
24 | - 也就失效了
25 | - cp -l 拷贝的是一个硬链接
26 | - 如果我只想拷贝文件中的内容
27 | - 而不关心文件的各种信息
28 | - 有什么好方法吗?
29 |
30 | ### 准备环境
31 |
32 | - 首先制作一个oeasy.txt
33 |
34 | 
35 |
36 | - 有什么方法
37 | - 可以把这个文件的内容
38 | - 复制到剪贴板吗?
39 |
40 | ### 安装xclip
41 |
42 | - 首先是安装xclip
43 |
44 | 
45 |
46 | - 安装之后尝试使用
47 |
48 | ### 使用xclip
49 |
50 | 
51 |
52 | - 可是这样就真的输出到哪里了呢?
53 | - man xclip
54 |
55 | ### xclip文档
56 |
57 | 
58 |
59 | - 确实xclip将cat oeasy.txt的结果
60 | - 复制进入进入了xclip内部
61 | - 然后需要用-o 进行输出
62 |
63 | ### xclip 输出
64 |
65 | 
66 |
67 | - 确实可以进行输出
68 |
69 | 
70 |
71 | - 甚至可以进行输出重定向
72 | - 但是进入系统剪贴板了么?
73 |
74 | ### 尝试输出
75 |
76 | - 鼠标右键
77 |
78 | 
79 |
80 | - 这个内容没有进入系统剪贴板
81 | - 如何进入呢?
82 |
83 | ### 搜索帮助
84 |
85 | - 在帮助文件中搜索clipboard
86 |
87 | 
88 |
89 | - 找到方法
90 |
91 | ### 剪贴板
92 |
93 | - cat oeasy.txt | xclip -selection clipboard
94 |
95 | 
96 |
97 | - 就可以用了
98 |
99 | ### 总结
100 | - 这次研究了xclip
101 | - xclip 可以将文件内容输出到剪贴板
102 | - cat oeasy.txt | xclip -selection clipboard
103 | - 然后再粘贴到合适的地方
104 | - 纯键盘操作还是很方便的
105 | - 文件内容就这样被提取到了内存
106 |
107 | 
108 |
109 | - 文件内容之外
110 | - 文件还包括什么呢?
111 | - 文件本质是一个索引节点
112 | - 这个索引节点究竟长什么样子?🤔
113 | - 背后又是什么原理?🤔
114 | - 下次再说👋
115 |
--------------------------------------------------------------------------------
/md/048-565280-查看文件信息_stat.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 文件存储信息(stat)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了xclip
12 | - xclip 可以将文件内容输出到剪贴板
13 | - cat oeasy.txt | xclip -selection clipboard
14 | - 然后再粘贴到合适的地方
15 | - 纯键盘操作还是很方便的
16 | - 文件内容就这样被提取到了内存
17 |
18 | 
19 |
20 | - 文件内容之外
21 | - 文件还包括什么呢?
22 | - 文件本质是一个索引节点
23 | - 这个索引节点究竟长什么样子?🤔
24 | - 背后又是什么原理?🤔
25 |
26 | ### 构建环境
27 |
28 | - 先建立
29 | - 源
30 | - 软链接
31 | - 硬链接
32 |
33 | 
34 |
35 | - 用stat 观察文件
36 |
37 |
38 | ### stat
39 |
40 | - 这三个文件都不大
41 | - 可以看到source和hardlink对应同一个索引节点(inode)
42 | - symboliclink 引用到一个新的索引节点
43 |
44 | 
45 |
46 | - 索引节点上面引用数为2
47 | - 如果我们删除掉hardlink
48 | - 引用数会有变化么?
49 |
50 | ### 删除硬链接
51 |
52 | 
53 |
54 | - 删除之后引用数确实少了1
55 | - 如果再把source删掉
56 | - 应用数为0
57 | - 就可以被删掉用作别的用途了
58 | - 那究竟什么是inode呢
59 |
60 | ### inode
61 |
62 | - inode存储着文件的元数据
63 | - 元数据中包括
64 | - 大小
65 | - 硬链接数
66 | - 权限
67 | - 最近访问
68 | - 最近更改
69 | - 最近打开时间
70 | - blocks等
71 |
72 | 
73 |
74 | - blocks是硬盘上具体存储文件内容的块
75 | - 落实到物理硬盘的扇区上
76 |
77 | - 我们看看python的那个软链接
78 |
79 | ### 观察
80 |
81 | 
82 |
83 | - 这个python是一个符号链接
84 | - 链接到python2.7
85 | - python2.7文件不小
86 | - 有6816块
87 | - 我想把python链接到python3可以么?
88 | - 首先看看什么是python3
89 |
90 | ### 观察
91 |
92 | 
93 |
94 | - python3也是一个软链接
95 | - 指向python3.5
96 | - python3.5文件不小
97 | - 8712块
98 | - 比python2.7的6816块大
99 | - 我可以让python软链接指向python3.5么?
100 |
101 | ### 查文档
102 |
103 | 
104 |
105 | - -f 强制替换
106 | - 去试试
107 |
108 | ### 更新软链接
109 |
110 | 
111 |
112 | - 这样我们就把这个软链接更新了
113 |
114 | ### 总结
115 |
116 | - 我们这次研究了文件存储信息
117 | - stat
118 | - stat可以显示文件的元数据,包括
119 | - 大小
120 | - 硬链接数
121 | - 权限
122 | - 最近访问
123 | - 最近更改
124 | - 最近打开时间
125 | - blocks等
126 | - 如果一个索引节点(inode)被引用数为0
127 | - 那么这个索引节点就可以被回收了
128 | - 这个就是硬链接的基础
129 | - 除了硬链接之外我们还有什么办法定义命令吗?🤔
130 | - 下次再说👋
131 |
--------------------------------------------------------------------------------
/md/048-732316-拷贝粘贴文件内容_pbcopy_pbpaste.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 拷贝粘贴文件内容_pbcopy_pbpaste
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了ln
12 | - ln指的是链接(link)
13 | - 可以建立硬链接、软链接
14 | - 硬链接
15 | - 直接指向原来文件所在的硬盘位置
16 | - 指向索引节点(inode)
17 | - 索引节点被引用数量+1
18 | - 如果源文件被删除
19 | - 硬链接仍然指向索引节点(inode)
20 | - 软链接
21 | - 指向原来的文件而不是索引节点
22 | - 所以如果源文件被删除
23 | - 软链接指向目标消失
24 | - 也就失效了
25 | - cp -l 拷贝的是一个硬链接
26 | - 如果我只想拷贝文件中的内容
27 | - 而不关心文件的各种信息
28 | - 有什么好方法吗?
29 |
30 | ### 准备环境
31 |
32 | - 首先制作一个oeasy.txt
33 |
34 | 
35 |
36 | - 有什么方法
37 | - 可以把这个文件的内容
38 | - 复制到剪贴板吗?
39 |
40 | ### 安装xclip
41 |
42 | - 首先是安装xclip
43 |
44 | 
45 |
46 | - 安装之后尝试使用
47 |
48 | ### 使用xclip
49 |
50 | 
51 |
52 | - 可是这样就真的输出到哪里了呢?
53 | - man xclip
54 |
55 | ### xclip文档
56 |
57 | 
58 |
59 | - 确实xclip将cat oeasy.txt的结果
60 | - 复制进入进入了xclip内部
61 | - 然后需要用-o 进行输出
62 |
63 | ### xclip 输出
64 |
65 | 
66 |
67 | - 确实可以进行输出
68 |
69 | 
70 |
71 | - 甚至可以进行输出重定向
72 | - 但是进入系统剪贴板了么?
73 |
74 | ### 尝试输出
75 |
76 | - 鼠标右键
77 |
78 | 
79 |
80 | - 这个内容没有进入系统剪贴板
81 | - 如何进入呢?
82 |
83 | ### 搜索帮助
84 |
85 | - 在帮助文件中搜索clipboard
86 |
87 | 
88 |
89 | - 找到方法
90 |
91 | ### 剪贴板
92 |
93 | - cat oeasy.txt | xclip -selection clipboard
94 |
95 | 
96 |
97 | - 就可以用了
98 |
99 | ### 总结
100 | - 这次研究了xclip
101 | - xclip 可以将文件内容输出到剪贴板
102 | - cat oeasy.txt | xclip -selection clipboard
103 | - 然后再粘贴到合适的地方
104 | - 纯键盘操作还是很方便的
105 | - 文件内容就这样被提取到了内存
106 |
107 | 
108 |
109 | - 文件内容之外
110 | - 文件还包括什么呢?
111 | - 文件本质是一个索引节点
112 | - 这个索引节点究竟长什么样子?🤔
113 | - 背后又是什么原理?🤔
114 | - 下次再说👋
115 |
--------------------------------------------------------------------------------
/md/049-565280-查看文件信息_stat.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 文件存储信息(stat)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了xclip
12 | - xclip 可以将文件内容输出到剪贴板
13 | - cat oeasy.txt | xclip -selection clipboard
14 | - 然后再粘贴到合适的地方
15 | - 纯键盘操作还是很方便的
16 | - 文件内容就这样被提取到了内存
17 |
18 | 
19 |
20 | - 文件内容之外
21 | - 文件还包括什么呢?
22 | - 文件本质是一个索引节点
23 | - 这个索引节点究竟长什么样子?🤔
24 | - 背后又是什么原理?🤔
25 |
26 | ### 构建环境
27 |
28 | - 先建立
29 | - 源
30 | - 软链接
31 | - 硬链接
32 |
33 | 
34 |
35 | - 用stat 观察文件
36 |
37 |
38 | ### stat
39 |
40 | - 这三个文件都不大
41 | - 可以看到source和hardlink对应同一个索引节点(inode)
42 | - symboliclink 引用到一个新的索引节点
43 |
44 | 
45 |
46 | - 索引节点上面引用数为2
47 | - 如果我们删除掉hardlink
48 | - 引用数会有变化么?
49 |
50 | ### 删除硬链接
51 |
52 | 
53 |
54 | - 删除之后引用数确实少了1
55 | - 如果再把source删掉
56 | - 应用数为0
57 | - 就可以被删掉用作别的用途了
58 | - 那究竟什么是inode呢
59 |
60 | ### inode
61 |
62 | - inode存储着文件的元数据
63 | - 元数据中包括
64 | - 大小
65 | - 硬链接数
66 | - 权限
67 | - 最近访问
68 | - 最近更改
69 | - 最近打开时间
70 | - blocks等
71 |
72 | 
73 |
74 | - blocks是硬盘上具体存储文件内容的块
75 | - 落实到物理硬盘的扇区上
76 |
77 | - 我们看看python的那个软链接
78 |
79 | ### 观察
80 |
81 | 
82 |
83 | - 这个python是一个符号链接
84 | - 链接到python2.7
85 | - python2.7文件不小
86 | - 有6816块
87 | - 我想把python链接到python3可以么?
88 | - 首先看看什么是python3
89 |
90 | ### 观察
91 |
92 | 
93 |
94 | - python3也是一个软链接
95 | - 指向python3.5
96 | - python3.5文件不小
97 | - 8712块
98 | - 比python2.7的6816块大
99 | - 我可以让python软链接指向python3.5么?
100 |
101 | ### 查文档
102 |
103 | 
104 |
105 | - -f 强制替换
106 | - 去试试
107 |
108 | ### 更新软链接
109 |
110 | 
111 |
112 | - 这样我们就把这个软链接更新了
113 |
114 | ### 总结
115 |
116 | - 我们这次研究了文件存储信息
117 | - stat
118 | - stat可以显示文件的元数据,包括
119 | - 大小
120 | - 硬链接数
121 | - 权限
122 | - 最近访问
123 | - 最近更改
124 | - 最近打开时间
125 | - blocks等
126 | - 如果一个索引节点(inode)被引用数为0
127 | - 那么这个索引节点就可以被回收了
128 | - 这个就是硬链接的基础
129 | - 除了硬链接之外我们还有什么办法定义命令吗?🤔
130 | - 下次再说👋
131 |
--------------------------------------------------------------------------------
/md/049-565281-别名_alias.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 别名(alias)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了文件存储信息
12 | - stat
13 | - stat可以显示文件的元数据,包括
14 | - 大小
15 | - 硬链接数
16 | - 权限
17 | - 最近访问
18 | - 最近更改
19 | - 最近打开时间
20 | - blocks等
21 | - 如果一个索引节点(inode)被引用数为0
22 | - 那么这个索引节点就可以被回收了
23 | - 这个就是硬链接的基础
24 | - 除了硬链接之外我们还有什么办法定义命令吗?
25 |
26 | ### alias
27 |
28 | - 我们看一些常用的命令
29 |
30 | 
31 |
32 | - 其实都是一些alias
33 | - 那么什么是alias呢?
34 |
35 | ### alias别名
36 |
37 | - alias
38 | - 发音 [ˈeɪliəs]
39 | - 意思是别名
40 | - 就是起绰号、外号
41 |
42 | 
43 |
44 | - 起个外号有什么用么?
45 |
46 | ### 自动加上参数
47 |
48 | 
49 |
50 | ### 简化命令
51 |
52 | ```
53 | alias
54 | ```
55 |
56 | - alias可以看到所有的别名
57 |
58 | 
59 |
60 | - 确实可以少打很多字
61 | - 每次都要先打alias
62 | - 然后才能用别名
63 | - 有点麻烦
64 | - 可以直接定义好吗?
65 |
66 | ### 定义
67 |
68 | - vi ~/.zshrc
69 | - 编辑这个zshell 的 run command
70 | - 系统每次初始化zsh都要运行这个文件
71 | - 把这句话加到最后一行
72 |
73 | ```
74 | alias ls='echo "Dir Size|Perms|Link Count|Owner|Group|Size|Mod.Time|Name"; ls -Fhls --color --group-directories-first'
75 | ```
76 |
77 | - :wq 保存并退出
78 | - 重启zsh
79 |
80 | 
81 |
82 | - ls命令就有了标题行
83 | - 还有什么实用的别名吗?
84 |
85 | ### pbcopy
86 |
87 | - pbcopy是mac上面很好用的命令
88 |
89 | 
90 |
91 |
92 | - 作用是
93 | - 把输出到标准输出流的内容
94 | - 复制到剪贴板
95 | - 很像xclip
96 |
97 | ### 建立别名
98 |
99 | ```
100 | alias pbcopy='xclip -selection clipboard'
101 | alias pbpaste='xclip -selection clipboard -o'
102 | ```
103 |
104 | - 验证可用
105 |
106 | 
107 |
108 |
109 | - alias和ln有什么不一样呢?
110 |
111 | ### 别名和链接
112 |
113 | - alias
114 | - 建立一个别名
115 | - 在~/.zshrc里面完成初始化
116 | - 直接就能用起来
117 | - alias改了就变化
118 | - ln
119 | - 建立一个链接
120 | - 有具体的文件
121 | - 即使是符号链接也有文件
122 | - 想要修改就要重新建立链接
123 |
124 |
125 |
126 |
127 | ### 总结
128 |
129 | - 这次我们研究了alias别名
130 | - 可以给命令起一些别名
131 | - 这些别名可以
132 | - 简化命令文本
133 | - 还可以为命令添加默认参数
134 | - 回到我们上次研究的那个一年四季
135 | - 可以删除文件和文件夹么?🤔
136 | - 下次再说👋
137 |
--------------------------------------------------------------------------------
/md/049-566237-日历_cal.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 日期时间(date)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了date日期
12 | - 用各种方式显示日期时间
13 | - 可以用现成的套路
14 | - date -R
15 | - 也可以自定义
16 | - date "+%D-%T %z"
17 | - 每个文件都有三个时间元数据
18 | - access 上次读取时间
19 | - change 上次状态变化时间
20 | - modify 上次写文件时间
21 | - 我们这次都研究时间日期
22 | - 可以有个日历来看看吗?
23 |
24 | ### cal
25 |
26 | 
27 |
28 | - 这个程序看起来来自于bsd
29 |
30 | 
31 |
32 | ### 显示年历
33 |
34 | 
35 |
36 | 
37 |
38 | ### 显示某年
39 |
40 | 
41 |
42 | 
43 |
44 | ### 以某天为核心
45 |
46 | 
47 |
48 | 
49 |
50 | ### 前后月份
51 |
52 | 
53 |
54 | 
55 |
56 | ### 竖版日历
57 |
58 | 
59 |
60 | ### 日历历史
61 |
62 | 
63 |
64 | - cal程序来自于unix
65 | - ncal来自于freebsd
66 | - linux版本每一位都一点不差
67 | - 因为输出结果还需要交给别的程序
68 | - 即使只有7行数据
69 | - 也要输出8行
70 | - 多出的一行从solaris 8开始就成为惯例
71 | - 看到了3个过去的传奇系统
72 | - unix
73 | - bsd
74 | - solaris
75 |
76 | ### 总结
77 | - 这次我们研究了日历
78 | - 这个日历
79 | - 可以显示一个月的
80 | - 也可以显示前后几个月的
81 | - 还可以显示某一年的
82 | - 日历来自于unix
83 | - 不过这里面没有阴历
84 | - 就是初一十五那种东西
85 | - 我们可以在终端里面显示阴历么?🤔
86 | - 下次再说👋
87 |
--------------------------------------------------------------------------------
/md/050-565281-别名_alias.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 别名(alias)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了文件存储信息
12 | - stat
13 | - stat可以显示文件的元数据,包括
14 | - 大小
15 | - 硬链接数
16 | - 权限
17 | - 最近访问
18 | - 最近更改
19 | - 最近打开时间
20 | - blocks等
21 | - 如果一个索引节点(inode)被引用数为0
22 | - 那么这个索引节点就可以被回收了
23 | - 这个就是硬链接的基础
24 | - 除了硬链接之外我们还有什么办法定义命令吗?
25 |
26 | ### alias
27 |
28 | - 我们看一些常用的命令
29 |
30 | 
31 |
32 | - 其实都是一些alias
33 | - 那么什么是alias呢?
34 |
35 | ### alias别名
36 |
37 | - alias
38 | - 发音 [ˈeɪliəs]
39 | - 意思是别名
40 | - 就是起绰号、外号
41 |
42 | 
43 |
44 | - 起个外号有什么用么?
45 |
46 | ### 自动加上参数
47 |
48 | 
49 |
50 | ### 简化命令
51 |
52 | ```
53 | alias
54 | ```
55 |
56 | - alias可以看到所有的别名
57 |
58 | 
59 |
60 | - 确实可以少打很多字
61 | - 每次都要先打alias
62 | - 然后才能用别名
63 | - 有点麻烦
64 | - 可以直接定义好吗?
65 |
66 | ### 定义
67 |
68 | - vi ~/.zshrc
69 | - 编辑这个zshell 的 run command
70 | - 系统每次初始化zsh都要运行这个文件
71 | - 把这句话加到最后一行
72 |
73 | ```
74 | alias ls='echo "Dir Size|Perms|Link Count|Owner|Group|Size|Mod.Time|Name"; ls -Fhls --color --group-directories-first'
75 | ```
76 |
77 | - :wq 保存并退出
78 | - 重启zsh
79 |
80 | 
81 |
82 | - ls命令就有了标题行
83 | - 还有什么实用的别名吗?
84 |
85 | ### pbcopy
86 |
87 | - pbcopy是mac上面很好用的命令
88 |
89 | 
90 |
91 |
92 | - 作用是
93 | - 把输出到标准输出流的内容
94 | - 复制到剪贴板
95 | - 很像xclip
96 |
97 | ### 建立别名
98 |
99 | ```
100 | alias pbcopy='xclip -selection clipboard'
101 | alias pbpaste='xclip -selection clipboard -o'
102 | ```
103 |
104 | - 验证可用
105 |
106 | 
107 |
108 |
109 | - alias和ln有什么不一样呢?
110 |
111 | ### 别名和链接
112 |
113 | - alias
114 | - 建立一个别名
115 | - 在~/.zshrc里面完成初始化
116 | - 直接就能用起来
117 | - alias改了就变化
118 | - ln
119 | - 建立一个链接
120 | - 有具体的文件
121 | - 即使是符号链接也有文件
122 | - 想要修改就要重新建立链接
123 |
124 |
125 |
126 |
127 | ### 总结
128 |
129 | - 这次我们研究了alias别名
130 | - 可以给命令起一些别名
131 | - 这些别名可以
132 | - 简化命令文本
133 | - 还可以为命令添加默认参数
134 | - 回到我们上次研究的那个一年四季
135 | - 可以删除文件和文件夹么?🤔
136 | - 下次再说👋
137 |
--------------------------------------------------------------------------------
/md/050-566238-阴历_lunar.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了日历
12 | - 这个日历
13 | - 可以显示一个月的
14 | - 也可以显示前后几个月的
15 | - 还可以显示某一年的
16 | - 日历来自于unix
17 | - 不过这里面没有阴历
18 | - 就是初一十五那种东西
19 | - 我们可以在终端里面显示阴历么?
20 |
21 | ### 搜索
22 |
23 | 
24 |
25 | - 找到两个
26 | - 先装第一个
27 |
28 | ###
29 |
30 | 
31 |
32 | - 第一个卡在这里不能运行
33 | - 往后走
34 | - lunar
35 | - 月亮的历法
36 | - 阴历
37 |
38 | ```
39 | sudo apt install lunar
40 | ```
41 |
42 | ### 灵魂三问
43 |
44 | 
45 |
46 | - 怎么用呢?
47 |
48 | ### 八字
49 |
50 | 
51 |
52 | - 得到当前时辰的四柱八字
53 |
54 | 
55 |
56 | - 每一柱都有天干和地支
57 | - 年月日时总共四柱
58 | - 得到八字
59 | - 可以得到你的生辰八字么?
60 |
61 | ### 转化
62 |
63 | - 需要从阳历日期转化为阴历
64 | - 查文档
65 |
66 | 
67 |
68 | - 照要求转化
69 |
70 | 
71 |
72 | - 可以找到自己的阴历生日
73 | - 可以看到由于没有过春节
74 | - 这个日期并不属猴
75 | - 而是数羊
76 | - 也就是午马未羊的羊
77 | - 年份属于己未年
78 | - 时间用的也是东八区
79 | - 赶紧拍照分享一下这熟悉的感觉
80 |
81 | ### 输出大字
82 |
83 | 
84 |
85 | - 可以通过阴历求阳历么?
86 |
87 | ### 通过阴历求阳历
88 |
89 | 
90 |
91 | 
92 |
93 | - 这程序谁写的呢?
94 |
95 | ### 作者
96 |
97 | 
98 |
99 | - 作者好像曾经在波士顿
100 | - 92年写了一版
101 | - 01年更新了
102 | - 感谢
103 | - Fung F. Lee
104 | - Ricky Yeung
105 | - 2049之后期待有人可以更新这个程序
106 |
107 | ### 总结
108 | - 这次我们研究的是阴历
109 | - 主要是把阳历日期转化为阴历
110 | - 不是阴历日历
111 | - 我们可以把我们的year给补全一下么?
112 | - 每个月里面都有合适的文件名?🤔
113 | - 下次再说👋
114 |
--------------------------------------------------------------------------------
/md/053-566237-日历_cal.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 日期时间(date)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了date日期
12 | - 用各种方式显示日期时间
13 | - 可以用现成的套路
14 | - date -R
15 | - 也可以自定义
16 | - date "+%D-%T %z"
17 | - 每个文件都有三个时间元数据
18 | - access 上次读取时间
19 | - change 上次状态变化时间
20 | - modify 上次写文件时间
21 | - 我们这次都研究时间日期
22 | - 可以有个日历来看看吗?
23 |
24 | ### cal
25 |
26 | 
27 |
28 | - 这个程序看起来来自于bsd
29 |
30 | 
31 |
32 | ### 显示年历
33 |
34 | 
35 |
36 | 
37 |
38 | ### 显示某年
39 |
40 | 
41 |
42 | 
43 |
44 | ### 以某天为核心
45 |
46 | 
47 |
48 | 
49 |
50 | ### 前后月份
51 |
52 | 
53 |
54 | 
55 |
56 | ### 竖版日历
57 |
58 | 
59 |
60 | ### 日历历史
61 |
62 | 
63 |
64 | - cal程序来自于unix
65 | - ncal来自于freebsd
66 | - linux版本每一位都一点不差
67 | - 因为输出结果还需要交给别的程序
68 | - 即使只有7行数据
69 | - 也要输出8行
70 | - 多出的一行从solaris 8开始就成为惯例
71 | - 看到了3个过去的传奇系统
72 | - unix
73 | - bsd
74 | - solaris
75 |
76 | ### 总结
77 | - 这次我们研究了日历
78 | - 这个日历
79 | - 可以显示一个月的
80 | - 也可以显示前后几个月的
81 | - 还可以显示某一年的
82 | - 日历来自于unix
83 | - 不过这里面没有阴历
84 | - 就是初一十五那种东西
85 | - 我们可以在终端里面显示阴历么?🤔
86 | - 下次再说👋
87 |
--------------------------------------------------------------------------------
/md/053-567189-我是谁_who.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次我们可以操作文件和文件夹了
12 | - 复制 cp
13 | - 新建 mkdir
14 | - 删除 rm
15 | - 改名移动 mv
16 | - 我们还可以查询文件和文件夹
17 | - 列表 ls
18 | - 递归查询文件夹 tree
19 | - 详细信息 stat
20 |
21 | 
22 |
23 | 
24 |
25 | 
26 |
27 | - 这里值为shiyanlou的uid到底是什么呢?
28 |
29 | ### 我是谁(whoami)
30 |
31 | 
32 |
33 | - 我是shiyanlou
34 | - shiyanlou是当前系统的userid
35 | - whoami 是一个coreutils的程序
36 |
37 | ### 帮助细节
38 |
39 | 
40 |
41 | - 这可以说就是没有细节了
42 | - 看看手册去
43 |
44 | ### 更多帮助手册
45 |
46 | 
47 |
48 | - 看不出什么新东西了
49 |
50 | ### 都有谁(who)
51 |
52 | 
53 |
54 | - 目前开了两个终端
55 | - 所以有两个用户通过shell在连接着系统
56 | - 还可以看到细节么?
57 |
58 | ### 标题
59 |
60 | - -H
61 | - 标题
62 |
63 | 
64 |
65 | - -q
66 | - 统计
67 |
68 | 
69 |
70 | - 能用的参数好像就这么多
71 | - 怎么办?
72 |
73 | ### 新命令w
74 |
75 | 
76 |
77 | - 这次可以看到更多信息
78 | - 目前在前台运行着什么进程
79 |
80 | ### 总结 🤔
81 | - 这次了解了三个命令
82 | - whoami
83 | - who
84 | - w
85 | - 最短的最好用
86 | - 可以查看都有谁目前登录到系统中
87 | - whoami就是查看我是谁
88 | - 对应哪个userid
89 | - 可以把所有的用户id列出来么?
90 | - 下次再说👋
--------------------------------------------------------------------------------
/md/054-566237-日历_cal.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 日期时间(date)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了date日期
12 | - 用各种方式显示日期时间
13 | - 可以用现成的套路
14 | - date -R
15 | - 也可以自定义
16 | - date "+%D-%T %z"
17 | - 每个文件都有三个时间元数据
18 | - access 上次读取时间
19 | - change 上次状态变化时间
20 | - modify 上次写文件时间
21 | - 我们这次都研究时间日期
22 | - 可以有个日历来看看吗?
23 |
24 | ### cal
25 |
26 | 
27 |
28 | - 这个程序看起来来自于bsd
29 |
30 | 
31 |
32 | ### 显示年历
33 |
34 | 
35 |
36 | 
37 |
38 | ### 显示某年
39 |
40 | 
41 |
42 | 
43 |
44 | ### 以某天为核心
45 |
46 | 
47 |
48 | 
49 |
50 | ### 前后月份
51 |
52 | 
53 |
54 | 
55 |
56 | ### 竖版日历
57 |
58 | 
59 |
60 | ### 日历历史
61 |
62 | 
63 |
64 | - cal程序来自于unix
65 | - ncal来自于freebsd
66 | - linux版本每一位都一点不差
67 | - 因为输出结果还需要交给别的程序
68 | - 即使只有7行数据
69 | - 也要输出8行
70 | - 多出的一行从solaris 8开始就成为惯例
71 | - 看到了3个过去的传奇系统
72 | - unix
73 | - bsd
74 | - solaris
75 |
76 | ### 总结
77 | - 这次我们研究了日历
78 | - 这个日历
79 | - 可以显示一个月的
80 | - 也可以显示前后几个月的
81 | - 还可以显示某一年的
82 | - 日历来自于unix
83 | - 不过这里面没有阴历
84 | - 就是初一十五那种东西
85 | - 我们可以在终端里面显示阴历么?🤔
86 | - 下次再说👋
87 |
--------------------------------------------------------------------------------
/md/054-566238-阴历_lunar.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了日历
12 | - 这个日历
13 | - 可以显示一个月的
14 | - 也可以显示前后几个月的
15 | - 还可以显示某一年的
16 | - 日历来自于unix
17 | - 不过这里面没有阴历
18 | - 就是初一十五那种东西
19 | - 我们可以在终端里面显示阴历么?
20 |
21 | ### 搜索
22 |
23 | 
24 |
25 | - 找到两个
26 | - 先装第一个
27 |
28 | ###
29 |
30 | 
31 |
32 | - 第一个卡在这里不能运行
33 | - 往后走
34 | - lunar
35 | - 月亮的历法
36 | - 阴历
37 |
38 | ```
39 | sudo apt install lunar
40 | ```
41 |
42 | ### 灵魂三问
43 |
44 | 
45 |
46 | - 怎么用呢?
47 |
48 | ### 八字
49 |
50 | 
51 |
52 | - 得到当前时辰的四柱八字
53 |
54 | 
55 |
56 | - 每一柱都有天干和地支
57 | - 年月日时总共四柱
58 | - 得到八字
59 | - 可以得到你的生辰八字么?
60 |
61 | ### 转化
62 |
63 | - 需要从阳历日期转化为阴历
64 | - 查文档
65 |
66 | 
67 |
68 | - 照要求转化
69 |
70 | 
71 |
72 | - 可以找到自己的阴历生日
73 | - 可以看到由于没有过春节
74 | - 这个日期并不属猴
75 | - 而是数羊
76 | - 也就是午马未羊的羊
77 | - 年份属于己未年
78 | - 时间用的也是东八区
79 | - 赶紧拍照分享一下这熟悉的感觉
80 |
81 | ### 输出大字
82 |
83 | 
84 |
85 | - 可以通过阴历求阳历么?
86 |
87 | ### 通过阴历求阳历
88 |
89 | 
90 |
91 | 
92 |
93 | - 这程序谁写的呢?
94 |
95 | ### 作者
96 |
97 | 
98 |
99 | - 作者好像曾经在波士顿
100 | - 92年写了一版
101 | - 01年更新了
102 | - 感谢
103 | - Fung F. Lee
104 | - Ricky Yeung
105 | - 2049之后期待有人可以更新这个程序
106 |
107 | ### 总结
108 | - 这次我们研究的是阴历
109 | - 主要是把阳历日期转化为阴历
110 | - 不是阴历日历
111 | - 我们可以把我们的year给补全一下么?
112 | - 每个月里面都有合适的文件名?🤔
113 | - 下次再说👋
114 |
--------------------------------------------------------------------------------
/md/054-567656-列出用户信息_id.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次了解了三个命令
12 | - whoami
13 | - who
14 | - w
15 | - 最短的最好用
16 | - 可以查看都有谁目前登录到系统中
17 | - whoami就是查看我是谁
18 | - 对应哪个userid
19 | - 可以把所有的用户id列出来么?
20 |
21 | ### id
22 |
23 | 
24 |
25 | - id 命令
26 | - 可以 查看试验楼用户的账号信息
27 | - shiyanlou
28 | - uid - 用户id
29 | - gid - 用户组id
30 | - 5000(shiyanlou) - 这个userid
31 | - 属于三个组(group)
32 | - 5000(shiyanlou)
33 | - 27(sudo)
34 | - 5002(public)
35 | - 如何理解id呢?
36 |
37 | ### 灵魂三问
38 |
39 | 
40 |
41 | - id是输出用户和组的id的命令
42 | - 我们来查看一下id的帮助手册
43 |
44 | ### 细节
45 |
46 | 
47 |
48 | | 参数 | 信息 |
49 | | ---- | ---- |
50 | | -g或--group | 显示用户所属群组的ID |
51 | | -G或--groups| 显示用户所属附加群组的ID |
52 | | -n或--name | 显示用户,所属群组或附加群组的名称 |
53 | | -r或--real | 显示实际ID |
54 | | -u或--user | 显示用户ID |
55 | | -help |显示帮助 |
56 | | -version |显示版本信息 |
57 |
58 | - 如何查看到更多用户呢?
59 |
60 | ### id
61 |
62 | - id 之后 按下 Tab
63 |
64 | 
65 |
66 | - 可以看到更多的用户id
67 | - 可以查看某个id的详细信息
68 |
69 | 
70 |
71 | - 在哪里可以查询用户更详细的信息呢?
72 |
73 | ### /etc/passwd
74 |
75 | ```
76 | cat /etc/passwd
77 | vi /etc/passwd
78 | ```
79 |
80 | - 可以看到更多的userid
81 |
82 | 
83 |
84 | - 应该如何理解这些用:分割的字段呢?
85 |
86 | ### 区分
87 |
88 | ```
89 | cat /etc/passwd | grep shiyanlou
90 | ```
91 |
92 | 
93 |
94 | - 这就是更详细的用户信息
95 |
96 | 
97 |
98 | - 各种用户很多
99 | - 但是这七列的结构是一致的
100 |
101 | ### 总结
102 |
103 | - 这次我们研究了一个新的命令id
104 | - 可以显示出用户id的一些信息
105 | - 我们目前的用户id就是shiyanlou
106 |
107 | 
108 |
109 | - /etc/passwd中有更详细的用户信息
110 |
111 | 
112 |
113 | - 这些信息被:分割为7列
114 | - 我可以自己创造一个用户id吗?🤔
115 | - 下次再说👋
--------------------------------------------------------------------------------
/md/055-566238-阴历_lunar.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了日历
12 | - 这个日历
13 | - 可以显示一个月的
14 | - 也可以显示前后几个月的
15 | - 还可以显示某一年的
16 | - 日历来自于unix
17 | - 不过这里面没有阴历
18 | - 就是初一十五那种东西
19 | - 我们可以在终端里面显示阴历么?
20 |
21 | ### 搜索
22 |
23 | 
24 |
25 | - 找到两个
26 | - 先装第一个
27 |
28 | ###
29 |
30 | 
31 |
32 | - 第一个卡在这里不能运行
33 | - 往后走
34 | - lunar
35 | - 月亮的历法
36 | - 阴历
37 |
38 | ```
39 | sudo apt install lunar
40 | ```
41 |
42 | ### 灵魂三问
43 |
44 | 
45 |
46 | - 怎么用呢?
47 |
48 | ### 八字
49 |
50 | 
51 |
52 | - 得到当前时辰的四柱八字
53 |
54 | 
55 |
56 | - 每一柱都有天干和地支
57 | - 年月日时总共四柱
58 | - 得到八字
59 | - 可以得到你的生辰八字么?
60 |
61 | ### 转化
62 |
63 | - 需要从阳历日期转化为阴历
64 | - 查文档
65 |
66 | 
67 |
68 | - 照要求转化
69 |
70 | 
71 |
72 | - 可以找到自己的阴历生日
73 | - 可以看到由于没有过春节
74 | - 这个日期并不属猴
75 | - 而是数羊
76 | - 也就是午马未羊的羊
77 | - 年份属于己未年
78 | - 时间用的也是东八区
79 | - 赶紧拍照分享一下这熟悉的感觉
80 |
81 | ### 输出大字
82 |
83 | 
84 |
85 | - 可以通过阴历求阳历么?
86 |
87 | ### 通过阴历求阳历
88 |
89 | 
90 |
91 | 
92 |
93 | - 这程序谁写的呢?
94 |
95 | ### 作者
96 |
97 | 
98 |
99 | - 作者好像曾经在波士顿
100 | - 92年写了一版
101 | - 01年更新了
102 | - 感谢
103 | - Fung F. Lee
104 | - Ricky Yeung
105 | - 2049之后期待有人可以更新这个程序
106 |
107 | ### 总结
108 | - 这次我们研究的是阴历
109 | - 主要是把阳历日期转化为阴历
110 | - 不是阴历日历
111 | - 我们可以把我们的year给补全一下么?
112 | - 每个月里面都有合适的文件名?🤔
113 | - 下次再说👋
114 |
--------------------------------------------------------------------------------
/md/056-569368-修改密码_passwd.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次了解到有两个命令可以添加用户
12 | - adduser
13 | - useradd
14 | - useradd
15 | - 很底层
16 | - 可以找到源代码
17 | - adduser
18 | - 更前端一些
19 | - 更交互一些
20 | - 可以直接新建用户
21 | - 可以新建普通用户
22 | - 也可以新建系统用户
23 | - 但是新建的用户不能登录这个可怎么办?
24 |
25 | ### 先回忆过程
26 |
27 | 
28 |
29 | - 确实新建了o2z的用户
30 | - 将新用户添加到组nogroup
31 | - 创建了o2z的用户文件夹
32 | - 但是登录失败了
33 | - 怎么办呢?
34 |
35 | ### 搜索
36 |
37 | 
38 |
39 | - 修改用户名的命令是passwd
40 | - 这个名字好像有点眼熟
41 |
42 | ### 源文件
43 |
44 | - useradd 不是属于 passwd 这个包的么?
45 |
46 | 
47 |
48 | - 好像也可以找到源文件
49 |
50 | ### 源文件
51 |
52 | - 打开源文件
53 |
54 | 
55 |
56 | - 也是经历4代
57 | - 1168行代码
58 | - 具体怎么用呢?
59 |
60 | ### 具体用法
61 |
62 | 
63 |
64 | - 看起来好像不难
65 | - 可以修改密码
66 | - 还可以修改用户宿主文件夹
67 | - 修改锁定状态之类的
68 |
69 | ### 使用passwd
70 |
71 | 
72 |
73 | - 确实可以修改密码
74 | - 但是修改密码后无法登陆
75 | - 这是为什么呢?
76 |
77 | ### 修改登录shell
78 |
79 | ```
80 | sudo vi /etc/passwd
81 | ```
82 |
83 | 
84 |
85 | - 红框位置就是
86 | - oeasy用户的默认脚本zsh
87 |
88 | 
89 |
90 | - 修改为zsh
91 |
92 | ### 尝试登录
93 |
94 | - su o2z
95 |
96 | 
97 |
98 | - 找不到~/.zshrc
99 | - 也就是/home/o2z/没有这个.zshrc
100 |
101 | ### 查看文件夹
102 |
103 | 
104 |
105 | - 要把/home/shiyanlou/.zshrc
106 | - 拷贝到/home/o2z/.zshrc
107 |
108 | ### 复制配置文件
109 |
110 | 
111 |
112 | - 以后登录就是zsh了
113 |
114 | 
115 |
116 | ### 总结
117 | - 这次我们了解了命令passwd
118 | - /usr/bin/passwd
119 | - 可以设置用户的密码
120 | - 用户的信息在
121 | - /etc/passwd中
122 | - 这两个虽然名字都是passwd
123 | - 但是用途不同
124 | - 可以设置用户默认的脚本解释器
125 | - 设置之后还应该把配置文件复制到新用户的宿主文件夹
126 | - 我们用的是zsh
127 | - 究竟zsh是什么?
128 | - 和bash有什么区别呢?🤔
129 | - 下次再说👋
--------------------------------------------------------------------------------
/md/057-567189-我是谁_who.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次我们可以操作文件和文件夹了
12 | - 复制 cp
13 | - 新建 mkdir
14 | - 删除 rm
15 | - 改名移动 mv
16 | - 我们还可以查询文件和文件夹
17 | - 列表 ls
18 | - 递归查询文件夹 tree
19 | - 详细信息 stat
20 |
21 | 
22 |
23 | 
24 |
25 | 
26 |
27 | - 这里值为shiyanlou的uid到底是什么呢?
28 |
29 | ### 我是谁(whoami)
30 |
31 | 
32 |
33 | - 我是shiyanlou
34 | - shiyanlou是当前系统的userid
35 | - whoami 是一个coreutils的程序
36 |
37 | ### 帮助细节
38 |
39 | 
40 |
41 | - 这可以说就是没有细节了
42 | - 看看手册去
43 |
44 | ### 更多帮助手册
45 |
46 | 
47 |
48 | - 看不出什么新东西了
49 |
50 | ### 都有谁(who)
51 |
52 | 
53 |
54 | - 目前开了两个终端
55 | - 所以有两个用户通过shell在连接着系统
56 | - 还可以看到细节么?
57 |
58 | ### 标题
59 |
60 | - -H
61 | - 标题
62 |
63 | 
64 |
65 | - -q
66 | - 统计
67 |
68 | 
69 |
70 | - 能用的参数好像就这么多
71 | - 怎么办?
72 |
73 | ### 新命令w
74 |
75 | 
76 |
77 | - 这次可以看到更多信息
78 | - 目前在前台运行着什么进程
79 |
80 | ### 总结 🤔
81 | - 这次了解了三个命令
82 | - whoami
83 | - who
84 | - w
85 | - 最短的最好用
86 | - 可以查看都有谁目前登录到系统中
87 | - whoami就是查看我是谁
88 | - 对应哪个userid
89 | - 可以把所有的用户id列出来么?
90 | - 下次再说👋
--------------------------------------------------------------------------------
/md/058-567189-我是谁_who.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次我们可以操作文件和文件夹了
12 | - 复制 cp
13 | - 新建 mkdir
14 | - 删除 rm
15 | - 改名移动 mv
16 | - 我们还可以查询文件和文件夹
17 | - 列表 ls
18 | - 递归查询文件夹 tree
19 | - 详细信息 stat
20 |
21 | 
22 |
23 | 
24 |
25 | 
26 |
27 | - 这里值为shiyanlou的uid到底是什么呢?
28 |
29 | ### 我是谁(whoami)
30 |
31 | 
32 |
33 | - 我是shiyanlou
34 | - shiyanlou是当前系统的userid
35 | - whoami 是一个coreutils的程序
36 |
37 | ### 帮助细节
38 |
39 | 
40 |
41 | - 这可以说就是没有细节了
42 | - 看看手册去
43 |
44 | ### 更多帮助手册
45 |
46 | 
47 |
48 | - 看不出什么新东西了
49 |
50 | ### 都有谁(who)
51 |
52 | 
53 |
54 | - 目前开了两个终端
55 | - 所以有两个用户通过shell在连接着系统
56 | - 还可以看到细节么?
57 |
58 | ### 标题
59 |
60 | - -H
61 | - 标题
62 |
63 | 
64 |
65 | - -q
66 | - 统计
67 |
68 | 
69 |
70 | - 能用的参数好像就这么多
71 | - 怎么办?
72 |
73 | ### 新命令w
74 |
75 | 
76 |
77 | - 这次可以看到更多信息
78 | - 目前在前台运行着什么进程
79 |
80 | ### 总结 🤔
81 | - 这次了解了三个命令
82 | - whoami
83 | - who
84 | - w
85 | - 最短的最好用
86 | - 可以查看都有谁目前登录到系统中
87 | - whoami就是查看我是谁
88 | - 对应哪个userid
89 | - 可以把所有的用户id列出来么?
90 | - 下次再说👋
--------------------------------------------------------------------------------
/md/058-567656-列出用户信息_id.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次了解了三个命令
12 | - whoami
13 | - who
14 | - w
15 | - 最短的最好用
16 | - 可以查看都有谁目前登录到系统中
17 | - whoami就是查看我是谁
18 | - 对应哪个userid
19 | - 可以把所有的用户id列出来么?
20 |
21 | ### id
22 |
23 | 
24 |
25 | - id 命令
26 | - 可以 查看试验楼用户的账号信息
27 | - shiyanlou
28 | - uid - 用户id
29 | - gid - 用户组id
30 | - 5000(shiyanlou) - 这个userid
31 | - 属于三个组(group)
32 | - 5000(shiyanlou)
33 | - 27(sudo)
34 | - 5002(public)
35 | - 如何理解id呢?
36 |
37 | ### 灵魂三问
38 |
39 | 
40 |
41 | - id是输出用户和组的id的命令
42 | - 我们来查看一下id的帮助手册
43 |
44 | ### 细节
45 |
46 | 
47 |
48 | | 参数 | 信息 |
49 | | ---- | ---- |
50 | | -g或--group | 显示用户所属群组的ID |
51 | | -G或--groups| 显示用户所属附加群组的ID |
52 | | -n或--name | 显示用户,所属群组或附加群组的名称 |
53 | | -r或--real | 显示实际ID |
54 | | -u或--user | 显示用户ID |
55 | | -help |显示帮助 |
56 | | -version |显示版本信息 |
57 |
58 | - 如何查看到更多用户呢?
59 |
60 | ### id
61 |
62 | - id 之后 按下 Tab
63 |
64 | 
65 |
66 | - 可以看到更多的用户id
67 | - 可以查看某个id的详细信息
68 |
69 | 
70 |
71 | - 在哪里可以查询用户更详细的信息呢?
72 |
73 | ### /etc/passwd
74 |
75 | ```
76 | cat /etc/passwd
77 | vi /etc/passwd
78 | ```
79 |
80 | - 可以看到更多的userid
81 |
82 | 
83 |
84 | - 应该如何理解这些用:分割的字段呢?
85 |
86 | ### 区分
87 |
88 | ```
89 | cat /etc/passwd | grep shiyanlou
90 | ```
91 |
92 | 
93 |
94 | - 这就是更详细的用户信息
95 |
96 | 
97 |
98 | - 各种用户很多
99 | - 但是这七列的结构是一致的
100 |
101 | ### 总结
102 |
103 | - 这次我们研究了一个新的命令id
104 | - 可以显示出用户id的一些信息
105 | - 我们目前的用户id就是shiyanlou
106 |
107 | 
108 |
109 | - /etc/passwd中有更详细的用户信息
110 |
111 | 
112 |
113 | - 这些信息被:分割为7列
114 | - 我可以自己创造一个用户id吗?🤔
115 | - 下次再说👋
--------------------------------------------------------------------------------
/md/058-569386-个性化颜色方案_Oh-My-Zsh.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # Oh-My-Zsh
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究了zsh
12 | - 从源码开始编译安装
13 | - 真的成功了
14 |
15 | 
16 |
17 | - 不过现在经常用的是Oh-My-Zsh
18 | - 这个Oh-My-Zsh和zsh是什么关系呢?
19 |
20 | ### 搜索
21 |
22 | 
23 |
24 | - https://ohmyz.sh/
25 |
26 | 
27 |
28 | ### 安装命令
29 |
30 | 
31 |
32 | - 复制这个命令
33 | - 然后粘贴到shell中进行安装
34 |
35 | ### 安装过程
36 |
37 | - 安装过程中
38 | - 有报错
39 |
40 | 
41 |
42 | ### 删除原来的
43 |
44 | 
45 |
46 | - 清空之后
47 | - 就可以重新安装oh-my-zsh
48 |
49 | ### 编辑主题
50 |
51 | ```
52 | sudo vi ~/.zshrc
53 | ```
54 |
55 | - 目前Theme是robbyrussel
56 |
57 | 
58 |
59 | - 效果如下图
60 |
61 | 
62 |
63 | ### 更多主题
64 |
65 | 
66 |
67 | 
68 |
69 | - 好像缺少字体
70 |
71 | ### 字体问题
72 |
73 | 
74 |
75 | - 需要安装vim-powerline
76 |
77 | 
78 |
79 | ### 安装字体
80 |
81 | 
82 |
83 | - 安装字体之后
84 |
85 | 
86 |
87 | - 文件夹字体前景颜色黑色和背景颜色蓝色太容易混淆了
88 |
89 | ### 找到位置
90 |
91 | 
92 |
93 | - 打开文件
94 |
95 | 
96 |
97 | - 找到字体相关位置
98 |
99 | ### 修改
100 |
101 | 
102 |
103 | - 修改结果
104 |
105 | 
106 |
107 | ### 总结
108 | - 这次我们研究的是oh-my-zsh
109 | - 是zsh上面的一款皮肤
110 | - 效果还不错
111 | - 可以设置字体和字体颜色
112 | - 这就是终端下的美化了
113 | - 如果是远程登录进来的o2z也会有zsh的效果么?🤔
114 | - 下次再说👋
115 |
116 |
--------------------------------------------------------------------------------
/md/059-210191-远程登录_ssh.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # ssh
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究的是oh-my-zsh
12 | - 是zsh上面的一款皮肤
13 | - 效果还不错
14 | - 可以设置字体和字体颜色
15 | - 这就是终端下的美化了
16 | - 如果是远程登录进来的o2z也会有zsh的效果么?
17 |
18 | ### 远程连接
19 |
20 | - 首先查看蓝桥云的ip地址
21 |
22 | 
23 |
24 | - 确实是可以远程登录上去的
25 |
26 | ### 登录结果
27 |
28 | 
29 |
30 | - ssh远程登录的终端
31 | - 和本地直接登录的终端效果是一样的
32 | - 权限就是o2z得权限
33 | - 也可以退出当前这个ssh登录
34 |
35 | 
36 |
37 | - 如果ssh没有安装怎么办呢?
38 |
39 | ### 从零安装
40 |
41 | - 从零开始安装openssh-server
42 |
43 | 
44 |
45 | - 然后启动ssh服务
46 | - 如果是自己买的云的话
47 | - 检查一下防火墙的22端口是否开启
48 |
49 | ### 修改端口
50 |
51 | ```
52 | sudo vi /etc/ssh/sshd_config
53 | ```
54 |
55 | - 尝试修改ssh
56 |
57 | 
58 |
59 | - 将端口修改为22000
60 | - 保存后退出
61 |
62 | ### 重启并连接
63 |
64 | 
65 |
66 | - 尝试连接默认的22端口
67 | - 失败了
68 | - 因为现在的端口为22000
69 |
70 | ### 指定端口
71 |
72 | 
73 |
74 | - 指定这个22000端口作为默认
75 |
76 | ### 查看配置
77 |
78 | 
79 |
80 | - ssh登陆之后
81 | - 确实使用的是
82 | - /home/o2z 作为宿主文件夹
83 | - /usr/bin/zsh 作为默认shell
84 | - 可以读取文件吗?
85 |
86 | ### 读取文件
87 |
88 | 
89 |
90 | - 读取文件确实是可以的
91 | - 先去总结一下
92 |
93 |
94 | ### 总结
95 |
96 | - 我们可以使用ssh
97 | - 远程登录这台ubuntu
98 |
99 | 
100 |
101 | - 首先要安装ssh
102 | - 然后要启动ssh 服务
103 | - 可以设置ssh的登陆端口
104 | - 登陆之后用户可以使用自己的宿主文件夹和shell
105 | - 可以获得用户应有的一切权限
106 | - 既然这个文件可以读写
107 | - 我可以把这个文件从云上拷贝到本地么?🤔
108 | - 下次再说👋
109 |
110 |
--------------------------------------------------------------------------------
/md/059-567656-列出用户信息_id.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次了解了三个命令
12 | - whoami
13 | - who
14 | - w
15 | - 最短的最好用
16 | - 可以查看都有谁目前登录到系统中
17 | - whoami就是查看我是谁
18 | - 对应哪个userid
19 | - 可以把所有的用户id列出来么?
20 |
21 | ### id
22 |
23 | 
24 |
25 | - id 命令
26 | - 可以 查看试验楼用户的账号信息
27 | - shiyanlou
28 | - uid - 用户id
29 | - gid - 用户组id
30 | - 5000(shiyanlou) - 这个userid
31 | - 属于三个组(group)
32 | - 5000(shiyanlou)
33 | - 27(sudo)
34 | - 5002(public)
35 | - 如何理解id呢?
36 |
37 | ### 灵魂三问
38 |
39 | 
40 |
41 | - id是输出用户和组的id的命令
42 | - 我们来查看一下id的帮助手册
43 |
44 | ### 细节
45 |
46 | 
47 |
48 | | 参数 | 信息 |
49 | | ---- | ---- |
50 | | -g或--group | 显示用户所属群组的ID |
51 | | -G或--groups| 显示用户所属附加群组的ID |
52 | | -n或--name | 显示用户,所属群组或附加群组的名称 |
53 | | -r或--real | 显示实际ID |
54 | | -u或--user | 显示用户ID |
55 | | -help |显示帮助 |
56 | | -version |显示版本信息 |
57 |
58 | - 如何查看到更多用户呢?
59 |
60 | ### id
61 |
62 | - id 之后 按下 Tab
63 |
64 | 
65 |
66 | - 可以看到更多的用户id
67 | - 可以查看某个id的详细信息
68 |
69 | 
70 |
71 | - 在哪里可以查询用户更详细的信息呢?
72 |
73 | ### /etc/passwd
74 |
75 | ```
76 | cat /etc/passwd
77 | vi /etc/passwd
78 | ```
79 |
80 | - 可以看到更多的userid
81 |
82 | 
83 |
84 | - 应该如何理解这些用:分割的字段呢?
85 |
86 | ### 区分
87 |
88 | ```
89 | cat /etc/passwd | grep shiyanlou
90 | ```
91 |
92 | 
93 |
94 | - 这就是更详细的用户信息
95 |
96 | 
97 |
98 | - 各种用户很多
99 | - 但是这七列的结构是一致的
100 |
101 | ### 总结
102 |
103 | - 这次我们研究了一个新的命令id
104 | - 可以显示出用户id的一些信息
105 | - 我们目前的用户id就是shiyanlou
106 |
107 | 
108 |
109 | - /etc/passwd中有更详细的用户信息
110 |
111 | 
112 |
113 | - 这些信息被:分割为7列
114 | - 我可以自己创造一个用户id吗?🤔
115 | - 下次再说👋
--------------------------------------------------------------------------------
/md/060-569368-修改密码_passwd.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次了解到有两个命令可以添加用户
12 | - adduser
13 | - useradd
14 | - useradd
15 | - 很底层
16 | - 可以找到源代码
17 | - adduser
18 | - 更前端一些
19 | - 更交互一些
20 | - 可以直接新建用户
21 | - 可以新建普通用户
22 | - 也可以新建系统用户
23 | - 但是新建的用户不能登录这个可怎么办?
24 |
25 | ### 先回忆过程
26 |
27 | 
28 |
29 | - 确实新建了o2z的用户
30 | - 将新用户添加到组nogroup
31 | - 创建了o2z的用户文件夹
32 | - 但是登录失败了
33 | - 怎么办呢?
34 |
35 | ### 搜索
36 |
37 | 
38 |
39 | - 修改用户名的命令是passwd
40 | - 这个名字好像有点眼熟
41 |
42 | ### 源文件
43 |
44 | - useradd 不是属于 passwd 这个包的么?
45 |
46 | 
47 |
48 | - 好像也可以找到源文件
49 |
50 | ### 源文件
51 |
52 | - 打开源文件
53 |
54 | 
55 |
56 | - 也是经历4代
57 | - 1168行代码
58 | - 具体怎么用呢?
59 |
60 | ### 具体用法
61 |
62 | 
63 |
64 | - 看起来好像不难
65 | - 可以修改密码
66 | - 还可以修改用户宿主文件夹
67 | - 修改锁定状态之类的
68 |
69 | ### 使用passwd
70 |
71 | 
72 |
73 | - 确实可以修改密码
74 | - 但是修改密码后无法登陆
75 | - 这是为什么呢?
76 |
77 | ### 修改登录shell
78 |
79 | ```
80 | sudo vi /etc/passwd
81 | ```
82 |
83 | 
84 |
85 | - 红框位置就是
86 | - oeasy用户的默认脚本zsh
87 |
88 | 
89 |
90 | - 修改为zsh
91 |
92 | ### 尝试登录
93 |
94 | - su o2z
95 |
96 | 
97 |
98 | - 找不到~/.zshrc
99 | - 也就是/home/o2z/没有这个.zshrc
100 |
101 | ### 查看文件夹
102 |
103 | 
104 |
105 | - 要把/home/shiyanlou/.zshrc
106 | - 拷贝到/home/o2z/.zshrc
107 |
108 | ### 复制配置文件
109 |
110 | 
111 |
112 | - 以后登录就是zsh了
113 |
114 | 
115 |
116 | ### 总结
117 | - 这次我们了解了命令passwd
118 | - /usr/bin/passwd
119 | - 可以设置用户的密码
120 | - 用户的信息在
121 | - /etc/passwd中
122 | - 这两个虽然名字都是passwd
123 | - 但是用途不同
124 | - 可以设置用户默认的脚本解释器
125 | - 设置之后还应该把配置文件复制到新用户的宿主文件夹
126 | - 我们用的是zsh
127 | - 究竟zsh是什么?
128 | - 和bash有什么区别呢?🤔
129 | - 下次再说👋
--------------------------------------------------------------------------------
/md/061-569368-修改密码_passwd.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 阴历(lunar)
8 |
9 | ## 回忆
10 |
11 | - 上次了解到有两个命令可以添加用户
12 | - adduser
13 | - useradd
14 | - useradd
15 | - 很底层
16 | - 可以找到源代码
17 | - adduser
18 | - 更前端一些
19 | - 更交互一些
20 | - 可以直接新建用户
21 | - 可以新建普通用户
22 | - 也可以新建系统用户
23 | - 但是新建的用户不能登录这个可怎么办?
24 |
25 | ### 先回忆过程
26 |
27 | 
28 |
29 | - 确实新建了o2z的用户
30 | - 将新用户添加到组nogroup
31 | - 创建了o2z的用户文件夹
32 | - 但是登录失败了
33 | - 怎么办呢?
34 |
35 | ### 搜索
36 |
37 | 
38 |
39 | - 修改用户名的命令是passwd
40 | - 这个名字好像有点眼熟
41 |
42 | ### 源文件
43 |
44 | - useradd 不是属于 passwd 这个包的么?
45 |
46 | 
47 |
48 | - 好像也可以找到源文件
49 |
50 | ### 源文件
51 |
52 | - 打开源文件
53 |
54 | 
55 |
56 | - 也是经历4代
57 | - 1168行代码
58 | - 具体怎么用呢?
59 |
60 | ### 具体用法
61 |
62 | 
63 |
64 | - 看起来好像不难
65 | - 可以修改密码
66 | - 还可以修改用户宿主文件夹
67 | - 修改锁定状态之类的
68 |
69 | ### 使用passwd
70 |
71 | 
72 |
73 | - 确实可以修改密码
74 | - 但是修改密码后无法登陆
75 | - 这是为什么呢?
76 |
77 | ### 修改登录shell
78 |
79 | ```
80 | sudo vi /etc/passwd
81 | ```
82 |
83 | 
84 |
85 | - 红框位置就是
86 | - oeasy用户的默认脚本zsh
87 |
88 | 
89 |
90 | - 修改为zsh
91 |
92 | ### 尝试登录
93 |
94 | - su o2z
95 |
96 | 
97 |
98 | - 找不到~/.zshrc
99 | - 也就是/home/o2z/没有这个.zshrc
100 |
101 | ### 查看文件夹
102 |
103 | 
104 |
105 | - 要把/home/shiyanlou/.zshrc
106 | - 拷贝到/home/o2z/.zshrc
107 |
108 | ### 复制配置文件
109 |
110 | 
111 |
112 | - 以后登录就是zsh了
113 |
114 | 
115 |
116 | ### 总结
117 | - 这次我们了解了命令passwd
118 | - /usr/bin/passwd
119 | - 可以设置用户的密码
120 | - 用户的信息在
121 | - /etc/passwd中
122 | - 这两个虽然名字都是passwd
123 | - 但是用途不同
124 | - 可以设置用户默认的脚本解释器
125 | - 设置之后还应该把配置文件复制到新用户的宿主文件夹
126 | - 我们用的是zsh
127 | - 究竟zsh是什么?
128 | - 和bash有什么区别呢?🤔
129 | - 下次再说👋
--------------------------------------------------------------------------------
/md/062-578030-用户组_group.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 远程拷贝scp
8 |
9 | ## 回忆
10 |
11 | - 上次研究了如何让用户可以以管理员身份运行程序
12 | - 将用户加入sudo(27)这个组里面就可以
13 | - 如何避免每次都要输入密码呢?
14 | - 在/etc/sudoers.d里面添加用户名对应的文件
15 | - 设置此用户不用输入密码就可以执行sudo命令
16 |
17 | 
18 |
19 | - 为什么sudo拥有超级管理员的权限呢?
20 | - 因为sudo的权限是s
21 | - 代表sudo会以root的权限运行
22 | - 从视觉上看到是红色的
23 | - 还有一些程序(wall)是黄色的
24 |
25 | 
26 |
27 | - 这是什么意思呢?
28 |
29 | ### 权限观察
30 |
31 | 
32 |
33 | - 什么是组呢?
34 | - 我可以新建一个组吗?
35 |
36 | ### 新建组
37 |
38 | 
39 |
40 | - 和新建用户差不多
41 | - 新建了组之后
42 | - 可以把用户放进组里面吗?
43 |
44 | ### 查询手册
45 |
46 | 
47 |
48 | ### 将用户加入新组
49 |
50 | 
51 |
52 | ### 添加结果
53 |
54 | 
55 |
56 | - oeasy不但属于默认的oeasy组
57 | - 还属于新的ogroup
58 | - 再接再厉再来一个用户
59 |
60 | ### 添加o2z
61 |
62 | 
63 |
64 | - 目前ogroup里面两个用户了
65 | - oeasy
66 | - o2z
67 | - 可以用wall给他们发信息吗?
68 | - 先总结一下本单元
69 |
70 | ### 总结 🤨
71 |
72 | - 我们这次新建了组(group)
73 | - addgroup
74 | - 有addgroup就有delgroup
75 |
76 | 
77 |
78 | - 可以将用户放到用户组中
79 | - add oeasy ogroup
80 | - 我们可以用wall
81 | - 给oeasy、o2z发消息吗?🤔
82 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/063-210191-远程登录_ssh.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # ssh
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究的是oh-my-zsh
12 | - 是zsh上面的一款皮肤
13 | - 效果还不错
14 | - 可以设置字体和字体颜色
15 | - 这就是终端下的美化了
16 | - 如果是远程登录进来的o2z也会有zsh的效果么?
17 |
18 | ### 远程连接
19 |
20 | - 首先查看蓝桥云的ip地址
21 |
22 | 
23 |
24 | - 确实是可以远程登录上去的
25 |
26 | ### 登录结果
27 |
28 | 
29 |
30 | - ssh远程登录的终端
31 | - 和本地直接登录的终端效果是一样的
32 | - 权限就是o2z得权限
33 | - 也可以退出当前这个ssh登录
34 |
35 | 
36 |
37 | - 如果ssh没有安装怎么办呢?
38 |
39 | ### 从零安装
40 |
41 | - 从零开始安装openssh-server
42 |
43 | 
44 |
45 | - 然后启动ssh服务
46 | - 如果是自己买的云的话
47 | - 检查一下防火墙的22端口是否开启
48 |
49 | ### 修改端口
50 |
51 | ```
52 | sudo vi /etc/ssh/sshd_config
53 | ```
54 |
55 | - 尝试修改ssh
56 |
57 | 
58 |
59 | - 将端口修改为22000
60 | - 保存后退出
61 |
62 | ### 重启并连接
63 |
64 | 
65 |
66 | - 尝试连接默认的22端口
67 | - 失败了
68 | - 因为现在的端口为22000
69 |
70 | ### 指定端口
71 |
72 | 
73 |
74 | - 指定这个22000端口作为默认
75 |
76 | ### 查看配置
77 |
78 | 
79 |
80 | - ssh登陆之后
81 | - 确实使用的是
82 | - /home/o2z 作为宿主文件夹
83 | - /usr/bin/zsh 作为默认shell
84 | - 可以读取文件吗?
85 |
86 | ### 读取文件
87 |
88 | 
89 |
90 | - 读取文件确实是可以的
91 | - 先去总结一下
92 |
93 |
94 | ### 总结
95 |
96 | - 我们可以使用ssh
97 | - 远程登录这台ubuntu
98 |
99 | 
100 |
101 | - 首先要安装ssh
102 | - 然后要启动ssh 服务
103 | - 可以设置ssh的登陆端口
104 | - 登陆之后用户可以使用自己的宿主文件夹和shell
105 | - 可以获得用户应有的一切权限
106 | - 既然这个文件可以读写
107 | - 我可以把这个文件从云上拷贝到本地么?🤔
108 | - 下次再说👋
109 |
110 |
--------------------------------------------------------------------------------
/md/063-578057-给用户组发信息_wall.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 给用户组发消息(wall)
8 |
9 | ## 回忆
10 |
11 | - 我们上次新建了组(group)
12 | - addgroup
13 | - 有addgroup就有delgroup
14 |
15 | 
16 |
17 | - 可以将用户放到用户组中
18 | - add oeasy ogroup
19 | - 我们可以用wall
20 | - 给oeasy、o2z发消息吗?
21 |
22 | ### 查看ip
23 |
24 | 
25 |
26 | ### 登录用户
27 |
28 | - 开两个终端
29 | - 用oeasy远程登录本机ip
30 |
31 | 
32 |
33 | - 用o2z远程登录本机ip
34 |
35 | 
36 |
37 | ### 查看谁登陆
38 |
39 | 
40 |
41 | - 我们可以看到两个登录的用户
42 | - 现在给他们发消息
43 |
44 | 
45 |
46 | ### wall
47 |
48 | 
49 |
50 | - 我们可以给这个组的两个用户都发送消息
51 | - 可以只给oeasy发消息吗?
52 |
53 | ### 只给用户发消息
54 |
55 | 
56 |
57 | - 我们可以给oeasy这个组发消息
58 | - 这样只有oeasy能收到消息了
59 | - 如果想给所有的用户都发消息呢?
60 |
61 | ### 所有的用户
62 |
63 | 
64 |
65 | - 不加group
66 | - 就是给所有的用户都发消息了
67 |
68 | ### wall
69 |
70 | - 这也是wall名字的由来
71 |
72 | 
73 |
74 | - 给所有人写消息
75 |
76 | ### 总结 🤨
77 |
78 | - 这次我们研究了 wall 这个命令
79 | - 这个命令可以给当前登录本服务的用户发消息
80 | - 给指定某个组发消息
81 | - 给指定的用户发消息
82 | - 给所有用户发消息
83 | - who可以查询到有哪些用户在线
84 | - 为什么要有用户和用户组呢?
85 | - 都用一个账号登录不是更简单吗?
86 | - 这背后有什么样的考虑呢?🤔
87 | - 先总结一下用户和用户组去
88 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/064-210191-远程登录_ssh.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # ssh
8 |
9 | ## 回忆
10 |
11 | - 上次我们研究的是oh-my-zsh
12 | - 是zsh上面的一款皮肤
13 | - 效果还不错
14 | - 可以设置字体和字体颜色
15 | - 这就是终端下的美化了
16 | - 如果是远程登录进来的o2z也会有zsh的效果么?
17 |
18 | ### 远程连接
19 |
20 | - 首先查看蓝桥云的ip地址
21 |
22 | 
23 |
24 | - 确实是可以远程登录上去的
25 |
26 | ### 登录结果
27 |
28 | 
29 |
30 | - ssh远程登录的终端
31 | - 和本地直接登录的终端效果是一样的
32 | - 权限就是o2z得权限
33 | - 也可以退出当前这个ssh登录
34 |
35 | 
36 |
37 | - 如果ssh没有安装怎么办呢?
38 |
39 | ### 从零安装
40 |
41 | - 从零开始安装openssh-server
42 |
43 | 
44 |
45 | - 然后启动ssh服务
46 | - 如果是自己买的云的话
47 | - 检查一下防火墙的22端口是否开启
48 |
49 | ### 修改端口
50 |
51 | ```
52 | sudo vi /etc/ssh/sshd_config
53 | ```
54 |
55 | - 尝试修改ssh
56 |
57 | 
58 |
59 | - 将端口修改为22000
60 | - 保存后退出
61 |
62 | ### 重启并连接
63 |
64 | 
65 |
66 | - 尝试连接默认的22端口
67 | - 失败了
68 | - 因为现在的端口为22000
69 |
70 | ### 指定端口
71 |
72 | 
73 |
74 | - 指定这个22000端口作为默认
75 |
76 | ### 查看配置
77 |
78 | 
79 |
80 | - ssh登陆之后
81 | - 确实使用的是
82 | - /home/o2z 作为宿主文件夹
83 | - /usr/bin/zsh 作为默认shell
84 | - 可以读取文件吗?
85 |
86 | ### 读取文件
87 |
88 | 
89 |
90 | - 读取文件确实是可以的
91 | - 先去总结一下
92 |
93 |
94 | ### 总结
95 |
96 | - 我们可以使用ssh
97 | - 远程登录这台ubuntu
98 |
99 | 
100 |
101 | - 首先要安装ssh
102 | - 然后要启动ssh 服务
103 | - 可以设置ssh的登陆端口
104 | - 登陆之后用户可以使用自己的宿主文件夹和shell
105 | - 可以获得用户应有的一切权限
106 | - 既然这个文件可以读写
107 | - 我可以把这个文件从云上拷贝到本地么?🤔
108 | - 下次再说👋
109 |
110 |
--------------------------------------------------------------------------------
/md/066-578030-用户组_group.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 远程拷贝scp
8 |
9 | ## 回忆
10 |
11 | - 上次研究了如何让用户可以以管理员身份运行程序
12 | - 将用户加入sudo(27)这个组里面就可以
13 | - 如何避免每次都要输入密码呢?
14 | - 在/etc/sudoers.d里面添加用户名对应的文件
15 | - 设置此用户不用输入密码就可以执行sudo命令
16 |
17 | 
18 |
19 | - 为什么sudo拥有超级管理员的权限呢?
20 | - 因为sudo的权限是s
21 | - 代表sudo会以root的权限运行
22 | - 从视觉上看到是红色的
23 | - 还有一些程序(wall)是黄色的
24 |
25 | 
26 |
27 | - 这是什么意思呢?
28 |
29 | ### 权限观察
30 |
31 | 
32 |
33 | - 什么是组呢?
34 | - 我可以新建一个组吗?
35 |
36 | ### 新建组
37 |
38 | 
39 |
40 | - 和新建用户差不多
41 | - 新建了组之后
42 | - 可以把用户放进组里面吗?
43 |
44 | ### 查询手册
45 |
46 | 
47 |
48 | ### 将用户加入新组
49 |
50 | 
51 |
52 | ### 添加结果
53 |
54 | 
55 |
56 | - oeasy不但属于默认的oeasy组
57 | - 还属于新的ogroup
58 | - 再接再厉再来一个用户
59 |
60 | ### 添加o2z
61 |
62 | 
63 |
64 | - 目前ogroup里面两个用户了
65 | - oeasy
66 | - o2z
67 | - 可以用wall给他们发信息吗?
68 | - 先总结一下本单元
69 |
70 | ### 总结 🤨
71 |
72 | - 我们这次新建了组(group)
73 | - addgroup
74 | - 有addgroup就有delgroup
75 |
76 | 
77 |
78 | - 可以将用户放到用户组中
79 | - add oeasy ogroup
80 | - 我们可以用wall
81 | - 给oeasy、o2z发消息吗?🤔
82 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/067-578030-用户组_group.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 远程拷贝scp
8 |
9 | ## 回忆
10 |
11 | - 上次研究了如何让用户可以以管理员身份运行程序
12 | - 将用户加入sudo(27)这个组里面就可以
13 | - 如何避免每次都要输入密码呢?
14 | - 在/etc/sudoers.d里面添加用户名对应的文件
15 | - 设置此用户不用输入密码就可以执行sudo命令
16 |
17 | 
18 |
19 | - 为什么sudo拥有超级管理员的权限呢?
20 | - 因为sudo的权限是s
21 | - 代表sudo会以root的权限运行
22 | - 从视觉上看到是红色的
23 | - 还有一些程序(wall)是黄色的
24 |
25 | 
26 |
27 | - 这是什么意思呢?
28 |
29 | ### 权限观察
30 |
31 | 
32 |
33 | - 什么是组呢?
34 | - 我可以新建一个组吗?
35 |
36 | ### 新建组
37 |
38 | 
39 |
40 | - 和新建用户差不多
41 | - 新建了组之后
42 | - 可以把用户放进组里面吗?
43 |
44 | ### 查询手册
45 |
46 | 
47 |
48 | ### 将用户加入新组
49 |
50 | 
51 |
52 | ### 添加结果
53 |
54 | 
55 |
56 | - oeasy不但属于默认的oeasy组
57 | - 还属于新的ogroup
58 | - 再接再厉再来一个用户
59 |
60 | ### 添加o2z
61 |
62 | 
63 |
64 | - 目前ogroup里面两个用户了
65 | - oeasy
66 | - o2z
67 | - 可以用wall给他们发信息吗?
68 | - 先总结一下本单元
69 |
70 | ### 总结 🤨
71 |
72 | - 我们这次新建了组(group)
73 | - addgroup
74 | - 有addgroup就有delgroup
75 |
76 | 
77 |
78 | - 可以将用户放到用户组中
79 | - add oeasy ogroup
80 | - 我们可以用wall
81 | - 给oeasy、o2z发消息吗?🤔
82 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/067-578057-给用户组发信息_wall.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 给用户组发消息(wall)
8 |
9 | ## 回忆
10 |
11 | - 我们上次新建了组(group)
12 | - addgroup
13 | - 有addgroup就有delgroup
14 |
15 | 
16 |
17 | - 可以将用户放到用户组中
18 | - add oeasy ogroup
19 | - 我们可以用wall
20 | - 给oeasy、o2z发消息吗?
21 |
22 | ### 查看ip
23 |
24 | 
25 |
26 | ### 登录用户
27 |
28 | - 开两个终端
29 | - 用oeasy远程登录本机ip
30 |
31 | 
32 |
33 | - 用o2z远程登录本机ip
34 |
35 | 
36 |
37 | ### 查看谁登陆
38 |
39 | 
40 |
41 | - 我们可以看到两个登录的用户
42 | - 现在给他们发消息
43 |
44 | 
45 |
46 | ### wall
47 |
48 | 
49 |
50 | - 我们可以给这个组的两个用户都发送消息
51 | - 可以只给oeasy发消息吗?
52 |
53 | ### 只给用户发消息
54 |
55 | 
56 |
57 | - 我们可以给oeasy这个组发消息
58 | - 这样只有oeasy能收到消息了
59 | - 如果想给所有的用户都发消息呢?
60 |
61 | ### 所有的用户
62 |
63 | 
64 |
65 | - 不加group
66 | - 就是给所有的用户都发消息了
67 |
68 | ### wall
69 |
70 | - 这也是wall名字的由来
71 |
72 | 
73 |
74 | - 给所有人写消息
75 |
76 | ### 总结 🤨
77 |
78 | - 这次我们研究了 wall 这个命令
79 | - 这个命令可以给当前登录本服务的用户发消息
80 | - 给指定某个组发消息
81 | - 给指定的用户发消息
82 | - 给所有用户发消息
83 | - who可以查询到有哪些用户在线
84 | - 为什么要有用户和用户组呢?
85 | - 都用一个账号登录不是更简单吗?
86 | - 这背后有什么样的考虑呢?🤔
87 | - 先总结一下用户和用户组去
88 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/067-580756-修改所有者_chown_递归修改_查看细节.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 修改文件权限(chmod)
8 |
9 | ## 回忆
10 |
11 | - 上次研究的是修改所属组
12 | - chgrp
13 | - 通过修改文件的所属组
14 | - 可以控制文件的权限
15 | - 角色依然分为
16 | - u 文件拥有者
17 | - g 文件拥有者同组其他用户
18 | - o 文件拥有者所属组之外的用户
19 | - a 所有用户
20 | - 权限分为
21 | - r 读
22 | - w 写
23 | - x 执行
24 | - 那我可以修改文件的所有者吗?
25 |
26 | ### 修改所有者
27 |
28 | - chown 可以修改所有者
29 |
30 | 
31 |
32 | - 意思是change owner
33 |
34 | ### 查看帮助手册
35 |
36 | 
37 |
38 | - 这个命令好像
39 | - 既可以修改owner
40 | - 又可以修改group
41 |
42 | ### 直接修改所有者
43 |
44 | - sudo chown oeasy test.sh
45 |
46 | 
47 |
48 | - 可以既
49 | - 修改owner
50 | - 又修改group吗?
51 |
52 | ### 查看手册
53 |
54 | 
55 |
56 | - 确实可以两个都修改
57 |
58 | 
59 |
60 | - 如果冒号后面没有东西呢?
61 |
62 | ### 默认登录组
63 |
64 | 
65 |
66 | - 查看帮助
67 |
68 | 
69 |
70 | - 冒号后面缺省的是用户的默认登录组
71 | - 如果冒号前面缺省呢?
72 |
73 | ### 缺省用户名
74 |
75 | - 如果冒号前面缺省的话
76 |
77 | 
78 |
79 | - 作用相当于chgrp
80 |
81 | 
82 |
83 | - 可以设置文件夹的权限、所有者和所属组吗?
84 |
85 | ### 文件夹权限
86 |
87 | 
88 |
89 | - 修改成功
90 | - 文件夹内部呢?
91 |
92 | 
93 |
94 | - 文件夹中的文件不受影响
95 | - 如果我想同时修改文件夹内部的文件夹和文件呢?
96 |
97 | ### 查看文档
98 |
99 | 
100 |
101 | - -R可以递归修改文件夹
102 | - -v可以输出修改细节
103 |
104 | ### 递归修改
105 |
106 | 
107 |
108 | ### 总结 🤨
109 | - 我们这次了解了命令chown
110 | - 可以修改文件的所有者
111 | - 也可以修改文件的所属组
112 | - 而且
113 | - 还可以对于文件夹设置所有者
114 | - 甚至设置递归地设置文件夹的所有者
115 | - 这两个可以配合
116 | - 通过chown设置所有者和组
117 | - 通过chmod设置权限
118 | - 但是也发现一些问题
119 |
120 | 
121 |
122 | - sudo命令的可执行权限是s
123 | - 这应该如何理解呢?🤔
124 | - 下次再说👋
--------------------------------------------------------------------------------
/md/068-578057-给用户组发信息_wall.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 给用户组发消息(wall)
8 |
9 | ## 回忆
10 |
11 | - 我们上次新建了组(group)
12 | - addgroup
13 | - 有addgroup就有delgroup
14 |
15 | 
16 |
17 | - 可以将用户放到用户组中
18 | - add oeasy ogroup
19 | - 我们可以用wall
20 | - 给oeasy、o2z发消息吗?
21 |
22 | ### 查看ip
23 |
24 | 
25 |
26 | ### 登录用户
27 |
28 | - 开两个终端
29 | - 用oeasy远程登录本机ip
30 |
31 | 
32 |
33 | - 用o2z远程登录本机ip
34 |
35 | 
36 |
37 | ### 查看谁登陆
38 |
39 | 
40 |
41 | - 我们可以看到两个登录的用户
42 | - 现在给他们发消息
43 |
44 | 
45 |
46 | ### wall
47 |
48 | 
49 |
50 | - 我们可以给这个组的两个用户都发送消息
51 | - 可以只给oeasy发消息吗?
52 |
53 | ### 只给用户发消息
54 |
55 | 
56 |
57 | - 我们可以给oeasy这个组发消息
58 | - 这样只有oeasy能收到消息了
59 | - 如果想给所有的用户都发消息呢?
60 |
61 | ### 所有的用户
62 |
63 | 
64 |
65 | - 不加group
66 | - 就是给所有的用户都发消息了
67 |
68 | ### wall
69 |
70 | - 这也是wall名字的由来
71 |
72 | 
73 |
74 | - 给所有人写消息
75 |
76 | ### 总结 🤨
77 |
78 | - 这次我们研究了 wall 这个命令
79 | - 这个命令可以给当前登录本服务的用户发消息
80 | - 给指定某个组发消息
81 | - 给指定的用户发消息
82 | - 给所有用户发消息
83 | - who可以查询到有哪些用户在线
84 | - 为什么要有用户和用户组呢?
85 | - 都用一个账号登录不是更简单吗?
86 | - 这背后有什么样的考虑呢?🤔
87 | - 先总结一下用户和用户组去
88 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/069-578059-临时拥有文件所有组身份_sgid.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 修改文件权限(chmod)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了suid
12 | - 这种权限在文件所有者的执行权限上显示为s
13 | - 意味着执行的时候可以使用文件所有者的权限
14 | - 可是为什么要设置这样一种权限呢?
15 |
16 | ### 原因
17 |
18 | - 我们如果要修改当前用户的密码
19 | - 需要调用passwd命令
20 | - 这个命令再去修改/etc/shadow
21 | - 而/etc/shadow的所有者是root
22 | - 只有所有者有写权限
23 | - 这就导致了想要修改密码必须使用root账号
24 | - 那么一般账号就无法修改自己的密码了
25 |
26 | 
27 |
28 | - 我们使用uid的权限
29 | - 就可以让当前用户在执行passwd时
30 | - 拥有root权限
31 | - 从而可以修改/etc/shadow
32 | - 从而完成修改密码的操作
33 | - 可以设置g+s权限吗?
34 |
35 | ### g+s
36 |
37 | - 用oeasy登录
38 | - 并为oeasy宿主文件夹设置
39 | - 777权限
40 | - g+s权限
41 |
42 | 
43 |
44 | - 其他用户可以在里面添加文件和文件夹吗?
45 | - 用o2z去试试
46 |
47 | ### o2z
48 |
49 | - 可以新建文件和文件夹
50 |
51 | 
52 |
53 | - 新建文件和文件夹的所属主还是oeasy而不是o2z
54 | - 新建文件夹的执行组权限还是s
55 | - 这目录将sgid继承了
56 | - 而且在下面再建文件和文件夹属组也是oeasy
57 | - sgid具体来说有什么用呢?
58 |
59 | ### gsid
60 |
61 | - 先准备好
62 |
63 | - 两个用户
64 | - oeasy
65 | - o2z
66 | - 一个组
67 | - ogroup
68 | 
69 |
70 | - 并把oeasy和o2z的默认远程登录组设置为ogroup
71 |
72 | ### 拥有sgid的文件
73 |
74 | - /usr/bin下面找到wall文件
75 | - 这个文件sgid为s
76 |
77 | 
78 |
79 | - 用ssh远程登录上oeasy和o2z
80 | - 这个时候
81 | - oeasy发消息可以发到o2z
82 | - 因为他是以wall的tty组的权限来发的
83 | - 而不是以oeasy组的权限来发的
84 | - 所有tty登录的终端都会收到这些信息
85 | - 我们来总结一下各种标志位
86 |
87 | ### 标志位总结
88 |
89 | | mode | 说明 |
90 | | ---- | ---- |
91 | | S_IRWXU | 用户(所有者)读、写、执行 |
92 | | S_IRUSR | 用户(所有者)读 |
93 | | S_IRWUSR | 用户(所有者)写 |
94 | | S_IRXUSR | 用户(所有者)执行 |
95 | | S_IRWXG | 用户组读、写、执行 |
96 | | S_IRGRP | 用户组读 |
97 | | S_IWGRP | 用户组写 |
98 | | S_IXGRP | 用户组执行 |
99 | | S_IRWXO | 其他读、写、执行 |
100 | | S_IROTH | 其他读 |
101 | | S_IROTH | 其他写 |
102 | | S_IROTH | 其他执行 |
103 | | S_ISUID | 执行时设置用户id |
104 | | S_ISGID | 执行时设置用户组id |
105 |
106 | ### 总结 🤨
107 | - 我们现在可以
108 | - 让进程获得文件所有者的权限suid
109 | - 让进程获得文件所属组的权限sgid
110 | - 文件夹的sgid具有继承性
111 | - 理论上其他组(o)应该也有个临时设置的特殊位
112 | - 这个真的有吗?🤔
113 | - 下次再说👋
--------------------------------------------------------------------------------
/md/071-580756-修改所有者_chown_递归修改_查看细节.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 修改文件权限(chmod)
8 |
9 | ## 回忆
10 |
11 | - 上次研究的是修改所属组
12 | - chgrp
13 | - 通过修改文件的所属组
14 | - 可以控制文件的权限
15 | - 角色依然分为
16 | - u 文件拥有者
17 | - g 文件拥有者同组其他用户
18 | - o 文件拥有者所属组之外的用户
19 | - a 所有用户
20 | - 权限分为
21 | - r 读
22 | - w 写
23 | - x 执行
24 | - 那我可以修改文件的所有者吗?
25 |
26 | ### 修改所有者
27 |
28 | - chown 可以修改所有者
29 |
30 | 
31 |
32 | - 意思是change owner
33 |
34 | ### 查看帮助手册
35 |
36 | 
37 |
38 | - 这个命令好像
39 | - 既可以修改owner
40 | - 又可以修改group
41 |
42 | ### 直接修改所有者
43 |
44 | - sudo chown oeasy test.sh
45 |
46 | 
47 |
48 | - 可以既
49 | - 修改owner
50 | - 又修改group吗?
51 |
52 | ### 查看手册
53 |
54 | 
55 |
56 | - 确实可以两个都修改
57 |
58 | 
59 |
60 | - 如果冒号后面没有东西呢?
61 |
62 | ### 默认登录组
63 |
64 | 
65 |
66 | - 查看帮助
67 |
68 | 
69 |
70 | - 冒号后面缺省的是用户的默认登录组
71 | - 如果冒号前面缺省呢?
72 |
73 | ### 缺省用户名
74 |
75 | - 如果冒号前面缺省的话
76 |
77 | 
78 |
79 | - 作用相当于chgrp
80 |
81 | 
82 |
83 | - 可以设置文件夹的权限、所有者和所属组吗?
84 |
85 | ### 文件夹权限
86 |
87 | 
88 |
89 | - 修改成功
90 | - 文件夹内部呢?
91 |
92 | 
93 |
94 | - 文件夹中的文件不受影响
95 | - 如果我想同时修改文件夹内部的文件夹和文件呢?
96 |
97 | ### 查看文档
98 |
99 | 
100 |
101 | - -R可以递归修改文件夹
102 | - -v可以输出修改细节
103 |
104 | ### 递归修改
105 |
106 | 
107 |
108 | ### 总结 🤨
109 | - 我们这次了解了命令chown
110 | - 可以修改文件的所有者
111 | - 也可以修改文件的所属组
112 | - 而且
113 | - 还可以对于文件夹设置所有者
114 | - 甚至设置递归地设置文件夹的所有者
115 | - 这两个可以配合
116 | - 通过chown设置所有者和组
117 | - 通过chmod设置权限
118 | - 但是也发现一些问题
119 |
120 | 
121 |
122 | - sudo命令的可执行权限是s
123 | - 这应该如何理解呢?🤔
124 | - 下次再说👋
--------------------------------------------------------------------------------
/md/072-199464-数据库_postgresql.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 数据库 postgres
8 |
9 | ## 数据库
10 |
11 | - 我们这次进入一个全新的领域 😌
12 | - 数据库
13 | - 哪个数据库好呢?
14 | - 这是2021年的排行榜
15 |
16 | 
17 |
18 | - 开源的有两个
19 | - mysql自称是最流行的数据库
20 | - postgres自称是最先进的数据库
21 | - 我们选择postgres来学习
22 |
23 |
24 | ### 入库
25 | - 更新系统安装postgres
26 | - 启动postgres
27 | - 并以postgres登录
28 |
29 | ```
30 | sudo apt update
31 | sudo apt install postgresql
32 | sudo /etc/init.d/postgresql start
33 | sudo -u postgres psql
34 | ```
35 |
36 | - 查看所有数据库database
37 |
38 | 
39 |
40 | ### 查看数据库
41 | ```
42 | \l
43 | ```
44 |
45 | 
46 |
47 | - 建立数据库oeasy
48 | - 并进入
49 |
50 | ```
51 | create database oeasy;
52 | \l
53 | ```
54 | 
55 |
56 | ### 建表并导入数据
57 | ```
58 | \c oeasy
59 | \dt
60 | ```
61 |
62 | 
63 |
64 | - 建表
65 |
66 | ```
67 | create table urls(topic varchar, url varchar);
68 | \dt
69 | ```
70 |
71 | 
72 |
73 | ### 下载数据
74 |
75 | - git clone http://gitee.com/overmind1980/oeasyorg.git
76 | - 找到其中的urls.csv
77 |
78 | 
79 |
80 | ### 导入数据
81 |
82 | ```
83 | \copy urls from '/home/shiyanlou/oeasyorg/urls.csv' delimiter ',' csv ;
84 | ```
85 | 
86 |
87 | ### 查询数据
88 |
89 | ```
90 | select * from urls where topic like '%e%';
91 | select * from urls where length(topic) > '5';
92 | ```
93 |
94 | 
95 |
96 | ### 总结 🤨
97 | - 我们这次搭建了postgres数据库
98 | - 并且导入了数据
99 | - 查询了数据
100 | - 可以把这个数据放在网页里查看么?
101 | - 下次再说!👋
102 |
103 |
104 |
--------------------------------------------------------------------------------
/md/072-580756-修改所有者_chown_递归修改_查看细节.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 修改文件权限(chmod)
8 |
9 | ## 回忆
10 |
11 | - 上次研究的是修改所属组
12 | - chgrp
13 | - 通过修改文件的所属组
14 | - 可以控制文件的权限
15 | - 角色依然分为
16 | - u 文件拥有者
17 | - g 文件拥有者同组其他用户
18 | - o 文件拥有者所属组之外的用户
19 | - a 所有用户
20 | - 权限分为
21 | - r 读
22 | - w 写
23 | - x 执行
24 | - 那我可以修改文件的所有者吗?
25 |
26 | ### 修改所有者
27 |
28 | - chown 可以修改所有者
29 |
30 | 
31 |
32 | - 意思是change owner
33 |
34 | ### 查看帮助手册
35 |
36 | 
37 |
38 | - 这个命令好像
39 | - 既可以修改owner
40 | - 又可以修改group
41 |
42 | ### 直接修改所有者
43 |
44 | - sudo chown oeasy test.sh
45 |
46 | 
47 |
48 | - 可以既
49 | - 修改owner
50 | - 又修改group吗?
51 |
52 | ### 查看手册
53 |
54 | 
55 |
56 | - 确实可以两个都修改
57 |
58 | 
59 |
60 | - 如果冒号后面没有东西呢?
61 |
62 | ### 默认登录组
63 |
64 | 
65 |
66 | - 查看帮助
67 |
68 | 
69 |
70 | - 冒号后面缺省的是用户的默认登录组
71 | - 如果冒号前面缺省呢?
72 |
73 | ### 缺省用户名
74 |
75 | - 如果冒号前面缺省的话
76 |
77 | 
78 |
79 | - 作用相当于chgrp
80 |
81 | 
82 |
83 | - 可以设置文件夹的权限、所有者和所属组吗?
84 |
85 | ### 文件夹权限
86 |
87 | 
88 |
89 | - 修改成功
90 | - 文件夹内部呢?
91 |
92 | 
93 |
94 | - 文件夹中的文件不受影响
95 | - 如果我想同时修改文件夹内部的文件夹和文件呢?
96 |
97 | ### 查看文档
98 |
99 | 
100 |
101 | - -R可以递归修改文件夹
102 | - -v可以输出修改细节
103 |
104 | ### 递归修改
105 |
106 | 
107 |
108 | ### 总结 🤨
109 | - 我们这次了解了命令chown
110 | - 可以修改文件的所有者
111 | - 也可以修改文件的所属组
112 | - 而且
113 | - 还可以对于文件夹设置所有者
114 | - 甚至设置递归地设置文件夹的所有者
115 | - 这两个可以配合
116 | - 通过chown设置所有者和组
117 | - 通过chmod设置权限
118 | - 但是也发现一些问题
119 |
120 | 
121 |
122 | - sudo命令的可执行权限是s
123 | - 这应该如何理解呢?🤔
124 | - 下次再说👋
--------------------------------------------------------------------------------
/md/073-578059-临时拥有文件所有组身份_sgid.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 修改文件权限(chmod)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了suid
12 | - 这种权限在文件所有者的执行权限上显示为s
13 | - 意味着执行的时候可以使用文件所有者的权限
14 | - 可是为什么要设置这样一种权限呢?
15 |
16 | ### 原因
17 |
18 | - 我们如果要修改当前用户的密码
19 | - 需要调用passwd命令
20 | - 这个命令再去修改/etc/shadow
21 | - 而/etc/shadow的所有者是root
22 | - 只有所有者有写权限
23 | - 这就导致了想要修改密码必须使用root账号
24 | - 那么一般账号就无法修改自己的密码了
25 |
26 | 
27 |
28 | - 我们使用uid的权限
29 | - 就可以让当前用户在执行passwd时
30 | - 拥有root权限
31 | - 从而可以修改/etc/shadow
32 | - 从而完成修改密码的操作
33 | - 可以设置g+s权限吗?
34 |
35 | ### g+s
36 |
37 | - 用oeasy登录
38 | - 并为oeasy宿主文件夹设置
39 | - 777权限
40 | - g+s权限
41 |
42 | 
43 |
44 | - 其他用户可以在里面添加文件和文件夹吗?
45 | - 用o2z去试试
46 |
47 | ### o2z
48 |
49 | - 可以新建文件和文件夹
50 |
51 | 
52 |
53 | - 新建文件和文件夹的所属主还是oeasy而不是o2z
54 | - 新建文件夹的执行组权限还是s
55 | - 这目录将sgid继承了
56 | - 而且在下面再建文件和文件夹属组也是oeasy
57 | - sgid具体来说有什么用呢?
58 |
59 | ### gsid
60 |
61 | - 先准备好
62 |
63 | - 两个用户
64 | - oeasy
65 | - o2z
66 | - 一个组
67 | - ogroup
68 | 
69 |
70 | - 并把oeasy和o2z的默认远程登录组设置为ogroup
71 |
72 | ### 拥有sgid的文件
73 |
74 | - /usr/bin下面找到wall文件
75 | - 这个文件sgid为s
76 |
77 | 
78 |
79 | - 用ssh远程登录上oeasy和o2z
80 | - 这个时候
81 | - oeasy发消息可以发到o2z
82 | - 因为他是以wall的tty组的权限来发的
83 | - 而不是以oeasy组的权限来发的
84 | - 所有tty登录的终端都会收到这些信息
85 | - 我们来总结一下各种标志位
86 |
87 | ### 标志位总结
88 |
89 | | mode | 说明 |
90 | | ---- | ---- |
91 | | S_IRWXU | 用户(所有者)读、写、执行 |
92 | | S_IRUSR | 用户(所有者)读 |
93 | | S_IRWUSR | 用户(所有者)写 |
94 | | S_IRXUSR | 用户(所有者)执行 |
95 | | S_IRWXG | 用户组读、写、执行 |
96 | | S_IRGRP | 用户组读 |
97 | | S_IWGRP | 用户组写 |
98 | | S_IXGRP | 用户组执行 |
99 | | S_IRWXO | 其他读、写、执行 |
100 | | S_IROTH | 其他读 |
101 | | S_IROTH | 其他写 |
102 | | S_IROTH | 其他执行 |
103 | | S_ISUID | 执行时设置用户id |
104 | | S_ISGID | 执行时设置用户组id |
105 |
106 | ### 总结 🤨
107 | - 我们现在可以
108 | - 让进程获得文件所有者的权限suid
109 | - 让进程获得文件所属组的权限sgid
110 | - 文件夹的sgid具有继承性
111 | - 理论上其他组(o)应该也有个临时设置的特殊位
112 | - 这个真的有吗?🤔
113 | - 下次再说👋
--------------------------------------------------------------------------------
/md/074-578059-临时拥有文件所有组身份_sgid.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 修改文件权限(chmod)
8 |
9 | ## 回忆
10 |
11 | - 上次研究了suid
12 | - 这种权限在文件所有者的执行权限上显示为s
13 | - 意味着执行的时候可以使用文件所有者的权限
14 | - 可是为什么要设置这样一种权限呢?
15 |
16 | ### 原因
17 |
18 | - 我们如果要修改当前用户的密码
19 | - 需要调用passwd命令
20 | - 这个命令再去修改/etc/shadow
21 | - 而/etc/shadow的所有者是root
22 | - 只有所有者有写权限
23 | - 这就导致了想要修改密码必须使用root账号
24 | - 那么一般账号就无法修改自己的密码了
25 |
26 | 
27 |
28 | - 我们使用uid的权限
29 | - 就可以让当前用户在执行passwd时
30 | - 拥有root权限
31 | - 从而可以修改/etc/shadow
32 | - 从而完成修改密码的操作
33 | - 可以设置g+s权限吗?
34 |
35 | ### g+s
36 |
37 | - 用oeasy登录
38 | - 并为oeasy宿主文件夹设置
39 | - 777权限
40 | - g+s权限
41 |
42 | 
43 |
44 | - 其他用户可以在里面添加文件和文件夹吗?
45 | - 用o2z去试试
46 |
47 | ### o2z
48 |
49 | - 可以新建文件和文件夹
50 |
51 | 
52 |
53 | - 新建文件和文件夹的所属主还是oeasy而不是o2z
54 | - 新建文件夹的执行组权限还是s
55 | - 这目录将sgid继承了
56 | - 而且在下面再建文件和文件夹属组也是oeasy
57 | - sgid具体来说有什么用呢?
58 |
59 | ### gsid
60 |
61 | - 先准备好
62 |
63 | - 两个用户
64 | - oeasy
65 | - o2z
66 | - 一个组
67 | - ogroup
68 | 
69 |
70 | - 并把oeasy和o2z的默认远程登录组设置为ogroup
71 |
72 | ### 拥有sgid的文件
73 |
74 | - /usr/bin下面找到wall文件
75 | - 这个文件sgid为s
76 |
77 | 
78 |
79 | - 用ssh远程登录上oeasy和o2z
80 | - 这个时候
81 | - oeasy发消息可以发到o2z
82 | - 因为他是以wall的tty组的权限来发的
83 | - 而不是以oeasy组的权限来发的
84 | - 所有tty登录的终端都会收到这些信息
85 | - 我们来总结一下各种标志位
86 |
87 | ### 标志位总结
88 |
89 | | mode | 说明 |
90 | | ---- | ---- |
91 | | S_IRWXU | 用户(所有者)读、写、执行 |
92 | | S_IRUSR | 用户(所有者)读 |
93 | | S_IRWUSR | 用户(所有者)写 |
94 | | S_IRXUSR | 用户(所有者)执行 |
95 | | S_IRWXG | 用户组读、写、执行 |
96 | | S_IRGRP | 用户组读 |
97 | | S_IWGRP | 用户组写 |
98 | | S_IXGRP | 用户组执行 |
99 | | S_IRWXO | 其他读、写、执行 |
100 | | S_IROTH | 其他读 |
101 | | S_IWOTH | 其他写 |
102 | | S_IXOTH | 其他执行 |
103 | | S_ISUID | 执行时设置用户id |
104 | | S_ISGID | 执行时设置用户组id |
105 |
106 | ### 总结 🤨
107 | - 我们现在可以
108 | - 让进程获得文件所有者的权限suid
109 | - 让进程获得文件所属组的权限sgid
110 | - 文件夹的sgid具有继承性
111 | - 理论上其他组(o)应该也有个临时设置的特殊位
112 | - 这个真的有吗?🤔
113 | - 下次再说👋
--------------------------------------------------------------------------------
/md/076-199464-数据库_postgresql.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 数据库 postgres
8 |
9 | ## 数据库
10 |
11 | - 我们这次进入一个全新的领域 😌
12 | - 数据库
13 | - 哪个数据库好呢?
14 | - 这是2021年的排行榜
15 |
16 | 
17 |
18 | - 开源的有两个
19 | - mysql自称是最流行的数据库
20 | - postgres自称是最先进的数据库
21 | - 我们选择postgres来学习
22 |
23 |
24 | ### 入库
25 | - 更新系统安装postgres
26 | - 启动postgres
27 | - 并以postgres登录
28 |
29 | ```
30 | sudo apt update
31 | sudo apt install postgresql
32 | sudo /etc/init.d/postgresql start
33 | sudo -u postgres psql
34 | ```
35 |
36 | - 查看所有数据库database
37 |
38 | 
39 |
40 | ### 查看数据库
41 | ```
42 | \l
43 | ```
44 |
45 | 
46 |
47 | - 建立数据库oeasy
48 | - 并进入
49 |
50 | ```
51 | create database oeasy;
52 | \l
53 | ```
54 | 
55 |
56 | ### 建表并导入数据
57 | ```
58 | \c oeasy
59 | \dt
60 | ```
61 |
62 | 
63 |
64 | - 建表
65 |
66 | ```
67 | create table urls(topic varchar, url varchar);
68 | \dt
69 | ```
70 |
71 | 
72 |
73 | ### 下载数据
74 |
75 | - git clone http://gitee.com/overmind1980/oeasyorg.git
76 | - 找到其中的urls.csv
77 |
78 | 
79 |
80 | ### 导入数据
81 |
82 | ```
83 | \copy urls from '/home/shiyanlou/oeasyorg/urls.csv' delimiter ',' csv ;
84 | ```
85 | 
86 |
87 | ### 查询数据
88 |
89 | ```
90 | select * from urls where topic like '%e%';
91 | select * from urls where length(topic) > '5';
92 | ```
93 |
94 | 
95 |
96 | ### 总结 🤨
97 | - 我们这次搭建了postgres数据库
98 | - 并且导入了数据
99 | - 查询了数据
100 | - 可以把这个数据放在网页里查看么?
101 | - 下次再说!👋
102 |
103 |
104 |
--------------------------------------------------------------------------------
/md/077-199464-数据库_postgresql.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 数据库 postgres
8 |
9 | ## 数据库
10 |
11 | - 我们这次进入一个全新的领域 😌
12 | - 数据库
13 | - 哪个数据库好呢?
14 | - 这是2021年的排行榜
15 |
16 | 
17 |
18 | - 开源的有两个
19 | - mysql自称是最流行的数据库
20 | - postgres自称是最先进的数据库
21 | - 我们选择postgres来学习
22 |
23 |
24 | ### 入库
25 | - 更新系统安装postgres
26 | - 启动postgres
27 | - 并以postgres登录
28 |
29 | ```
30 | sudo apt update
31 | sudo apt install postgresql
32 | sudo /etc/init.d/postgresql start
33 | sudo -u postgres psql
34 | ```
35 |
36 | - 查看所有数据库database
37 |
38 | 
39 |
40 | ### 查看数据库
41 | ```
42 | \l
43 | ```
44 |
45 | 
46 |
47 | - 建立数据库oeasy
48 | - 并进入
49 |
50 | ```
51 | create database oeasy;
52 | \l
53 | ```
54 | 
55 |
56 | ### 建表并导入数据
57 | ```
58 | \c oeasy
59 | \dt
60 | ```
61 |
62 | 
63 |
64 | - 建表
65 |
66 | ```
67 | create table urls(topic varchar, url varchar);
68 | \dt
69 | ```
70 |
71 | 
72 |
73 | ### 下载数据
74 |
75 | - git clone http://gitee.com/overmind1980/oeasyorg.git
76 | - 找到其中的urls.csv
77 |
78 | 
79 |
80 | ### 导入数据
81 |
82 | ```
83 | \copy urls from '/home/shiyanlou/oeasyorg/urls.csv' delimiter ',' csv ;
84 | ```
85 | 
86 |
87 | ### 查询数据
88 |
89 | ```
90 | select * from urls where topic like '%e%';
91 | select * from urls where length(topic) > '5';
92 | ```
93 |
94 | 
95 |
96 | ### 总结 🤨
97 | - 我们这次搭建了postgres数据库
98 | - 并且导入了数据
99 | - 查询了数据
100 | - 可以把这个数据放在网页里查看么?
101 | - 下次再说!👋
102 |
103 |
104 |
--------------------------------------------------------------------------------
/md/104-497989-准备删除.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 封装数据库连接
8 |
9 | ## 回忆
10 |
11 | - jdbc connection pool
12 | - jdbc 数据库连接池
13 | - 首先是一种池子
14 | - 通过指定的四步
15 | 1. 配置jdbc数据库连接池的jar包
16 | 2. 资源配置(context.xml中设置关于pg的Resource)
17 | 3. 在本应用的web.xml中使用相应的资源引用
18 | 4. 在程序中使用jndi调用数据库连接资源
19 | - 经过这四步我们就构建了一个可用的数据库连接池
20 | - 我们用这个数据库连接池可以做怎样的操作呢
21 | - 比如删除?🤔
22 |
23 | ### 起手
24 |
25 | - 复制代码
26 |
27 | 
28 |
29 | - 修改类名
30 |
31 | 
32 |
33 | - 保存并编译
34 | - 成功!
35 |
36 | ### 细化代码
37 |
38 | 
39 |
40 | - 给每个用户记录后面添加了一个按钮
41 | - 用来删除用户记录
42 |
43 | ### 配置路由
44 |
45 | 
46 |
47 | - 配置很顺利
48 | - 我们已经对于配置路由越来越熟练了
49 |
50 | ### 浏览器访问
51 |
52 | 
53 |
54 | 
55 |
56 | - 但是点击之后没有效果
57 |
58 | ### 搜索
59 |
60 | 
61 |
62 | 
63 |
64 | ### 修改
65 |
66 | 
67 |
68 | ### 再访问
69 |
70 | 
71 |
72 | 
73 |
74 | 
75 |
76 | - 点击按钮是可以完成跳转的
77 | - 后面就是添加删除的处理函数和路由
78 |
79 | ## 总结
80 |
81 | - 我们这次应用数据库连接池
82 | - 制作了一个管理页面
83 | - 这个页面可以查询所有的用户记录
84 | - 并且每个用户后面有一个删除按钮
85 | - 删除应该如何完成呢
86 | - 能否直接就写处理函数
87 | - 让路由在编译class的时候自动生成呢?🤔
88 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/108-497989-准备删除.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 封装数据库连接
8 |
9 | ## 回忆
10 |
11 | - jdbc connection pool
12 | - jdbc 数据库连接池
13 | - 首先是一种池子
14 | - 通过指定的四步
15 | 1. 配置jdbc数据库连接池的jar包
16 | 2. 资源配置(context.xml中设置关于pg的Resource)
17 | 3. 在本应用的web.xml中使用相应的资源引用
18 | 4. 在程序中使用jndi调用数据库连接资源
19 | - 经过这四步我们就构建了一个可用的数据库连接池
20 | - 我们用这个数据库连接池可以做怎样的操作呢
21 | - 比如删除?🤔
22 |
23 | ### 起手
24 |
25 | - 复制代码
26 |
27 | 
28 |
29 | - 修改类名
30 |
31 | 
32 |
33 | - 保存并编译
34 | - 成功!
35 |
36 | ### 细化代码
37 |
38 | 
39 |
40 | - 给每个用户记录后面添加了一个按钮
41 | - 用来删除用户记录
42 |
43 | ### 配置路由
44 |
45 | 
46 |
47 | - 配置很顺利
48 | - 我们已经对于配置路由越来越熟练了
49 |
50 | ### 浏览器访问
51 |
52 | 
53 |
54 | 
55 |
56 | - 但是点击之后没有效果
57 |
58 | ### 搜索
59 |
60 | 
61 |
62 | 
63 |
64 | ### 修改
65 |
66 | 
67 |
68 | ### 再访问
69 |
70 | 
71 |
72 | 
73 |
74 | 
75 |
76 | - 点击按钮是可以完成跳转的
77 | - 后面就是添加删除的处理函数和路由
78 |
79 | ## 总结
80 |
81 | - 我们这次应用数据库连接池
82 | - 制作了一个管理页面
83 | - 这个页面可以查询所有的用户记录
84 | - 并且每个用户后面有一个删除按钮
85 | - 删除应该如何完成呢
86 | - 能否直接就写处理函数
87 | - 让路由在编译class的时候自动生成呢?🤔
88 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/109-497989-准备删除.sy.md:
--------------------------------------------------------------------------------
1 | ---
2 | show: step
3 | version: 1.0
4 | enable_checker: true
5 | ---
6 |
7 | # 封装数据库连接
8 |
9 | ## 回忆
10 |
11 | - jdbc connection pool
12 | - jdbc 数据库连接池
13 | - 首先是一种池子
14 | - 通过指定的四步
15 | 1. 配置jdbc数据库连接池的jar包
16 | 2. 资源配置(context.xml中设置关于pg的Resource)
17 | 3. 在本应用的web.xml中使用相应的资源引用
18 | 4. 在程序中使用jndi调用数据库连接资源
19 | - 经过这四步我们就构建了一个可用的数据库连接池
20 | - 我们用这个数据库连接池可以做怎样的操作呢
21 | - 比如删除?🤔
22 |
23 | ### 起手
24 |
25 | - 复制代码
26 |
27 | 
28 |
29 | - 修改类名
30 |
31 | 
32 |
33 | - 保存并编译
34 | - 成功!
35 |
36 | ### 细化代码
37 |
38 | 
39 |
40 | - 给每个用户记录后面添加了一个按钮
41 | - 用来删除用户记录
42 |
43 | ### 配置路由
44 |
45 | 
46 |
47 | - 配置很顺利
48 | - 我们已经对于配置路由越来越熟练了
49 |
50 | ### 浏览器访问
51 |
52 | 
53 |
54 | 
55 |
56 | - 但是点击之后没有效果
57 |
58 | ### 搜索
59 |
60 | 
61 |
62 | 
63 |
64 | ### 修改
65 |
66 | 
67 |
68 | ### 再访问
69 |
70 | 
71 |
72 | 
73 |
74 | 
75 |
76 | - 点击按钮是可以完成跳转的
77 | - 后面就是添加删除的处理函数和路由
78 |
79 | ## 总结
80 |
81 | - 我们这次应用数据库连接池
82 | - 制作了一个管理页面
83 | - 这个页面可以查询所有的用户记录
84 | - 并且每个用户后面有一个删除按钮
85 | - 删除应该如何完成呢
86 | - 能否直接就写处理函数
87 | - 让路由在编译class的时候自动生成呢?🤔
88 | - 下次再说!👋
--------------------------------------------------------------------------------
/md/README.md:
--------------------------------------------------------------------------------
1 | # oeasy 带你学 linux 之零基础快速上手
2 |
3 | 本课面向的零基础 Linux 新手入门,从最简单的地方出发,通过一系列有趣的 Linux 常用命令,一起完成 Linux 入门。本实验课包括图形界面与终端及应用的管理两大部分,每个实验只需要简单的几个步骤,就能让你看到操作 Linux 命令 Shell 的神奇效果。本课程从 Linux 基础的包安装开始,带你玩转各种好玩的 Shell 应用。
4 | 本教程同步到https://github.com/overmind1980/oeasy-linux-tutorial,欢迎关注与参与。
5 |
6 | - 作者: [oeasy](https://www.lanqiao.cn/users/1190679/)
7 | - 链接: https://www.lanqiao.cn/courses/2712
8 |
9 | 
--------------------------------------------------------------------------------
/md2html.sh:
--------------------------------------------------------------------------------
1 | rm -rf html
2 | cp -r md html
3 | cd html
4 | find . -type f -name "*.md" | sed "s/\(\.\/\)\(.*\)\(.sy.md\)/\2/g" | xargs mkdir
5 | find . -type f -name "*.md" | sed "s/\(\.\/\)\(.*\)\(.sy.md\)/mv \1\2\3 \2/g" > go.sh
6 | chmod u+x go.sh
7 |
--------------------------------------------------------------------------------
/oeasy/META-INF/context.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | WEB-INF/web.xml
4 | ${catalina.base}/conf/web.xml
5 |
6 |
7 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/.web.xml.swp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/.web.xml.swp
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/.ErrorServlet.java.swp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/.ErrorServlet.java.swp
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/.PostgresJdbc.java.swo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/.PostgresJdbc.java.swo
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/.PostgresJdbc.java.swp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/.PostgresJdbc.java.swp
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/AddServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/AddServlet.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/AddServlet.java:
--------------------------------------------------------------------------------
1 | import java.io.*;
2 | import java.util.*;
3 | import jakarta.servlet.*;
4 | import jakarta.servlet.http.*;
5 |
6 | public class AddServlet extends HttpServlet {
7 |
8 | public void doGet(HttpServletRequest request, HttpServletResponse response)
9 | throws IOException, ServletException
10 | {
11 | response.setContentType("text/html");
12 | PrintWriter out = response.getWriter();
13 | int addend1 = Integer.parseInt(request.getParameter("addend1"));
14 | int addend2 = Integer.parseInt(request.getParameter("addend2"));
15 |
16 | out.print(addend1+addend2);
17 | }
18 |
19 | public void doPost(HttpServletRequest request, HttpServletResponse res)
20 | throws IOException, ServletException
21 | {
22 | doGet(request, res);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/ConnectionPool.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/ConnectionPool.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/DBConUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/DBConUtil.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/DBConUtil.java:
--------------------------------------------------------------------------------
1 | import java.sql.Connection;
2 | import java.sql.DriverManager;
3 | import java.sql.PreparedStatement;
4 | import java.sql.ResultSet;
5 | import java.sql.SQLException;
6 | import java.sql.Statement;
7 |
8 | public class DBConUtil {
9 | private static final String URL = "jdbc:postgresql://localhost:5432/oeasy";
10 | private static final String USER = "postgres";
11 | private static final String PASSWORD = "oeasy@pg";
12 | private static final String DRIVERPATH = "org.postgresql.Driver";
13 | private static Connection conn = null;
14 | static {
15 | try {
16 | Class.forName(DRIVERPATH);
17 | } catch (ClassNotFoundException e) {
18 | e.printStackTrace();
19 | }
20 | }
21 |
22 | public static Connection getConn() {
23 | // 处理线程安全问题
24 | synchronized (DBConUtil.class) {
25 | try {
26 | // 如果conn为null或者conn已关闭得时候,需要重新创建conn对象
27 | if (null == conn || conn.isClosed()) {
28 | synchronized (DBConUtil.class) {
29 | conn = DriverManager.getConnection(URL, USER, PASSWORD);
30 | }
31 | }
32 | } catch (Exception e) {
33 | e.printStackTrace();
34 | }
35 | }
36 |
37 | return conn;
38 | }
39 |
40 | public static void close(Connection conn, PreparedStatement pstm, Statement stmt, ResultSet rs) {
41 | if (null != rs) {
42 | try {
43 | rs.close();
44 | } catch (SQLException e) {
45 | e.printStackTrace();
46 | } finally {
47 | if (null != stmt) {
48 | try {
49 | stmt.close();
50 | } catch (SQLException e) {
51 | e.printStackTrace();
52 | } finally {
53 | if (null != pstm) {
54 | try {
55 | pstm.close();
56 | } catch (SQLException e) {
57 | e.printStackTrace();
58 | } finally {
59 | if (null != conn) {
60 | try {
61 | conn.close();
62 | } catch (SQLException e) {
63 | e.printStackTrace();
64 | }
65 | }
66 | }
67 | }
68 | }
69 | }
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/ErrorServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/ErrorServlet.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/ErrorServlet.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import jakarta.servlet.ServletException;
4 | import jakarta.servlet.http.HttpServlet;
5 | import jakarta.servlet.http.HttpServletRequest;
6 | import jakarta.servlet.http.HttpServletResponse;
7 | public class ErrorServlet extends HttpServlet {
8 | private static final long serialVersionUID = 1L;
9 | public void doGet(HttpServletRequest request,
10 | HttpServletResponse response)
11 | throws IOException, ServletException{
12 | request.setCharacterEncoding("utf-8");
13 | response.setContentType("text/html");
14 | response.setCharacterEncoding("utf-8");
15 | PrintWriter out = response.getWriter();
16 | out.println("");
17 | String ErrorMessage = request.getParameter("msg");
18 | System.out.print("==="+ErrorMessage+"==");
19 | if(null==ErrorMessage){
20 | out.print("出错了");
21 | }
22 | else if(ErrorMessage.equals("usernameExists")){
23 | out.print("这个用户名已经存在,请重新选择!");
24 | }
25 | else if(ErrorMessage.equals("usernameTooLong")){
26 | out.print("用户名太长了,不能超过十个字符");
27 | }
28 | else if(ErrorMessage.equals("err")){
29 | out.print("出错了");
30 | }
31 | out.print("返回注册页面");
32 | out.println("");
33 | }
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/HelloWorld.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/HelloWorld.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/HelloWorldExample.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/HelloWorldExample.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/HelloWorldExample.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import java.util.ResourceBundle;
4 | import jakarta.servlet.ServletException;
5 | import jakarta.servlet.http.HttpServlet;
6 | import jakarta.servlet.http.HttpServletRequest;
7 | import jakarta.servlet.http.HttpServletResponse;
8 | public class HelloWorldExample extends HttpServlet {
9 |
10 | private static final long serialVersionUID = 1L;
11 |
12 | @Override
13 | public void doGet(HttpServletRequest request,
14 | HttpServletResponse response)
15 | throws IOException, ServletException
16 | {
17 | response.setContentType("text/html");
18 | response.setCharacterEncoding("UTF-8");
19 | PrintWriter out = response.getWriter();
20 | out.println("你好,tomcat!");
21 | }
22 | }
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/InsertServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/InsertServlet.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/InsertServlet.java:
--------------------------------------------------------------------------------
1 | import java.sql.Connection;
2 | import java.sql.DriverManager;
3 | import java.sql.ResultSet;
4 | import java.sql.Statement;
5 | import java.io.IOException;
6 | import java.io.PrintWriter;
7 | import jakarta.servlet.ServletException;
8 | import jakarta.servlet.http.HttpServlet;
9 | import jakarta.servlet.http.HttpServletRequest;
10 | import jakarta.servlet.http.HttpServletResponse;
11 | public class InsertServlet extends HttpServlet {
12 | private static final long serialVersionUID = 1L;
13 | @Override
14 | public void doPost(HttpServletRequest request,
15 | HttpServletResponse response)
16 | throws IOException, ServletException{
17 | request.setCharacterEncoding("utf-8");
18 | response.setContentType("text/html");
19 | response.setCharacterEncoding("UTF-8");
20 | PrintWriter out = response.getWriter();
21 | Connection c = null;
22 | Statement stmt = null;
23 | try {
24 | c = DBConUtil.getConn();
25 | c.setAutoCommit(false);
26 | out.println("db connection is ok!!
");
27 | stmt = c.createStatement();
28 | String Username = request.getParameter("username");
29 | String Password = request.getParameter("password");
30 | if(Username!=null&&Username.length()>10){
31 | System.out.println("=====yes username too loog");
32 | DBConUtil.close(c,null,stmt,null);
33 | response.sendRedirect("http://localhost:8080/oeasy/error?msg=usernameTooLong");
34 | }
35 | else{
36 | ResultSet rs = stmt.executeQuery("select * from login where Username='"+Username+"'");
37 | if(rs.next()){
38 | DBConUtil.close(c,null,stmt,rs);
39 | response.sendRedirect("http://localhost:8080/oeasy/error?msg=usernameExists");
40 | }
41 | else{
42 | String sql = "insert into login(username,password) values('"+Username+"','"+Password+"');";
43 | System.out.print("sql======================" + sql);
44 | stmt.executeUpdate(sql);
45 | DBConUtil.close(c,null,stmt,rs);
46 | response.sendRedirect("http://localhost:8080/oeasy/select");
47 | }
48 |
49 | }
50 | } catch (Exception e) {
51 | e.printStackTrace();
52 | System.err.println(e.getClass().getName() + ": " + e.getMessage());
53 | response.sendRedirect("http://localhost:8080/oeasy/error?msg=err");
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/JNDIServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/JNDIServlet.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/JNDIServlet.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import java.util.ResourceBundle;
4 | import jakarta.servlet.ServletException;
5 | import jakarta.servlet.http.HttpServlet;
6 | import jakarta.servlet.http.HttpServletRequest;
7 | import jakarta.servlet.http.HttpServletResponse;
8 | import javax.naming.*;
9 | import com.mycompany.MyBean;
10 | public class JNDIServlet extends HttpServlet {
11 |
12 | private static final long serialVersionUID = 1L;
13 |
14 | @Override
15 | public void doGet(HttpServletRequest request,
16 | HttpServletResponse response)
17 | throws IOException, ServletException
18 | {
19 | System.out.println("OeasyServlet begin====");
20 | response.setContentType("text/html");
21 | response.setCharacterEncoding("UTF-8");
22 | PrintWriter out = response.getWriter();
23 | try{
24 | Context initCtx = new InitialContext();
25 | Context envCtx = (Context) initCtx.lookup("java:comp/env");
26 | MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");
27 |
28 | out.println("foo = " + bean.getFoo() + ", bar = " +
29 | bean.getBar());
30 |
31 | }
32 | catch(Exception e){
33 | e.printStackTrace();
34 | }
35 | System.out.println("OeasyServlet end====");
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/OeasyServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/OeasyServlet.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/OeasyServlet.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import java.util.ResourceBundle;
4 | import jakarta.servlet.ServletException;
5 | import jakarta.servlet.http.HttpServlet;
6 | import jakarta.servlet.http.HttpServletRequest;
7 | import jakarta.servlet.http.HttpServletResponse;
8 | public class OeasyServlet extends HttpServlet {
9 |
10 | private static final long serialVersionUID = 1L;
11 |
12 | @Override
13 | public void doGet(HttpServletRequest request,
14 | HttpServletResponse response)
15 | throws IOException, ServletException
16 | {
17 | response.setContentType("text/html");
18 | response.setCharacterEncoding("UTF-8");
19 | PrintWriter out = response.getWriter();
20 | out.println("你好,tomcat!");
21 | }
22 | }
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/PostgresJdbc.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/PostgresJdbc.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/PostgresJdbc.java:
--------------------------------------------------------------------------------
1 | import java.sql.Connection;
2 | import java.sql.DriverManager;
3 | import java.sql.ResultSet;
4 | import java.sql.Statement;
5 |
6 | public class PostgresJdbc {
7 | public static void main(String args[]) {
8 | Connection c = null;
9 | Statement stmt = null;
10 | try {
11 | Class.forName("org.postgresql.Driver");
12 | c = DriverManager.getConnection(
13 | "jdbc:postgresql://localhost:5432/oeasy", "postgres",
14 | "oeasy@pg");
15 | c.setAutoCommit(false);
16 |
17 | System.out.println("Pq Connection success!");
18 | stmt = c.createStatement();
19 |
20 | ResultSet rs = stmt.executeQuery("select * from urls");
21 | while(rs.next()){
22 | String topic = rs.getString("topic");
23 | String url = rs.getString("url");
24 | System.out.print(topic+":"+url+"\n");
25 | }
26 | rs.close();
27 | stmt.close();
28 | c.close();
29 |
30 | } catch (Exception e) {
31 | e.printStackTrace();
32 | System.err.println(e.getClass().getName() + ": " + e.getMessage());
33 | }
34 | System.out.println("Pq select query success!");
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/RequestHeader.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/RequestHeader.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/RequestHeader.java:
--------------------------------------------------------------------------------
1 | import java.io.*;
2 | import java.util.*;
3 | import jakarta.servlet.*;
4 | import jakarta.servlet.http.*;
5 |
6 | public class RequestHeader extends HttpServlet {
7 |
8 | public void doGet(HttpServletRequest request, HttpServletResponse response)
9 | throws IOException, ServletException
10 | {
11 | response.setContentType("text/html");
12 | PrintWriter out = response.getWriter();
13 | Enumeration e = request.getHeaderNames();
14 | while (e.hasMoreElements()) {
15 | String name = (String)e.nextElement();
16 | String value = request.getHeader(name);
17 | out.println(name + " = " + value + "
");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/SelectServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/SelectServlet.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/SelectServlet.java:
--------------------------------------------------------------------------------
1 | import java.sql.Connection;
2 | import java.sql.DriverManager;
3 | import java.sql.ResultSet;
4 | import java.sql.Statement;
5 | import java.sql.PreparedStatement;
6 | import java.io.IOException;
7 | import java.io.PrintWriter;
8 | import jakarta.servlet.ServletException;
9 | import jakarta.servlet.http.HttpServlet;
10 | import jakarta.servlet.http.HttpServletRequest;
11 | import jakarta.servlet.http.HttpServletResponse;
12 | public class SelectServlet extends HttpServlet {
13 | private static final long serialVersionUID = 1L;
14 | @Override
15 | public void doGet(HttpServletRequest request,
16 | HttpServletResponse response)
17 | throws IOException, ServletException
18 | {
19 | response.setContentType("text/html");
20 | response.setCharacterEncoding("UTF-8");
21 | PrintWriter out = response.getWriter();
22 | out.println("");
23 | Connection c = null;
24 | try {
25 | c = DBConUtil.getConn();
26 | c.setAutoCommit(false);
27 | String SearchName = "";
28 | String sql2 = "select * from login where username like ?";
29 | PreparedStatement pstmt = c.prepareStatement(sql2);
30 | pstmt.setString(1,"%"+SearchName+"%");
31 | ResultSet rs = pstmt.executeQuery();
32 | while(rs.next()){
33 | String username = rs.getString("username");
34 | String password = rs.getString("password");
35 | out.print(username+":"+password+"
");
36 | }
37 | DBConUtil.close(c,pstmt,null,rs);
38 | } catch (Exception e) {
39 | e.printStackTrace();
40 | System.err.println(e.getClass().getName() + ": " + e.getMessage());
41 | }
42 | out.println("select query is ok!
");
43 | out.println("");
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/TestServlet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/TestServlet.class
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/TestServlet.java:
--------------------------------------------------------------------------------
1 | import java.io.IOException;
2 | import java.io.PrintWriter;
3 | import jakarta.servlet.ServletException;
4 | import jakarta.servlet.http.HttpServlet;
5 | import jakarta.servlet.http.HttpServletRequest;
6 | import jakarta.servlet.http.HttpServletResponse;
7 | public class TestServlet extends HttpServlet {
8 | private static final long serialVersionUID = 1L;
9 | public void doPost(HttpServletRequest request,
10 | HttpServletResponse response)
11 | throws IOException, ServletException
12 | {
13 | response.setContentType("text/html");
14 | request.setCharacterEncoding("utf-8");
15 | PrintWriter out = response.getWriter();
16 | out.println("");
17 | String Username = request.getParameter("username");
18 | String Password = request.getParameter("password");
19 | out.print("用户名:"+Username);
20 | System.out.print("用户名:"+Username);
21 | out.print("密码"+Password);
22 | out.println("");
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/oeasy/WEB-INF/classes/UserManager.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/WEB-INF/classes/UserManager.class
--------------------------------------------------------------------------------
/oeasy/oeasy:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/overmind1980/oeasy-linux-tutorial/e7d7bfc1e34fd26a6b6509e4725c5fc9befc5700/oeasy/oeasy
--------------------------------------------------------------------------------
/oeasy/oeasy.html:
--------------------------------------------------------------------------------
1 | oeasy
2 |
--------------------------------------------------------------------------------
/oeasy/prepareAdd.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 请求参数示例
5 |
6 |
7 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/oeasy/prepareInsert.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Login
6 |
12 |
13 |
14 | login
15 |
25 |
26 |
27 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/test.txt:
--------------------------------------------------------------------------------
1 | test
2 |
--------------------------------------------------------------------------------
/test2.csv:
--------------------------------------------------------------------------------
1 | 01-45529-000101 什么是内核 uname.sy.md
2 | 02-45530-000102 什么是发行版 distro.sy.md
3 | 03-45531-000103 我在哪 pwd.sy.md
4 | 04-45532-000104 灵魂之问 whatis.sy.md
5 | 05-45533-000105 详查手册 man.sy.md
6 | 06-45534-000106 这儿都有啥 ls.sy.md
7 | 07-45535-000107 那啥在哪 whereis.sy.md
8 | 08-45536-000108 到底哪个 which.sy.md
9 | 09-45537-000109 清屏 clear.sy.md
10 | 10-48362-000110 命令行总结 summary.sy.md
11 | 11-45538-000201 持续输出 yes.sy.md
12 | 12-45541-000202 软件包管理 apt.sy.md
13 | 13-45542-000203 标志 linuxlogo.sy.md
14 | 14-45568-000204 字符画 figlet.sy.md
15 | 15-45569-000205 风格文字 toilet.sy.md
16 | 16-45571-000206 蒸汽机车 sl.sy.md
17 | 17-45574-000207 黑客帝国 cmatrix.sy.md
18 | 18-45572-000208 满屏乱码 bb.sy.md
19 | 19-45570-000209 装酷屏幕 hollywood.sy.md
20 | 20-45581-000210 应用管理 aptitude.sy.md
21 | 21-45575-000211 牛说 cowsay.sy.md
22 | 22-45578-000212 管道 pipe.sy.md
23 | 23-45576-000213 中文输入 fcitx.sy.md
24 | 24-48588-000214 字符图 asciiview.sy.md
25 | 25-48590-000215 随机笑话 fortune.sy.md
26 | 26-45580-000216 中文诗词 fortune-zh.sy.md
27 | 27-209842-000217 分屏工具 tmux.sy.md
28 | 28-45583-000301 桌面宠物 pet.sy.md
29 | 29-45586-000302 火狐 firefox.sy.md
30 | 30-45587-000303 文件管理器 nautilus.sy.md
31 | 31-45579-000304 用户界面 xfce.sy.md
32 | 32-45566-000305 总结 Summary.sy.md
33 | 33-199464-000218_数据库_postgres.sy.md
34 | 34-192426-nginx.sy.md
35 | 35-260422-apache.sy.md
36 | 36-199465-tomcat源起.sy.md
37 | 37-260421-tomcat结构.sy.md
38 | 38-526680-徒手建立应用.sy.md
39 | 39-260423-搭建开发环境.sy.md
40 | 40-265117-调试模式_debug_mode_log日志.sy.md
41 | 41-261125-前端和后端.sy.md
42 | 42-485593-双层架构(2-tier).sy.md
43 | 43-485612-请求和响应.sy.md
44 | 44-495450-请求参数.sy.md
45 | 45-498649-处理异常.sy.md
46 | 46-200308-连接postgresql数据库引擎.sy.md
47 | 47-527010-通过驱动访问postgres数据库引擎.sy.md
48 | 48-527011-JDBC理解.sy.md
49 | 49-263205-通过动态页面访问postgres数据库引擎.sy.md
50 | 50-263206-自动加载更新的class(tomcat无需重启).sy.md
51 | 51-263207-修改表结构.sy.md
52 | 52-265977-管理约束条件CONSTRAINT.sy.md
53 | 53-527013-使用jdbc向数据库插入数据.sy.md
54 | 54-527012-使用servlet向数据库插入数据.sy.md
55 | 55-527130-响应重定向.sy.md
56 | 56-264932-使用网页提交数据_文本框post提交表单.sy.md
57 | 57-266982-使用网页插入数据库.sy.md
58 | 58-263308-先查再插入.sy.md
59 | 59-271131-文本框前端验证.sy.md
60 | 60-263208-密码二次输入验证复杂性.sy.md
61 | 61-483456-封装数据库连接.sy.md
62 | 62-483477-PrepareStatement准备语句.sy.md
63 | 63-484450-JNDI.sy.md
64 | 64-485586-JDBC数据库连接池.sy.md
65 | 65-497989-准备删除.sy.md
66 | README.md
67 |
--------------------------------------------------------------------------------