1.1 创建和删除目录

和目录相关的几个命令
mkdir   关注-p选项  (针对目录) -v可视化
rmdir  同样也有一个-p选项 (针对目录) 删除空目录

tree 树状结构

touch 创建文件



1.2 rm命令

rm   -r(连目录一起删) -f(强制) 两个常用选项  (目录和文件都可以删)

-i 会提示你是否删除

-v 可视化

which rm


1.3 cp命令

cp  -r 针对目录, 有时我们使用/bin/cp就不会提示信息了



1.4 移动和重命名mv

mv  重命名或者移动, 有时我们使用/bin/mv就不会提示信息了,当我们mv目录时,注意若是目标目录存在的情况下,那么会把源目录移动到目标目录里



1.5 文件查看命令

和文本相关的命令
cat 读取文本内容      加上-A后查看每一行后面会有一个$符号
tac 读取文本内容(从后开读)
more  空格键一屏一屏往下翻,enter健一行一行往下翻
less  几个快捷键:j下, k上, g到首行, G到末行, ctrl+b上翻, ctrl+f下翻, 空格下

/搜索关键字 n向下 N向上     ?搜索关键字 n向上 N向下

head -n (默认前十行)
tail -n  -f(动态查看)   (默认末十行)


1.6 文件和目录属性

属主、属组  
类型   d目录, -普通文件, c字符设备(如键盘、鼠标、显示器), b块设备(如磁盘), l软链接, s socket(进程间的通信),p 管道文件(ls -l /var/spool/postfix/public/pickup)

可以在ls -l /dev/ 下看到

权限  rwx   (读写执行)    最后一个点是selinux的标记位
inode 索引节点

1.7 chmod命令1.8 chown命令

chown  更改所属主,所属组  -R子文件或子目录继承父目录的所属主和所属组   可以用x:x或者x.x
chmod  更改rwx权限  -R子文件或子目录继承父目录的权限

chmod u=rwx,g=r--,o=r--  1.txt

chmod u-x,g+x,o-r 1.txt  

chmod a+r 1.txt           #a是所有者
umsk(用来规定目录和文件的权限)  (0022) 指定默认权限, 目录755  文件644, 目录若没有执行权限,我们不能cd到这个目录下,但是可以ls这个目录


1.9 chattr文件隐藏属性

chattr  -a  (+a 不能修改,删除,重命名,只能追加重定向)   -i  (+i不能重定向,追加重定向,删除,重命名,基本都不可以更改) 特殊权限    
lsattr  -a  (-d只查看目录本身)(-R不仅能列出当前目录,以及子目录和子文件都列出来,即逐层查看)  如果遇到文件删除不了,就可以用lsattr -R 来查看了 

lsattr查看时,e是ext4或ext3文件系统特有的



2.0 特殊权限之suid

set_uid=4(r)  chmod u+s  u-x(小s变成S) (rws 如/usr/bin/passwd是给用户来更改密码的,/etc/shadow是存放密码的配置文件ls -l /etc/shadow,初root外)   (作于于可执行的二进制文件,比如ls命令)       普通用户临时拥有所属主的权限

ls -l /usr/bin/passwd    s就是set_uid                             

chmod u+s /tmp/ls

su - xuan

/tmp/ls /root/


普通用户用的是o权限,要去掉chmod o-x /tmp/ls

su - xuan

/tmp/ls /root/

有执行权限的就是小s,没有执行权限的就是大S


2.1 特殊权限之sgid

set_gid=2  (w)    chmod g+s(x变成s)  g-x(小s变成S)   (作用于文件和目录)         普通用户临时拥有所属组的权限

chmod g+s /bin/ls


mkdir /tmp/222

chmod 777 /tmp/222

su - xuan

cd /tmp/222

touch file

mkdir dir

logout

chmod g+s /tmp/222

su - xuan

cd /tmp/222

touch file2

mkdir dir2

ls -l


2.2 特殊权限之sticky

(防删除位:防止别人删除自己的文件)sticky_bit =1(x)chmod o+t(变成t) o-x(变成T)   (作用于目录)

特殊权限

一个目录的权限取决于父目录的权限。

mkdir /tmp/333

chmod 777 /tmp/333

cd /tmp/333

vi 12.txt

su - xuan

cd /tmp/333

vi 12.txt       (wq!)

logout 

chmod o+t .

chmod o-x .

cp 12.txt 33.txt

su - xuan

cd /tmp/333

rm -f 33.txt



2.3 find搜索命令     

which    搜索一个命令的绝对路径,在echo $PATH这些路径下去找,必须要有执行权限
whereis  只是在某些目录下去搜
locate   搜索一些文件的 

yum  install  -y  mlocate (/tmp/下搜索不到)

updatedb  手动生成库

locate ls       包含ls都会列举出来

find  -type(d、f、c、b、s等等)   -name  -mtime(创建、更改时间,单位是天)-atime(访问时间)  -ctime(如更改文件名、属主、属组,原数据、inode,就会改ctime时间)

atime--ctime

ctime--不一定更改atime、mtime

唯独touch三个time都会更改

如:find /tmp/ -mmin(分钟) -5

find /tmp/ -mmin +5

find / -inum 141418

find /tmp/ -type f |xargs -i mv {} {}.bak       -i是一个一个的


2.4 三个时间属性

stat 命令可以查看三个time  (stat filename)

我平时通常同find命令找一些文件时会用到这些参数
文件的 Access time,atime 是在读取文件或者执行文件时更改的。
文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
文件的 Change time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。 
因此,更改文件的内容即会更改 mtime 和 ctime,但是文件的 ctime 可能会在 mtime 未发生任何变化时更改,如权限更改了但文件内容没有更改。 

如何获得一个文件的atime mtime 以及ctime?
ls(1) 命令可用来列出文件的 atime、ctime 和 mtime。
ls -lc filename         列出文件的 ctime
ls -lu filename         列出文件的 atime
ls -l filename          列出文件的 mtime 
   
atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息。而这是加了 noatime 取消了, 不代表真实情況。反正, 这三个 time stamp 都放在 inode 中. 若 mtime, atime 修改, inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了(理论上是这样的,但是真实情况并非如此,如果是读取文档或者执行二进制文件的时候,虽然atime会变,但ctime不变,这是系统这样设计的)。


touch 一个文件如果文件不存在,可以创建它;如果这个文件存在的话,它就更改了三个time。



2.5 软链接和硬链接

linux下的链接文件
ln 
软连接(相当于Windows快捷方式,可以夸分区,可以做文件和目录的软连接,有节省空间资源的作用) ln -s   

ls -l /lib

du -sh /lib/librt.so.1 /lib/librt-2.12.so       #比较两个大小

硬连接(多个文件对应同一个inode,多个inode不可以对应同一个文件,只能在同一个分区做,不可以做目录的硬链接) 

ln

find /etc/ -type l