The Missing Semester of Your CS Education
The Missing Semester of Your CS Education
First Course Overview The Shell
命令行语句
| pwd(process[print] working directory) | 输出当前位置 |
| cd . | 到当前目录 |
| cd .. | 上一级目录 |
| cd /cd ~ | 回到根目录 |
| cd - | 回到跳转前的目录(可在两个目录之间切换) |
| ls -l | 列出当前目录下子文件的详细信息 |
| ls -a | 列出所有文件包含隐藏文件 |
| * ? | 代替一个字符串 一个字符 |
| mv A B | 重命名并可以移动文件 |
| cp A B | 复制并可以移动文件 |
| control L | 清除终端 |
| cat | 打印文件内容到终端上 |
| touch | 建立新文件 |
| >> | 不覆盖而是叠加 |
| A | B | A的输出作为B的输入 |
| grep A B | 在A里查找B |
| man,rm,mkdir,rmdir | |
| > / | 覆盖 |
rm用于无递归删除 -r 递归删除 rmdir仅允许删除空目录
mkdir 创建目录
关于重定向和 cat
1 | echo hello > hello.txt |
本以为 cat < hello.txt 会报错 cat: hello: No such file or directory。猜想正确工作的原因是“参数”和“输入”的区别(未经验证或查找资料):cat 程序将输入打印在屏幕上,cat hello.txt 中的 hello.txt 是参数,将该文件的内容作为输入;而 cat < hello.txt 是输入重定向,意思也是将文件中的内容作为程序的输入,而不是将文件的内容作为参数,因此二者效果相同。
tee 的小用处
接受输入并将其写入文件
1 | echo 500 > brightness(sudo su后) == ehco 500 | sudo tee brightness |
1 | $ cd /sys/class/backlight/thinkpad_screen |
出乎意料的是,我们还是得到了一个错误信息。毕竟,我们已经使用了 sudo 命令!关于 shell,有件事我们必须要知道。|、>、和 < 是通过 shell 执行的,而不是被各个程序单独执行。 echo 等程序并不知道 | 的存在,它们只知道从自己的输入输出流中进行读写。 对于上面这种情况, shell (权限为您的当前用户) 在设置 sudo echo 前尝试打开 brightness 文件并写入,但是系统拒绝了 shell 的操作因为此时 shell 不是根用户。
明白这一点后,我们可以这样操作:
1 | echo 3 | sudo tee brightness |
因为打开 /sys 文件的是 tee 这个程序,并且该程序以 root 权限在运行,因此操作可以进行。
当有权限修改文件但无法修改文件所在目录时,即无法删除文件,只可将其制空
1 | $ xdg-open binary name#适用Linux just open on the Mac system Windows didn't work |
Shell Tools and Scripting
1 | ~/m/tools > > >echo "value is $foo" |
1 | ~/m/tools > > >echo 'value is $foo' |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 幻境!
评论



