在Unix和Mac上的Shell编程(1)
Shell这个语言吧,在很多大佬看来,他并不是一个适合新手来学习的语言,或者说它不适合入门,不管怎么说,它的历史和Unix的历史是一样长的。而且最近我是尝试着迁移到unix上的。
不管怎么说,都是值得学的。我会记录我的一切坑。因为看教程,三言两语的就好了,但是你去实现他说的很多东西,你会发现并不是你们简单。就是出不来结果。
这个东西,我决定写一个系列。具体的大纲我也没有去做,总之是有条理的。首先是要复习一些“基础”知识。
基础命令
1.date
date命令
2.who
who命令,找出已登录人员
3.who am i
am i是who的参数,但是这个东西。个人觉得,知道就好
4.echo(回显字符)
可以看见,对中文的支持还是可以的
英文不用说
然后:写了一个一到五的英文,中间有很多的空格,会发现输出的时候,空格都被压缩了。
Unix系统只识别3中文件,普通文件,目录文件,特殊文件(通常是对nuix系统的有特殊含义的文件)
5.ls
ls命令可能是用的最多的命令吧,因为unix就是操作的一堆文件,你们时时刻刻知道处理的文件状态,就是很重要的一件事情了
6.cat
cat检查文件的内容
cat不是猫咪的意思,是concatenate的简写,参数是一个文件名
忽略那个txt文件的内容,我搜索了一个作文。
7.wc(不是厕所的意思0
统计文件重的单词数量->获得行数,单词数,字符数。
此时写一点关于这些命令使用时的选项
命令 -x(就是写完一个命令,一个空格,一个横杠,然后一个参数)
e.g:wc -l name
看图,体会一下
8.cp(处个对象「复制案件」)
为了演示,我创建了两个文件夹。里面的子文件各有一个文件。
该命令有两个参数,一个是要复制的文件名(源文件),二参数肯定不用考虑是要复制为的文件名(目标文件)
这个命令没有什么明确的反馈告诉你,是成功的。
9.mv(载歌载舞???「重命名」)
参数和cp是一样的
这里需要注意一下。在执行mv和cp命令时。程序不会管你第二个参数的文件是不是存在。
如果有,那就给你覆盖
记住一点,有重名文件时,会把你之前的那个文件覆盖掉。
10.是删除文件的命令,吧要删除的文件,输入成一列,就好了
路径的概念,啊。不想贴图了,,,我好累。
先劝人不论时候都用相对路径,一定要用!!!相对路径,啊,没跑,你就用。
在unix的系统里面,所有的目录都是有两个身份的,要不他是上一级的子目录,要不是下一级的父目录。既然有这种从属关系,那么一定有根(root)
被表示为/(读作slash),你在那个目录(起个名字叫当前工作目录),你想去哪里就需要明确知道要去的路径,这一串的路径中,子父节点间用/来分隔
.单点号总是🚰当前的目录,记住这个提示,日后很有用。
11.pwd(print working directory),打印当前所在的路径,也是一个常用的命令
12.cd是移动目录,参数是路径名。cd ..(注意cd后有一个空格)是到上一即目录的。
那么也有这种写法:cd ../..返回到主目录
13.做一些补充
ls -l更加详细的目录信息。
文件占用的储存快(1024字节)数。
目录是d,文件是-,特殊文件是b,c,l,p
9个字符定义了文件或者目录的访问权限
还显示了连接数
文件最后的修改时间
文件名
14.mkdir,创建一个目录
15.目录之间复制文件
a->b(1)
c->d(1)
cp a/b c/d
cp a/b/1 c/d/1
因为1,1 两个文件在不同的目录中,就算名字相同也没有问题。
如果目标文件打算常用和源文件相同的名字,(在不同的目录里面),只需要制定目录作为第二个参数就行
cp a/b/1 d(在执行这个命令时,会发现二参数是一个目录,于是直接复制)
16.ln(不是数学概念哦)
我们目前讨论的都是一个文件又且只有一个名字,但是,一个实体的文件。其实可以有很多的名字,就像有人喊我怼怼,喊我国国我都会答应一样。
ln form to命令形式
具体有什么用?让某个程序出现在多个目录中。唯一的要求就是,这个链接不可以跨文件系统
用df命令可以看
对于关注符号链接所指文件的详细信息,可以用 ls -LI来查看(这个地方哟错误,我日后订正)
删除符号链接所指向的文件会使符号链接失效(符号链接是用文件名来维护的),但符号链接本身不会被删除。这种文件有个装逼的名字叫悬挂符号链接(danging symbolic link),应该删除吧。除非你想替换这个被删除掉的文件。
ln files directory(可以为特定目标目录的多个文件创建链接)
17.rmdir(删除目录)
就是单纯的删除目录,里面有东西就报错
试试这个rm -r dir
然后来个狠毒的?rm -rf(f参数强制执行)
我好累啊。。。我不写了。