mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
692 字
2 分钟
missing-semester-class01
2023-01-11

class01

shell#

特点#

they allow you to run programs, give them input, and inspect their output in a semi-structured way

使用#

date # 显示时间
echo hello # 输入参数‘hello’并输出
echo "hello world"
echo $PATH # 输出环境变量¥PATH
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

当我们执行 echo命令时,shell 了解到需要执行 echo这个程序,随后它便会在 $PATH中搜索由 :所分割的一系列目录,基于名字搜索该程序。当找到该程序时便执行。确定某个程序名代表的是哪个具体的程序,可以使用 which程序。我们也可以绕过 $PATH,通过直接指定需要执行的程序的路径来执行该程序。

shell中导航#

shell 中的路径是一组被分割的目录,在 Linux 和 macOS 上使用 /分割,而在Windows上是 \\/为根目录。

pwd # 获取当前路径
cd /home # 根目录下的home文件夹
cd ./home # 当前目录下的home文件夹
cd .. # 上级目录

一般来说,当我们运行一个程序时,如果我们没有指定路径,则该程序会在当前目录下执行。

ls # 查看目录文件
ls --help
ls -l /home
# drwxr-xr-x 4 root root 4096 11月 30 21:01 data

首先,本行第一个字符 d表示 data是一个目录。然后接下来的九个字符,每三个字符构成一组。 (rwx). 它们分别代表了文件所有者root),用户组root) 以及其他所有人具有的权限。其中 -表示该用户不具备相应的权限。

从上面的信息来看,只有文件所有者可以修改(w),data 文件夹 (例如,添加或删除文件夹中的文件)。

为了进入某个文件夹,用户需要具备该文件夹以及其父文件夹的“搜索”权限(以“可执行”:x)权限表示。为了列出它的包含的内容,用户必须对该文件夹具备读权限(r)。对于文件来说,权限的意义也是类似的。注意,/bin 目录下的程序在最后一组,即表示所有人的用户组中,均包含 x 权限,也就是说任何人都可以执行这些程序。

mv test ./data/test.txt
cp test.c test01.c
mkdir test
man ls

程序中创建连接#

在 shell 中,程序有两个主要的“流”:它们的输入流和输出流。 当程序尝试读取信息时,它们会从输入流中进行读取,当程序打印信息时,它们会将信息输出到输出流中。 通常,一个程序的输入输出流都是您的终端。也就是,您的键盘作为输入,显示器作为输出。 但是,我们也可以重定向这些流!

最简单的重定向是 < file> file。这两个命令可以将程序的输入输出流分别重定向到文件:

echo hello > hello.txt
cat hello.txt
cat < hello.txt
cat < hello.txt > hello2.txt
cat hello2.txt
ls -l / | tail -n1
curl --head --silent baidu.com | grep --ignore-case content-length | cut --delimiter=' ' -f2

根用户root#

拒绝访问(permission denied)

sudo

课后习题#

# 第二题
cd /tmp
mkdir missing
ls | grep missing
# 第三题
man touch
# 第四题
touch ./missing/semester
# 第五题
echo '#! /bin/sh' > ./missing/semester
echo 'curl --head --silent <https://baidu.com>' | tee -a ./missing/semester
cat ./missing/semester
# 第六题
./missing/semester
ls -l ./missing
# -rw-r--r-- 1 root root 62 1月 11 21:46 semester
# 该文件无x 运行权限
# 第七题
man chmod
# 第八题
chmod +x ./missing/semester
# 第九题
./semester | grep Date > ./last-modified.txt
cat last-modified.txt
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

missing-semester-class01
https://dreaife.tokyo/cn/smart-shell-guide/
作者
dreaife
发布于
2023-01-11
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

相关文章 智能推荐
1
ubuntu安装ohMyZsh及其组件
prog-side 在Ubuntu上安装ohMyZsh及其组件的步骤包括:首先安装zsh和git,然后通过wget安装ohMyZsh。接着,克隆powerlevel10k主题和所需插件,并更新.zshrc文件以应用主题和插件。最后,安装额外的插件如zsh-bat和you-should-use,并更新系统以确保一切正常工作。
2
Ubuntu通过nat将网络转发给路由器
prog-side 通过修改Netplan配置、启用IP转发和配置NAT转发,实现Ubuntu将网络转发给路由器的功能。步骤包括清除现有配置、设置静态IP、安装和配置DHCP服务,并验证网络共享的有效性。
3
初涉正则表达式
prog-side 正则表达式是一种强大的文本模式匹配工具,能够描述和匹配字符串的特定模式。它包括字面值字符、特殊字符、字符类和元字符等元素,广泛应用于多种编程语言和文本处理工具中。正则表达式可以用于验证数据、替换文本和提取子字符串,具有灵活性和强大功能。常见的元字符和特性包括字符匹配、量词、边界匹配和分组等,能够帮助用户高效处理文本数据。
4
新时代的第一轮筛选
life 随着AI技术的发展,使用先进模型的成本可能导致社会分层,只有经济能力强的人才能使用这些模型。虽然当前价格尚可,但未来价格的上涨可能使大多数人无法承担,从而形成第一轮筛选。作者对这种现象感到焦虑,同时也意识到AI的应用已超越编程领域,进入更广泛的产业。面对新世界的挑战与机遇,个人在时代的推动下不断探索。
5
博客迁移-Mizuki配置记录
infra 从notionNext迁移到mizuki的过程记录,主要原因是notionNext的限制。选择mizuki是因为其轻量级和良好的功能平衡,支持日记和项目展示。配置过程简单,内容通过md和ts文件控制,同时实现了与bangumi API的连接。计划通过CI同步notion内容,并进行多语言适配,解决了图片链接过期的问题。

目录