ls命令
ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
命令格式
ls [选项] [目录名]
命令功能
列出目标目录中所有的子目录和文件
常用参数
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never'、'always'或'auto'其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
extension -X status -c
none -U time -t
size -S atime -u
time -t access -u
version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
配合 -l:显示访问时间但根据名称排序
否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
–help 显示此帮助信息并离开
–version 显示版本信息并离开
示例
1 列出/home目录下所有目录和文件的详细资料
[root@localhost /]# ls -l -R /home/
/home/:
total 4
drwx------. 4 mysql mysql 4096 Nov 13 21:05 mysql
/home/mysql:
total 0
[root@localhost /]# ls -l -R /home
/home:
total 4
drwx------. 4 mysql mysql 4096 Nov 13 21:05 mysql
/home/mysql:
total 0
[root@localhost /]# ls -lR /home
/home:
total 4
drwx------. 4 mysql mysql 4096 Nov 13 21:05 mysql
/home/mysql:
total 0
两种命令结果一样,如果命令的操作对象位于目录中,可以直接对操作对象进行操作。
[root@localhost /]# cd /home/
[root@localhost home]# ls -lR
.:
total 4
drwx------. 4 mysql mysql 4096 Nov 13 21:05 mysql
./mysql:
total 0
2 列出当前目录中所有以“g"开头的目录的详细内容
[root@localhost tmp]# ls -l g*
gconfd-gdm:
total 20
-rwx------. 1 gdm gdm 19328 Nov 21 17:11 saved_state_113741cb1db3803817b616c80000002a
gconfd-root:
total 0
直接输入ls会列出当前目录清单
root@localhost /]# ls
bin data etc lib lost+found misc net proc sbin srv tmp var
boot dev home lib64 media mnt opt root selinux sys usr
3 只列出文件夹下的子目录
[root@localhost /]# ls -F /opt/ |grep /$ rh/
文件下面子目录详细情况
[root@localhost etc]# ls -l /opt/ |grep "^d"
drwxr-xr-x. 2 root root 4096 Mar 26 2015 rh
4 列出目前工作目录下所有名称是j开头的档案
[root@localhost etc]# ls -ltr j*
jvm-commmon:
total 0
jvm:
total 0
java:
total 28
-rw-r--r--. 1 root root 13537 Dec 16 2004 font.properties
-rw-r--r--. 1 root root 50 May 11 2016 jpackage-release
-rw-r--r--. 1 root root 684 May 11 2016 java.conf
drwxr-xr-x. 3 root root 4096 Nov 13 18:38 security
5 列出目前工作目录下所有档案及目录,目录名称后加"/",可执行档后加"*"
[root@localhost home]# ls -AF
mysql/
6 计算当前目录下的文件数和目录数
[root@localhost etc]# ls -l * |grep "^-"|wc -l
626
[root@localhost etc]# ls -l * |grep "^d"|wc -l
106
7 指定文件格式输出格式
[root@localhost home]# ls -tl --time-style=full-iso
total 4
drwx------. 4 mysql mysql 4096 2018-11-13 21:05:00.711996982 +0800 mysql
[root@localhost home]# ls -ctl --time-style=long-iso
total 4
drwx------. 4 mysql mysql 4096 2018-11-13 21:05 mysql
cd命令
命令格式
cd [目录名]
命令功能
切换当前目录至dirName
常用范例
1 进入系统根目录
[root@localhost ~]# cd /
[root@localhost /]# ls
bin data etc lib lost+found misc net proc sbin srv tmp var
boot dev home lib64 media mnt opt root selinux sys usr
2 返回上一层目录 cd .. 或者 cd .. //
[root@localhost /]# cd /opt/
[root@localhost opt]# pwd
/opt
[root@localhost opt]# cd ..
[root@localhost /]# pwd
/
[root@localhost /]# cd /opt/
[root@localhost opt]# pwd
/opt
[root@localhost opt]# cd .. //
[root@localhost /]# pwd
/
cd .. 可以一直退,可以到达根目录
3 使用cd命令实现进入当前目录的父目录的父目录
[root@localhost ~]# cd /usr/local/ [root@localhost local]# pwd /usr/local [root@localhost local]# cd [root@localhost ~]# pwd /root[root@localhost ~]# cd /usr/local/ [root@localhost local]# pwd /usr/local [root@localhost local]# cd [root@localhost ~]# pwd /root
[root@localhost ~]# cd /usr/local/mysql [root@localhost mysql]# pwd /usr/local/mysql [root@localhost mysql]# cd ~ [root@localhost ~]# pwd /root
4 跳转到指定目录
[root@localhost ~]# cd /usr/local/mysql
[root@localhost mysql]# pwd
/usr/local/mysql
跳转到指定目录,目录名称前加 /,当前目录的子目录直接写名称。
5 返回进入此目录之前的目录
[root@localhost ~]# cd /usr/local/mysql [root@localhost mysql]# pwd /usr/local/mysql [root@localhost mysql]# cd - /root [root@localhost ~]# cd - /usr/local/mysql
6 把上个命令作为cd参数使用
[root@localhost ~]# cd /usr/local/
[root@localhost local]# cd -
/root
[root@localhost ~]# cd !$
cd -
/usr/local
[root@localhost local]# cd !$
cd -
/root
pwd命令
命令格式
pwd [选项]
命令功能
查看当前工作目录的完整路径
常用参数
一般情况下不带任何参数,如果目录是链接时:
pwd -P 显示出实际路径,而非使用(link)路径。
示例
1 查看工作目录的完整路径
[root@localhost ~]# pwd /root
2 查看指定文件夹
[root@localhost ~]# cd /usr/local/mysql [root@localhost mysql]# pwd /usr/local/mysql
3 目录连接,pwd -P显示出实际路径,而非使用连接(link)路径,pwd显示的时连接路径
[root@localhost mysql]# cd /etc/init.d [root@localhost init.d]# pwd /etc/init.d [root@localhost init.d]# pwd -P /etc/rc.d/init.d
/bin/pwd [选项] -L 目录连接时,输出连接路径;-P 输出物理路径。
[root@localhost init.d]# cd /etc/init.d [root@localhost init.d]# /bin/pwd /etc/rc.d/init.d [root@localhost init.d]# /bin/pwd -P /etc/rc.d/init.d [root@localhost init.d]# /bin/pwd -L /etc/init.d
4 当前目录删除了,而pwd命令仍然显示那个目录
[root@localhost ~]# cd /opt/ [root@localhost opt]# mkdir remove_test [root@localhost opt]# ls remove_test rh [root@localhost opt]# cd remove_test/ [root@localhost remove_test]# pwd /opt/remove_test [root@localhost remove_test]# rm ../remove_test -rf [root@localhost remove_test]# pwd /opt/remove_test [root@localhost remove_test]# /bin/pwd /bin/pwd: couldn't find directory entry in `..' with matching i-node [root@localhost remove_test]# cd .. [root@localhost opt]# pwd /opt [root@localhost opt]# ls rh
mkdir命令
mkdir命令用来创建指定的名称目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
命令格式
mkdir [选项] 目录
命令功能
通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)
命令参数
-m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
-v, --verbose 每次创建新目录都显示信息
示例
1 创建一个空目录
[root@localhost ~]# cd temp_test/ [root@localhost temp_test]# mkdir test01 [root@localhost temp_test]# ll total 4 drwxr-xr-x. 2 root root 4096 Nov 24 23:42 test01
2 递归创建多个目录
[root@localhost temp_test]# mkdir -p test1/test11 [root@localhost temp_test]# ll total 4 drwxr-xr-x. 3 root root 4096 Nov 24 23:44 test1 [root@localhost temp_test]# cd test1/ [root@localhost test1]# ll total 4 drwxr-xr-x. 2 root root 4096 Nov 24 23:44 test11
3 创建权限为777的目录
[root@localhost test1]# mkdir -m 777 test3 [root@localhost test1]# ll total 4 drwxrwxrwx. 2 root root 4096 Nov 24 23:47 test3
4 创建新目录都显示信息
[root@localhost test1]# mkdir -v test4 mkdir: created directory `test4' [root@localhost test1]# mkdir -vp test5/test55 mkdir: created directory `test5' mkdir: created directory `test5/test55'
5 创建项目的目录结构
[root@localhost test1]# mkdir -vp scf/{lib/,bin/,dov/{info,product},logs/{info,product},service/deplog/{info,product}} mkdir: created directory `scf' mkdir: created directory `scf/lib/' mkdir: created directory `scf/bin/' mkdir: created directory `scf/dov' mkdir: created directory `scf/dov/info' mkdir: created directory `scf/dov/product' mkdir: created directory `scf/logs' mkdir: created directory `scf/logs/info' mkdir: created directory `scf/logs/product' mkdir: created directory `scf/service' mkdir: created directory `scf/service/deplog' mkdir: created directory `scf/service/deplog/info' mkdir: created directory `scf/service/deplog/product'
rm命令
rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
rm是一个危险的命令,使用的时候要特别当心。
命令格式
rm [选项] 文件...
命令功能
删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
命令参数
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤
示例
1 删除文件,系统会先询问是否删除
[root@localhost temp_test]# touch test.log [root@localhost temp_test]# ls test1 test.log [root@localhost temp_test]# rm test.log rm: remove regular empty file `test.log'? y [root@localhost temp_test]# ls test1
2 强行删除file,系统不再提示
[root@localhost temp_test]# touch log.log [root@localhost temp_test]# ls log.log test1 [root@localhost temp_test]# rm -f log.log [root@localhost temp_test]# ls test1
3 删除任何.log文件,删除前逐一询问确认
[root@localhost temp_test]# touch log1.log [root@localhost temp_test]# touch log2.log [root@localhost temp_test]# ls log1.log log2.log test1 [root@localhost temp_test]# rm -i *.log rm: remove regular empty file `log1.log'? y rm: remove regular empty file `log2.log'? y [root@localhost temp_test]# ls test1
4 将子目录及子目录中所有文件删除
[root@localhost temp_test]# ls test1 test2 [root@localhost temp_test]# rm -r test2 rm: descend into directory `test2'? y rm: remove directory `test2/log.log'? y rm: remove directory `test2'? y [root@localhost temp_test]# ls test1
5 删除文件及子目录中所有文件,并且不再一一确认
[root@localhost temp_test]# mkdir -p test2/log.log [root@localhost temp_test]# ls test1 test2 [root@localhost temp_test]# rm -rf test2 [root@localhost temp_test]# ls test1
6 删除以f开头的文件
[root@localhost temp_test]# touch file [root@localhost temp_test]# ls file test1 [root@localhost temp_test]# rm f* rm: remove regular empty file `file'? y [root@localhost temp_test]# ls test1
7 自定义回收站功能
[root@localhost test]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } [root@localhost test]# alias rm='myrm' [root@localhost test]# touch 1.log 2.log 3.log [root@localhost test]# ll 总计 16 -rw-r--r-- 1 root root 0 10-26 15:08 1.log -rw-r--r-- 1 root root 0 10-26 15:08 2.log -rw-r--r-- 1 root root 0 10-26 15:08 3.log drwxr-xr-x 7 root root 4096 10-25 18:07 scf drwxrwxrwx 2 root root 4096 10-25 17:46 test3 drwxr-xr-x 2 root root 4096 10-25 17:56 test4 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 [root@localhost test]# rm [123].log moved to /tmp/20121026150901 ok [root@localhost test]# ll 总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf drwxrwxrwx 2 root root 4096 10-25 17:46 test3 drwxr-xr-x 2 root root 4096 10-25 17:56 test4 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 [root@localhost test]# ls /tmp/20121026150901/ 1.log 2.log 3.log
rmdir命令
rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的。(注意,rm - r dir命令可代替rmdir,但是有很大危险性。)删除某目录时也必须具有对父目录的写权限。
命令格式
rmdir [选项] 目录...
命令功能
该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限
命令参数
- p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
-v, --verbose 显示指令执行过程
示例
1 rmdir不能删除非空目录
[root@localhost temp_test]# rmdir test1/ rmdir: failed to remove `test1/': Directory not empty
2 rmdir -p 当子目录被删除后使它成为空目录后,则顺便一并删除
[root@localhost temp_test]# mkdir -p test2/test22 [root@localhost temp_test]# ls test1 test2 [root@localhost temp_test]# rmdir test2 rmdir: failed to remove `test2': Directory not empty [root@localhost temp_test]# rmdir -p test2/test22 [root@localhost temp_test]# ls test1
mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files)。
命令格式
mv [选项] 源文件或目录 目标文件或目录
命令功能
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
命令参数
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
示例
1 文件改名
[root@localhost test2]# touch test.log [root@localhost test2]# ls test.log [root@localhost test2]# mv test.log test.txt [root@localhost test2]# ls test.txt
2 移动文件
[root@localhost test2]# cd /root/temp_test/test3 [root@localhost test3]# ls test.txt [root@localhost test3]# mv test.txt /root/temp_test/test2 [root@localhost test3]# ls [root@localhost test3]# cd /root/temp_test/test2 [root@localhost test2]# ls test.txt
将test.txt移回到test3中
[root@localhost test2]# ls test.txt [root@localhost test2]# mv -t /root/temp_test/test3 test.txt [root@localhost test2]# ls [root@localhost test2]# cd /root/temp_test/test3 [root@localhost test3]# ls test.txt
3 改名时文件覆盖 参数为-f时不询问直接覆盖
[root@localhost test2]# touch log1.log [root@localhost test2]# touch log2.log [root@localhost test2]# ls log1.log log2.log [root@localhost test2]# mv -i log1.log log2.log mv: overwrite `log2.log'? y [root@localhost test2]# ls log2.log
[root@localhost test2]# touch log1.log [root@localhost test2]# ls log1.log log2.log [root@localhost test2]# mv -f log1.log log2.log [root@localhost test2]# ls log2.log
4 目录的移动
[root@localhost temp_test]# ls test1 test2 test3 [root@localhost temp_test]# mv test3 test2 [root@localhost temp_test]# ls test1 test2 [root@localhost temp_test]# cd test2 [root@localhost test2]# ls log2.log test3
如果目录test4不存在,将目录test2改名为test4,存在则将test2移动到test4中。
[root@localhost temp_test]# ls test1 test2 [root@localhost temp_test]# mv test2 test4 [root@localhost temp_test]# ls test1 test4
5 移动当前文件夹下的所有文件到上一级目录。
[root@localhost temp_test]# cd test2 [root@localhost test2]# ls log2.log test3 [root@localhost test2]# mv * ../ [root@localhost test2]# ls [root@localhost test2]# cd .. [root@localhost temp_test]# ls log2.log test1 test2 test3
6 把当前目录的一个子目录里的文件移动到另外一个子目录里
[root@localhost temp_test]# ls log2.log test1 test2 test3 [root@localhost temp_test]# cd test2 [root@localhost test2]# ls log.log [root@localhost test2]# cd .. [root@localhost temp_test]# mv test2/* test3 [root@localhost temp_test]# cd test3 [root@localhost test3]# ls log.log
7 文件被覆盖前做简单备份,前面加参数-b
[root@localhost test2]# touch log1.log [root@localhost test2]# touch log2.log [root@localhost test2]# ll total 0 -rw-r--r--. 1 root root 0 Nov 26 00:45 log1.log -rw-r--r--. 1 root root 0 Nov 26 00:45 log2.log [root@localhost test2]# mv log1.log -b log2.log mv: overwrite `log2.log'? y [root@localhost test2]# ll total 0 -rw-r--r--. 1 root root 0 Nov 26 00:45 log2.log -rw-r--r--. 1 root root 0 Nov 26 00:45 log2.log~
cp命令
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本中执行cp时,没有-i参数时不会询问是否覆盖。这说明命令行和shell脚本的执行方式有些不同。
命令格式
cp [选项] [-T] 源 目的
cp [选项] 源 目录
cp [选项] -t 目录 源
命令功能
将源文件复制到目标文件,或将多个源文件复制目标目录。
命令参数
-a, --archive 等于-dR --preserve=all
--backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
存在时则不需再选此项)
-i, --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l, --link 链接文件而不复制
-L, --dereference 总是跟随符号链接
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
-R, -r, --recursive 复制目录及目录内的所有项目
示例
1 复制单个文件到目标目录,文件在目标文件夹中不存在
在没有带-a参数时,两个文件的时间不一样,带参数-a时,两个文件的时间时一致的。
[root@localhost temp_test]# cp log2.log test3 [root@localhost temp_test]# ll total 12 -rw-r--r--. 1 root root 0 Nov 26 00:13 log2.log drwxr-xr-x. 3 root root 4096 Nov 24 23:56 test1 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2 drwxr-xr-x. 2 root root 4096 Nov 26 13:37 test3 [root@localhost temp_test]# cd test3 [root@localhost test3]# ll total 0 -rw-r--r--. 1 root root 0 Nov 26 13:37 log2.log -rw-r--r--. 1 root root 0 Nov 26 00:37 log.log
2 目标文件存在时,会询问是否覆盖
[root@localhost temp_test]# ll total 12 -rw-r--r--. 1 root root 0 Nov 26 00:13 log2.log drwxr-xr-x. 3 root root 4096 Nov 24 23:56 test1 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2 drwxr-xr-x. 2 root root 4096 Nov 26 13:37 test3 [root@localhost temp_test]# cp log2.log test3 cp: overwrite `test3/log2.log'? y [root@localhost temp_test]# cd test3 [root@localhost test3]# ll total 0 -rw-r--r--. 1 root root 0 Nov 26 13:41 log2.log -rw-r--r--. 1 root root 0 Nov 26 00:37 log.log
3 复制整个目录
[root@localhost temp_test]# ll total 12 -rw-r--r--. 1 root root 0 Nov 26 00:13 log2.log drwxr-xr-x. 3 root root 4096 Nov 24 23:56 test1 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2 drwxr-xr-x. 2 root root 4096 Nov 26 13:37 test3 [root@localhost temp_test]# cp -a test2 test3 [root@localhost temp_test]# cd test3 [root@localhost test3]# ll total 4 -rw-r--r--. 1 root root 0 Nov 26 13:41 log2.log -rw-r--r--. 1 root root 0 Nov 26 00:37 log.log drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2
复制目标目录不存在时创建
[root@localhost temp_test]# ll total 12 -rw-r--r--. 1 root root 0 Nov 26 00:13 log2.log drwxr-xr-x. 3 root root 4096 Nov 24 23:56 test1 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2 drwxr-xr-x. 3 root root 4096 Nov 26 13:44 test3 [root@localhost temp_test]# cp -a test2 test4 [root@localhost temp_test]# ll total 16 -rw-r--r--. 1 root root 0 Nov 26 00:13 log2.log drwxr-xr-x. 3 root root 4096 Nov 24 23:56 test1 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2 drwxr-xr-x. 3 root root 4096 Nov 26 13:44 test3 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test4 [root@localhost temp_test]# cd test4 [root@localhost test4]# ll total 0 -rw-r--r--. 1 root root 0 Nov 26 00:45 log2.log -rw-r--r--. 1 root root 0 Nov 26 00:45 log2.log~
4 复制一个文件建立一个连接档
[root@localhost temp_test]# ll total 16 -rw-r--r--. 1 root root 0 Nov 26 00:13 log2.log drwxr-xr-x. 3 root root 4096 Nov 24 23:56 test1 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2 drwxr-xr-x. 3 root root 4096 Nov 26 13:44 test3 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test4 [root@localhost temp_test]# cp -s log2.log log_link.log [root@localhost temp_test]# ll total 16 -rw-r--r--. 1 root root 0 Nov 26 00:13 log2.log lrwxrwxrwx. 1 root root 8 Nov 26 13:48 log_link.log -> log2.log drwxr-xr-x. 3 root root 4096 Nov 24 23:56 test1 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test2 drwxr-xr-x. 3 root root 4096 Nov 26 13:44 test3 drwxr-xr-x. 2 root root 4096 Nov 26 00:45 test4
touch命令
用来修改文件时间戳,或者创建一个不存在的文件。
命令格式
touch [选项] 文件
命令参数
-a 或--time=atime或--time=access或--time=use 只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
命令功能
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间
示例
1 创建不存在的文件
[root@localhost test]# touch log1.log log2.log [root@localhost test]# ll total 0 -rw-r--r--. 1 root root 0 Nov 27 11:10 log1.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log2.log # 如果log3.log不存在,则不创建文件 [root@localhost test]# touch -c log3.log [root@localhost test]# ll total 0 -rw-r--r--. 1 root root 0 Nov 27 11:10 log1.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log2.log
2 更新log1.log和log3.log的时间戳相同
[root@localhost test]# ll total 0 -rw-r--r--. 1 root root 0 Nov 27 11:10 log1.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log2.log -rw-r--r--. 1 root root 0 Nov 27 11:13 log3.log [root@localhost test]# touch -r log1.log log3.log [root@localhost test]# ll total 0 -rw-r--r--. 1 root root 0 Nov 27 11:10 log1.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log2.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log3.log
3 设定文件的时间戳
-t time 时间格式:[[CC]YY]MMDDhhmm[.SS]
[root@localhost test]# ll total 0 -rw-r--r--. 1 root root 0 Nov 27 11:10 log1.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log2.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log3.log [root@localhost test]# touch -t 201811270855.55 log1.log [root@localhost test]# ll total 0 -rw-r--r--. 1 root root 0 Nov 27 08:55 log1.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log2.log -rw-r--r--. 1 root root 0 Nov 27 11:10 log3.log
cat命令
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
命令格式
cat [选项] [文件]...
命令功能
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file
命令参数
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
示例
1 把文件加上行号后输入
[root@localhost temp]# echo '2018-11' > log1.log [root@localhost temp]# echo '2018-11' >> log1.log [root@localhost temp]# cat log1.log 2018-11 2018-11 [root@localhost temp]# cat -n log1.log 1 2018-11 2 2018-11 [root@localhost temp]#
2 将文件加上行号后输入到另一个文件中
[root@localhost temp]# cat log.log [root@localhost temp]# cat -n log1.log > log.log [root@localhost temp]# cat log.log 1 2018-11 2 2018-11
3 使用here doc来生成文件
[root@localhost temp]# cat > log.txt <> hello > world > linux > PWD=$(pwd) > EOF [root@localhost temp]# ls -l log.txt -rw-r--r--. 1 root root 29 Nov 28 07:30 log.txt [root@localhost temp]# cat log.txt hello world linux PWD=/temp [root@localhost temp]# # tac反向示例,功能跟cat相反,由最后一行到第一行反向显示 [root@localhost temp]# tac log.txt PWD=/temp linux world hello [root@localhost temp]#
nl命令
nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
命令格式
nl [选项] [文件]...
命令参数
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
-p 在逻辑定界符处不重新开始计算。
命令功能
nl 命令读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。 在输出中,nl 命令根据您在命令行中指定的标志来计算左边的行。 输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。 除非使用 -p 标志,nl 命令在每个逻辑页开始的地方重新设置行号。 可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。
示例
1 用nl列出文件内容
[root@localhost temp]# nl log1.log 1 2018-11 2 2018-11 3 [root@localhost temp]# # 文件中的空白行,nl不会加上行号
2 用nl列出文件内容,空白行也加上行号
[root@localhost temp]# nl -b a log1.log 1 2018-11 2 2018-11 3 4 [root@localhost temp]#
3 让行号前面自动不上0,统一输出格式
[root@localhost temp]# nl -b a -n rz log1.log 000001 2018-11 000002 2018-11 000003 000004 [root@localhost temp]# nl -b a -n rz -w 3 log1.log 001 2018-11 002 2018-11 003 004 [root@localhost temp]# # nl -b a -n rz 命令默认为六位,加上-w 3调整输出位数
more命令
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
命令格式
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
命令功能
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
命令参数
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
常用操作命令
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
示例
1 显示文件中从第二行起的内容
[root@localhost temp]# cat log.txt hello world linux PWD=/temp [root@localhost temp]# more +2 log.txt world linux PWD=/temp [root@localhost temp]#
2 从文件中查找出现“day3”字符串的行,并从该处前两行显示输出
[root@localhost temp]# cat log2.log day0 day1 day2 day3 day4 day5 [root@localhost temp]# more +/day3 log2.log ...skipping day1 day2 day3 day4 day5 [root@localhost temp]#
3 设置每屏显示行数
[root@localhost temp]# more -3 log2.log day0 day1 day2 --More--(50%)
4 列一个目录下的文件,内容太多,用more来分页显示。ctl+f或空格显示下5条内容
[root@localhost etc]# ls -l |more -5 total 2036 drwxr-xr-x. 3 root root 4096 Nov 26 23:58 abrt drwxr-xr-x. 4 root root 4096 Nov 27 00:03 acpi -rw-r--r--. 1 root root 44 Nov 29 15:35 adjtime -rw-r--r--. 1 root root 1512 Jan 12 2010 aliases --More--
less命令
less 工具也是对文件或其它输出进行分页显示的工具
命令格式
less [参数] 文件
命令功能
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
命令参数
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
示例
1 查看文件(ctl+z退出)
[root@localhost temp]# less log.txt hello world linux PWD=/temp log.txt (END)
2 ps查看进程信息并通过less分页显示
![](http://img.e-com-net.com/image/info8/b8d97b5613f94ed2ba791cad57d0b2ed.gif)
![](http://img.e-com-net.com/image/info8/2f88dd3f1cd145f59c0e47b51acdbd4b.gif)
[root@localhost temp]# ps -ef|less UID PID PPID C STIME TTY TIME CMD root 1 0 0 05:43 ? 00:00:01 /sbin/init root 2 0 0 05:43 ? 00:00:00 [kthreadd] root 3 2 0 05:43 ? 00:00:00 [migration/0] root 4 2 0 05:43 ? 00:00:00 [ksoftirqd/0] root 5 2 0 05:43 ? 00:00:00 [stopper/0] root 6 2 0 05:43 ? 00:00:00 [watchdog/0] root 7 2 0 05:43 ? 00:00:01 [events/0] root 8 2 0 05:43 ? 00:00:00 [events/0] root 9 2 0 05:43 ? 00:00:00 [events_long/0] root 10 2 0 05:43 ? 00:00:00 [events_power_ef] root 11 2 0 05:43 ? 00:00:00 [cgroup] root 12 2 0 05:43 ? 00:00:00 [khelper] root 13 2 0 05:43 ? 00:00:00 [netns] root 14 2 0 05:43 ? 00:00:00 [async/mgr] root 15 2 0 05:43 ? 00:00:00 [pm] root 16 2 0 05:43 ? 00:00:00 [sync_supers] root 17 2 0 05:43 ? 00:00:00 [bdi-default] root 18 2 0 05:43 ? 00:00:00 [kintegrityd/0] root 19 2 0 05:43 ? 00:00:00 [kblockd/0] root 20 2 0 05:43 ? 00:00:00 [kacpid] root 21 2 0 05:43 ? 00:00:00 [kacpi_notify] root 22 2 0 05:43 ? 00:00:00 [kacpi_hotplug] root 23 2 0 05:43 ? 00:00:00 [ata_aux] root 24 2 0 05:43 ? 00:00:00 [ata_sff/0] root 25 2 0 05:43 ? 00:00:00 [ksuspend_usbd] :
3 查看命令历史使用记录并通过less分页显示
![](http://img.e-com-net.com/image/info8/b8d97b5613f94ed2ba791cad57d0b2ed.gif)
![](http://img.e-com-net.com/image/info8/2f88dd3f1cd145f59c0e47b51acdbd4b.gif)
[root@localhost temp]# history |less 1 vi /etc/sysconfig/network-scripts/ifcfg-eth0 2 service iptables stop 3 service ip6tables stop 4 service NetworkManager off 5 service NetworkManager stop 6 chkconfig iptables off 7 chkconfig ip6tables off 8 chkconfig NetworkManager off 9 getenforce 10 setenforce 0 11 getenforce 12 service network restart 13 ifconfig 14 clear 15 groupadd mysql 16 useradd -s /sbin/nologin -g mysql -M mysql 17 mkdir /home/software 18 cd /home/software/ 19 ls 20 tar -xf mysql-5.6.22-linux-glibc2.5-x86_64.tar.gz 21 ls 22 cp mysql-5.6.22-linux-glibc2.5-x86_64 /usr/local/mysql 23 cd /usr/local/my 24 cd /usr/local/mys 25 ls 26 mv mysql-5.6.22-linux-glibc2.5-x86_64 /usr/local/mysql :
4 浏览多个文件
[root@localhost temp]# less log.log log1.log 1 2018-11 2 2018-11 log.log (file 1 of 2) (END) - Next: log1.log
5 快捷键
全屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
单行导航
j - 向前移动一行
k - 向后移动一行
其它导航
G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令
其它命令
v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件
标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
ma - 使用 a 标记文本的当前位置
'a - 导航到标记 a 处
head命令
用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
命令格式
head [参数] 文件
命令功能
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
命令参数
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
示例
1 显示文件的前n行
[root@localhost temp]# head -n 2 log.txt hello world
2 显示文件的前n个字节
wor[root@localhost temp]# head -c 20 log.txt hello world linux P[root@localhost temp]#
3 文件除了最后n个字节以外的内容
[root@localhost temp]# head -c -20 log.txt hello wo[root@localhost temp]#
4 输出文件除了最后n行的全部内容
[root@localhost temp]# head -n -2 log.txt hello world [root@localhost temp]#
tail命令
从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容
命令格式
tail [必要参数][选择参数][文件]
命令功能
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
命令参数
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
示例
1 显示文件末尾内容
[root@localhost temp]# tail -n 2 log.txt linux PWD=/temp [root@localhost temp]#
2 循环查看文件内容
![](http://img.e-com-net.com/image/info8/b8d97b5613f94ed2ba791cad57d0b2ed.gif)
![](http://img.e-com-net.com/image/info8/2f88dd3f1cd145f59c0e47b51acdbd4b.gif)
[root@localhost ~]# ping 192.168.120.204 > test.log & [1] 11891[root@localhost ~]# tail -f test.log PING 192.168.120.204 (192.168.120.204) 56(84) bytes of data. 64 bytes from 192.168.120.204: icmp_seq=1 ttl=64 time=0.038 ms 64 bytes from 192.168.120.204: icmp_seq=2 ttl=64 time=0.036 ms 64 bytes from 192.168.120.204: icmp_seq=3 ttl=64 time=0.033 ms 64 bytes from 192.168.120.204: icmp_seq=4 ttl=64 time=0.027 ms 64 bytes from 192.168.120.204: icmp_seq=5 ttl=64 time=0.032 ms 64 bytes from 192.168.120.204: icmp_seq=6 ttl=64 time=0.026 ms 64 bytes from 192.168.120.204: icmp_seq=7 ttl=64 time=0.030 ms 64 bytes from 192.168.120.204: icmp_seq=8 ttl=64 time=0.029 ms 64 bytes from 192.168.120.204: icmp_seq=9 ttl=64 time=0.044 ms 64 bytes from 192.168.120.204: icmp_seq=10 ttl=64 time=0.033 ms 64 bytes from 192.168.120.204: icmp_seq=11 ttl=64 time=0.027 ms [root@localhost ~]#
3 从第二行开始显示文件
[root@localhost temp]# cat log.txt hello world linux PWD=/temp [root@localhost temp]# tail -n +2 log.txt world linux PWD=/temp [root@localhost temp]#
which命令
查找文件命令
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。whereis命令
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
命令格式
which 可执行文件
命令参数
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同,但此处的包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息
示例
1 查找文件、显示命令路径
[root@localhost ~]# which pwd /bin/pwd [root@localhost ~]# which which alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/which [root@localhost ~]# which cd /usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin) [root@localhost ~]#
1.alias为命名别名。
2.cd时bash内建的命令,which默认是找path内所规范的目录。
locate命令
locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*” 或”?”等)来指定范本样式,如指定范本为kcpa*ner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。
locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
命令格式
locate [选择参数] [样式]
命令参数
-e 将排除在寻找的范围之外。
-1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-V 显示程式的版本讯息
示例
1 查找和pwd相关的文件
[root@localhost ~]# locate pwd /bin/pwd /etc/.pwd.lock /etc/latrace.d/pwd.conf /lib/modules/2.6.32-696.el6.x86_64/kernel/drivers/watchdog/hpwdt.ko /sbin/unix_chkpwd /usr/bin/pwdx /usr/include/pwd.h /usr/lib64/cracklib_dict.pwd /usr/lib64/python2.6/lib-dynload/spwdmodule.so /usr/share/cracklib/cracklib-small.pwd /usr/share/cracklib/pw_dict.pwd /usr/share/man/man0p/pwd.h.0p.gz /usr/share/man/man1/pwd.1.gz /usr/share/man/man1/pwdx.1.gz /usr/share/man/man1p/pwd.1p.gz /usr/share/man/man3/lckpwdf.3.gz /usr/share/man/man3/ulckpwdf.3.gz /usr/share/man/man8/unix_chkpwd.8.gz /usr/share/man/overrides/ru/man3/lckpwdf.3.gz /usr/share/man/overrides/ru/man3/ulckpwdf.3.gz /usr/share/perl5/pwd.pl [root@localhost ~]#
2 搜素etc目录下所有以sh开头的文件
[root@localhost ~]# locate /etc/sh /etc/shadow /etc/shadow- /etc/shells [root@localhost ~]#
find命令
Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
命令格式
find pathname -options [-print -exec -ok ...]
命令参数
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
示例
1 查找指定时间内修改过的文件(超过48h内修改过的文件)
[root@localhost ~]# find -atime -2 . ./.bash_logout ./.bash_history ./.mysql_history ./install.log ./.bashrc ./.Xauthority ./.bash_profile [root@localhost ~]#
2 根据关键字查找(在当前目录查找.log结尾的文件)
[root@localhost temp]# find . -name "*.log" ./test.log ./log2.log ./log1.log ./log.log
3 按照目录或文件的权限来查找文件(查找/usr/local/mysql/目录下权限为777的文件)
[root@localhost /]# find /usr/local/mysql/ -perm 777 /usr/local/mysql/lib/libmysqlclient_r.so /usr/local/mysql/lib/libmysqlclient.so.18 /usr/local/mysql/lib/libmysqlclient_r.so.18 /usr/local/mysql/lib/libmysqlclient.so /usr/local/mysql/lib/libmysqlclient_r.a /usr/local/mysql/lib/libmysqlclient_r.so.18.1.0 /usr/local/mysql/mysql-test/mtr /usr/local/mysql/mysql-test/mysql-test-run [root@localhost /]#
4 按类型查找
[root@localhost ~]# find /temp/ -type f -name "*.log" /temp/test.log /temp/log2.log /temp/log1.log /temp/log.log [root@localhost ~]#
5 查找当前所有目录并排序
[root@localhost ~]# find . -type d|sort . ./.abrt ./.cache ./.config
6 按大小查找文件
[root@localhost ~]# find . -size +1000c -print . ./Public ./.pulse ./.pulse/b0838354fd41944e4c8032390000000f-device-volumes.tdb ./.pulse/b0838354fd41944e4c8032390000000f-stream-volumes.tdb ./.bash_history
find命令之exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。
exec解释:
-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
{} 花括号代表前面find查找出来的文件名。
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
示例
1 ls -l命令放在find命令的-exec选项中
匹配目录下所有普通文件,并在-exec选项中使用ls -l命名将他们列出。
[root@localhost ~]# find /temp/ -type f -exec ls -l {} \; -rw-r--r--. 1 root root 0 Dec 3 06:37 /temp/test.log -rw-r--r--. 1 root root 30 Nov 30 07:24 /temp/log2.log -rw-r--r--. 1 root root 19 Nov 29 07:09 /temp/log1.log -rw-r--r--. 1 777 root 30 Nov 28 07:26 /temp/log.log -rw-r--r--. 1 root root 29 Nov 28 07:30 /temp/log.txt [root@localhost ~]#
2 在目录中查找更改时间在n日以前的文件并删除它们
[root@localhost ~]# find /temp/ f -mtime +14 -exec rm {} \;
3 在目录中查找更改时间在n日以前的文件并删除,在删除之前给出提示。
[root@localhost ~]# find /temp/ f -mtime +1 -exec -ok rm {} \;
4 在-exec中使用grep命令
[root@localhost ~]# find /etc -name "passwd*" -exec grep "root" {} \; root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]#
5 查找文件移动到指定目录
find . -name "*.log" -exec mv {} ..\;
6 用exec选项执行cp命令
find . -name "*.log" -exec cp {} test \;
find命令之xargs
在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高; 而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
示例
1 查找系统每一个普通文件,用xargs命令来测试它们分别属于哪类文件
[root@localhost ~]# find /temp/ -type f -print | xargs file /temp/test.log: empty /temp/log2.log: ASCII text /temp/log1.log: ASCII text /temp/log.log: ASCII text /temp/log.txt: ASCII text [root@localhost ~]#
2 在系统中查找内存信息转储文件,保存结果到/temp/core.log中
[root@localhost ~]# find / -name "core" -print | xargs echo "" >/temp/core.log [root@localhost ~]# cd /temp/ [root@localhost temp]# ls core.log log1.log log2.log log.log log.txt test.log
3 在当前目录下查找所有用户具有读写执行权限的文件,并收回相应写权限。
[root@localhost temp]# ll total 24 -rw-r--r--. 1 root root 481 Dec 6 06:13 core.log -rw-r--r--. 1 root root 19 Nov 29 07:09 log1.log -rw-r--r--. 1 root root 30 Nov 30 07:24 log2.log -rw-r--r--. 1 777 root 30 Nov 28 07:26 log.log -rwxrwxrwx. 1 777 root 29 Nov 28 07:30 log.txt drwxrwxrwx. 2 777 root 4096 Dec 6 06:18 test -rw-r--r--. 1 root root 0 Dec 3 06:37 test.log [root@localhost temp]# find . -perm -7 -print | xargs chmod o-w [root@localhost temp]# ll total 24 -rw-r--r--. 1 root root 481 Dec 6 06:13 core.log -rw-r--r--. 1 root root 19 Nov 29 07:09 log1.log -rw-r--r--. 1 root root 30 Nov 30 07:24 log2.log -rw-r--r--. 1 777 root 30 Nov 28 07:26 log.log -rwxrwxr-x. 1 777 root 29 Nov 28 07:30 log.txt drwxrwxr-x. 2 777 root 4096 Dec 6 06:18 test -rw-r--r--. 1 root root 0 Dec 3 06:37 test.log [root@localhost temp]#
4 使用xargs执行mv
[root@localhost temp]# ll total 24 -rw-r--r--. 1 root root 481 Dec 6 06:13 core.log -rw-r--r--. 1 root root 19 Nov 29 07:09 log1.log -rw-r--r--. 1 root root 30 Nov 30 07:24 log2.log -rw-r--r--. 1 777 root 30 Nov 28 07:26 log.log -rwxrwxr-x. 1 777 root 29 Nov 28 07:30 log.txt drwxrwxr-x. 2 777 root 4096 Dec 6 06:18 test -rw-r--r--. 1 root root 0 Dec 3 06:37 test.log [root@localhost temp]# find . -name "*.txt"|xargs -i mv {} test [root@localhost temp]# ll total 20 -rw-r--r--. 1 root root 481 Dec 6 06:13 core.log -rw-r--r--. 1 root root 19 Nov 29 07:09 log1.log -rw-r--r--. 1 root root 30 Nov 30 07:24 log2.log -rw-r--r--. 1 777 root 30 Nov 28 07:26 log.log drwxrwxr-x. 2 777 root 4096 Dec 6 06:24 test -rw-r--r--. 1 root root 0 Dec 3 06:37 test.log [root@localhost temp]# cd test [root@localhost test]# ll total 4 -rwxrwxr-x. 1 777 root 29 Nov 28 07:30 log.txt [root@localhost test]#
find命令的参数详解
name选项
文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。 可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。
# $home目录下查找 [root@localhost temp]# find ~ -name "*.log" -print /root/install.log /root/.imsettings.log # 当前目录及子目录中查找 [root@localhost temp]# find . -name "*.log" -print ./test.log ./log2.log ./log1.log ./log.log ./core.log [root@localhost temp]# # 当前目录以小写字母开头的文件 [root@localhost temp]# find . -name "[a-z]*" -print ./test.log # 在/etc目录中查找文件以host开头的文件 [root@localhost temp]# find /etc -name "host*" -print /etc/hosts /etc/hosts.deny /etc/hosts.allow /etc/host.conf [root@localhost temp]#
perm选项
按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。
# 当前目录下文件权限为755的文件,文件属主可以读、写、执行,其它用户可以读、执行的文件 [root@localhost temp]# find -perm 755 -print . ./log.log [root@localhost temp]#
prune选项
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
# 在temp目录下查找,不希望在temp/test目录下查找 [root@localhost /]# find temp -path "temp/test" -prune -o -print temp temp/test.log temp/log2.log temp/log1.log temp/log.log temp/core.log temp/log.txt [root@localhost /]#
表达式伪码:if -path "test" then -prune else -print
type选项
# 在/etc目录下查找所有的目录 [root@localhost /]# find /etc -type d -print # 在当前目录下查找除目录以外的所有类型的文件 [root@localhost /]# find . ! -type d -print # 在/etc目录下查找所有的符号链接文件 [root@localhost /]# find /etc -type l -print
size选项
可以按照文件长度来查找文件,这里所指的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。
# 在当前目录下查找文件长度大于100字节的文件 [root@localhost temp]# find . -size +100c -print . ./core.log ./test [root@localhost temp]#
depth选项
在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
# 从当前目录开始,查找一个名为log.txt的文件 [root@localhost temp]# find . -name "log.txt" -depth -print find: warning: you have specified the -depth option after a non-option argument -name, but options are not positional (-depth affects tests specified before it as well as those specified after it). Please specify options before other arguments. ./log.txt ./test/log.txt [root@localhost temp]#
linux目录结构
目录及放置内容
除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分区去。那哪些目录不可与根目录分开呢?有底下这些:
/etc:配置文件
/bin:重要执行档
/dev:所需要的装置文件
/lib:执行档所需的函式库与核心所需的模块
/sbin:重要的系统执行文件
linux文件类型
Linux文件类型常见的有:普通文件、目录文件、字符设备文件和块设备文件、符号链接文件等。
普通文件
我们用 ls -lh 来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm 命令。 另外,依照文件的内容,又大略可以分为:
1 纯文本档(ASCII)
这是Linux系统中最多的一种文件类型,称为纯文本档是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。 几乎只要我们可以用来做为设定的文件都属于这一种文件类型。
2 二进制文件(binary)
Linux系统其实仅认识且可以执行二进制文件(binary file)。Linux当中的可执行文件(scripts, 文字型批处理文件不算)就是这种格式的文件。
3 数据格式文件(data)
有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。举例来说,我们的Linux在使用者登录时,都会将登录的数据记录在 /var/log/wtmp那个文件内,该文件是一个data file,他能够透过last这个指令读出来! 但是使用cat时,会读出乱码。
目录文件
当我们在某个目录下执行,看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。注意它的第一个字符是d。创建目录的命令可以用 mkdir 命令,或cp命令,cp可以把一个目录复制为另一个目录。删除用rm 或rmdir命令。
字符设备或块设备文件
进入/dev目录,列一下文件,会看到类似如下的:
[root@localhost ~]# ls -al /dev/tty crw-rw-rw- 1 root tty 5, 0 11-03 15:11 /dev/tty [root@localhost ~]# ls -la /dev/sda1 brw-r----- 1 root disk 8, 1 11-03 07:11 /dev/sda1
我们看到/dev/tty的属性是 crw-rw-rw- ,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等串口设备。我们看到 /dev/sda1 的属性是 brw-r----- ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备。
这个种类的文件,是用mknode来创建,用rm来删除
数据接口文件
数据接口文件(或者:套接口文件),这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个socket来进行数据的沟通了。第一个属性为 [ s ], 最常在/var/run这个目录中看到这种文件类型了。
例如:当我们启动MySQL服务器时,会产生一个mysql.sock的文件,文件符号为s。
[root@localhost ~]# ls -l /tmp total 40 drwx------. 2 gdm gdm 4096 Dec 7 05:43 gconfd-gdm drwx------. 2 root root 4096 Dec 6 14:13 gconfd-root srwxrwxrwx. 1 mysql mysql 0 Dec 7 06:21 mysql_3306.sock
符号链接文件
查看文件属性时,会看到有类似 lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。是通过ln -s 源文件名 新文件名,文件符号为l 。
[root@localhost temp]# ls core.log log.log log.txt log1.log log2.log scf test test.log [root@localhost temp]# ln -s test/log.txt linklog.txt [root@localhost temp]# ll total 24 -rw-r--r--. 1 root root 481 Dec 6 06:13 core.log lrwxrwxrwx. 1 root root 12 Dec 7 06:27 linklog.txt -> test/log.txt
tar命令
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
命令格式
tar [必要参数][选择参数][文件]
命令参数
-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
--help 显示帮助信息
--version 显示版本信息
常见解压/压缩命令
tar
解压:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName (tar是打包,不是压缩)
.gz
解压:gunzip FileName.gz 或 gzip -d FileName.gz
压缩:gzip FileName
.tar.gz和.tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压:vzip2 -d FileName.bz2 或 bunzip2 FileName.bz2
压缩:bzip2 -z FileName
.bz
解压:bzip2 -d FileName 或 bunzip2 FileName.bz
.zip
解压:upzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar x FileName.rar
压缩:rar a FilenName.rar DirName
示例
1 打包文件成tar包
# 仅打包不压缩 [root@localhost temp]# tar -cvf log.tar log.log log.log # 打包后,以gzip压缩 [root@localhost temp]# tar -zcvf log.tar.gz log.log log.log # 打包后,以bzip2压缩 [root@localhost temp]# tar -jcvf log.tar.bz2 log.log log.log [root@localhost temp]# ls -al *.tar* -rw-r--r--. 1 root root 10240 Dec 10 06:42 log.tar -rw-r--r--. 1 root root 136 Dec 10 06:42 log.tar.bz2 -rw-r--r--. 1 root root 135 Dec 10 06:42 log.tar.gz [root@localhost temp]#
2 查询tar包内有那些文件
# gzip压缩的查询要加上z这个参数 [root@localhost temp]# tar -ztvf log.tar.gz -rwxr-xr-x 777/root 30 2018-11-28 07:26 log.log [root@localhost temp]#
3 将tar包解压缩
[root@localhost temp]# tar -zxvf /temp/log.tar.gz log.log [root@localhost temp]# ll
gzip命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
命令格式
gzip [参数][文件或者目录]
命令参数
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d或--decompress或----uncompress 解开压缩文件。
-f或--force 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h或--help 在线帮助。
-l或--list 列出压缩文件的相关信息。
-L或--license 显示版本与版权信息。
-n或--no-name 压缩文件时,不保存原来的文件名称及时间戳记。
-N或--name 压缩文件时,保存原来的文件名称及时间戳记。
-q或--quiet 不显示警告信息。
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串>或----suffix<压缩字尾字符串> 更改压缩字尾字符串。
-t或--test 测试压缩文件是否正确无误。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息。
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
示例
1 将文件压缩成gz文件。
[root@localhost gzip_test]# gzip log.log [root@localhost gzip_test]# ll total 4 -rw-r--r--. 1 root root 41 Dec 11 06:13 log.log.gz
2 将压缩的文件解压,并列出详细的信息。
[root@localhost gzip_test]# ll total 4 -rw-r--r--. 1 root root 41 Dec 11 06:13 log.log.gz [root@localhost gzip_test]# gzip -dv log.log.gz log.log.gz: 46.2% -- replaced with log.log [root@localhost gzip_test]# ll total 4 -rw-r--r--. 1 root root 13 Dec 11 06:13 log.log [root@localhost gzip_test]#
3 显示压缩文件的信息,并不解压
[root@localhost gzip_test]# gzip -l * compressed uncompressed ratio uncompressed_name 41 13 46.2% log.log [root@localhost gzip_test]#
chmod命令
chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。
命令格式
chmod [-cfvR] [--help] [--version] mode file
命令参数
必要参数
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息
选择参数
--reference=<目录或者文件> 设置成具有指定目录或者文件具有相同的权限
--version 显示版本信息
<权限范围>+<权限设置> 使权限范围内的目录或者文件具有指定的权限
<权限范围>-<权限设置> 删除权限范围的目录或者文件的指定权限
<权限范围>=<权限设置> 设置权限范围内的目录或者文件的权限为指定的值
权限范围
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
文字设定法
chmod [who] [+ | - | =] [mode] 文件名
数字设定法
chmod [mode] 文件名
示例
1 增加文件所有用户组可执行权限。
[root@localhost chmod_test]# ll total 4 -rw-r--r--. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]# chmod a+x log.log [root@localhost chmod_test]# ll total 4 -rwxr-xr-x. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]#
2 修改不同用户权限。
[root@localhost chmod_test]# ll total 4 -rwxr-xr-x. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]# chmod ug+w,o-x log.log [root@localhost chmod_test]# ll total 4 -rwxrwxr--. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]#
3 删除文件权限。
[root@localhost chmod_test]# ll total 4 -rwxrwxr--. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]# chmod a-x log.log [root@localhost chmod_test]# ll total 4 -rw-rw-r--. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]#
4 使用“=”设置权限。
[root@localhost chmod_test]# ll total 4 -rw-rw-r--. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]# chmod u=x log.log [root@localhost chmod_test]# ll total 4 ---xrw-r--. 1 root root 12 Dec 12 06:09 log.log [root@localhost chmod_test]#
5 对一个目录及子目录所有文件添加权限。
[root@localhost test]# ll total 4 -rw-r--r--. 1 root root 12 Dec 12 06:19 log.txt [root@localhost test]# cd .. [root@localhost chmod_test]# chmod -R u+x test [root@localhost chmod_test]# cd test/ [root@localhost test]# ll total 4 -rwxr--r--. 1 root root 12 Dec 12 06:19 log.txt [root@localhost test]#
6 数字设定权限。
[root@localhost chmod_test]# ll total 8 ---xrw-r--. 1 root root 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root root 4096 Dec 12 06:19 test [root@localhost chmod_test]# chmod 755 log.log [root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 root root 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root root 4096 Dec 12 06:19 test [root@localhost chmod_test]#
chgrp命令
在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以。Chgrp命令就是change group的缩写!要被改变的组名必须要在/etc/group文件内存在才行。
命令格式
chgrp [选项] [组] [文件]
命令参数
-c 当发生改变时输出调试信息
-f 不显示错误信息
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细的处理信息
--dereference 作用于符号链接的指向,而不是符号链接本身
--no-dereference 作用于符号链接本身
示例
1 改变文件的群组属性。
[root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 root root 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root root 4096 Dec 12 06:19 test [root@localhost chmod_test]# chgrp -v bin log.log changed group of `log.log' to bin [root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 root bin 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root root 4096 Dec 12 06:19 test [root@localhost chmod_test]#
2 改变指定目录及其子目录下的所有文件的群组属性。
[root@localhost test]# ll total 4 -rwxr--r--. 1 root root 12 Dec 12 06:19 log.txt [root@localhost test]# cd .. [root@localhost chmod_test]# chgrp -R bin test [root@localhost chmod_test]# cd test/ [root@localhost test]# ll total 4 -rwxr--r--. 1 root bin 12 Dec 12 06:19 log.txt [root@localhost test]# cd .. [root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 root bin 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root bin 4096 Dec 12 06:19 test [root@localhost chmod_test]#
chown命令
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
命令格式
chown [选项]... [所有者][:[组]] 文件...
命令参数
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
示例
1 改变拥有者和群组。
[root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 root bin 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root bin 4096 Dec 12 06:19 test [root@localhost chmod_test]# chown mail:mail log.log [root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 mail mail 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root bin 4096 Dec 12 06:19 test [root@localhost chmod_test]#
2 改变文件拥有者和群组,改变文件群组。
[root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 mail mail 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root bin 4096 Dec 12 06:19 test [root@localhost chmod_test]# chown root: log.log [root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 root root 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root bin 4096 Dec 12 06:19 test [root@localhost chmod_test]# chown :mail log.log [root@localhost chmod_test]# ll total 8 -rwxr-xr-x. 1 root mail 12 Dec 12 06:09 log.log drwxr-xr-x. 2 root bin 4096 Dec 12 06:19 test [root@localhost chmod_test]#
df命令
显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示
命令格式
df [选项] [文件]
命令参数
必要参数
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
选择参数
--block-size=<区块大小> 指定区块大小
-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息
--help 显示帮助信息
--version 显示版本信息
示例
1 显示磁盘使用情况
[root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 16180136 5313020 10038548 35% / tmpfs 1019176 72 1019104 1% /dev/shm /dev/sda1 194241 40343 143658 22% /boot [root@localhost ~]#
2 以inode模式来显示磁盘使用情况
[root@localhost ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 1036320 113189 923131 11% / tmpfs 254794 3 254791 1% /dev/shm /dev/sda1 51200 39 51161 1% /boot [root@localhost ~]#
3 列出各文件系统的i节点使用情况
[root@localhost ~]# df -ia Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 1036320 113189 923131 11% / proc 0 0 0 - /proc sysfs 0 0 0 - /sys devpts 0 0 0 - /dev/pts tmpfs 254794 3 254791 1% /dev/shm /dev/sda1 51200 39 51161 1% /boot none 0 0 0 - /proc/sys/fs/binfmt_misc [root@localhost ~]#
4 列出文件系统的类型
[root@localhost ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda3 ext4 16180136 5313020 10038548 35% / tmpfs tmpfs 1019176 72 1019104 1% /dev/shm /dev/sda1 ext4 194241 40343 143658 22% /boot [root@localhost ~]#
5 以更易读的方式显示目前磁盘空间和使用情况
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 16G 5.1G 9.6G 35% / tmpfs 996M 72K 996M 1% /dev/shm /dev/sda1 190M 40M 141M 22% /boot [root@localhost ~]#
du命令
显示每个文件和目录的磁盘使用空间。
命令格式
du [选项][文件]
命令参数
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
示例
1 查看目录所占空间
[root@localhost temp]# du scf/ 4 scf/lib 4 scf/logs/product 4 scf/logs/info 12 scf/logs 4 scf/service/deploy/product 4 scf/service/deploy/info 12 scf/service/deploy 16 scf/service 4 scf/doc/product 4 scf/doc/info 12 scf/doc 4 scf/bin 52 scf/ [root@localhost temp]#
2 查看指定文件所占空间
[root@localhost temp]# du log1.log 4 log1.log [root@localhost temp]#
3 只显示总和的大小
[root@localhost temp]# du -s 104 . [root@localhost temp]#
4 方便阅读的方式显示
v[root@localhost temp]# du -h test 8.0K test [root@localhost temp]#
5 文件和目录都显示
[root@localhost temp]# du -ah test 4.0K test/log.txt 8.0K test [root@localhost temp]#
top命令
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。
命令格式
top [参数]
命令参数
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
示例
例1:显示进程信息
[root@localhost ~]# top top - 06:06:11 up 16 min, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 1.1%sy, 0.0%ni, 96.0%id, 2.5%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 2038352k total, 336856k used, 1701496k free, 19564k buffers Swap: 4194300k total, 0k used, 4194300k free, 119116k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19368 1556 1240 S 0.0 0.1 0:02.11 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 7 root 20 0 0 0 0 S 0.0 0.0 0:01.03 events/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events/0 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_long/0 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_power_ef 11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm 16 root 20 0 0 0 0 S 0.0 0.0 0:00.01 sync_supers 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0 19 root 20 0 0 0 0 S 0.0 0.0 0:00.15 kblockd/0 20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpid
free命令
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略。
命令格式
free [参数]
命令参数
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-g 以GB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
示例
例1:显示内存使用情况。
[root@localhost ~]# free total used free shared buffers cached Mem: 2038352 336840 1701512 1136 19588 119128 -/+ buffers/cache: 198124 1840228 Swap: 4194300 0 4194300 [root@localhost ~]# free -g total used free shared buffers cached Mem: 1 0 1 0 0 0 -/+ buffers/cache: 0 1 Swap: 3 0 3 [root@localhost ~]# free -m total used free shared buffers cached Mem: 1990 328 1661 1 19 116 -/+ buffers/cache: 193 1797 Swap: 4095 0 4095 [root@localhost ~]#
例2:以总和的形式显示内存的使用信息。
[root@localhost ~]# free -t total used free shared buffers cached Mem: 2038352 336964 1701388 1136 19628 119148 -/+ buffers/cache: 198188 1840164 Swap: 4194300 0 4194300 Total: 6232652 336964 5895688 [root@localhost ~]#
例3:周期性的查询内存使用信息。
[root@localhost ~]# free -s 10 total used free shared buffers cached Mem: 2038352 336964 1701388 1136 19636 119148 -/+ buffers/cache: 198180 1840172 Swap: 4194300 0 4194300 total used free shared buffers cached Mem: 2038352 336980 1701372 1136 19636 119148 -/+ buffers/cache: 198196 1840156 Swap: 4194300 0 4194300
ifconfig命令
ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。
参数
ifconfig [网络设备] [参数]
2.命令功能:
ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。
3.命令参数:
up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp 设置指定网卡是否支持ARP协议。
-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
address 为网卡设置IPv4地址
txqueuelen<长度> 为网卡设置传输列队的长度
示例
例1:显示网络设备信息。
[root@localhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:F0:C7:1B inet addr:10.228.18.225 Bcast:10.228.19.255 Mask:255.255.252.0 inet6 addr: fe80::20c:29ff:fef0:c71b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19447 errors:0 dropped:0 overruns:0 frame:0 TX packets:267 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1819088 (1.7 MiB) TX bytes:151909 (148.3 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:240 (240.0 b) TX bytes:240 (240.0 b) [root@localhost ~]#
例2:启动关闭指定网卡。
ifconfig eth0 up
ifconfig eth0 down
[root@localhost ~]# ifconfig eth0 down //关闭网卡 [root@localhost ~]# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址 [root@localhost ~]# ifconfig eth0 up //启动网卡 [root@localhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:AA:BB:CC:DD:EE inet addr:192.168.120.204 Bcast:192.168.120.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0 TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:596390239 (568.7 MiB) TX bytes:2886956 (2.7 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:68 errors:0 dropped:0 overruns:0 frame:0 TX packets:68 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2856 (2.7 KiB) TX bytes:2856 (2.7 KiB) [root@localhost ~]# ifconfig eth0 hw ether 00:50:56:BF:26:20 //关闭网卡并修改MAC地址 [root@localhost ~]# ifconfig eth0 up //启动网卡 [root@localhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:50:56:BF:26:20 inet addr:192.168.120.204 Bcast:192.168.120.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8700857 errors:0 dropped:0 overruns:0 frame:0 TX packets:31533 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:596390239 (568.7 MiB) TX bytes:2886956 (2.7 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:68 errors:0 dropped:0 overruns:0 frame:0 TX packets:68 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2856 (2.7 KiB) TX bytes:2856 (2.7 KiB)
route命令
Route命令是用于操作基于内核ip路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用"add"或者"del"参数时,路由表被修改,如果没有参数,则显示路由表当前的内容。
参数
-c 显示更多信息
-n 不解析名字
-v 显示详细的处理信息
-F 显示发送信息
-C 显示路由缓存
-f 清除所有网关入口的路由表。
-p 与 add 命令一起使用时使路由具有永久性。
add:添加一条新路由。
del:删除一条路由。
-net:目标地址是一个网络。
-host:目标地址是一个主机。
netmask:当添加一个网络路由时,需要使用网络掩码。
gw:路由数据包通过网关。注意,你指定的网关必须能够达到。
metric:设置路由跳数。
Command 指定您想运行的命令 (Add/Change/Delete/Print)。
Destination 指定该路由的网络目标。
mask Netmask 指定与网络目标相关的网络掩码(也被称作子网掩码)。
Gateway 指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。
metric Metric 为路由指定一个整数成本值标(从 1 至 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。
if Interface 为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引,使用 route print 命令的显示功能。可以使用十进制或十六进制值进行接口索引。
示例
例1:显示当前路由
[root@localhost ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.228.16.0 * 255.255.252.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 1002 0 0 eth0 default 10.228.16.1 0.0.0.0 UG 0 0 0 eth0 [root@localhost ~]#
ping命令
ping命令用于:确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。如果主机正在运行并连在网上,它就对回送信号进行响应。每个回送信号请求包含一个网际协议(IP)和 ICMP 头,后面紧跟一个 tim 结构,以及来填写这个信息包的足够的字节。缺省情况是连续发送回送信号请求直到接收到中断信号(Ctrl-C)。
ping 命令每秒发送一个数据报并且为每个接收到的响应打印一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息,并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到 SIGINT 信号时结束。Host 参数或者是一个有效的主机名或者是因特网地址。
参数
-d 使用Socket的SO_DEBUG功能。
-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。
-c 数目:在发送指定数目的包后停止。
-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 网络界面:使用指定的网络界面送出数据包。
-l 前置载入:设置在送出要求信息之前,先行发出的数据包。
-p 范本样式:设置填满数据包的范本样式。
-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
-t 存活数值:设置存活数值TTL的大小
示例
例1:ping通的情况。
[root@localhost ~]# ping www.baidu.com PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data. 64 bytes from 115.239.211.112: icmp_seq=1 ttl=53 time=10.8 ms 64 bytes from 115.239.211.112: icmp_seq=2 ttl=53 time=12.3 ms 64 bytes from 115.239.211.112: icmp_seq=3 ttl=53 time=11.2 ms 64 bytes from 115.239.211.112: icmp_seq=4 ttl=53 time=10.2 ms 64 bytes from 115.239.211.112: icmp_seq=5 ttl=53 time=11.3 ms
例2:ping网关。
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.228.16.0 * 255.255.252.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 1002 0 0 eth0 default 10.228.16.1 0.0.0.0 UG 0 0 0 eth0 [root@localhost ~]# ping 10.228.16.1 PING 10.228.16.1 (10.228.16.1) 56(84) bytes of data. 64 bytes from 10.228.16.1: icmp_seq=1 ttl=255 time=1.43 ms 64 bytes from 10.228.16.1: icmp_seq=2 ttl=255 time=1.74 ms
例3:时间间隔和次数限制。
[root@localhost ~]# ping -c 10 -i 0.5 www.baidu.com PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data. 64 bytes from 115.239.211.112: icmp_seq=1 ttl=53 time=13.6 ms 64 bytes from 115.239.211.112: icmp_seq=2 ttl=53 time=14.5 ms 64 bytes from 115.239.211.112: icmp_seq=3 ttl=53 time=14.3 ms
ln命令
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
这里有两点要注意:
第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
命令格式
ln [参数][源文件或目录][目标文件或目录]
参数
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
示例
例1:给文件创建软链接。
[root@localhost ln_test]# ll total 4 -rw-r--r--. 1 root root 12 Dec 17 06:17 log.log [root@localhost ln_test]# ln -s log.log log_link [root@localhost ln_test]# ll total 4 lrwxrwxrwx. 1 root root 7 Dec 17 06:18 log_link -> log.log -rw-r--r--. 1 root root 12 Dec 17 06:17 log.log [root@localhost ln_test]# rm -rf log.log [root@localhost ln_test]# ll total 0 lrwxrwxrwx. 1 root root 7 Dec 17 06:18 log_link -> log.log [root@localhost ln_test]# # 文件丢失,链接将失效
例2:给文件创建硬链接。
[root@localhost ln_test]# ll total 4 -rw-r--r--. 1 root root 12 Dec 17 06:21 log.log [root@localhost ln_test]# ln log.log log_link [root@localhost ln_test]# ll total 8 -rw-r--r--. 2 root root 12 Dec 17 06:21 log_link -rw-r--r--. 2 root root 12 Dec 17 06:21 log.log [root@localhost ln_test]#
说明:
1.源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在
2.重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效
cal命令
用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
命令格式
cal [参数][月份][年份]
命令参数
-1 显示一个月的月历
-3 显示系统前一个月,当前月,下一个月的月历
-s 显示星期天为一个星期的第一天,默认的格式
-m 显示星期一为一个星期的第一天
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
示例
例1:显示当前月份日历。
[root@localhost ~]# cal December 2018 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@localhost ~]#
例2:显示指定月份的日历。
[root@localhost ~]# cal 12 2017 December 2017 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@localhost ~]#
例3:显示2017年日历。
[root@localhost ~]# cal -y 2017 2017 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 1 2 3 4 5 6 1 2 3 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30 July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 1 2 3 4 5 1 2 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 30 31 October
例4:显示自1月1日的天数。
[root@localhost ~]# cal -j December 2018 Sun Mon Tue Wed Thu Fri Sat 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 [root@localhost ~]#
例5:星期一显示在第一列。
[root@localhost ~]# cal -m December 2018 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@localhost ~]#
date命令
date 可以用来显示或设定系统的日期与时间。
命令格式
date [参数]... [+格式]
命令参数
必要参数:
%H 小时(以00-23来表示)。
%I 小时(以01-12来表示)。
%K 小时(以0-23来表示)。
%l 小时(以0-12来表示)。
%M 分钟(以00-59来表示)。
%P AM或PM。
%r 时间(含时分秒,小时以12小时AM/PM来表示)。
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)。
%T 时间(含时分秒,小时以24小时制来表示)。
%X 时间(以本地的惯用法来表示)。
%Z 市区。
%a 星期的缩写。
%A 星期的完整名称。
%b 月份英文名的缩写。
%B 月份的完整英文名称。
%c 日期与时间。只输入date指令也会显示同样的结果。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%j 该年中的第几天。
%m 月份(以01-12来表示)。
%U 该年中的周数。
%w 该周的天数,0代表周日,1代表周一,异词类推。
%x 日期(以本地的惯用法来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
%n 在显示时,插入新的一行。
%t 在显示时,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小时(必要)
mm 分钟(必要)
ss 秒(选择性)
选择参数:
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u 显示GMT。
--help 在线帮助。
--version 显示版本信息
使用说明
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下: % : 打印出 %:
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区 %a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
2.在设定时间方面:
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
date -s “01:01:01 20080523″ //这样可以设置全部时间
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
date -s “20080523 01:01:01″ //这样可以设置全部时间
3.加减:
date +%Y%m%d //显示前天年月日
date +%Y%m%d --date="+1 day" //显示前一天的日期
date +%Y%m%d --date="-1 day" //显示后一天的日期
date +%Y%m%d --date="-1 month" //显示上一月的日期
date +%Y%m%d --date="+1 month" //显示下一月的日期
date +%Y%m%d --date="-1 year" //显示前一年的日期
date +%Y%m%d --date="+1 year" //显示下一年的日期
示例
[root@localhost ~]# date Mon Dec 17 06:34:58 CST 2018 [root@localhost ~]# date '+%c' Mon 17 Dec 2018 06:38:34 AM CST [root@localhost ~]# date '+%x' 12/17/2018 [root@localhost ~]#
grep命令
用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。
命令格式
grep [option] pattern file
命令参数
-a --text #不要忽略二进制的数据。
-A<显示行数> --after-context=<显示行数> #除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b --byte-offset #在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> --before-context=<显示行数> #除了显示符合样式的那一行之外,并显示该行之前的内容。
-c --count #计算符合样式的列数。
-C<显示行数> --context=<显示行数>或-<显示行数> #除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> --directories=<动作> #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> --regexp=<范本样式> #指定字符串做为查找文件内容的样式。
-E --extended-regexp #将样式为延伸的普通表示法来使用。
-f<规则文件> --file=<规则文件> #指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F --fixed-regexp #将样式视为固定字符串的列表。
-G --basic-regexp #将样式视为普通的表示法来使用。
-h --no-filename #在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H --with-filename #在显示符合样式的那一行之前,表示该行所属的文件名称。
-i --ignore-case #忽略字符大小写的差别。
-l --file-with-matches #列出文件内容符合指定的样式的文件名称。
-L --files-without-match #列出文件内容不符合指定的样式的文件名称。
-n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。
-q --quiet或--silent #不显示任何信息。
-r --recursive #此参数的效果和指定“-d recurse”参数相同。
-s --no-messages #不显示错误信息。
-v --revert-match #显示不包含匹配文本的所有行。
-V --version #显示版本信息。
-w --word-regexp #只显示全字符合的列。
-x --line-regexp #只显示全列符合的列。
-y #此参数的效果和指定“-i”参数相同。
规则表达式
grep的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\< #锚定单词的开始,如:'\ \> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。 x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。 x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。 \w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。 \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b #单词锁定符,如: '\bgrep\b'只匹配grep。 为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。 [:alnum:] #文字数字字符 [:alpha:] #文字字符 [:digit:] #数字字符 [:graph:] #非空字符(非空格、控制字符) [:lower:] #小写字符 [:cntrl:] #控制字符 [:print:] #非空字符(包括空格) [:punct:] #标点符号 [:space:] #所有空白字符(新行,空格,制表符) [:upper:] #大写字符 [:xdigit:] #十六进制数字(0-9,a-f,A-F) 例1:查看指定进程。 例2:从文件中查找关键词。 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。 wc [选项]文件... -c 统计字节数。 -l 统计行数。 -m 统计字符数。这个标志不能与 -c 标志一起使用。 -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。 -L 打印最长行的长度。 -help 显示帮助信息 --version 显示版本信息 例:查看文件的字节数、字数、行数。 ======================== 链接:https://www.cnblogs.com/peida/archive/2012/12/05/2803591.htmlPOSIX字符:
示例
[root@localhost ~]# ps -ef|grep mysql
root 2255 2125 0 06:43 pts/0 00:00:00 grep mysql
[root@localhost ~]#
[root@localhost temp]# cat log2.log
day0
day1
day2
day3
day4
day5
[root@localhost temp]# grep '3' log2.log
day3
[root@localhost temp]#
wc命令
命令格式
命令参数
示例
[root@localhost temp]# wc log1.log
4 2 19 log1.log
[root@localhost temp]#