1.cat
参数:-n:显示行号-s:压缩连续的空行,只显示一个空行
2.chattr 改变文件属性
语法:chattr [-RV] [+/-/=<属性>][文件或目录]
属性:a:让文件或目录仅供附加用途i:不得任意更改文件或目录s:保密性删除文件或目录参数:-R:递归处理制定目录下的所有文件以及子目录-V:显示指令执行过程+<属性>:开启文件或目录的该属性项-<属性>:关闭文件或目录的该属性项
实例:1.chattr +i /etcresolv.conf ##使用chattr命令防止系统中某个文件被修改2.chattr +a /var/log/messages ##让某个文件只能往里面追加数据,但是不能删除,适用于各种日志文件
3.chgrp 变更文件或目录的所属群组
语法:chgrp [参数][所属群组][文件或目录]
参数:-v:显示指令执行过程--reference=<参考文件或目录>
实例:1.chgrp -v bin log2021.log #改变文件log2021.log的群组属性过程:[root@localhost test]# ll---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log[root@localhost test]# chgrp -v bin log2012.log[root@localhost test]# ll---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log2.chgrp --reference=log2012.log log2013.log ##根据执行文件log2012.log的属组更改其他文件log2013.log的群组属性过程:[root@localhost test]# ll---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log-rw-r--r-- 1 root root 61 11-13 06:03 log2013.log[root@localhost test]# chgrp --reference=log2012.log log2013.log [root@localhost test]# ll---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
4.chmod 修改用户对文件的权限
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b571c084bd11407e9780277e626ef09b.png)语法:chmod [参数] mode 文件mode:u:文件拥有者 g:与该文件的拥有者属于同一个组的 o:代表其他意外的人 a:这三者都是+:代表增加权限 -:代表取消权限 =:表示唯一设定权限r:表示可读 w:表示可写 x:表示可执行 参数:-R:对目前目录下的所有文件与子目录进行相同的权限变更实例:find path/ -type d -exec chmod a+x {} \; ##允许所有用户浏览或通过目录path/
5.chown 设置文件所有者和文件关联组,需要使用root用户才能执行
语法:chown [参数] user[:group] file ...
参数:user:新的文件拥有者的使用IDgroup:新的文件拥有者的使用者组-R:处理制定目录以及其子目录下的所有文件
实例:1.chown root /var/run/httpd.pid 将/var/run/httpd.pid的所有者设置root2.chown runoob:runoobgroup file1.txt 将file1.txt文件的拥有者设置为runoob,群体的使用者runoobgroup3.chown -R runoob:runoobgroup * 将当前目录下的所有文件与子目录的拥有者都设置为runoob,群体的使用者runoobgroup
6.cut 显示每行从头开始算起num1到num2的文字
参数:-d:设置间隔符号-f:设置需要查看的列数
实例:[root@localhost]# head -n 2 /etc/passwdroot:x:0:0:root:/root:/bin/nashbin:x:1:1:bin:/bin:/sbin/nologin[root@localhost]# cut -d: f1 /etc/passwd 使用冒号 : 进行分割,只打印出第一列的数据rootbin
6.ln 为某一个文件在另一个位置创建一个同步链接
语法:ln [参数] [源文件目录][目标文件或目录]软链接和硬链接:硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。软链接:1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式2.软链接可以 跨文件系统 ,硬链接不可以3.软链接可以对一个不存在的文件名进行链接4.软链接可以对目录进行链接硬链接:1.硬链接,以文件副本的形式存在。但不占用实际空间。2.不允许给目录创建硬链接3.硬链接只有在同一个文件系统中才能创建
参数:-f:强制执行-i:交互模式,文件存在提示用户是否覆盖-s:软连接-v:显示详细处理过程
实例:1.ln -s log2013.log link2013 给文件log2013.log文件创建软链接link2013,如果log2013.log 丢失,则link2013失效[root@localhost test]# ll-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log[root@localhost test]# ln -s log2013.log link2013[root@localhost test]# lllrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log2. ln log2013.log ln2013 给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同 [root@localhost test]# lllrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log[root@localhost test]# ln log2013.log ln2013[root@localhost test]# lllrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log
7.find
语法:find [路径] [匹配条件][动作]
参数:-name:按名字查找-type:按类型查找 可以是f(普通文件) d(目录) -size [+-] size [cwbkMG]:按文件大小查找,支持使用+或-表示大于或小于指定大小,单位可以是c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或G(GB)-mtime days:按修改时间查找,支持使用+和-指定天数前后
动作:-amin n:查找在n分钟内被访问过的文件-atime n:查找在n*24小时内被访问过的文件-cmin n:查找在n分钟内状态发生变化的文件(例如权限)-ctime n:查找在n*24小时内状态发生变化的文件-mmin n:查找在n分钟内被修改过的文件-mtime n:查找在n*24小时内被修改过的文件 在这些参数中,n可以是正数,负数或0。正数表示在指定的时间内修改或访问过的文件,负数表示在指定时间前修改或访问的文件,0表示在当前时间点上修改或访问的文件实例:1.查找当前目录以及子目录中文件名后缀为.txt的文件find -type f -name "*.txt"2.查找/var/log中在7天前修改过的,大于1MB的文件find /var/log -mtime +7 -size +1M3.查找/var/log目录中更改时间在7天之前的普通文件,并且删除之前询问他们find /var/log -type f -mtime +7 -ok rm {} \;
8.less 支持翻页、搜索浏览文件
语法:less [参数] 文件
参数:-i:忽略搜索时的大小写-o<文件名>:将less输出的内容在指定文件中保存起来b:向上翻一页d:向后翻半页Q:退出less命令u:向前滚动半页y:向前滚动一行空格:滚动一页回车:滚动一行[pagedown]:向下翻一页[pageup]:向上翻一页
9.more 类似于cat,但是可以一页一页显示
语法:more [参数] [-num] [+/pattern] [+linenum] [filename]参数:-num:一次显示的行数+/pattern:在每个文档显示前搜索改字符串(pattern),然后从该字符串之后开始显示+linenum:从第linenum行开始显示实例:从第20行开始显示文档testfile内容more +20 testfile常用操作:Enter 向下n行,默认1行空格 向下滚动一屏 Ctrl+B 返回上一屏V:调用vi编辑器q:退出more
10.mv 更改文件或目录的名称,或将文件或目录移入其他位置
语法:mv [options] source destmv [options] source directroy
参数:-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。-n: 不要覆盖任何已存在的文件或目录。-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
命令格式 | 运行结果 |
---|---|
mv source_file(文件) dest_file(文件) | 将源文件名 source_file 改为目标文件名 dest_file |
mv source_file(文件) dest_directory(目录) | 将文件 source_file 移动到目标目录 dest_directory 中 |
mv source_directory(目录) dest_directory(目录) | 目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory |
11.rm 删除一个文件或目录
语法:rm [参数] 文件
参数:-i:删除前逐一询问-f:直接删除,不询问-r:将目录以下的文档逐一删除
12.split 将一个文件分割成数个
语法:split [-行数] [-b 字节][-l 行数] [-C 字节][要切割的文件][输出文件名]
参数:-<行数>:指定每多少行切成一个小文件-b<字节>:指定没多少字节切成一个小文件-C<字节>:与-b相似,但是在切割时尽量维持每行的完整性
实例:split -6 test.txt 将test.txt文件每6行分割成一个文件,执行完成后,split会将大文件test.txt分割成众多小文件,每个文件只有6行内容。
13.touch 修改文件或目录的时间属性,包括存取时间和更改时间,如果文件不存在,则创建文件。
语法:touch [参数] [-d 日期时间] [-r 参考文件或目录] [-t 日期时间] [文件或目录]
参数:a:改变文档的读取时间m:改变文档的修改时间c:假如目的档案不存在,不会建立新的档案d:设定时间和日期,可以使用不同格式--no=create:不会创建新档案
实例:使用touch修改文件时间为当前系统时间$ ls -l testfile #查看文件的时间属性 #原来文件的修改时间为16:09 -rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile 在执行完touch后:$ touch testfile #修改文件时间属性为当前系统时间 $ ls -l testfile #查看文件的时间属性 #修改后文件的时间属性为当前系统时间 -rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
14.which 查找文件
实例:$ which bash 使用which查找bash的绝对路径
15.whereis 查找文件
参数:-b 查找二进制文件-B<目录>:只在设置的目录下查找二进制文件-f:不显示文件名前的路径名称-m:只查找说明文件-M<目录> 只在设置的目录下查找说明文件-s:只查找原始代码文件
实例:1.使用whereis查看bash的位置whereis bash输出:bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz 含义(从左到右):查询的程序名,bash路径,bash的man手册路径2.查询二进制文件或帮助文件$ whereis -b bashbash: /bin/bash /etc/bash.bashrc /usr/share/bash # bash命令的二进制程序的地址 $ whereis -m bashbash: /usr/share/man/man1/bash.1.gz #bash命令的帮助文件地址
16.read 从标准输入(大部分是键盘)读取数据
参数:-a:后面跟一个变量,该变量会被认为是一个属组,然后给其赋值,默认是以空格为分割符-d:后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志-p:后面跟提示信息,在输入前提示消息会被打印出-e 在输入的时候可以使用命令补全功能。-n 后跟一个数字,定义输入文本的长度,很实用。-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。-t 后面跟秒数,定义输入字符的等待时间。
实例:1.简单读取:#!/bin/bash#这里默认会换行 echo "输入网站名: " #读取从键盘的输入 read website echo "你输入的网站名是 $website" exit 0 #退出测试结果:输入网站名: www.runoob.com你输入的网站名是 www.runoob.com2.-p 参数,允许在read命令执行时给一个提示#!/bin/bashread -p "输入网站名:" websiteecho "你输入的网站名是 $website" exit 0测试结果:输入网站名:www.runoob.com你输入的网站名是 www.runoob.com3.-t 参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态。#!/bin/bashif read -t 5 -p "输入网站名:" websitethenecho "你输入的网站名是 $website"elseecho "\n抱歉,你输入超时了。"fiexit 0执行程序不输入,等待 5 秒后:输入网站名:抱歉,你输入超时了4、除了输入时间计时,还可以使用 -n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。#!/bin/bashread -n1 -p "Do you want to continue [Y/N]?" answercase $answer inY | y)echo "fine ,continue";;N | n)echo "ok,good bye";;*)echo "error choice";;esacexit 0该例子使用了-n 选项,后接数值 1,指示 read 命令只要接受到一个字符就退出。只要按下一个字符进行回答,read 命令立即接受输入并将其传给变量,无需按回车键。5.-s 选项能够使 read 命令中输入的数据不显示在命令终端上(实际上,数据是显示的,只是 read 命令将文本颜色设置成与背景相同的颜色)。输入密码常用这个选项。#!/bin/bashread -s -p "请输入您的密码:" passecho "\n您输入的密码是 $pass"exit 0执行程序输入密码后是不显示的:请输入您的密码:您输入的密码是 runoob6.read会读取文件中的"一行"文本,假设测试文件test.txt内容如下:123456runoob测试代码:#!/bin/bashcount=1 # 赋值语句,不加空格cat test.txt | while read line # cat 命令的输出作为read命令的输入,read读到>的值放在line中doecho "Line $count:$line"count=$[ $count + 1 ] # 注意中括号中的空格。doneecho "finish"exit 0执行结果:Line 1:123Line 2:456Line 3:runoobfinish
17.sort命令
参数:-b 忽略每行前面开始出现的空格字符-r 以相反的方式来排序-d 排序时,处理英文字母、数字以及空格字符外,忽略其他字符-f 排序时,将小写字母视为大写字母 -n 按照数值的大小进行排序-u 输出的结果是去重后的 -k 按照指定的列进行排序 例如 sort textfile -k 2 就是按照第二列进行排序
18.uniq 检查以及删除文本文件中重复出现的行列,一般和sort配合使用
参数:-c 或 --count 在每行旁边显示该行重复出现的次数-d 或 --repeated 仅显示重复出现的行列
注意: 当文件中的重复内容不相邻时,uniq命令不起作用,例如:test 30 Hello 95 Linux 85 test 30 Hello 95 Linux 85 test 30 Hello 95 Linux 85此时就需要先用sort进行排序,之后再用uniq -c 进行统计出现次数
18.wc 计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据
参数:-c或-bytes或--chars :只显示Bytes数-l或--lines: 显示行数-w或--words:只显示字数
实例:1.假设测试文件testfile的内容为以下:$ cat testfile Linux networks are becoming more and more common, but scurity is often an overlooked issue. Unfortunately, in today’s environment all networks are potential hacker targets, fro0m tp-secret military research networks to small home LANs. Linux Network Securty focuses on securing Linux in a networked environment, where the security of the entire network needs to be considered rather than just isolated machines. It uses a mix of theory and practicl techniques to teach administrators how to install and use security applications, as well as how the applcations work and why they are necesary. 使用wc统计指定文件的行数、字数,以及字节数$ wc testfile3 92 598 testfile # testfile文件的行数为3、单词数92、字节数598 2.统计多个文件信息$ wc testfile testfile_1 testfile_2 #统计三个文件的信息 3 92 598 testfile #第一个文件行数为3、单词数92、字节数598 9 18 78 testfile_1 #第二个文件的行数为9、单词数18、字节数78 3 6 32 testfile_2 #第三个文件的行数为3、单词数6、字节数32 15 116 708 总用量 #三个文件总共的行数为15、单词数116、字节数708
19.ftp
参数:-d:详细显示指令执行过程-i:关闭交互模式,不询问任何问题-g:关闭本地主机文件名支持特殊字符的扩充特性-n:不使用自动登录-v:显示指令执行过程
实例:1.建立ftp链接ftp 192.168.42.77 如果连接建立,将显示确认消息,并且提示输入FTP用户名2.下载远程文件 test.txtget test.txt 将下载远程服务器上的test.txt文件下载到本地当前目录3.上传本地文件put test.txt4.删除远程文件delete test.txt5.退出FTP会话bye注意:FTP流量不加密。对于安全的数据传输,请使用SCP或SFTP
20.df 显示目前文件系统磁盘使用情况
参数:-a :显示所有文件系统-B :指定块大小,以特定单位显示磁盘空间信息-h :以人类可读的格式显示输出结果-k :以KB为单位显示磁盘信息-t :仅显示指定类型的文件系统
实例:1.# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda6 29640780 4320704 23814388 16% / udev 1536756 4 1536752 1% /dev tmpfs 617620 888 616732 1% /run none 5120 0 5120 0% /run/lock none 1544044 156 1543888 1% /run/shm 说明:Filesystem:文件系统的名称或标识符1K-blocks:文件系统的总容量,以1KB块为单位,即文件系统总大小Used:文件系统已经使用的量,以1KB块为单位Available:文件系统仍然可以使用的容量Use%:文件系统已使用容量占总容量的百分比Mounted on:文件系统被挂在到的目录或位置2.# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda6 29G 4.2G 23G 16% / udev 1.5G 4.0K 1.5G 1% /dev tmpfs 604M 892K 603M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.5G 156K 1.5G 1% /run/shm
21.du 显示目录或文件大小
参数:-a:显示目录中个别文件的大小-b:显示目录或文件大小时,以字节byte为单位-c:除了显示个别目录或文件大小外,也显示所有目录或文件的总和-h或--human-readable 以K,M,G为单位,提高信息的可读性。-k或--kilobytes 以1024 bytes为单位。
实例:显示指定文件所占空间# du log2012.log 300 log2012.log方便阅读的格式显示test目录所占空间情况:# du -h test608K test/test6308K test/test44.0K test/scf/lib4.0K test/scf/service/deploy/product4.0K test/scf/service/deploy/info12K test/scf/service/deploy16K test/scf/service4.0K test/scf/doc4.0K test/scf/bin32K test/scf8.0K test/test31.3M test
23.mount 挂在Linux系统外的文件
语法:mount [-l][-t <文件系统类型>][-o <选项>] <设备名称> <挂载点>-l:以列表的形式显示当前已挂载的文件系统。-t <文件系统类型>:指定要挂载的文件系统的类型,例如ext4、ntfs等。-o <选项>:指定挂载选项,比如读写权限、访问控制等。<设备名称>:指定要挂载的设备的名称或路径。<挂载点>:指定要挂载到的目录路径。选项:ro:以只读模式挂载文件系统。rw:以读写模式挂载文件系统。remount:重新挂载一个已经挂载的文件系统,可以修改挂载选项。user:允许普通用户挂载文件系统,而不仅仅是超级用户。nouser:只允许超级用户挂载文件系统。exec:允许在文件系统中执行可执行文件。noexec:禁止在文件系统中执行可执行文件
实例:1.将/dev/sbd1设备挂在到/mnt目录下mount /dev/sdb1 /mnt2.显示当前已经挂在的文件系统mount -l3.以只读模式挂载文件系统mount -o ro /dev/sdc1 /mnt4.重新挂在已经挂载的文件系统mount -o remount,rw /dev/sdc1 /mnt该命令将重新以读写模式挂载已经挂载到/mnt目录的/dev/sdc1设备5.如何挂载ExFAT格式的设备安装ExFAT驱动程序和工具。sudo apt-get install exfat-utils exfat-fuse创建一个目录作为挂载点。例如,可以使用以下命令在“/mnt”目录下创建一个名为“exfat”的目录:sudo mkdir /mnt/exfat使用以下命令将ExFAT格式的硬盘挂载到刚刚创建的目录:sudo mount -t exfat /dev/sdb1 /mnt/exfat其中,“/dev/sdb1”应替换为您的硬盘设备和分区号。可以使用以下命令来查找硬盘设备和分区号:sudo fdisk -l。如果硬盘有多个分区,可以根据需要将挂载点指向不同的分区。确认硬盘已经成功挂载到指定的目录中。可以使用以下命令来检查:mount | grep exfat。如果该命令返回了硬盘的信息,则表示挂载成功。6.如果要卸载ExFAT格式的设备sudo umount /mnt/exfat如果挂载点被其他进程占用,可以加-f参数强制卸载sudo umount -f /mnt/exfat