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 许可协议。转载请注明来自 幻境!
评论