Linux基础——文件管理
文件管理及常用命令详解
Linux文件系统是以/为基本的倒置树状结构,我们来进一步学习下文件或者目录的操作和管理命令:
目录相关操作:cd、pwd、mkdir、rmdir
目录及文件检索:ls
复制、移动、删除:cp、mv、rm
文件内容查看:cat、tac、more、less、head、tail
查看文件类型:file(type:查看命令类型)
命令和文件搜索:which、whereis、find
下面我们逐个进行解释:
1.cd
Change directory的缩写,变换工作目录的命令。 cd [dir] 最简单的用法,目录可以是绝对路径也可以是相对路径 cd ~$USERNAME 表示切换至$USERNAME的家目录下
2、pwd
Print Working Directory,显示当前所在目录的路径 【OPTION】 -P [dir] 表示实际的路径,而非使用link的路径 【FOR EXAMPOR】 [root@localhost ppp]# cd -P /var/mail/ [root@localhost mail]# pwd /var/spool/mail [root@localhost mail]# pwd -P /var/spool/mail
3、mkdir
Make Directories,创建目录文件 【OPTION】 -m,--mode=MODE set file mode,not a=rwx-umask指定权限,不受umask影响 -p,--parents no error if existing,make parent directories as needed 根据需要生成父目录(如果父目录不存在),不会报错 -v,--verbose print a message for each created directories. 打印创建目录消息 【FOR EXAMPLE】 [root@localhost tmp]# mkdir -m 555 test [root@localhost tmp]# umask 0022 [root@localhost tmp]# ll -a dr-xr-xr-x. 2 root root 6 Sep 24 22:45 test [root@localhost tmp]# mkdir -pv test/testx/testy mkdir: created directory ‘test/testx’ mkdir: created directory ‘test/testx/testy
4、rmdir
Remove empty directories,删除空目录 【SYNOPSIS】 rmdir [option]... [dir]... 【OPTION】 -p, --parents remove DIRECTORY and its ancestors(上代、祖先) 删除目录及其上级目录一起删除 -v,--verbose 【FOR EXAMPLE】 [root@localhost tmp]# ls -ld /tmp/* -rw-r--r--. 1 root root 134 Sep 21 23:07 /tmp/issue drwx------. 2 ftp ftp 59 Sep 21 22:20 /tmp/skel dr-xr-xr-x. 3 root root 18 Sep 24 22:53 /tmp/test -rwx------. 1 root root 0 Sep 21 20:27 /tmp/test1 drwxr-xr-x. 11 root root 4096 Sep 22 01:35 /tmp/x [root@localhost tmp]# rmdir -p test/testx/testy [root@localhost tmp]# ls -ld /tmp/* -rw-r--r--. 1 root root 134 Sep 21 23:07 /tmp/issue drwx------. 2 ftp ftp 59 Sep 21 22:20 /tmp/skel -rwx------. 1 root root 0 Sep 21 20:27 /tmp/test1 drwxr-xr-x. 11 root root 4096 Sep 22 01:35 /tmp/x
5、ls
List Directory contents,列举路径目录 【SYNOPSIS】 ls [option]... [file]... 【OPTION】 -a,--all don't ignore entries starting with. 列举全部的文档,连同隐藏的文档(.开头的文档) -A,--almost-all don't list implied . and .. -l use a long listing format 使用长格式显示,每一行数据代表一个文件或者目录 -f do not sort, enable -aU, disable -ls --color 不进行排序的显示 -h,--human-readable with -l,print sizes in human readable format 结合-l选项一起使用,以人类可读的格式显示(例如:kb,MB,GB等) -i,--inode print the index number for each file 显示每个文件的inode号 -s,--size print the allocated size of each file,in blocks 显示每个文件分配的大小 -S sort by file size 按文件大小排序,结合-l选项使用更清楚 -r,--reverse(逆向) reverse order while sorting 逆向排序显示,跟ls命令单独使用的结果相反 -R,--recursive list subdirectories recursively 连同子目录的内容一并列举(此命令慎用) -g like -l,but don't list owner -G,--no-group
6、cp
Copy Files and Directories,复制文件和目录,如果目标不存在,则创建目标文件或者目录,如果目标存在,则直接覆盖 【SYNOPSIS】 cp [OPTION]... [-T] SOURCE DEST /*单源复制,SOURCE源文件,DESTINATION目标*/ cp [OPTION]... SOURCE... DIRECTORY /*多源复制*/ cp [OPTION]... -t DIRECTORY SOURCE... /*多源复制*/ 【OPTION】 -a,--archive same as -dR --preserve=all 保留源文件的所有属性,递归复制 -i,--interactive prompt before overwrite 覆盖之前交互提示 -f,--force if an existing destination file cannot be opened,remove it and try again 如果目标文件无法打开,则删除它并重新尝试复制。也就是不进行提示,强制复制 -R,-r,--recursive copy directories recursively 递归式复制 -d,same as --no-dereference --preserve=links 如果源文件是个链接文件,则将链接文件的源文件内容复制,但不指向源文件;选项与-p(P)同
7、mv
Move or Rename files 【SYNOPSIS】 mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... 【OPTION】 -i,--interactive 交互式进行移动或者重命名 -f,--force 强制移动或者重命名 -n,--no-clobber don't overwrite an existing file 对已存在文件不进行重写
8、rm
Remove files and directories 【SYNOPSIS】 rm [OPTION]... FILE... 【OPTION】 -f,--force 强制删除不提示 -i 每删除一个文件均提示确认 -I 当删除多于3个文件时只提示一次 --no-preserve-root don't treat '/' specially 可删除/
9、cat
concatenate files and print on the standard output 标准输出文件内容 【SYNOPSIS】 cat [option]... [file]... 【OPTION】 -A,--show all equivalent to -vET -b,--number-nonblank number nonempty output lines,overrides -n 非空白行显示行号显示内容,与-n选项相反 -E,--show-ends display $ at the end of each line 每行结尾处带$符号显示 -n,--number number all output lines 每行显示行号,包括空白行 -T,--show-tabs display TAB characters as ^I,用^I替换TAB空白字符显示文件 -v,--show-nonprinting use ^ and M- notation,except for LFD and TAB -s,--squeeze-blank suppress repeated empty output lines 重复空白行只显示一行 【FOR EXAMPLE】
10、tac
concatenate files and print in reverse 反向输出文档内容,是cat的反义<br />
11、 more
file perusal filter for crt viewing 分页式查看文件内容,类似cat 【SYNOPSIS】 more [options] file [...] 【OPTION】 -number This option specifies an integer number which is the screen size (in lines) 设置每页显示的行数 -d display help instead of ring bell 显示帮助信息:SPACE继续查看,q退出 -l suppress pause after form feet 遇到^字符时不会终止浏览 -p 清屏后显示内容 -c 显示内容后清理其他内容 -s 遇到连续重复的空白行后只显示一行 +NUM display file beginning from line number NUM 从给定的行号开始显示全部内容 +/string display file beginning from search string match 根据匹配字符串的位置开始显示文档内容 【FOR EXAMPLE】 [root@localhost tmp]# more -10 +/unset functions ...skipping . /etc/profile.d/lang.sh 2>/dev/null # avoid propagating LANGSH_SOURCED any further unset LANGSH_SOURCED fi # Read in our configuration if [ -z "${BOOTUP:-}" ]; then if [ -f /etc/sysconfig/init ]; then . /etc/sysconfig/init else --More--(13%)12、less
opposite of more 同样是翻页显示内容,只是less可以上下翻页及其他功能 【OPTION】 -b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o <文件名> 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x <数字> 将“tab”键显示为规定的数字空格
13、head
output the first part of files 显示文件的第一部分 【SYNOPSIS】 head [OPTION]... [FILE]... 【OPTION】 -c,--bytes 按字节输出内容,例如:-c 20 显示前20个字节的内容 -n,--lines 按行数显示内容 -q,--quiet 静默模式,不显示文件名 -v,--verbose 总是显示文件名 【FOR EXAMPLE】 [root@localhost tmp]# head -v -n 3 functions ==> functions <== # -*-Shell-script-*- # # functions This file contains functions to be used by most or all [root@localhost tmp]# head -c 20 issue hwo are you? fine,th[root@localhost tmp]#
14、tail
Print the last 10 lines of each FILE to standard output. 标准输出每一份文件的最后10行 【SYNOPSIS】 tail [OPTION]... [FILE]... 【OPTION】 -f,--follow 随着文件自增将内容追加到标准输出 -n,--lines 设定显示的行数 -s,--sleep-interval=N 与-f参数一起用,表示刷新间隔 -c,--bytes=K 从K字节位置显示内容 【FOR EXAMPLE】 基本用法同head类似15、file
Determine type of FILEs 详细明确文件类型 【SYNOPSIS】 file [OPTION...] [FILE...] 【OPTION】 【FOR EXAMPLE】 [root@localhost tmp]# file x/af1.txt x/af1.txt: ASCII text
文件的元数据
stat
Display file or file system status [root@localhost tmp]# stat issue File: ‘issue’ 文件名 Size: 191 文件大小 Blocks: 8 块大小 IO Block: 4096 regular file Device: fd00h/64768d Inode: 101365706 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-09-25 11:42:52.578622335 +0800访问时间 Modify: 2016-09-25 11:42:48.371622436 +0800修改时间 Change: 2016-09-25 11:42:48.372622436 +0800元数据改变时间 Birth: -stat 默认会得到文件的元数据,其包括该文件的所有信息如上;我们通常可以根据文件的时间戳来确定文件的被使用情况,可通过命令touch来修改时间戳数据,不做详细解释。
命令别名
alias
Define or display aliases 定义或者显示aliases alias作为一个linux内置命令,可以重新定义已有命令的格式;例如:alias rm=rm -i之后,使用rm命令则表示删除file之前且确认是否删除 【OPTION】 -p Print all defined aliases in a reusable format 显示所有定义的aliases 【FOR EXAMPLE】 [root@localhost ~]# alias -p alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias vi='vim' [root@localhost ~]#alias tail='tail -f'
命令引用
命令的执行结果有很多种方式,其中之一如下:
-
“也就是1(!)之前的那个符号,表示优先执行
[root@localhost tmp]# cat `pwd` cat: /tmp: Is a directory [root@localhost tmp]# pwd /tmp [root@localhost tmp]# cat /tmp cat: /tmp: Is a directory
-
变量,简单的命令引用可使用变量
[root@localhost ~]# cat $(pwd) cat: /root: Is a directory 与上一个命令的结果一样。
命令行展开演示
创建/tmp目录下的a_c,a_d,b_c,b_d
[root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d} mkdir: created directory ‘/tmp/a_c’ mkdir: created directory ‘/tmp/a_d’ mkdir: created directory ‘/tmp/b_c’ mkdir: created directory ‘/tmp/b_d’ [root@localhost tmp]# ls a_c a_d b_c b_d issue skel test1 x
创建/tmp/mylinux目录
[root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network- scripts},lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}} mkdir: created directory ‘/tmp/mylinux’ mkdir: created directory ‘/tmp/mylinux/bin’ mkdir: created directory ‘/tmp/mylinux/boot’ mkdir: created directory ‘/tmp/mylinux/boot/grub’ mkdir: created directory ‘/tmp/mylinux/dev’ mkdir: created directory ‘/tmp/mylinux/etc’ mkdir: created directory ‘/tmp/mylinux/etc/rc.d’ mkdir: created directory ‘/tmp/mylinux/etc/rc.d/init.d’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’ mkdir: created directory ‘/tmp/mylinux/lib64’ mkdir: created directory ‘/tmp/mylinux/proc’ mkdir: created directory ‘/tmp/mylinux/sbin’ mkdir: created directory ‘/tmp/mylinux/sys’ mkdir: created directory ‘/tmp/mylinux/tmp’ mkdir: created directory ‘/tmp/mylinux/usr’ mkdir: created directory ‘/tmp/mylinux/usr/local’ mkdir: created directory ‘/tmp/mylinux/usr/local/bin’ mkdir: created directory ‘/tmp/mylinux/usr/local/sbin’ mkdir: created directory ‘/tmp/mylinux/var’ mkdir: created directory ‘/tmp/mylinux/var/lock’ mkdir: created directory ‘/tmp/mylinux/var/log’ mkdir: created directory ‘/tmp/mylinux/var/run’ [root@localhost tmp]# tree -d /tmp/mylinux/ /tmp/mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run 22 directories
显示/var目录下所有以了开头,以一个小写字母结尾,且中间至少有一位数字(可以有其他字符)的文件或者目录
[root@localhost tmp]# ls -dl /var/l*[0-9]*[a-z]
显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或者目录
[root@localhost tmp]#ll -d /etc/[0-9]*[^0-9]
显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的目录或者文件
[root@localhost tmp]#ll -d /etc/[^a-z][^[:digit:]]* [root@localhost tmp]# ll -d /tmp/[^[:alpha:]][^[:digit:]]* -rw-r--r--. 1 root root 0 Sep 25 12:22 /tmp/1tfile2016n -rw-r--r--. 1 root root 0 Sep 25 13:35 /tmp/2ABsdf -rw-r--r--. 1 root root 0 Sep 25 13:34 /tmp/2asdljfl
在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件格式:tfile-2016-05-27-09-32-22
[root@localhost tmp]#touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S` [root@localhost tmp]#ll -a -rw-r--r--. 1 root root 0 Sep 25 13:39 tfile-2016-09-25-13-39-47
复制/etc目录下所有以P开头,以非数字结尾的文件或者目录到/tmp/mytest1目录中
[root@localhost tmp]#mkdir mytest1 [root@localhost tmp]#cp -af /etc/p*[^0-9] /tmp/mytest1 [root@localhost mytest1]# ls pam.d passwd- plymouth popt.d ppp printcap profile.d python passwd pki pm postfix prelink.conf.d profile protocols
复制/etc目录下所有以.d结尾的文件或者目录至/tmp/mytest2/下
[root@localhost tmp]#mkdir mytest2 [root@localhost tmp]# cp -af /etc/*.d /tmp/mytest2/ [root@localhost mytest2]# ls bash_completion.d dnsmasq.d logrotate.d popt.d rc2.d rc.d sysctl.d binfmt.d dracut.conf.d modprobe.d prelink.conf.d rc3.d rsyslog.d tmpfiles.d chkconfig.d grub.d modules-load.d profile.d rc4.d rwtab.d xinetd.d cron.d init.d my.cnf.d rc0.d rc5.d statetab.d yum.repos.d depmod.d ld.so.conf.d pam.d rc1.d rc6.d sudoers.d
复制/etc目录下所有以l或者m或者n开头的,以.conf结尾的文件至/tmp/mytest3目录中
[root@localhost tmp]# mkdir mytest3 [root@localhost tmp]# cp -a /etc/[lmn]*.conf /tmp/mytest3/ [root@localhost tmp]# ls -Al mytest3/ total 48 -rw-r--r--. 1 root root 28 Feb 28 2013 ld.so.conf -rw-r-----. 1 root root 191 Oct 29 2014 libaudit.conf -rw-r--r--. 1 root root 2391 Oct 13 2013 libuser.conf -rw-r--r--. 1 root root 19 Sep 12 22:32 locale.conf -rw-r--r--. 1 root root 662 Jul 31 2013 logrotate.conf -rw-r--r--. 1 root root 5171 Jun 10 2014 man_db.conf -rw-r--r--. 1 root root 936 Mar 6 2015 mke2fs.conf -rw-r--r--. 1 root root 1717 Sep 12 22:32 nsswitch.conf -rw-r--r--. 1 root root 2050 Sep 12 22:32 ntp.conf
原创文章,作者:396064847,如若转载,请注明出处:http://www.178linux.com/49164