1.和目录相关的几个命令:
mkdir 创建一个目录
mkdir -p 级联的创建目录 mkdir -p /a/b/c
mkdir 关注-p选项 级联创建 mkdir -pv(可视化) /root/1/2/3
tree /root/1/ 显示树形结构
tree -c /root/1 显示颜色
rmdir 删除一个目录 rmdir /a/b/c/ 删除目录c 只能删除空目录
rmdir -p级联的删除空目录 rmdir -p /a/b/c
rm 删除文件
rm -f 强制删除文件
rm -r 删除目录 若非空还会提示,进入目录吗?删除里面的文件吗?删除目录a吗? 取消提示可以直接利用/bin/rm
rm -rf 强制删除目录
/bin/rm -r 就不在进行交互了。
cp
cp -r 复制目录
cp 命令补充:
cp -r
mkdir 3
cd 3/
touch 1.txt
cp -r 3 1/2/
cp -r 3 1/2/3
# 这个执行结果是完全不一样的p 如果3已经存在,会复制到3下面。
还有看看这个,当目录下有3,再把/root/shell/3复制到这个目录(/root/shell/1/2/下,原来的目录3的内容不发生变化,试验过)。
mv(注意没有-r选项) 重命名或者移动, 有时我们使用/bin/mv, 当我们mv目录时,注意若是目标目录存在的情况下,那么会把源目录移动到目标目录里
2.和文本相关的命令:
cat 文本
tac 文本
more 文本 只能往下翻,不能往上翻,到末尾自动退出。
less 文本 既可以往上翻,也可以往下翻。j,k分别往下和往上翻一行,ctrl+b表示往上翻一页,ctrl+f表示往下翻一页。G到末尾,g到首部。到末尾按q退出。
/向下搜索 n向下 N向上
?向上搜索 n向上 N向下
head 文本 显示的是前十行
head -1 文本 显示的是第一行
head -n 1 文本,显示的也是第一行 head -100 显示的是前100行
tail 文本 显示的是后10行 tail -1 文本 显示的是最后一行 tail -100 文本 显示的是最后100行。
tail -f 动态的显示信息。
echo $?表示上次命令是否执行成功?
ls !$上次命令的最后一个一个参数
!cp 历史命令中最近一个以cp开头的命令。
history查看命令历史。
ntpdate www.microsoft.com
3.文件或者目录的属性
类型:
d 目录
- 普通文件
c 字符设备(键盘,鼠标,显示器等)
l 软连接文件 b 块设备
s socket(套接字)文件 进程间的通信
.和selinux相关的特殊位
权限:
属主 所属组 其他人
r read 4 rwx rwx rwx
w write 2
e execute 1
chmod 更改权限 chmod u=rwx g=rw-,o=r--,等同于chmod 764
inode 索引节点 inode文件的唯一标示符
关于inode的理解:http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html
http://www.ruanyifeng.com/blog/2011/12/inode.html
4.修改权限:
chown 修改所属主,所属组
chown root:root (user group)—
chown -R
chown :root(所属组)
chown root.root
chmod 更改rwx权限 chmod 777 数字也可以。
chmod a+x filename
chmod u+x
chmod -R root:aming dir 是递归的,所有目录和子目录都是root :aming
umask指定默认权限 目录是755 目录一般都有可执行权限 文件644 目录如果没有可执行权限,我们不能cd到这个目录下。可以ls这个目录。
chattr +a只能追加内容 ,chattr +i 把文件或者目录锁死,什么都不能干。
lsattr -l可以查看详细信息。
特殊权限:
set_uid 使普通用户临时拥有执行这条命令所属主的权限,必须是二进制文件,必须是可执行的。查到二进制文件的特性:
passwd 更改/etc/shadow
file filename
查看系统是多少位?
uname -i 查看是多少位系统
uname -a 查看详细的系统信息
chmod u+s u-s
set_gid 是普通用户临时拥有执行这条命令的所属组的权限
使普通用户具有父亲的权限
这个真的很2。set_gid 不仅可以作用于可执行的二进制文件,也可以作用于目录。
sticky_bit 你去创建一个文件,其他人就不能删除这个文件,也不能修改这个文件。
ll-ld /tmp
chmod o+t t防删除位。
搜文件:
which 可以搜索命令
which 1.txt 在环境变量中搜索 文件或者命令
whereis 会在固定的几个目录中搜索 /bin /sbin/ /usr/bin/ /usr/sbin/ /usr/share/man/man1/
locate 安装用到的库是mlocate yum install mlocate -y
在生成数据库 updatedb 更新时间是每天的凌晨四点 找文件也有一定的局限性。
find . -name 333
find . -type f/b/l/s/c/d -name 333
find /tmp / -mtime +10(创建或者更改时间大于10天) -10(创建或者更改时间在十天之内)
find /tmp/ -mmin +300(创建或者更改时间大于300分钟) -300(创建或者更改时间在300分钟之内)
atime 访问时间
mtime 创建时间或者是更改时间
ctime 指inode上一次变动的时间
inode的内容
inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
只要更改mtime,ctime必然改变,因为元信息改变了。
更改ctime,atime不一定会改变,
touch 三个时间都会改变。
find /tmp -atime +365 访问时间在一年之前的
find /data/log/ -mtime +30 -type f | xagrs rm -f xagrs 承接上条命令内容。
find /data/log -mtime +30 -type f -exec rm {}\;(脱意符号)
find /data/log -mtime +30 -type f | xagrs -i (过滤出来的文件一个一个去处理)mv {} {}.bak
find /tmp/ -type f | xagrs -i mv {} {}.bak;
find /tmp/ imum 2 | xargs -i rm -rf {} \;
把查找到的文件一个一个的去处理。(aminglinux论坛)
http://www.aminglinux.com/bbs/thread-6798-1-4.html
http://linux.chinaunix.net/techdoc/system/2008/07/25/1020339.shtml
find与grep的组合使用
在当前目录下所有文件中查找内容包含 string 的文件:
find ./ -name "*" -exec grep "string" {} \;
注意:在最后不能加 print ,否则会出错.
在当前目录下所有文件中查找内容包含 string 的文件并列出字符所在的文件:
find ./ -name "*" -exec grep -l "string" {} \;
在当前目录下 *.c 中查找内容包含 string 的文件并列出字符所在的文件的所在行(不显示文件名):
find ./ -name "*.c" -exec grep -n "string" {} \;
在当前目录下所有文件中查找内容包含 string 的文件并列出字符所在的文件,所在行及所在行的内容:
find ./ -name "*" -exec grep -n "string" ./ {} \;
使用 find 查找时希望忽略某个目录(-prune):
如果希望在 /app 目录下查找文件, 但不希望在 /app/bin 目录下查找:
find /app -name "/app/bin" -prune -o -print
使用 type 选项:
如果要在 /etc 目录下查找所有的目录:
find /etc -type d -print
如果要在 /etc 目录下查找 .svn 的目录:
find /etc -name .svn -type d -print
为了在当前目录下查找除目录以外的所有类型的文件:
find . ! -type d -print
为了在当前目录下查找所有的符号链接文件, 可以用:
find . -type l -print
===========================================================
为了用 ls -l 命令列出所匹配到的文件, 可以把 ls -l 命令放在find命令的 -exec 选项中:
find . -type f -exec ls -l {} \;
注: f 表示普通文件
exec 选项后面跟随着所要执行的命令, 然后是一对 {}, 一个空格和一个 \,最后是一个分号。
软连接和硬链接:
ln -s /root/aminglinux.com linux 方便快捷的查找到需要所需要的文件。 源文件和目标文件 都写成绝对路径。
多个文件共用一个inode(但是这多个文件是同一个文件)
目录无法做硬链接,做硬链接会引起混乱,硬链接只是做一个备份而已,注意硬链接不能跨的分区。因为inode的生成是在分区格式化划分好的。一个分区的inode是各不相同的。每个分区都有inode 2.有相当的inode会引起文件的混乱。