Linux鸟哥私房菜学习笔记_第七章Linux档案与目录管理

cd:变换目录
cd 是 Change Directory 

pwd:显示目前所在目录
pwd 是 Print Working Directory
pwd -P 不是以链接文件的路径来显示(让我们取得正确的目录名称)--physical

mkdir:建立一个新的目录
mkdir 是 make directory
mkdir -p test/test 创建多级目录
mkdir -m 711 test2 建立权限为 rwx--x--x 的目录

rmdir:删除一个空的目录
rmdir 是 remove empty directories
rmdir -p test/test/test 删除上层的空目录
rm -r test/test/... 删除非空目录

echo 显示一行文本
echo $PATH
echo $HOME

ls:档案与目录的检视
ls -a 显示全部档案、连同隐藏档
ls -A 显示全部档案、连同隐藏档,但不包含.和..
ls -l 长数据串格式显示
ls -C 显示全部档案,不包含隐藏档
ls -F 根据档案、目录等信息,给予附加数据结构(*:代表可执行文件; /:代表目录; =:代表socket档案; |:代表FIFO档案;)
ls -alF 以长数据串格式显示所有档案,包含隐藏档
ls -al --full-time 完整的呈现档案的修改时间

cp:复制
cp source1 source2 directory/ 复制多个文件,最后一个一定要是目录才行
cp -f source destination 强制复制
cp -r source/ directory/ 递归持续复制,复制目录
cp -u source destination 目的文件比源文件旧才更新
cp -p source destination 连同档案属性一起复制
cp -s source destination 创建档案快捷方式
cp -i source destination 若目标文件已经存在,覆盖前询问
cp -l source destination 对档案创建链接(硬链接)
cp -d source destination 复制链接档
cp -a source/ directory/ 复制档案,并将所有特性一并复制,相当于 cp -pdr

rm:移除档案或目录
rm fir 删除档案
rm -f fir 强制删除档案
rm -i fir 删除前询问
rm -r 递归删除,常用在删除目录

mv:移动档案与目录,或更名
mv -f source destination 强制移动档案
mv -i source destination 若档案已经存在,询问是否覆盖
mv -u source destination 若目标档案已经存在,且source比较新,才更新
mv source1 source2 source3 .... directory/ 移动多个档案到指定目录
mv oldname newname 重命名档案或目录

basename /etc/sysconfig/network 取得最后的档案名
dirname /etc/sysconfig/network 取得最后的目录名

cat:显示档案内容
cat linux.txt 由第一行开始显示档案内容
cat -b linux.txt 显示档案,且显示行号,空白行不标行号
cat -n linux.txt 显示档案,且显示行号,空白行也会有行号
cat -A linux.txt 显示档案,并显示出其中的特殊字符

tac:反向显示档案内容
tac linux.txt 由最后一行开始显示档案内容

nl:添加行号打印
nl linux.txt 显示档案,并输出行号,不包含空白行
nl -b a linux.txt 表示是否为空行,也同样列出行号(类似cat -n)

可翻页检视(空格翻页,回车翻一行,:f显示文件名和目前显示行数,q立刻离开,b往回翻页)
more linux.txt 一页一页的显示档案内容
less linux.txt 一页一页的显示档案内容,且可以向前翻页

资料撷取
head linux.txt 只显示档案头几行
head -n 10 linux.txt 显示档案前面10行
head -n -10 linux.txt 显示档案最后10行以前的内容
tail linux.txt 只显示尾几行
tail -n 20 linux.txt 显示档案后20行
tail -n +10 linux.txt 显示档案10行以后的内容
tail -f linux.txt 持续侦测档案内容
head -n 20 linux.txt | tail -n 10 显示10行到20行之前的内容

非纯文本档内容读取
od logo.png 以二进制方式读取档案内容

touch:修改档案时间或新建文档
mtime:档案内容变更时就会更新这个时间
ctime:档案状态(权限/属性)变更时就会更新这个时间
atime:档案内容被取用(cat)时就会更新这个时间
touch linux.txt 创建档案
touch -a linux.txt 仅修订atime
touch -c linux.txt 仅修订ctime
touch -m linux.txt 仅修订mtime
touch -a -d 20130101 linux.txt 修改档案atime为特定日期
touch -c -t 0101010101 linux.txt 修改档案ctime为特定时间

umask:档案预设权限
umask 查看档案预设权限
umask -S 查看档案预设权限,以符号类型显示
umask 002 预设档案权限为664,目录权限为775.默认档案不具有x权限,目录为777

chattr:配置文件案隐藏属性(只对ext2和ext3文件系统有效)
+:增加某个特殊参数,其他原本存在的参数则不动
-:移除某个特殊参数,其他原本存在参数则不动
A:设置该属性后,存取此档案(目录)时,atime不会被修改
S:设置该属性后,修改档案时,会同步写入磁盘中
a:设置该属性后,该档案只能增加数据,不能删除,也不能修改数据(root才能设)
c:设置该属性后,自动将此档案压缩,读取时自动解压缩
d:设置该属性后,该档案不会被dump备份
i:设置该属性后,不能被删除、改名、设定链接档(root才能设)
s:设置该属性后,档案被删除,将会被完全的移除出这个磁盘
u:设置该属性后,与s相反
sudo chattr +i linux.txt 为档案添加i属性

