一、Shell:提供用户输入的命令解释器
一张图就能很明确地表明Shell的作用。
二、Shell下的基本命令操作
- ls:默认形式显示当前目录下文件列表。
- ls -a:显示所有文件包括隐藏文件
- ls -l:显示当前目录下文件属性:大小,权限,日期,符号连接。
权限->链接个数->用户->用户组->大小->日期->文件
权限详解(以drwxrwxr-x为例):
- 第一个字符代表是目录,文件或链接文件等:
【d】:目录
【-】:文件
【l】:连接文件(linkfile)
【b】:表示设备文件里面可供存储的接口设备。
【c】:表示设备文件里面的串行端口设备,例如键盘,鼠标等。
后面则三个为一组,r表示可读,w表示可写,x表示可执行。这里注意,如果没有x的权限,那么前两个自然也是没有的。。
- 第一组:文件所有者的权限。
- 第二组:同用户组的权限。
- 第三组:其他非本用户组的权限。
下面继续介绍ls和其他指令的功能:
ls -lh:与ls -l类似,文件大小以K,M,G显示。
ls -t:按修改时间对文件进行排序。
pwd:当前目录。
cd dir:修改当前路径为dir。
cd \:切换到主目录。
cd ~:切换到用户目录。
touch test1:创建文件。
mkdir dir1:创建目录。
mkdir -p dir1/dir2/dir3:创建多级目录。
vi file:写文件内容。
ln:创建连接
ln -s source target:创建软连接(类似快捷方式)。
ln source target:创建硬链接。
注意:软链接在它链接的文件删除后不可用,硬连接依旧可用。
因此,我们可以得出以下定义:
1)软连接:类似快捷方式,删除源文件失效,可以跨文件系统。
2)硬链接:文件别名,删除一个文件名实际文件不会删除,只有当文件的连接个数为0时才会被删除。
3)如果修改软连接和硬链接的内容,原本内容都会被修改,也即使用了同一块内存区域修改。
- 另外,硬链接不能链接目录。
cp:拷贝命令
cp test1 test2:文件test1复制test2
cp /dir1/dir2/test1:复制/dir1/dir2/test1到当前目录。
cp -r dir1 dir2:目录/dir1复制/dir2。rm:删除命令
rm test1:删除test1文件
rm -f test1:删除文件不进行提示
rm -r dir:删除目录
rm -rf dir:直接删除目录
改变文件属性与权限
- chgrp:改变文件所属用户组。
注意:被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误。
格式:chgrp [-R] groupname dirname/filename -R是对目录而言进行递归持续更改。 - chown:改变文件所有者。
注意:用户必须是已经存在系统的账号,即在/etc/passwd这个文件中有记录。
格式:chown [-R] username filename/username - chmod:改变文件的权限。
权限的设置方法分两种:1.使用数字 2.使用符号
1)使用数字:Linux的基本权限有9个,每3个一组。r=4,w=2,x=1.
如果是rwx就是7,rw就是6,以此类推。其实是二进制的思想。三组比如就可以写成770(rwxrwx---)。
举例:chmod 770 .bashrc,当然也可以对目录加-R。
2)使用符号:可以使用u,g,o(user,group,others)来代表三种身份对应的r,w,x。
举例:chmod u=rwx,g=rx,o=r filename
如果我不知道原来的属性,现在我只想添加某个filename文件每个人均可写入的权限,那么可以使用:chmod a+w(x,r) filename 来实现。
同理要将权限去掉的话:chmod a-w(x,r) filename。
注意ls的嵌套
如果我们做如下操作:
可以发现
ls -ald testing testing/testing
这个语句很长,其实它是一个嵌套语句。
表明的意思是:ls -a(显示所有文件),-l(详细信息),-d(显示目录而不显示目录下的文件),同时后面一个testing表示显示的是testing目录,而再后面跟着的testing/testing则表示我们创建的testing目录下的testing文件,由于我们有-d的标识,因此要查看testing/testing必须多打一遍,因为只有一个testing只会显示目录的信息。
同时要注意:目录的权限只有r而没有x,那么可以读取目录的文件名列表,但是详细的信息是读不到的,因为不可执行。x在目录中的作用是确定“用户是否能进入该目录”。