Linux命令基础知识
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。
上一篇:openEuler操作系统入门
使用Linux命令行
命令行更高效:
Linux系统中使用键盘操作速度要比鼠标更快。
图形化界面不可重复,而命令行可以编写的脚本完成所有过程(例如:删除过期日志文件)。
图形化界面开销大:
运行图形化界面会占用很多的系统资源,运行命令行可以让系统资源释放给它更应该做的事情。
命令行有时候是唯一的选择:
大部分服务器操作系统不会安装图形界面(GUI)。
联网设备的维护管理工具本来就没有图形化界面供我们使用。
Linux命令语法格式
命令格式: 命令 【-选项】【参数】
示例:ls -la /etc
说明:
个别命令使用不遵循此格式,【】符号表示非必选项。
当有多个选项时,可以写在一起。
简化选项(一个-)与完整选项(两个--),比如 ls -a 等于 ls --all
Linux命令行操作技巧
Tab键补全:可以用来自动补全命令或文件名,省时准确。
未输入命令状态下,连按两次 tab键列出所有可用命令。
已输入部分命令名或文件名,按 tab键自动补全。
光标
up 方向键上(可以调出输入历史执行记录,快速执行命令)。
down 方向键下(配合 up 选择历史执行记录)。
Home 移动光标到本行开头。
Ctrl + A 移动光标到行首。
Ctrl + E 移动光标到行尾。
Ctrl + C 终止当前程序。
Ctrl + L 清理屏幕显示。
Linux命令分类
分类 | 命令 |
登录和电源管理 | login、shutdown、halt、reboot、install、exit、last等。 |
文件处理 | file、mkdir、grep、dd、find、mv、ls、diff、cat、ln等。 |
系统管理 | df、top、free、quota、at、ip、kill、crontab等。 |
网络操作 | ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup等。 |
系统安全 | passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who等。 |
其它 | tar、unzip、gunzip、unarj、mtools、man。 |
Linux系统基础命令
登录命令1:login
login的作用是登录系统,使用权限是所有用户。
如果选择用命令行模式登录Linux的话,看到的第一个Linux命令就是login
登录命令2:last
last命令的作用是显示近期用户或终端的登录情况,使用权限是所有用户。通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统。
主要参数:
-n:指定输出记录的条数
-t tty:只显示指定的虚拟控制台上登录情况
-y:显示记录的年、月、日
-ID:知道查询的用户名
-x:显示系统关闭、用户登录和退出的历史
登录登录3:exit
exit命令的作用是退出系统,它的使用权限是所有用户。
主要参数:exit命令没有参数,运行后退出系统进入登录界面。
电源命令1:shutdown
shutdown命令的作用是关闭计算机,使用权限是超级用户。
主要参数:
-h:关机后关闭电源。
-r:关机后打开电源(相当于重启)。
-t:在改变到其它运行级别之前,告诉init程序多久以后关机。
-k:并不真正关机,只是送警告信号给每位登录者。
-F:在重启计算机时强迫fsck。
-time:设定关机前的时间。
电源命令2:halt
halt命令的作用是关闭系统,使用权限是超级用户。
主要参数:
-n:防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。
-w:并不是真正的重启或关机,只是写wtmp(/var/log/wtmp)纪录。
-f:没有调用shutdown,而强制关机或重启。
-i:关机(或重启)前,关掉所有的网络接口。
-f:强迫关机,不呼叫shutdown这个指令。
-d:关闭系统,但不留下纪录。
电源命令3:reboot
reboot命令的作用是重新启动计算机,使用权限是系统管理者
主要参数:
-n: 保存数据后再重新启动系统。
-w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。
-d: 不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。
-i:关闭网络设置之后再重新启动系统。
Linux文件目录结构
在Linux操作系统中,一切皆是文件
Linux的文件目录结构是树形,“/”称为根目录
[root@localhost ~]# ls /
bin dev home lib64 media opt root sbin sys usr
boot etc lib lost+found mnt proc run srv tmp var
Linux主要目录用途
目录名 | 主要存放的文件及其用途 |
/bin | bin是Binary的缩写, 这个目录存放着最经常使用的命令。 |
/boot | 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。 |
/dev | dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。 |
/etc | 这个目录用来存放所有的系统管理所需要的配置文件和子目录。 |
/lib | 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 |
/mnt | 系统提供该目录是为了让用户临时挂载别的文件系统的。 |
/opt | 这是给主机额外安装软件所摆放的目录。 |
/proc | 系统内存映射的虚拟目录,可以通过直接访问这个目录来获取系统信息。 |
目录名 | 主要存放的文件及其用途 |
/root | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
/sbin | s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 |
/srv | 该目录存放一些服务启动之后需要提取的数据。 |
/tmp | 这个目录是用来存放一些临时文件的。 |
/usr | 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录,其中/usr/bin是系统用户使用的应用程序;/usr/sbin是超级用户使用的比较高级的管理程序和系统守护程序;/usr/src是内核源代码默认的放置目录。 |
/var | 习惯将那些经常被修改、不断扩充的目录放在这个目录下,包括各种日志文件。 |
/run | 是一个临时文件系统,存储系统启动以来的信息,当系统重启时被清理或删除。 |
Linux文件路径
在用shell或调用应用程序的时,都要写明被调用的程序路径
路径分为绝对路径和相对路径
绝对路径:在Linux中,绝对路径是从 / (也被称为根目录)开始的,如果一个路径是从/开始的,那一定是绝对路径
相对路径:相对路径就是相对当前所在目录来说的路径
文件命令1:pwd
pwd命令用于打印出当前的工作目录
pwd命令有两个选项,-L 和 -P,其作用类似于cd 命令的同名选项
-L 目录连接链接时,输出连接路径
-P 输出物理路径
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /var/log
[root@localhost log]# pwd
/var/log
[root@localhost log]#
文件命令2:cd
cd命令用于改变当前工作目录。
语法:cd [dir]
cd /usr 进入目录 /usr 中。
cd .. 进入(退到)上一层目录,两个点代表父目录。
cd . 进入当前目录
cd 不带参数,则默认回到家目录。
cd - 进入前一个目录,适用于在两个目录之间快速切换。
cd ~ 进入家目录
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /var/log
[root@localhost log]# pwd
/var/log
[root@localhost log]# cd ..
[root@localhost var]# pwd
/var
[root@localhost var]# cd ~
[root@localhost ~]# pwd
/root
文件命令3:ls
ls命令是Linux 命令中使用频率最高者之一,用于列出目录的内容,或者文件的信息,该命令的输出结果默认按照文件名排序,如果不指定目标,则列出当前目录的内容。
语法:ls [OPTION]... [FILE]...
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为“.”的视为隐藏档,不会列出)。
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出。
-t 将文件依建立时间之先后次序列出。
-R 若目录下有文件,则以下之文件亦皆依序列出。
常见用法:
ls 列出当前目录下的所有文件和目录(隐藏文件除外)
ls -l 显示详细信息
ls -A 显示隐藏的文件和目录(不包括 . 和 ..)
ls -a 显示隐藏的文件和目录(包括 . 和 ..)
ls -t 按时间排序
ls -S 按大小排序
ls -X 按扩展名排序
ls -r 反过来排序
ls -1 一行显示一个文件
ls -lh -h 选项用人类易读的格式显示大小信息
ls -x 逐行显示,而非默认的逐列显示
ls -l /bin/bash 列出指定文件的信息
ls -l / 列出指定目录的内容
ls -ld / -d 选项用于列出目录本身的信息,而非目录的内容
ls -l file1 file2 可以同时列出多个文件
使用示例
列出/usr/local目录下的所有文件(包括隐藏文件),并按照创建时间排序。
[root@localhost ~]# ls /usr/local/ -ahlt
total 48K
drwxr-xr-x. 12 root root 4.0K Jul 28 14:00 ..
drwxr-xr-x. 12 root root 4.0K Jul 28 14:00 .
drwxr-xr-x. 5 root root 4.0K Jul 28 14:00 share
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 bin
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 etc
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 games
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 include
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 lib
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 lib64
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 libexec
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 sbin
drwxr-xr-x. 2 root root 4.0K Mar 24 05:34 src
文件命令4:mkdir
mkdir命令用于创建目录(文件夹)。
语法:mkdir [OPTION]... DIRECTORY...
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]# mkdir my_dir_01
[root@localhost ~]# ls
anaconda-ks.cfg my_dir_01
[root@localhost ~]# mkdir my_dir_02 my_dir_03
[root@localhost ~]# ls
anaconda-ks.cfg my_dir_01 my_dir_02 my_dir_03
[root@localhost ~]# mkdir my_dir_04/sub_dir
mkdir: cannot create directory ‘my_dir_04/sub_dir’: No such file or directory
[root@localhost ~]# mkdir -p my_dir_04/sub_dir
[root@localhost ~]# ls
anaconda-ks.cfg my_dir_01 my_dir_02 my_dir_03 my_dir_04
[root@localhost ~]#
mkdir 即make directory,可以一次性创建多个目录,如果目录已经存在,默认会报错,-p 选项可以使mkdir 命令在这种情况下不报错,-p 选项还可以用于自动创建不存在的父目录。
常见用法:
mkdir dir1 创建一个名叫dir1 的目录
mkdir dir1 dir2 创建多个目录
mkdir -p dir1/dir2/dir3 如果dir1, dir2 不存在,则一并创建
mkdir -pv dir1/dir2 -v 用于显示创建的过程
文件命令5:touch
touch命令可用于创建空文件、修改文件的时间戳
[root@localhost ~]# ls
[root@localhost ~]# touch test01.log test02.log
[root@localhost ~]# ls -lt
total 0
-rw-------. 1 root root 0 Jul 29 15:06 test01.log
-rw-------. 1 root root 0 Jul 29 15:06 test02.log
[root@localhost ~]# touch -t 202001020304.05 test01.log
[root@localhost ~]# ls -lt
total 0
-rw-------. 1 root root 0 Jul 29 15:06 test02.log
-rw-------. 1 root root 0 Jan 2 2020 test01.log
[root@localhost ~]#
文件命令6:cp
cp命令用于复制文件或者目录,可以一次复制单个文件,也可以一次复制多个文件(cp 命令属于高危命令,使用不慎就会有丢失数据的危险)。
语法:cp [OPTION]... SOURCE... DIRECTORY
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
-l:不复制文件,只是生成链接文件
cp [OPTION]... SOURCE... DIRECTORY:复制多个文件时,目的位置必须是一个目录
cp [OPTION]... [-T] SOURCE DEST:复制单个文件时,目的位置可以是文件,也可以是目录,如果是文件,就可以给新文件改名,如果是目录,则新文件被放到该目录下,名字和源文件相同。因为DEST 既可以是文件,也可以是目录,若需指定DEST 为文件,可使用-T 参数,若需指定DEST 为目录,可在DEST后面添加一个斜杠,就是DEST/。
cp [OPTION]... -t DIRECTORY SOURCE...:不常用,一个很高效的使用场合是与xargs 命令配合。假如需要把一个目录下众多子目录中的 html 文件全部复制出来,放到目录 /data/html 中,可以有两种做法:
find -name "*.html" -exec cp {} /data/html/ \;
find -name "*.html" | xargs cp -t /data/html/
第二种做法利用了xargs 以及cp 命令的-t 参数,可以大大减少需要启动的cp 进程数
[root@localhost ~]# ls
test01.log test02.log
[root@localhost ~]# cp /etc/passwd passwd.back
[root@localhost ~]# cp -r /var/log/audit ./
[root@localhost ~]# ls
audit passwd.back test01.log test02.log
[root@localhost ~]# cp -s /etc/passwd passwd_link
[root@localhost ~]# ls
audit passwd.back passwd_link test01.log test02.log
[root@localhost ~]# ls -l
total 8
drwx------. 2 root root 4096 Jul 29 15:24 audit
-rw-------. 1 root root 2546 Jul 29 15:24 passwd.back
lrwxrwxrwx. 1 root root 11 Jul 29 15:25 passwd_link -> /etc/passwd
-rw-------. 1 root root 0 Jan 2 2020 test01.log
-rw-------. 1 root root 0 Jul 29 15:06 test02.log
[root@localhost ~]#
cp f1 f2 把文件f1 复制一份,新文件名为 f2
cp f1 d1/ 复制f1 到目录 d1 下,新文件名字不变
cp f1 f2 f3 d1/ 复制多个文件到同一个目录中
cp -i f1 f2 如果f2 已经存在,则覆盖之前等用户确认
cp -r d1 d2 复制目录时需要 -r 参数
cp -rv d1 d2 -v 参数显示复制的过程
cp -rf d1 d2 -f 参数使得cp 在无法打开已经存在的目标文件时删除目标然后重试
cp -a f1 f2 -a 参数保留原文件的属性,可用于复制块设备,字符设备,管道文件等
cp 命令默认情况下在覆盖文件之前不会询问用户,所以通常情况下shell 里面已经对它做了别名,加入了 -i 参数。cp 命令的-f 参数不是强制覆盖的意思。
文件命令7:mv
mv命令用于移动件或者目录(高危命令,使用不慎就会有丢失数据的危险)。
如果原文件和目标文件在同一个父目录里面,则mv命令的效果就相当于给文件改名。
语法:mv [选项] 源文件或目录 目标文件或目录。
-b :若需覆盖文件,则覆盖前先行备份
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
mv 命令的语法和cp 命令完全相同,选项-T, -t 的作用也完全相同。
其它一些与cp 命令的作用相同的选项有:
-i
-v
-f 选项使得mv 命令在覆盖已经存在的目标文件之前不询问用户,与-i 选项的作用相反。
mv 命令的行为类似于先用 cp -a src dst 把文件复制到目的地,然后再将原文件删除。
mv 命令默认情况下在覆盖文件之前不会询问用户,所以通常情况下shell 里面已经对它做了别名,加入了 -i 参数。如果-i 和-f 同时提供,则写在右边的生效。
将文件test02.log改名为test03.log。
将mail目录下的statistics文件移动到当前目录下。
[root@localhost ~]# ls
audit passwd.back passwd_link test01.log test02.log
[root@localhost ~]# mv test02.log test03.log
[root@localhost ~]# mv audit/audit.log ./
[root@localhost ~]# ls
audit audit.log passwd.back passwd_link test01.log test03.log
[root@localhost ~]# ls audit/
audit.log.1
[root@localhost ~]# mv audit/ audit_back
[root@localhost ~]# ls
audit_back audit.log passwd.back passwd_link test01.log test03.log
[root@localhost ~]#
文件命令8:rm
rm命令用于删除文件或者目录。
rm命令属于高危命令,没有一个工具能够100% 恢复rm命令删除的文件,rm命令删除文件时并不是把文件放到类似图形界面的“回收站”里,所以没有“撤销删除”操作可用。
语法:rm [OPTION] file_or_dir
-f, --force 忽略不存在的文件,从不给出提示
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除
-v, --verbose 详细显示进行的步骤
删除test01.log文件,删除前询问
强制删除test03.log文件
删除mail.bak目录及其目录下所有文件和目录
[root@localhost ~]# ls
audit_back audit.log passwd.back passwd_link test01.log test03.log
[root@localhost ~]# rm test01.log
rm: remove regular empty file 'test01.log'? yes
[root@localhost ~]# rm -rf test03.log
[root@localhost ~]# rm -rf audit_back/
[root@localhost ~]# ls
audit.log passwd.back passwd_link
[root@localhost ~]#
常用选项
rm f1 删除文件 f1
rm f1 f2 f3 删除多个文件
rm -i f1 f2 -i 选项使得删除前先询问用户
rm -f f1 f2 -f 选项使得删除前不询问用户
rm -r d1 删除目录及目录里面的所有内容
rm -rf d1 删除目录及目录里面的所有内容,不确认
rm -rv d1 显示删除的过程
rm 命令默认情况下在删除文件之前不会询问用户,所以通常情况下shell 里面已经对它做了别名,加入了 -i 参数。如果-i 和-f 同时提供,则写在右边的生效。
文件命令9:cat
cat命令用于读取文件的全部内容,或者将几个文件合并为一个文件。
语法:cat [OPTION] [FILE]
-A, --show-all 等价于 –vET。
-b, --number-nonblank 对非空输出行编号。
-E, --show-ends 在每行结束处显示 $。
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号。
cat 命令读取文件的全部内容,写到标准输出,最常用的一个选项是-A 选项,用于显示不可打印的字符。
常用用法:
cat file 读取文件file 的全部内容
cat -A file 显示不可打印字符
查看test01.log和test02.log的内容,并把两个文件的内容合并到test03.log中
[root@localhost ~]# ls
audit.log passwd.back passwd_link test01.log test02.log
[root@localhost ~]# cat test01.log
This is a test!
[root@localhost ~]# cat -b test02.log
1 This is a test too!
[root@localhost ~]# cat test01.log test02.log > test03.log
[root@localhost ~]# cat test03.log
This is a test!
This is a test too!
[root@localhost ~]#
常用用法:
head -n 3 file 读取文件的前面3行
head -c 3 file 读取文件的前面3字节
head -n -3 file 读取文件所有行,除了后面的3行
head -c -3 file 读取文件的所有内容,除了后面的3字节
文件命令:head
head用来显示文件的开头内容,默认head命令打印其相应文件的开头10行。
语法:head [OPTION] [FILE]
命令参数:
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
使用head显示/etc/passwd文件的前三行。
使用head显示/etc/passwd文件除了最后20行以外的内容。
[root@localhost ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost ~]# head -n -40 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@localhost ~]#
文件命令11:tail
tail命令用于读取文件的尾部。
语法:tail [OPTION]... [FILE]...
主要参数:
-f 循环读取。
-q 不显示处理信息。
-v 显示详细的处理信息。
-c<数目> 显示的字节数。
-n<行数> 显示行数。
读取/etc/passwd文件最后三行、实时显示某次ping的输出
[root@localhost ~]# tail -n 3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
dbus:x:978:978:System Message Bus:/:/usr/sbin/nologin
openeuler:x:1000:1000:openEuler:/home/openeuler:/bin/bash
[root@localhost ~]# ping 192.168.110.245 > ping.log &
[1] 12865
[root@localhost ~]# tail -f ping.log
PING 192.168.110.245 (192.168.110.245) 56(84) bytes of data.
64 bytes from 192.168.110.245: icmp_seq=1 ttl=64 time=0.099 ms
64 bytes from 192.168.110.245: icmp_seq=2 ttl=64 time=0.113 ms
64 bytes from 192.168.110.245: icmp_seq=3 ttl=64 time=0.113 ms
64 bytes from 192.168.110.245: icmp_seq=4 ttl=64 time=0.114 ms
64 bytes from 192.168.110.245: icmp_seq=5 ttl=64 time=0.107 ms
64 bytes from 192.168.110.245: icmp_seq=6 ttl=64 time=0.117 ms
[root@localhost ~]#
常用用法:
tail -n 3 file 读取文件的后面3行
tail -c 3 file 读取文件的后面3字节
tail -n +3 file 从第3行开始读到文件尾部
tail -c +3 file 从第3字节开始读到文件尾部
tail -f file 跟踪文件尾部的变化
文件命令12:more
more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
语法:more [OPTION]... [FILE]...
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在文件显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示。
more 的控制命令:
SPACE 向下一屏
RETURN 向下一行
q 退出
使用more命令在读取文件信息时,可以进行交互操作。
Enter 向下n行,需要定义。默认为1行。
Ctrl+F 向下滚动一屏。
空格键 向下滚动一屏。
Ctrl+B 返回上一屏。
= 输出当前行的行号。
V 调用vi编辑器。
!命令 调用Shell,并执行命令。
q 退出more。
文件命令13:less
less命令读取内容,分屏显示,less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
语法:less [OPTION]... [FILE]...
常用操作:
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
Q 退出less 命令
空格键 滚动一页
回车键 滚动一行
less 命令的功能与more 命令类似,不过它比more 命令有更多的控制功能,不但能够向前,也能够后退,并且其按键类似vim 编辑器,在许多场合使用less 会比使用more 更方便。
其他有用的操作
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
文件命令14:find
find命令用来在指定目录下查找文件。
可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件。
常用语法:find [path...] [expression]
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件 。
-user 按照文件属主来查找文件 。
-mtime -n +n 按照文件的更改时间来查找文件。
find 命令有众多查找参数,结合多个参数可以实现成非常复杂和强大的查找功能,详尽的参数可参考man 文档find(1)。
查找范例:
find -name "*book*" 查找名字中包含了book 的文件
find -user mysql uid 为mysql
find -size 0 大小为0
find -type l 文件类型为软连接
find /etc -name "*passwd" 在 /etc 下面查找
find -empty 查找空文件(包括空目录)
find -empty -delete 找出空文件并将其删除
按照文件名来查找文件
[root@localhost ~]# find /etc -name passwd
/etc/pam.d/passwd
/etc/raddb/mods-enabled/passwd
/etc/raddb/mods-available/passwd
/etc/passwd
[root@localhost ~]# find . -name "*.log"
./test01.log
./ping.log
./test02.log
./test03.log
./audit.log
[root@localhost ~]#
查找/var/log/anaconda目录中更改时间在7日以前的普通文件
[root@localhost ~]# find /var/log/anaconda/ -type f -mtime +7
/var/log/anaconda/dnf.librepo.log
/var/log/anaconda/syslog
/var/log/anaconda/dbus.log
/var/log/anaconda/ks-script-cdcy5u0e.log
/var/log/anaconda/packaging.log
/var/log/anaconda/ifcfg.log
/var/log/anaconda/lvm.log
/var/log/anaconda/program.log
/var/log/anaconda/journal.log
/var/log/anaconda/hawkey.log
/var/log/anaconda/anaconda.log
/var/log/anaconda/storage.log
/var/log/anaconda/X.log
[root@localhost ~]#
文件命令15:locate
locate可以快速的查找文件系统内是否有指定的文件。
查找原理:先建立一个文件名及路径的数据库,查找时去这个数据库内查询。
语法:locate [OPTION] PATTERN
-e 将排除在寻找的范围之外。
-f 将特定的文件排除在外。
-r 使用正规运算式做查找条件。
-o 指定文件的名称。
-d 指定文件的路径
查找和huawei相关的所有文件。
查找/etc目录下以sh开头的文件。
当用户在执行loacte命令查找文件时,它会直接在索引数据库里查找,若该数据库太久没更新或不存在,在查找文件时就提示:“locate: can not open `/var/lib/mlocate/mlocate.db‘: No such file or directory”,此时执行“updatedb”更新下数据库即可。
查找范例:
locate .bashrc 查找路径中包含了字符 .bashrc 的记录
locate --regex '/us$' 查找匹配正则表达式的路径
文件命令16:which
which命令在PATH所指定的目录中查找可执行文件。
使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
语法:which [options] programname [...]
which 命令用于快速地确定外部命令的绝对路径。
查找范例:
which ls 查找ls 命令的绝对路径
which -a ls 如果多个目录中都有匹配的文件,则全部显示
which cp mv rm 查找多个文件
文件命令17:gzip
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令。
gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间。
语法:gzip[参数][文件或者目录]
-d或--decompress或----uncompress 解开压缩文件。
-f或--force 强行压缩文件,不理会文件名是否存在以及该文件是否为符号连接。
-l或--list 列出压缩文件的相关信息。
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或--verbose 显示指令执行过程。
使用gzip命令压缩、查看和解压缩命令
文件命令18:tar
tar命令可用于打包文件,把多个文件打到一个包中,方便数据的移动。
语法:tar [OPTION...] [FILE]
-c 建立新的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-v 显示操作过程
常用用法:
tar cf ball.tar dir1 把目录dir1 及其下所有内容打包
tar tf ball.tar 列出包中的内容
tar xf ball.tar 把包中的内容解到当前目录
tar czf ball.tar.gz dir1 打包然后用gzip压缩
tar cjf ball.tar.bz2 dir1 打包然后用bzip2压缩
tar cJf ball.tar.xz dir1 打包然后用xz压缩
tar xf ball.tar -C /tmp 解到/tmp 目录下(默认在当前目录)
tar xvf ball.tar -v 显示过程
使用tar命令仅打包、打包后压缩
使用tar命令查询包内的文件,解压缩到指定的目录
文件命令19:In
ln命令用于创建链接文件
Linux中有软链接和硬链接两种
软链接(**symbolic link)** | 硬链接(**hard link)** |
以路径形式存在,类似于Windows的快捷方式 | 以文件副本形式存在,但不占用实际空间 |
删除源文件后链接失效 | 删除源文件后影响 |
可以对目录进行链接 | 不可以对目录进行链接 |
可以跨文件系统 | 不可以跨文件系统 |
ln的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
ln命令在不带参数的情况下,默认创建的是硬链接。
语法:ln [ -f | -n] [ -s ] SourceFile [ TargetFile ]
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
使用ln命令创建链接、并在删除源文件和恢复源文件后观察链接变化情况
[root@localhost ~]# ls
passwd
[root@localhost ~]# ln passwd link_h_password
[root@localhost ~]# ln -s passwd link_s_password
[root@localhost ~]# ls -l
total 8
-rw-------. 2 root root 2546 Jul 29 15:24 link_h_password
lrwxrwxrwx. 1 root root 6 Jul 29 17:41 link_s_password -> passwd
-rw-------. 2 root root 2546 Jul 29 15:24 passwd
[root@localhost ~]# rm -f passwd
[root@localhost ~]# ls -l
total 4
-rw-------. 1 root root 2546 Jul 29 15:24 link_h_password
lrwxrwxrwx. 1 root root 6 Jul 29 17:41 link_s_password -> passwd
[root@localhost ~]# cp /etc/passwd passwd
[root@localhost ~]# ls -l
total 8
-rw-------. 1 root root 2546 Jul 29 15:24 link_h_password
lrwxrwxrwx. 1 root root 6 Jul 29 17:41 link_s_password -> passwd
-rw-------. 1 root root 2546 Jul 29 17:41 passwd
[root@localhost ~]#
帮助命令
帮助命令
man命令用于查看文档手册(manual),分为以下9类
序号 | 代表内容 |
1 | 使用者在shell中可以操作的指令或程序 |
2 | 系统核心可调用的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library) |
4 | 设备文档的说明,通常是在/dev下的文件 |
5 | 文件格式和约定 |
6 | 游戏(games) |
7 | 杂项(包括宏和惯例) |
8 | 系统管理命令(通常仅适用于root用户) |
9 | 内核例程(非标准) |
Linux 系统提供了丰富的文档,常见的有man 文档,info 文档,txt 分档等,man 文档用man 工具查看,info 文档用info 工具查看,txt 文档可以用各种文本阅读器查看。
man 文档按照标准的分类法分为8类,常用的是1, 4, 5, 8 这四个类。如果在不同的类中有相同名字的文档,则需要明确指定类别,比如:
man 1 passwd
man 5 passwd
查找man 文档的常用方法:
man -k KEYWORD
find /usr/share/man -iname "*KEYWORD*"
man是按照手册的章节号的顺序进行搜索的,比如:man sleep,如左图
默认只显示命令的手册,如果想查看库函数就要输入: man 3 sleep,如右图
帮助命令:help
在linux系统中,命令太多,记全几乎不太可能,但是,我们可以通过help命令获取帮助。
命令语法:
help [选项] [命令]
其中,选项内容包括如下:
-d 显示命令简短主题描述
-s 显示命令简短语法描述
例如:
[root@localhost ~]# help pwd
pwd: pwd [-LP]
Print the name of the current working directory.
Options:
-L print the value of $PWD if it names the current working directory
-P print the physical directory, without any symbolic links
By default, `pwd' behaves as if `-L' were specified.
Exit Status:
Returns 0 unless an invalid option is given or the current directory cannot be read