一、Linux常用文件管理类命令的使用方法
(一)文件目录命令
-
ls [文件或目录] :列出目录
-a 显示所有文件 -l 详细信息显示 -d 查看目录属性 -h 单位换算后更易阅读,但丢失精度
-
cd [目录]:切换目录
cd ~:切换至自己的家目录 cd ~USERNAME:切换至指定用户的家目录; cd -:在上一次所在目录与当前目录之间来回切换; cd ..:切换到上级目录
-
pwd:显示目前的目录
-
mkdir [目录名]:创建一个新的目录
-m :配置文件的权限直接配置,不需要看默认权限 (umask) -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来
-
rmdir [目录名]:删除一个空的目录
-p:删除某目录后,如果其父目录为空,则一并删除之; -v: 显示过程;
-
cp [源文件] [目的目录]:复制文件或目录
-r:复制目录 -p:连同文件的属性一起复制过去
-
mv [源文件或目录] [目的目录]:移动、更名文件或目录
-
rm [源文件或目录] [目的目录]:删除文件或目录
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息; -i :互动模式,在删除前会询问使用者是否动作 -r :递归删除,最常用在目录的删除了
(二)文件编辑命令
-
touch [文件名]:创建空文件
-
cat [文件名]:由第一行开始显示文件内容
-n:显示行号 -E:每行尾显示$
-
tac [文件名]:由最后一行开始逆序显示文件内容
-
file [文件名] :判断文件类型
[root@localhost ~]# file /etc/vimrc /etc/vimrc: ASCII text, with escape sequences
-
echo [字符串 | $变量]:出字符串或变量提取后的值,例如echo $SHELL
-e:让转义符生效; \n:换行 \t:制表符
-
nl:显示的时候,顺道输出行号
-
more [文件名]:一页一页的显示文件内容
-
less 与 more 类似,但是比 more 更好的是,他可以往前翻页
-
head -num [文件名]:只看头几行
-
tail -num [文件名] :只看尾巴几行
-f 动态显示
-
tr [原始字符] [目标字符]:替换文本文件中的字符
[root@localhost ~]# cat test.txt hello,world! [root@localhost ~]# cat test.txt | tr {a-z} {A-Z} HELLO,WORLD!
-
ln:产生连接文件
-
ln [源文件] [目的文件]:创建硬链接
-
ln -s [源文件] [目的文件]:创建软连接
软连接:类似windows快捷方式,可以跨文件系统生成 硬链接:类似于复制+同步更新,与源文件有相同的iNode,不能跨文件系统生成
-
chmod [{ugo}{±=}{rwx}] [文件或目录] 权限修改命令
-
chown [用户] [文件或目录] 改变文件或目录的所有者
-
chgrp [组名] [文件或目录] 改变文件或目录的所属组
-
umask -S 查看默认创建文件的权限,缺省创建的文件没有可执行权限
find [搜索路径] [搜索关键字] 查找文件或目录
-name 文件名,可以用*代表匹配任意字符,用?代表匹配任意单个字符
-size 文件大小 +204800 查找大于100M的文件
-user [用户名] 文件所有者
时间参数ctime、atime、mtime,天为单位
cmin、amin、mmin,分钟为单位
c-change,改变,表示文件属性被修改过,所有者、所属组、权限
a- access,访问,
m-modify,修改,表示文件内容被修改过
-之内,+超过
例如:find /etc -mmin -120 查找120分钟之内etc目录下被修改过的文件
连接符 -a and逻辑与 -o or 逻辑或
find …… -exec 命令 {} \;
-ok (询问确认)
{} find查询的结构
\转义符,符号命令使用本身的含义
;结束
{} \;是固定格式,不能分开
例如:find /etc -name inittab -exec ls -l {} /;
-inum 根据i节点来进行查找
-type 文件类型 f二进制文件 l软连接文件 d目录
例如:find /etc -name inittab -a -type f -exec ls -l {} /;
find . -ium 10 查找i节点是10的文件
- grep [指定字串] [源文件] 在文件中搜索字串匹配的行并输出
二、命令执行状态返回值
bash通过状态返回值来输出此结果:
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中。
[root@localhost ~]# ls /root
anaconda-ks.cfg test.txt webmin
[root@localhost ~]# echo $?
0
[root@localhost ~]# ls /root/1
ls: 无法访问/root/1: 没有那个文件或目录
[root@localhost ~]# echo $?
2
[root@localhost ~]# rm /root/1.txt
rm: 无法删除"/root/1.txt": 没有那个文件或目录
[root@localhost ~]# echo $?
1
三、命令行展开
bash的命令行展开:用{}表示可承载一个以逗号分隔的列表,并将其展开为多个路径
如:/tmp/{a,b}=/tmp/a, /tmp/b
/tmp/{a,b}/c= /tmp/a/c, /tmp/b/c
1.创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@localhost ~]# mkdir /tmp/{a,b}{_c,_d}
2.创建/tmp/mylinux目录下的:
[root@localhost ~]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
mkdir: 已创建目录 "/tmp/mylinux"
mkdir: 已创建目录 "/tmp/mylinux/bin"
mkdir: 已创建目录 "/tmp/mylinux/boot"
mkdir: 已创建目录 "/tmp/mylinux/boot/grub"
mkdir: 已创建目录 "/tmp/mylinux/dev"
mkdir: 已创建目录 "/tmp/mylinux/etc"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/network-scripts"
mkdir: 已创建目录 "/tmp/mylinux/lib"
mkdir: 已创建目录 "/tmp/mylinux/lib/modules"
mkdir: 已创建目录 "/tmp/mylinux/lib64"
mkdir: 已创建目录 "/tmp/mylinux/proc"
mkdir: 已创建目录 "/tmp/mylinux/sbin"
mkdir: 已创建目录 "/tmp/mylinux/sys"
mkdir: 已创建目录 "/tmp/mylinux/tmp"
mkdir: 已创建目录 "/tmp/mylinux/usr"
mkdir: 已创建目录 "/tmp/mylinux/usr/local"
mkdir: 已创建目录 "/tmp/mylinux/usr/local/bin"
mkdir: 已创建目录 "/tmp/mylinux/usr/local/sbin"
mkdir: 已创建目录 "/tmp/mylinux/var"
mkdir: 已创建目录 "/tmp/mylinux/var/lock"
mkdir: 已创建目录 "/tmp/mylinux/var/log"
mkdir: 已创建目录 "/tmp/mylinux/var/run"
[root@localhost ~]# tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
24 directories, 0 files
三、文件的元数据信息,修改文件的时间戳信息
(一)、元数据信息
元数据包含文件的权限,大小,拥有者,组以及修改时间等信息
(二)、修改文件的时间戳信息
touch [OPTION]... FILE...
不跟任何选项a、m、c三个时间戳都会被改成当前时间。
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t :指定改为某一时刻的时间
四、定义一个命令的别名,在命令中引用另一个命令的执行结果
定义别名:
alias NAME='COMMAND’如果COMMAND之间没有space分隔可以不用‘’
注意:仅对当前shell进程有效,登出再登入就无效了,写入进程中将永久有效。
[root@localhost ~]# type clear
clear 是 /usr/bin/clear
[root@localhost ~]# type cls
-bash: type: cls: 未找到
[root@localhost ~]# alias cls=clear
[root@localhost ~]# type cls
cls 是 `clear' 的别名
撤销别名:
unalias NAME
[root@localhost ~]# unalias cls
命令中引用另一个命令的执行结果:管道
将一个命令的输出传送给另一个命令作为另一个命令的输入
[root@localhost ~]# ps -ef |grep ssh
root 9243 1 0 22:14 ? 00:00:00 /usr/sbin/sshd -D
root 9865 9243 0 22:17 ? 00:00:01 sshd: root@pts/0
root 10786 9867 0 23:51 pts/0 00:00:00 grep --color=auto ssh
[root@localhost ~]# netstat -tunlp | grep httpd
tcp6 0 0 :::80 :::* LISTEN 9246/httpd