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 | BA的输出作为B的输入
grep A B在A里查找B
man,rm,mkdir,rmdir
> /覆盖

rm用于无递归删除 -r 递归删除 rmdir仅允许删除空目录

mkdir 创建目录

关于重定向和 cat

$ echo hello > hello.txt
$ cat hello.txt
hello
$ cat < hello.txt
hello
$ cat < hello.txt > hello2.txt#将txt内容复制到2.txt中
$ cat hello2.txt
hello
$ cat <hello.txt >> hello2.txt
hello
hello

本以为 cat < hello.txt 会报错 cat: hello: No such file or directory。猜想正确工作的原因是“参数”和“输入”的区别(未经验证或查找资料):cat 程序将输入打印在屏幕上,cat hello.txt 中的 hello.txt 是参数,将该文件的内容作为输入;而 cat < hello.txt 是输入重定向,意思也是将文件中的内容作为程序的输入,而不是将文件的内容作为参数,因此二者效果相同。

tee 的小用处

接受输入并将其写入文件

# echo 500 > brightness(sudo su后) == ehco 500 | sudo tee brightness 
$ cd /sys/class/backlight/thinkpad_screen
$ sudo echo 3 > brightness
An error occurred while redirecting file 'brightness'
open: Permission denied

出乎意料的是,我们还是得到了一个错误信息。毕竟,我们已经使用了 sudo 命令!关于 shell,有件事我们必须要知道。|>、和 < 是通过 shell 执行的,而不是被各个程序单独执行。 echo 等程序并不知道 | 的存在,它们只知道从自己的输入输出流中进行读写。 对于上面这种情况, shell (权限为您的当前用户) 在设置 sudo echo 前尝试打开 brightness 文件并写入,但是系统拒绝了 shell 的操作因为此时 shell 不是根用户。

明白这一点后,我们可以这样操作:

$ echo 3 | sudo tee brightness 

因为打开 /sys 文件的是 tee 这个程序,并且该程序以 root 权限在运行,因此操作可以进行。

当有权限修改文件但无法修改文件所在目录时,即无法删除文件,只可将其制空

$ xdg-open binary name#适用Linux just open on the Mac system Windows didn't work

Shell Tools and Scripting

~/m/tools > > >echo "value is $foo"
value is bash
~/m/tools > > >echo 'value is $foo'
vlaue is $foo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值