1.lshtml
功能:列出文件或目录node
命令帮助:linux
man ls算法
info lsshell
ls --helpwindows
help cd #只有内部命令才能用
ls /usr/share/man 文档位置安全
经常使用选项:bash
-a:列出全部的文件(包含隐藏文件)服务器
-l:以长格式的形式列出信息网络
-i:显示文件inode号
-h:单位换算
-m:以逗号分割文件名列出
-t:按照修改时间来排序
-r:按照修改时间来反向排列
-S:按大小排
示例:
将家目录下的全部文件列出来(含属性与隐藏档) [root@localhost /]# ls -al ~ total 88 dr-xr-x---. 3 root root 4096 May 8 22:27 . ...... 长格式列出 [root@localhost ~]# ls -l total 44 -rw-------. 1 root root 1166 May 7 10:08 anaconda-ks.cfg -rw-r--r--. 1 root root 17957 May 7 10:08 install.log -rw-r--r--. 1 root root 4178 May 7 10:06 install.log.syslog -rw-r--r--. 1 root root 7273 May 7 21:30 system.sh 按照修改时间倒序 [root@localhost ~]# ls -lt total 44 -rw-r--r--. 1 root root 7273 May 7 21:30 system.sh -rw-------. 1 root root 1166 May 7 10:08 anaconda-ks.cfg -rw-r--r--. 1 root root 17957 May 7 10:08 install.log -rw-r--r--. 1 root root 4178 May 7 10:06 install.log.syslog 按照修改时间正序 [root@localhost ~]# ls -lrt total 44 -rw-r--r--. 1 root root 4178 May 7 10:06 install.log.syslog -rw-r--r--. 1 root root 17957 May 7 10:08 install.log -rw-------. 1 root root 1166 May 7 10:08 anaconda-ks.cfg -rw-r--r--. 1 root root 7273 May 7 21:30 system.sh
2.cd
功能:更改工做路径
cd是Change Directory的缩写
用法:
cd 直接回车 直接切换到当前用户的家目录里
cd ~ 直接切换到当前用户的家目录里
cd .或者 ./ 切换到当前目录
cd .. 切换到上一级目录
cd - 切换到上一次的工做目录
示例:
绝对路径切换: [root@localhost ~]# cd /root/test 相对路径切换: [root@localhost /]# cd ./test 当前是root,那就是回到root家目录 [root@localhost /]# cd ~ 回到上一级目录 [root@localhost test]# cd ..
3.cp
功能:复制文件或目录
语法:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
经常使用选项:
-a 归档,至关于-dR --perserv=all
-b 目标文件存在建立备份,备份文件是文件名跟~
-f 强制复制文件或目录
-r 递归复制目录
-p 保留原有文件或目录属性,--perserv=mode,ownership,timestamp
-i 交互式,即复制文件或目录会询问
-u 当源文件比目的文件修改时间新时才复制
-v 显示复制信息,--verbose
区别:
若是是目录须要拷贝全部属性,用-a或者-rp
若是是文件须要拷贝全部属性,用-p或者-a
注意:cp在管理员的状况下慎用,尽可能用交互式来肯定是否真的想cp覆盖文件或目录
示例:
[root@localhost scripts]# cp -v file file2 #常规复制 `file' -> `file2' [root@localhost scripts]# cp -v file2{,.bak} #用大括号复制改变是否是更简洁些 `file2' -> `file2.bak'
4.mkdir
功能:建立新目录(make directory)
语法:mkdir [OPTION]... DIRECTORY...
经常使用选项:
-m:配置文件的权限
-p:递归建立目录
-v:显示建立过程
示例:
请到/tmp底下尝试建立数个新目录看看: [root@localhost tmp]# pwd /tmp [root@localhost tmp]# mkdir test #建立test新目录 [root@localhost tmp]# mkdir -p test1/test2/test3/test4 递归建立多个目录 [root@localhost tmp]# tree test1 查看建立成功 test1 └── test2 └── test3 └── test4 directories, 0 files 范例:建立权限为rwx--x--x的目录 [root@localhost tmp]# mkdir -m 655 test2 [root@localhost tmp]# ll -d test2 drw-r-xr-x 2 root root 4096 May 24 10:19 test2 上面的权限部分,若是没有加上 -m 来强制配置属性,系统会使用默认属性。 建立多个目[root@localhost tmp]# mkdir {1,2} [root@localhost tmp]# ll total 24 drwxr-xr-x 2 root root 4096 May 24 10:21 1 drwxr-xr-x 2 root root 4096 May 24 10:21 2 建立连续目录: [root@localhost tmp]# mkdir {3..10} [root@localhost tmp]# ll total 56 drwxr-xr-x 2 root root 4096 May 24 10:23 1 drwxr-xr-x 2 root root 4096 May 24 10:23 10 drwxr-xr-x 2 root root 4096 May 24 10:23 2 drwxr-xr-x 2 root root 4096 May 24 10:23 3 drwxr-xr-x 2 root root 4096 May 24 10:23 4 drwxr-xr-x 2 root root 4096 May 24 10:23 5 drwxr-xr-x 2 root root 4096 May 24 10:23 6 drwxr-xr-x 2 root root 4096 May 24 10:23 7 drwxr-xr-x 2 root root 4096 May 24 10:23 8 drwxr-xr-x 2 root root 4096 May 24 10:23 9
5.mv
功能:移动文件或目录,或重命名
语法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE..
经常使用选项:
-b 目标文件存在建立备份,备份文件是文件名跟
-u 当源文件比目的文件修改时间新时才移动
-v 显示移动信息
-i 交互式
-f 强制
-t 将全部源移动到目录中
注意:mv也是一个危险命令,使用时慎之又慎
示例:
[root@localhost scripts]# mv file2.bak{,.ori} 把file2.bak重名为file2.bak.ori [root@localhost scripts]# ls yyl 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 移动到上一级目录有多种方法: [root@localhost yyl]# mv 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt -t ../ #这个方法太笨 [root@localhost yyl]# ls ../ 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt [root@localhost yyl]# mv {1..10}.txt ../ [root@localhost yyl]# mv * ../
6.pwd(Print Working Directory)
功能:显示当前所在位置的绝对路径。
选项:
-P:显示出实际的路径,而非使用连接(link)路径。
示例:
单纯显示出目前的工做目录 [root@www ~]# pwd /root 显示实际的工做目录,而非链接挡自己的目录名而已 root@www ~]# cd /var/mail <==注意,/var/mail是一个连结档 [root@www mail]# pwd /var/mail <==列出目前的工做目录 [root@www mail]# pwd -P /var/spool/mail <==怎么跟上面显示不同? [root@www mail]# ls -ld /var/mail lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail # /var/mail 是连结档,连结到 /var/spool/mail # 加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径
7.rename
功能:重命名文件,支持通配符
语法:rename from to file...
rename -V
经常使用选项:
-V:打印版本(惟一参数)
示例:
[root@localhost scripts]# rename -V rename (util-linux-ng 2.17.2) 批量命名文件 将file1-file5重名为test1-test5 [root@localhost ~]# ls file* file1 file2 file3 file4 file5 [root@localhost ~]# rename "file" "test" * [root@localhost ~]# ls test* test1 test2 test3 test4 test5 建立文件后缀为.jpg的,而后把后缀更名为.html [root@localhost test]# for file in `seq -w 10`;do touch stu_$file.jpg;done [root@localhost test]# ls stu_01.jpg stu_03.jpg stu_05.jpg stu_07.jpg stu_09.jpg stu_02.jpg stu_04.jpg stu_06.jpg stu_08.jpg stu_10.jpg [root@localhost test]# rename ".jpg" ".html" ./* [root@localhost test]# ls stu_01.html stu_03.html stu_05.html stu_07.html stu_09.html stu_02.html stu_04.html stu_06.html stu_08.html stu_10.html
8.rm
功能:remove,删除文件或目录
语法:rm [OPTION]... FILE...
经常使用选项:
-i:交互式
-f:强制删除
-r:递归
注意:rm相对于mv,cp,在生产环境就更危险了,好多同仁受其害不止一次两次,建议禁用。
9.rmdir
功能:删除空的目录
语法:rmdir [OPTION]... DIRECTORY...
选项:
-p:连同上一级『空的』目录也一块儿删除
-v:显示过程
示例:
rmdir: removing directory, `a' [root@localhost ~]# rmdir -v 1 #这里报错,是由于1不是空目录,经过tree就看的出。 rmdir: removing directory, `1' rmdir: failed to remove `1': Directory not empty [root@localhost ~]# tree 1 1 └── 2 └── 3 └── 4 3 directories, 0 files [root@localhost ~]# rmdir -p 1 #使用递归删除时这样写删除也是会报错 rmdir: failed to remove `1': Directory not empty [root@localhost ~]# rmdir -p 1/2/3/4 #这样写的意思就是先删除4,再删除3,依次递归
3.10.touch
功能
建立文件,更改文件的时间戳
#当目标文件不存在:建立新的,空的文件 touch filename touch file1 file2 touch {a,b,c}.txt touch file{1..5} #当文件命有特殊字符时,能够进行以下转义: touch a\ b\ c touch "a b c" touch 'a b c' #当目标文件存在时,touch修改文件的时间戳: # stat file1 查看文件详细信息(时间戳) File: `file1' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768dInode: 275119 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-03-30 14:34:51.724484689 +0800 访问时间 Modify: 2016-03-30 14:34:45.915484930 +0800 修改时间 Change: 2016-03-30 14:34:45.915484930 +0800 属性时间 touch -a file1 -t 202011111111 修改文件的访问时间 touch -m file1 -t 201011111212 修改文件的修改时间 touch -d 20201010 filename 修改文件的访问时间和修改时间 block 块,操做系统块是一次IO的单位,系统块默认大小为4096字节;之后oracle里也会学到块的概念,oracle块默认为8192字节 inode 是文件系统给文件的一个编号,相似于文件的一个门牌号码 一个优化有关的问题: 块大好,还小好? 块大,一次IO数据量大,IO吞吐量大,空间浪费较多 块小,正好和块大相反 批量建立文件: 第一种:touch {1..10} 第二种seq 11 2 20 |xargs touch seq产生一个序列, |符号是管道(表示把前面的结果传到后面) 第三种:写shell脚本作循环 #!/bin/bash . /etc/init.d/functions for i in `seq 10`;do touch file$i && File_Status=$? if [ $File_Status -eq 0 ];then action "this is file$i successed" /bin/true else action "this is file$i failed" /bin/false fi done
11.tree
功能:以树状图列出目录的内容;
语法:语法很繁琐,这里就不介绍了
经常使用选项:
-d:只显示目录
-L level:指定显示的层级数目
-P pattern:只显示由指定pattern匹配到的路径,这里的P是大写;
-p:列出权限
示例:
[root@localhost ~]# ll total 444 -rw-------. 1 root root 1148 Apr 5 10:38 anaconda-ks.cfg drwxr-xr-x 2 root root 4096 May 22 10:52 b drwxr-xr-x 2 root root 4096 May 22 10:52 c drwxr-xr-x 2 root root 4096 May 22 10:52 d drwxr-xr-x 2 root root 4096 May 22 10:52 e -rw-r--r-- 1 root root 389473 May 9 15:22 inotify-tools-3.13.tar.gz drwxr-xr-x 2 root root 4096 May 22 10:48 install -rw-r--r--. 1 root root 17957 Apr 5 10:38 install.log -rw-r--r--. 1 root root 4178 Apr 5 10:37 install.log.syslog drwxr-xr-x 2 root root 4096 May 22 10:48 tmp [root@localhost ~]# tree -d . . ├── b ├── c ├── d ├── e ├── install └── tmp [root@localhost ~]# mkdir -p 1/2/3/4/5/6 [root@localhost ~]# tree -L 2 1 #从1开始的2个层级,到3 1 └── 2 └── 3 2 directories, 0 files [root@localhost ~]# tree 1 #不带L参数,所有层级都显示 1 └── 2 └── 3 └── 4 └── 5 └── 6 5 directories, 0 files [root@localhost ~]# tree -L 3 1 #从1开始的3个层级,到4 1 └── 2 └── 3 └── 4 [root@localhost ~]# tree -P *.gz . . ├── 1 │ └── 2 │ └── 3 │ └── 4 │ └── 5 │ └── 6 ├── b ├── c ├── d ├── e ├── inotify-tools-3.13.tar.gz ├── install └── tmp [root@localhost ~]# tree -P *.log . . ├── 1 │ └── 2 │ └── 3 │ └── 4 │ └── 5 │ └── 6 ├── b ├── c ├── d ├── e ├── install ├── install.log └── tmp [root@localhost ~]# tree -p *.gz . inotify-tools-3.13.tar.gz [error opening dir] . ├── [drwxr-xr-x] 1 │ └── [drwxr-xr-x] 2 │ └── [drwxr-xr-x] 3 │ └── [drwxr-xr-x] 4 │ └── [drwxr-xr-x] 5 │ └── [drwxr-xr-x] 6 ├── [-rw-------] anaconda-ks.cfg ├── [drwxr-xr-x] b ├── [drwxr-xr-x] c ├── [drwxr-xr-x] d ├── [drwxr-xr-x] e ├── [-rw-r--r--] inotify-tools-3.13.tar.gz ├── [drwxr-xr-x] install ├── [-rw-r--r--] install.log ├── [-rw-r--r--] install.log.syslog └── [drwxr-xr-x] tmp
12.basename
功能:打印路径的最后一个后缀
语法:basename NAME [SUFFIX]
basename OPTION
经常使用选项:
-V:查看版本
man手册示例:
basename /usr/bin/sort
Output "sort".
basename include/stdio.h .h
Output "stdio".
跟dirname恰好相反
验证下:
[root@localhost scripts]# basename /usr/local/bin bin [root@localhost scripts]# ls read01.sh read01.sh [root@localhost scripts]# basename read01.sh read01.sh
13.dirname
功能:去除路径的最后一个后缀
语法:dirname NAME
dirname OPTION
man手册的示例:
dirname /usr/bin/sort
Output "/usr/bin"
dirname stdio.h
Output "."
验证下:
[root@localhost test]# dirname /usr/local/bin/ /usr/local [root@localhost scripts]# ls read01.sh read01.sh [root@localhost scripts]# dirname read01.sh
14.chattr
功能:更改文件的隐藏属性
语法格式:chattr [ -RVf ] [ -v version ] [ mode ] files…
经常使用选项:
-R 递归更改
-V 显示详细信息
-f 忽略大部分错误信息
-v version 设置文件的档案号码
mode 设置文件的隐藏属性,其格式为+-=[acdeijstuACDST]
最关键的是在[mode]部分,[mode]部分的格式是+-=[acdeijstuACDST],这部分是用来设置文件的属性。其中+表示在原有参数设定基础上追加参数;-表示在原有参数设定基础上移除参数;=表示更新为指定参数。下面列出几个经常使用的属性参数的含义:
属性 | 含义 |
A | 文件的atime(access time)不可被修改,这样能够减小磁盘I/O数量,对于笔记本电脑有利于提升续航能力 |
S | 硬盘I/O同步选项,功能相似sync |
a | 即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性 |
i | 文件不能被删除、更名、设定连接关系,同时不能写入或新增内容(即便是root用户)。只有root才能设定这个属性 |
c | 即compresse,文件会自动的经压缩后再存储,读取时会自动的解压 |
d | 即no dump,设定文件不能成为dump程序的备份目标 |
j | 即journal,设定此参数使得当经过mount参数”data=ordered”或”data=writeback”挂载的文件系统,文件在写入时会先被记录(在journal中)。若是filesystem被设定参数为data=journal,则该参数自动失效 |
s | 即secure,保密选项。设置了s属性的文件在被删除时,其全部数据块会被写入0 |
u | 即undelete,反删除选项。与s相反,文件在被删除时,其全部的数据块都保留着,用户从此能够恢复该文件 |
示例:
这条命令,能够将MySecretDir目录下的文件设置为不容许任何人修改: $ sudo chattr -R =i ~/MySecretDir # chattr +A 1.txt --这个属性让文件的access time访问后也不会变化,节省了IO(IO优化);默认状况下rhel5,访问一次atime就会跟着变一次,rhel6下只有当atime等于或早于mtime和ctime之一时,才会访问跟着变,不然不会变。(缘由咱们在后面讲mount参数时再补充) # stat 1.txt |tail -3 --用cat命令访问这个文件,再用此命令查看access time,会发现再也不变化 Access: 2014-07-17 11:12:58.589838878 +0800 Modify: 2014-07-17 11:12:58.589838878 +0800 Change: 2014-07-17 11:13:15.405701371 +0800 # chattr -a 1.txt # chattr +i 1.txt --加了i属性,此文件不可被修改,重命名
15.lsattr
功能:列出文件的隐藏属性
语法格式:lsattr [ -RVadv ] [ files… ]
经常使用选项:
选项 | 含义 |
---|---|
-R | 递归显示 |
-V | 显示lsattr程序的版本信息 |
-a | 显示全部文件的属性信息,包括以.开头的文件 |
-d | 显示目录的属性,而不是目录下的文件的属性 |
-v | 显示文件的档案号码 |
示例:
这条命令显示MySecretDir目录的隐藏属性 $ lsattr -Rd MySecretDir/ ----i----------- MySecretDir/ 一个文件加了a属于,重定向覆盖之前的内容不容许,但追加内容是能够的 # lsattr 1.txt -----a-------e- 1.txt # echo 456 > 1.txt bash: 1.txt: Operation not permitted # echo 456 >> 1.txt
16.file
功能:鉴定文件类型
# file /dev/tty1 /dev/tty1: character special 字符设备:输入输出 输入设备:键盘、鼠标 输出设备:显示器、打印机 # file /dev/sda /dev/sda: block special 块设备:软盘|U盘|磁盘|光盘 # file /dev/stdin /dev/stdin: symbolic link to `/proc/self/fd/0' 连接文件,相似windows下快捷方式
17.MD5sum
功能:用于生成和校验文件的md5值
md5校验,有很小的几率不一样的文件生成的md5可能相同。比md5更安全的校验算法还有SHA*系列的
md5值是一个128位的二进制数据。
在网络传输时,咱们校验源文件得到其md5sum,传输完毕后,校验其目标文件,并对好比果源文件和目标文件md5 一致的话,则表示文件传输无异常。不然说明文件在传输过程当中未正确传输。
经常使用选项:
-b 以二进制模式读入文件内容
-t 以文本模式读入文件内容
-c 根据已生成的md5值,对现存文件进行校验
--status 校验完成后,不生成错误或正确的提示信息,能够经过命令的返回值来判断。
示例:
生成文件md5值 md5sum file [root@localhost scripts]# md5sum 123.sh 5f745455dc1be7dea720d7de894c9eea 123.sh [root@localhost scripts]# md5sum 1234.sh 5f745455dc1be7dea720d7de894c9eea 1234.sh 说明:同一文件,不一样名称,单md5值是同样,说明md5值效验的是文件内容,跟文件名无关 读取md5值 [root@localhost ~]# md5sum 123 f66d7df84020cbed01c9fdbb714d2079 123 [root@localhost ~]# file 123 123: ASCII text [root@localhost ~]# md5sum 123 f66d7df84020cbed01c9fdbb714d2079 123 [root@localhost ~]# md5sum -b 123 f66d7df84020cbed01c9fdbb714d2079 *123 [root@localhost ~]# md5sum -t 123 f66d7df84020cbed01c9fdbb714d2079 123 md5值重定向 将生成md5值重定向到指定的文件,一般文件的扩展名咱们会命为.md5 [root@localhost ~]# md5sum 123 > 123.md5 [root@localhost ~]# cat 123.md5 f66d7df84020cbed01c9fdbb714d2079 123 [root@localhost ~]# md5sum 123 f66d7df84020cbed01c9fdbb714d2079 123 将多个文件的md5重定向到指定的文件每一个文件的md5生成为一行 [root@localhost ~]# md5sum 123* >1.md5 [root@localhost ~]# cat 1.md5 f66d7df84020cbed01c9fdbb714d2079 123 f66d7df84020cbed01c9fdbb714d2079 1234 f66d7df84020cbed01c9fdbb714d2079 123.bak 1dd5e6301ec14b12e8f51fb319477884 123.md5 重定向追加这里新增文件ls,单独求其md5,将其md5追加到文件中 [root@master lianxi]# cp /bin/ls . [root@localhost ~]# md5sum ls >>1.md5 [root@localhost ~]# cat 1.md5 f66d7df84020cbed01c9fdbb714d2079 123 f66d7df84020cbed01c9fdbb714d2079 1234 f66d7df84020cbed01c9fdbb714d2079 123.bak 1dd5e6301ec14b12e8f51fb319477884 123.md5 ca226dd605e91b72e0d2060a6357c28f ls md5校验 -c选项来对文件md5进行校验。校验时,根据已生成的md5来进行校验。生成当前文件的md5,并和以前已经生成的md5进行对比,若是一致,则返回OK,不然返回错误信息 [root@localhost ~]# md5sum -c 1.md5 123: OK 1234: OK 123.bak: OK 123.md5: OK ls: OK 修改文件后,文件md5变化 [root@localhost ~]# md5sum 123 99d43d51be42c65df4b0f3177c07cbed 123 [root@localhost ~]# md5sum 123 >123.md5 [root@localhost ~]# echo "yyl" >>123 [root@localhost ~]# md5sum 123 ac2c2d832d38424b8ef996c8074f6c18 123 [root@localhost ~]# md5sum -c 123.md5 123: FAILED md5sum: WARNING: 1 of 1 computed checksum did NOT match --status,不显示校验信息,以命令返回值来判断,校验一致返回0,不一致返回1 [root@localhost ~]# md5sum -c --status 123.md5 [root@localhost ~]# echo $? 1 多个文件文件校验和grep连用经过grep将正确的信息过滤掉 [root@master lianxi]# md5sum -c ../value.md5 acpid: OK acpid.1: OK anaconda.log: OK anaconda.syslog: OK anaconda.xlog: OK boot.log: OK boot.log.1: OK ... 省略中间部分 yum.log.2: OK 15: md5sum: WARNING: 1 of 56 computed checksums did NOT match [root@master lianxi]# md5sum -c ../value.md5 | grep -v OK md5sum: WARNING: 1 of 56 computed checksums did NOT match cron.1: FAILED
特殊说明
1)md5sum 是校验文件内容,与文件名是否相同无关
2)md5sum值逐位校验,因此文件越大,校验时间越长。
总结
经过md5sum来校验生成文件校验码,来发现文件传输(网络传输、复制、本地不一样设备间的传输)异常形成的文件内容不一致的状况。
工做 实践应用场景:
须要比较2个rc1.tar.gz 包和rc2.tar.gz两个包,变动是否是和开发说的一致 1.获取包,确保包正确无误 获取包后,验证包的MD5值:md5sum rc*.tar.gz 2. 解压缩到指定目录 确保对应的目录存在 tar -zxvf rc1.tar.gz -C ./test_rc1 tar -zxvf rc2.tar.gz -C ./test_rc2 3. 递归生成各文件的的MD5值 find ./test_rc1 -type f -print0| xargs -0 md5sum >> rc1_md5.txt find ./test_rc2 -type f -print0| xargs -0 md5sum >> rc2_md5.txt 4. 比较两文件的MD5值 diff -c rc1_md5.txt rc2_md5.txt 或者用UltraCompare Professional比对结果
练习:
(1)如何建立目录/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a, /tmp/x/y1/b, /tmp/x/y2/a,/tmp/x/y2/b,要求一次命令运行?
[root@localhost ~]# mkdir /tmp/x /tmp/x/{y1,y2} /tmp/x/y1/{a,b} /tmp/x/y2/{a,b} [root@localhost ~]# tree /tmp/x /tmp/x ├── y1 │ ├── a │ └── b └── y2 ├── a └── b 更简单的方法: [root@localhost tmp]# mkdir -p /tmp/x/{y1,y2}/{a,b} [root@localhost tmp]# tree /tmp/x /tmp/x ├── y1 │ ├── a │ └── b └── y2 ├── a └── b
(2)如何建立目录 x_m,y_m,x_n,y_n,要求一次命令运行?
[root@localhost yyl]# mkdir /tmp/{x,y}_{m,n} [root@localhost yyl]# ls /tmp/ x_m x_n y_m y_n
(3)如何建立目录/tmp/bin, /tmp/sbin,/tmp/usr,/tmp/user/bin,/tmp/usr/sbin,要求一次命令运行?
[root@localhost tmp]# mkdir -p /tmp/{bin,sbin} /tmp/user/bin /tmp/usr/sbin [root@localhost tmp]# tree bin sbin user usr bin sbin user └── bin usr └── sbin
(4)看一个实验
[root@localhost yyl]# touch test [root@localhost yyl]# cp test test1 [root@localhost yyl]# ll -i test test1 523308 -rw-r--r-- 1 root root 0 Nov 24 13:58 test 523309 -rw-r--r-- 1 root root 0 Nov 24 13:58 test1 [root@localhost yyl]# mv test test3 [root@localhost yyl]# ll -i test1 test3 523309 -rw-r--r-- 1 root root 0 Nov 24 13:58 test1 523308 -rw-r--r-- 1 root root 0 Nov 24 13:58 test3 解析:cp一个文件,新文件的inode会变,由523308到523309,mv一个文件,inode号不变,由523308到523308,这是同一分区不变,不一样分区会改变吗? [root@localhost yyl]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 4.3G 13G 26% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 477M 28M 425M 6% /boot /dev/mapper/VolGroup-lv01 4.8G 19M 4.6G 1% /data [root@localhost yyl]# mv test3 /data/test [root@localhost yyl]# ll -i test1 /data/test 12 -rw-r--r-- 1 root root 0 Nov 24 13:58 /data/test 523309 -rw-r--r-- 1 root root 0 Nov 24 13:58 test1
(5)如何把/etc/skel/目录里以.开头的隐藏文件拷到/tmp目录
有桌面能够用下面命令打开目录
nautilus /etc/skel/ --图形打开一个目录 # cp /etc/skel/* /tmp/ -rf --错误用法,*号不能表明隐藏文件 # cp /etc/skel/.* /tmp/ -rf --错误用法, .*也包括..,也就是会把上级目录的东西也拷过去 方法一: # cp /etc/skel/.[a-Z]* /test/ -a或-rf --正确作法 方法2: #ls -a /etc/skel/ |xargs -i cp {} /test
(6)在/home目录下建立yyl01/redhat/test目录。而后在/home/yyl01下面建立文件file1~file5,而且修改file1的时间为2020年的7月7号。
[root@localhost ~]# mkdir -p /home/yyl01/redhat/test [root@localhost yyl01]# touch /home/yyl01/file{1..5} [root@localhost yyl01]# touch -m file{1..5} -t 202007070707 [root@localhost home]# tree /home /home ├── yyl └── yyl01 ├── file1 ├── file2 ├── file3 ├── file4 ├── file5 └── redhat └── test [root@localhost home]# ll /home/yyl01/ total 4 -rw-r--r-- 1 root root 0 Jul 7 2020 file1 -rw-r--r-- 1 root root 0 Jul 7 2020 file2 -rw-r--r-- 1 root root 0 Jul 7 2020 file3 -rw-r--r-- 1 root root 0 Jul 7 2020 file4 -rw-r--r-- 1 root root 0 Jul 7 2020 file5 drwxr-xr-x 3 root root 4096 May 25 11:55 redhat
(7)将/home/yyl01下的file1~file5文件移动到/home/yyl01/redhat/test目录下,而且重命名为test1~test5
[root@localhost ~]# mv /home/yyl01/file{1..5} /home/yyl01/redhat/test/ [root@localhost ~]# cd /home/yyl01/redhat/test/ [root@localhost test]# rename "file" "test" * [root@localhost test]# ll total 0 -rw-r--r-- 1 root root 0 May 25 14:21 test1 -rw-r--r-- 1 root root 0 May 25 14:21 test2 -rw-r--r-- 1 root root 0 May 25 14:21 test3 -rw-r--r-- 1 root root 0 May 25 14:21 test4 -rw-r--r-- 1 root root 0 May 25 14:21 test5 方法2 for i in `ls ./*`;do mv $i `echo $i|sed 's/file/test/g'`;done #for循环加sed更名
(8)将/home/yyl01/redhat/test下的test5文件远程拷贝到192.168.5.1上面的/home/test目录下,而且重命名成本身名字。远程服务器用户redhat用户,密码是123
[root@localhost test]# scp /home/yyl01/redhat/test/file5 redhat@192.168.5.1:/home/test/yyl
(9)删除/home/yyl01目录下的redhat目录
[root@localhost test]# cd /home/yyl01/ [root@localhost yyl01]# ls redhat [root@localhost yyl01]# rm -rf redhat