lsattr:显示档案隐藏属性
lsattr -a 连同隐藏文件的属性也显示出来
lsattr -d ./ 如果是目录,仅列出目录本身属性,而非目录内的文件名
lsattr -R ./ 连同子目录的数据也一并显示出来

档案特殊权限:SUID、SGID、SBIT(4、2、1)(只对二进制程序支持)
SUID:只要拥有该程序的所有者拥有SUID权限,那么其他用户或同组用户拥有该程序的x权限就可以在程序执行中拥有所有者的权限支持(用户可以修改自己的密码,修改密码是root才具有的)chmod u+s
SGID:可以针对档案或目录来设定,同SUID类似,SGID可以在程序执行中拥有同组用户权限支持(locate查找文件) chmod g+s
SBIT:此权限只对目录有效,拥有此权限的目录,必须是目录所有者,root,当用户在该目录下建立档案或目录时,仅有自己或root才有权力删除该档案 chmod o+s

file ~/.bashrc 查询档案属性

档案、文件搜索
which:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
whereis:whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
locate:配合数据库查看文件位置。
find:实际搜寻硬盘查询文件名称。

which:查找执行档所在位置,这个指令时根据PATH这个环境变量所规范的路径去搜寻执行档的档名,which后面需要给完整档名
which -a locate 列出PATH目录中可以找到的locate命令位置。
which adb 查找adb命令所在位置
which java 查找jdk所在位置

whereis:查找特定档案
whereis [-bmsu] 档案名或目录名
-b 只找binary格式的档案
-m 只找在说明文件manual路径下的档案
-s 只找soure来源的档案
-u 搜寻不再上述三个项目中的特殊档案
whereis ifconfig 查找ifconfig命令
whereis -m passwd 查找passwd命令(-m:只找在说明文件manual路径下的档案

locate [ir] keyword(文件或目录名称)
-i 忽略大小写的差异
-r 后面可接正规表示法的显示方式
locate Settings.java 查找Settings.java文件
locate Settings/ 查找与Settings/目录相关档案
updatedb 更新搜索数据库(需要在root权限下才能执行)
locate查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。
但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新(使用updatedb命令进行更新)

find:查到文件(搜索硬盘,速度比locate,whereis要慢很多
find [PATH] [option] [action]
option:
1.与时间相关:-atime,-ctime,-mtime,-newer
2.与使用者或组名有关:-uid,-gid,-user,-group,-nouser,-nogroup
3.与档案权限及名称有关:-name,-size [+-]SIZE(c代表byte),-type TYPE(f:一般正规档案,b,c:装置档案,d:目录,l:链接档,s:socket),-perm mode,
4.额外的动作:-exec command:command为其他指令,-exec后面可接额外的指令来处理搜索到的结果
find ./ -mtime 0 查找./目录下24小时内被更动过的内容
find ~/ -mtime 3 查找home目录下,3天前的24小时内被更动过的内容
find / -mtime +1 查找/目录下,1天前(不包含1天本身)被更动过的内容
find ./ -mtime -1 查找./目录下,1天内(包含1天本身)被更动过的内容
find ./ -newer test 查找./目录下比test新的文件
find ./ -user zy 查找./目录下,zy用户的档案
find ./ -group zy 查找./目录下,群组为zy的所有档案
find ./ -nouser 搜寻系统中不属于任何人的档案
find ./ -nogroup 搜寻系统中不属于任何群组的档案
find ./ -size -1c 搜寻小于1byte的文件
find ./ -size +1000k 搜寻大于1m的文件
find ./ -type d 搜寻./下的所有目录
find ./ -type l 搜寻./下的所有链接档
find ./ -perm -0644 搜索权限囊括了-rw-r--r--的档案,如-rwxr--rw-等
find ./ -perm +0744 搜索包含任一(-rwxr--r--)的权限,如-r--r--r--等
find / -perm +7000 搜寻含有s或t权限的档案(7000:---s--s--t)
find ~/ -name Settings.java 搜索home目录下.名为Settings.java的文件
find / -name Settings.java -exec ls -alF {} \; 搜索/目录下,名为Settingsjava的文件,并以ls -alF显示,-exec后不能跟命令别名
find /etc -name "*.png" 查找/etc目录下所有png图片
find ./ -type f | xargs grep "test" -n --color 查找当前目录下,包含“test"字符串的文档
find ./ -size +50k -a -size -100k -exec ls -alF {} \; 查找50k到100k的文件,并以ls -alF的格式显示
find ./ -size -1c -a ! -user zouyong -type f -exec ls -alF {} \; 搜索小于1byte,且不属于zouyong的档案,以ll格式显示
find /etc/ -size +1500k -o -size 0 查找容量大于1500k或等于0的档案

你可能感兴趣的:(Linux鸟哥私房菜学习笔记_第七章Linux档案与目录管理)