Shell脚本学习-阶段二十七-命令解释二
作者:互联网
文章目录-命令解释二
- 前言
- emacs
- jed
- joe
- nano================
- pico
- sed===================
- vi,vim============
- mtype=============
- rgrep==========
- ex
- cmp
- bzcmp
- comm
- diff===========
- bzdiff
- diffstat
- diff3
- find==============
- locate/slocate=========
- whereis==========
- updatedb
- which=========
- basename
- tmpwatch
- dirname
- cat==============
- tac==============
- dd================
- iconv
- ln==============
- nl
- mcopy
- patchchk
- rename=============
- touch
- unlink
- ftp===================
- ncftp
- tftp
- bye
- uuto
- unpick
- uucp
- uucico
- sftp
- sftp-server
- ftpcount
- ftpshut
- ftptop
- ftpwho
- lftp
- lftpget
- sz=================
- rz==================
- col
- column
- split=======================
- zipsplit=====
- csplit
- expand
- unexpand
- fmt
- fold=========
- grep==============
- ngrep
- egrep
- fgrep
- inspell
- spell
- join=============
- look
- paste
- pr
- printf
- rev
- shuf
- sort=============
- uniq===============
- tee
- tr
- wc==========
- cut=================
- head
- tail============
- hexdump
- less
- more============
- od
- mattrib
- chattr========================
- lsattr
- chgrp
- chown
- chmod===================
- dos2unix
- file===============
- acl
- getacl
- chacl
- setfacl
- stat==========
- rhmask
- umask
- arj
- bunzip2
- bzcat
- bzgrep
- bzip2
- bzip2recover
- bzless
- bzmore
- compress
- uncompress
- gunzip
- gzexe
- ar
- uudecode
- uuencode
- gzip===============
- lha
- tar==============
- unarj
- zcat
- zfore
- zip
- unzip==============
- unrar
- zipinfo
- znew
- chconn
- sestatus
- getsebool
- restorecon
- seinfo
- semanage
- sesearch
- setsebool
- startx
- xinit
- xauth
- xclip
- xhost
- xlsations
- xlsclients
- xlsfonts
- xset
- at
- atq
- atrm
- batch
- crontab=================
- init===============
- ipcrm
- ipcs
- killall================
- xkill=================
- pkill=============
- kill============
- nice
- gitps
- renice
- nohup============
- pgrep
- procinfo
- pidof
- lsof====================
- pmap================
- ps===================
- pstack
- pstree====================
- runlevel
- service=================
- systemctl==============
- telint
- w==============重点
- watch
- ltrace
- iotop
- mc
- mdel
- dumpe2fs
- fsck
- e2fsck
- e2image
- e2label
- resize2fs
- tune2fs=============
- findfs
- mke2fs
- mkfs===================
- mount=================
- umount===============
- mountpoint
- quota
- edquota
- quotacheck
- quotaoff
- quotaon
- 总结
前言
# ed
单行纯文本编辑器, 它有命令模式 (commandmode)和输入模式(inputmode)两种工作模式:
A: 切换到输入模式,在文件的最后一行之后输入新的内容;
C: 切换到输入模式,用输入的内容替换掉最后一行的内容;
i: 切换到输入模式, 在当前行之前加入一个新的空行来输入内容;
d: 用于删除最后一行文本内容;
n: 用于显示最后一行的行号和内容;
w: <文件名> : 一给定的文件名保存当前正在编辑的文件;
q: 退出ed编辑器.
emacs
功能强大的全屏文本编辑器, 它支持多种编程语言,具有很多优良的特性.
有众多的系统管理员和软件开发者使用emacs.
jed
由Slang所开发,其主要用用途是编辑程序的源代码, 它支持彩色语法加亮显示, 可以模拟emacs,EDT,wordstar和Brief编辑器.
joe
功能强大的纯文本编辑器, 拥有众多编写程序和文本的优良特性. DEBIAN中不存在此编辑器.
nano================
文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行, 但用这种方式来处理某些文件可能会带来问题, 比如Linux系统的配置文件,自动断行就会使本来只能写在一行上的内容折断成多行了,有可能造成系统不灵了.因此,如果你想避免这种情况出现,就加上-w选项吧.使用Ctrl+O来保存所作的修改,退出按Ctrl+X.KALI系统中含此工具.
nano -w /etc/default/keyboard(修改键盘布局为英式或美式等)
nano -w /etc/network/interfaces(修改网络配置)
nano -w /etc/hosts
nano -w /etc/resolv.cof(修改DNS信息)
nano -w /etc/apt/sources.list(修改更新源, 不需要的可以加#注释)
pico
功能强大全屏幕的文本编辑器.
pico的操作简单,提供了丰富的快捷键.
DEBIAN中存在此编辑器.
sed===================
一种在线编辑/流编辑器. 它是文本处理中非常好的工具, 能够完善的配合正则表达式使用. 处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"
(patternspace),接着用sed命令处理缓冲区中的内容, 处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.
Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等.
如果没有输入文件, 那么程序将从标准输入读取数据.
sed 'ld' test.txt (删除test.txt文件的第一行);
sed '%d' test.txt (删除test.txt文件的最后一行);
sed '1,3d' test.txt (删除test.txt文件的第一行,第三行);
sed '2,%d' test.txt (删除test.txt文件的第二行,最后一行);
sed 只有在使用-i参数时才会对文件进行真正的修改,否则不实质改变文件的内容.
与Vim不同的是, sed可以在不打开文件的情况下直接查找,搜索,替换文本的内容.
例如:
sed -i -e '/^#/d' smb.conf -e '/^\;/d' -e '/^$/d' -e '/homes/,$d' (用SED去除空行和注释行, 并把homes以下的设置都删除.)
例如:
sed -i 's/80/8080/g' ports.conf (将ports文件中的80端口修改为8080端口.)
假设处理的文本为test.file. 在每行的头添加字符(前缀), 比如"HEAD",命令如下:
sed 's/^/HEAD&/g' test.file;
在每行的行尾添加字符,比如"TAIL",命令如下:
sed 's/$/&TAIL/g' test.file
将this is a test line 追加到以test开头的行前面:
sed '/^test/i\this is a test line' file
1."^"代表行首, "$"代表行尾
2.'s/$/&TAIL/g'中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了, 否则只会替换每行第一个, 而不继续往后找了
3.如果想导出文件,在命令末尾加"> outfile_name";如果想在源文本上更改,添加选项"-i",如
4.也可以把两条命令合在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD", "TAIL",
命令:
sed '/./{s/^/HEAD&/;s/$/&TAIL/}' test.file
vi,vim============
UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器.Linux中的vi编辑器叫vim, 它是vi的增强版 (viImproved),与vi编辑器完全兼容,而且实现了很多增强功能.
vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确vi编辑器就必须熟练掌握着两种模式的切换.默认情况下,打开vi编辑器后自动进入命令行模式.从编辑模式切换到命令模式使用"esc"键,从命令模式切换到编辑模式使用"A","a","O","o","I","i"键.
KALI中有此命令.
VIM有两个配置文件 (全局配置文件/etc/vim/virmc或/etc/vimrc,个人配置文件/home/XXX/.vimrc),它的配置选项有几百项.个人配置文件优先于全局配置文件,所以一般只修改个人配置文件.VIM有丰富的插件.
在vim中用密码保护文件:
vim +X filename, 或者在退出vim之前使用:X命令来加密你的文件,vim会提示你输入一个密码.
mtype=============
mtype为mtools工具指令, 模拟MS-DOS的type指令, 可显示MS-DOS文件的内容.
rgrep==========
用于递归查找文件里符合条件的字符串.rgrep指令的功能和grep指令类似,可查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设rgrep指令会把含有范本样式的那一列显示出来.
ex
在ex模式下启动vim文本编辑器.ex执行效果如同vi-E,适用语法及参数可参照vi指令,如要从Ex模式回到普通模式,则在vim 中输入:vi或:visual即可.
cmp
比较两个文件是否有差异. 当相互比较的两个文件完全一样时,则该指令不会显示任何信息.若发现有差异,预设会标示出第一个不同之处的字符和列数编号.若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据.-l: 将字节以十进制的方式输出, 并方便将两个文件中不同的以八进制的方式输出.cmp testfile testfile1 #比较两个指定的文件注意: 在比较结果中, 只能够显示第一比较结果.
bzcmp
主要功能是在不真正解压缩.bz2压缩包的情况下,比较两个压缩包中的文件,省去了解压缩后在调用cmp命令的过程.
comm
可以用于两个文件之间的比较,它有一些选项可以用来调整输出, 以便执行交集,球差,以及差集操作.
diff===========
在最简单的情况下, 比较给定的两个文件的不同. 如果适用"-"代替"文件"参数,则要比较的内容将来自标准输入.diff命令是以逐行的方式,比较文本文件的异同处.如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作.将目录/use/li下的文件"test.txt"与当前目录下的文件快速找出两个目录的不同: diff /tmp/r/ /tmp/s/
bzdiff
直接比较两个 ".bz2" 压缩包中文件的不同, 省去了解压缩后再调用diff命令的过程.
diffstat
显示diff命令输出信息的柱状图, 用以显示diff命令比较两个文件的不同统计信息.用户也可以直接适用|将diff命令所输出的结果直接送给diffstat命令进行统计结果的显示.使用该命令时, 若所比较的文件或者子目录不在当前目录下, 则应该使用其完整路径.diff test1 test2 | diffstat #进行比较结果的统计显示
diff3
比较3个文件, 将3个文件的不同的地方显示到标准输出.
find==============
在指定目录下,可以通过权限, 用户, 组, 文件类型, 日期, 大小等可能的条件查找文件,速度较慢.在当前工作目录中查找名称为test.c的所有文件: find test.c;在当前工作目录中查找名为test.PHP的所有PHP文件: find -type f -name test.php;查找/home目录下的所有文件,名称为 test: find /home -name test;查找目录中的所有PHP文件: find -type f -name "*.php";找到名称为test的所有文件,并在/home目录中同时包含大写和小写字母: find /home -iname test;在/目录中查找名称为test的所有目录: find / -type d -name test;根据文件类型进行搜索: find -type 类型参数. (f: 普通文件 d: 目录文件 l: 符号链接文件 s: 套接字文件 b: 块设备文件 c:字符设备文件 p: 管道文件) 查找权限为777的所有文件: find -type f -perm 777 -print;查找777权限的文件夹: find -type d -perm 777;查找权限设置为644的所有SGID位文件: find / -perm 644;查找权限位551的所有Sucky Bit设置文件: find / -perm 551;查找所有SUID集文件: find / -perm /u=s;查找所有只读文件: find / -perm /u=r;查找所有可执行文件: find / -perm /u=x;查找所有777权限文件,并使用chmod命令将权限设置为 644: find / -type d -perm 777 -print -exec chmod 755 {}\;查找所有777权限文件,并使用chmod命令将权限设置为755: find / -type d -perm 777 -print -exec chmod 755 {} \;查找并删除多个文件: find -type f -name "*.txt" -exec rm -f {} \;查找特定目录下的所有空文件: find / -type f -empty; find . -type d -empty;查找所有隐藏文件: find / -type f -name ".*" 根据文件时间戳进行搜索: find . -type f 时间戳;根据文件大小进行匹配: find -type f -size 文件大小单元;查找最近1小时内访问的文件: find -amin -60;查找最近1小时内修改的所有文件: find -mmin -60;查找最近1小时内更改的所有文件: find -cmin -60;查找所有被修改超过50天以及少于100天的文件: find / -mtime +50 -mtime -100;查找最近50天访问的文件: find / -atime 50; 删除当前目录下所有.txt文件: find . -type f -name "*.txt" delete;查找超过10MB的所有.mp3文件并删除它们: find / -type f -name "*.mp3" -size +10M -exec rm -rf {} \;列出所有长度为零的文件: find . -empty;列出当前目录及目录下所有文件和文件夹: find . 基于正则表达式匹配文件路径;find -regex ".*\(\.txt\|\.pdf\)$";找出/home下不是以.txt结尾的文件: find /home ! -name "*.txt"; 在find命令查找到的文件上执行命令: find -iname "MyCProgram.c" -exec md5sum {} \;下面的find命令的例子, 遍历文件系统一次, 列出拥有setuid属性的文件和目录,写入/root/suid.txt文件,如果文件大小超过100M, 将其记录到/root/big.txt中: find /\(-perm -4000 -fprintf /root/suid.txt '%#m %u %p\n'\).\\(-size +100M-fprintf /root/big.txt '%-10s%p\n'\)
locate/slocate=========
查找文件或目录. locate命令其实是find -name的另一种写法, 但是要比后者快得多, 原因在于它不搜索具体目录, 而是搜索一个数据库/var/lib/mlocate/mlocate.db, 这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次, 所以使用locate命令查不到最新变动过的文件. 为了避免这种情况,可以在使用locate之前,先使用updatedb命令, 手动更新数据库.-e 将排除在寻找的范围之外.-c: 只显示统计多少个符合条件的路径.-r: 能给予基本正则表达式来编写命令.搜索etc目录下所有以so开头的文件: locate /etc/so搜索用户主目录下,所有以m开头的文件: locate ~ //搜索用户主目录下, 所有以m开头的文件, 并且忽略大小写: locate -i ~ /mlocate pwd使用Regex 来搜索以 ".foo" 结尾的文件: locate -r '.foo$'
whereis==========
whereis 命令只能用于程序名的搜索, 而且只搜索二进制文件(参数-b),man说明文件(参数-m) 和源代码文件 (参数-s). 如果省略参数,则返回所有信息.和find相比, whereis查找的速度非常快, 这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时, 会从数据库中查找数据,而不是像find命令那样通过遍历硬盘来查找. 但是该数据库文件并不是实时更新, 默认情况下是一星期更新一次, 因此, 我们在用whereis和locate查找文件时, 有时会找到已经被删除的数据,或者刚刚建立文件, 却无法查找到, 原因就是因为数据库文件没有被更新. whereis程序还具有搜索源代码, 指定备用哦搜索路径和搜索不寻常项的能力.查找SVN程序所有相关项: whereis svn只将二进制文件 查找出来: whereis -b svn; whereis -m svn 查出说明文档路径, whereis -s svn 找source源文件.
updatedb
创建或更新locate /slocate命令必需的数据库文件. updatedb命令的执行过程较长, 因为在执行时它会遍历整个系统的目录树, 并将所有的文件信息写入slocate数据库文件中.补充说明: slocate本身具有一个数据库, 里面存放了系统中文件与目录的相关信息.在一般的distribution之中, 数据库的建立都被放在crontab中自动执行. updatedb -U /usr/local/ 更新指定命令的slocate数据库
which=========
查看可执行文件的位置. which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说, 使用which命令,就可以看到某个系统命令是否存在, 以及执行的到底是哪一个位置的命令. 不同的PATH配置内容所找到的命令当然不一样的!which lsmod; which adduser; which whichwhich cd 注意: 因为cd是bash内建的命令, 但which默认是找PATH内所规范的目录,所以当然找不到!
basename
显示目录或者文件的基本名称.basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称.显示一个shell变量的基本名称: basename $WORKFILE构造要给和另一个文件民初相同 (除了后缀) 的文件名称: OFILE=`basename $1 .c`.o
tmpwatch
用于删除暂存文件.执行tmpwatch指令可删除不必要的暂存文件,您可以设置文件超时时间, 单位以小时计算.
dirname
去除文件名中的非目录部分, 仅显示与目录有关的内容.dirname命令读取指定路径保留最后一个/及其后面的字符,删除其它部分,并写结果到标准输出.如果最后一个/后无字符,dirname命令使用倒数第二个/, 并忽略其后的所有字符.dirname和basename通常在shell内部命令替换使用,以指定以恶与指定输入文件名略有差异的输出文件名.
cat==============
cat ( "concatenate" 的缩写) 命令用于选择并显示指定的一个和多个文件的有关信息, 它的使用权限是所有用户. 可以用于合并文件,添加行号, 清空文档内容,制作镜像文件. cat经常用来显示文本的内容,类似于type命令.注意: 当文件较大时, 文本在屏幕上迅速闪过(滚屏), 一般用more命令分屏显示. 为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏.按Ctrl+C(中断)键可以终止该命令的执行.例,假设m1和m2是当前目录下的两个文件:cat m1.txt (在屏幕上显示文件m1的内容),cat m1 m2 (同时显示文件m1和m2的内容),cat /dev/null > /etc/text.txt (清空text.txt的内容)\cat m1 m2 > file.txt (将文件m1和m2合并后放入文件file中),cat face.txt >> readme.txt 将前面文件的内容附加到readme.txt文件之后cat -n text1 > text2 (将text1的内容加上行号后输入到text2中),cat -b text1 text2 > text3 (将text1,text2的内容加上行号输入到text3中, 空白行不加行号)制作U盘的镜像文件, 将U盘放好后输入: cat /dev/sda1 > OUTFILE (df -h 可以看到U盘符号)将镜像文件写入U盘: cat IMGFILE > /dev/sda1 cat /etc/issue 查看当前系统版本使用here doc 来生成文件: cat > xiaoma.asp <<EOF,回车后输入文本内容,输入完成后以EOF结束. cat还有一个重要的功能就是可以对其编号,对行进行编号功能更有-b (只能对非空百行进行编号) 和 -n (可以对所有行进行编号)两个参数: cat -b /etc/named.conf
tac==============
将文件以行为单位反序输出,即第一行最后显示, 最后一行先显示. 由升序可编程降序, 或者降序变成升序.tac是将cat反写过来,所以它的功能就跟cat相反,cat是由第一行到最后一行连续显示在屏幕上,而tac则是由最后一行到第一行反向在屏幕上显示出来!tac log.txt
dd================
复制文件并对源文件的内容进行转换和格式化处理.dd命令功能很强大,可以把文件写入磁盘, 分区,文件,也可以把磁盘,分区,文件写入文件;用的比较多的还是用dd来备份裸设备,但是不推荐.如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不大方便, 建议在有需要的时候使用dd对物理磁盘操作,如果是文件系统的话还是使用tar,backup,cpio等命令更方便.另外,使用dd对磁盘操作时,最好使用块设备文件.参数bs:同时设置读/写缓冲区的字节数(等于设置ibs和obs).有几种方法备份Linux系统,包括dd,rsync和rsnapshot等.dd bs=4M if=XXXX.img of=/dev/sdb (将IMG文件写入整个磁盘,而不是磁盘的某个分区)gzip -c -d XXX.imag.gz | dd of=/dev/sdb;将整个主硬盘清零: dd if=/dev/zero of=/dev/haddd命令常常用来制作Linux启动盘: 先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘: $ rdev vmlinuz /dev/hda, $ dd if=vmliunz of=/dev/fd0,上面代码说明, 使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把"hda"换成自己的根分区, 接下来用dd命令将内核写入软盘.dd if=/dev/sda of=/dev/sdb: 备份整个硬盘/dev/sda到同一系统的另一个硬盘/dev/sdb, 命令在执行过程中如有任何错误都会失败.但若加入参数 "CONV=NOERROR",则即使执行过程中有错误, 它也会继续复制.输入,输出的顺序在执行前必须检查再三, 如果两者顺序颠倒,你可能会损失所有数据.dd if=/dev/sda of=/dev/sdb conv=noerror,sync: 在备份整个硬盘时, 加入sync参数来同步I/Odd if=/dev/sda of=~/sdadisk.img: 创建一个硬盘/dev/sda的image,这种备份方法的速度快于其它方法的备份,也能让你更快捷的恢复数据.dd if=sdadisk.img of=/dev/sdb: Sdadisk.img文件是/dev/sda的映像,恢复/dev/had的映像到/dev/sdbdd if=/dev/sda1 of=~/partition1.img: 使用dd命令备份硬盘分区dd if=/dev/cdrom of=tgsservice.iso bs=2048: dd命令允许我们创建源文件的iso文件,所以我们可以插入CD,输入dd命令来创建一个CD的iso文件内容.使用的块大小为2048 bytes. 注意:如果光盘是自动挂载的,在使用dd命令创建iso映像之前最好umount掉以避免造成对CD ROM不必要的访问.
iconv
用来转换文件的编码方式的,比如它可以将UTF8编码的转换成GB18030的编码, 反过来也行.JDK中也提供了类似的工具native2ascii.Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数,可以用来在C/C++程序中很方便的转换字符编码,这在抓取网页的程序中很有用处,而iconv命令在调试此类程序时用的着.列出当前支持的字符编码: iconv -l
ln==============
为文件创建连接, 连接类型分为硬连接和符号连接两种,默认的联机类型是硬连接.如果要创建符号连接必须使用"-s"选项. 注意: 符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的.Linux具有为一个文件起多个名字的功能,称为链接.被链接的文件可以存放在相同的目录下, 但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份.另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改.对于某个文件的备链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全行性.ln 后面不加-s选项相当于COPY.例如: 将VI链接到VIM上,用到的命令如下:whereis vi&&whereis vim&& ls -l /usr/bin/vi && sudo rm /usr/bin/vi && sudo ln -s /usr/bin/vim /usr/bin/vi && ls -l /usr/bin/vi
nl
nl可以将输出的文件内容自动的加上行号! 其默认的结果与cat -n 有点不太一样, nl可以将行号做比较多的显示设计, 包括位数与是否自动补齐0等等的功能.除非使用-p选项,nl命令在每个逻辑页开始的地方重新设置行号.可以单独为头,主体和页脚节设置行计算标志(例如, 头和页脚行可以备计算然而文本行不能).用nl列出log2015.log的内容: nl log2015.log用nl列出log2015.log的内容,空本行也加上行号: nl -b a log2015.log让行号前面自动补上0, 统一输出格式: nl -b a -n rz log2015.lognl -b a -n rz 命令行默认为6位, 要调整位数可以加上参数 -w 3调整为3位: nl -b a -n rz -w 3 log.txt
mcopy
用来复制MSDOS格式文件到Linux中,或是由Linux中复制MSDOS文件到磁片上.mcopy可复制单一的文件到所指定的文件名称,或是复制数个文件到所指定的目录之中. 来源与目的文件可为MSDOS或是Linux文件.mcopy指令是一种mtools工具指令,可以在DOS系统中复制文件或者在DOS与Linux操作系统之间进行文件复制.
patchchk
检查文件中不可移植的部分.
rename=============
用字符串替换的方式批量改变文件名.将main1.c重命名为main.c: rename main1.c main.c main1.c字母的替换: rename "s/AA/aa/" * //把文件名中的AA替换成aa修改文件的后缀: rename "s//.html//.php/" * //把.html后缀的改成.php后缀批量添加文件后缀: rename "s/$//.txt/" * //把所有的文件名都以txt结尾批量删除文件名: rename "s//.txt//" * //把所有以.txt结尾的文件名的.txt删掉
touch
一是用于把已经存在文件的时间标签更新为系统当前的时间 (默认方式), 它们的数据将原封不动地保留下来;二是用来创建新的空文件.touch ex2: 在当前目录下建立一个空文件ex2, 然后, 利用ls -l命令可以发现文件ex2的大小为0, 表示它是空文件.Touch后面的文件名如果存在, 则更新其修改日期, 如果不存在则创建一个内容为空的文件.创建不存在的文件(可以一次创建多个文件): touch file1.log file2.log;使用touch创建批量空文件: touch sysadm-{1..20}.txt;使用参考文件设置时间戳: touch -r {参考文件} 真正文件: touch -r cankaofile.log zhenzhengfile.log;设定文件的修改时间值: touch -t 201211142234.50 log.log,此处的time 规定为如下形式的十进制数:[[CC]YY]MMDDhhmm[.SS].改变/更新文件和目录的访问时间: touch -a devops.txt, touch -a /mnt/nfsshare/;更改文件和目录的修改时间: touch -m devops.txt, touch -m /mnt/nfsshare/;
unlink
用于系统调用函数unlink去删除指定的文件.和rm命令作用一样,都是删除文件.
ftp===================
设置文件系统相关功能.ftp服务器在网上较为常见,ftp命令的功能是用命令的方式来控制在本地及和远程机之间传送文件.FTP>macdef :定义宏命令FTP>mdelete [remote-files] 删除一批文件.FTP>mget [remote-files] 从远端主机接收一批文件至本地主机FTP>mkdir directory-name 在远端主机中建立目录FTP>mput local-files 将本地主机中一批文件传送至远端主机FTP>open host [port] 重新建立一个新的连接.
ncftp
增强的ftp工具,比传统的FTP指令更加强大. FTP让用户得以下载放于服务器主机的文件, 也能将文件上传到远端主机放置.ncftp是文字模式FTP程序的佼佼者,它具备多样特色, 包括显示传输速率,下载进度,自动续传,标注书签,可通过防火墙和代理服务器等.
tftp
服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持.因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了.下面就详细介绍以下linux服务器端tftp-server的配置. 安装tftp服务器,需要安装xinetd,tftp和tftp-server,修改/etc/xinetd.d/tftp文件, 将其中的disable=yes改为disable=no.主要是设置TFTP服务器的根目录,开启服务.查看tftp服务是否开启: netstat -a |grep tftp从远程主机192.168.1.2下载embedexpert: tftp -g -r embedexpert 192.168.1.2
bye
用于中断FTP连线并结束程序.在ftp模式下, 输入bye即可中断目前的连线作业,并结束ftp的执行.
uuto
将文件传送到远端的UUCP主机.uuto为script文件, 它实际上会执行uucp, 用来将文件传送到远端UUCP主机, 并在完成工作后,以邮件通知远端主机上的用户.
unpick
unpick命令处理传送进来的文件.当其它主机通过UUCP将文件传送进来时, 可利用unpick指令取出这些文件.
uucp
用于在Unix系统之间传送文件.UUCP为Unix系统之间, 通过序列线来连线的协议.uucp使用UUCP协议, 主要的功能为传送文件.
uucico
UUCP文件传输服务程序.uucico是用来处理uucp或uux送到队列的文件传输工具.uucico有两种工作模式: 主动模式和附属模式.当在主动模式下时,uucico会调用远端主机;在附属模式下时, uucico则接受远端主机的调用.
sftp
交互式的文件传输程序, 命令的运行和使用方式与ftp命令相似,但是,sftp命令对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能.
sftp-server
是一个" sftp" 协议的服务器端程序, 它使用加密的方式进行文本传输.
ftpcount
显示目前已ftp登入的用户人数. 执行这项指令可得知目前用FTP登入系统的人数以及FTP登入人数的上限.
ftpshut
在指定的时间关闭ftp服务器.本指令提供系统管理者在设置的时间关闭FTP服务器,且能在关闭之前发出警告信息通知用户. 关闭时间若设置后为"none",则会马上关闭服务器.如果采用"+30"的方式来设置表示服务器在30分钟之后关闭. 依次类推,假设使用"1130"的格式则代表服务器会在每日的11时30分关闭, 时间格式为24小时制.FTP服务器关闭后,在/etc目录下会产生一个名称为shutmsg的文件,把它删除后即可再度启动FTP服务器的功能.ftpshut [-d<分钟>][-l<分钟>][关闭时间]["警告信息"]
ftptop
类似于top命令的显示风格显示proftpd服务器的连接状态.-D: 过滤正在下载的会话;-S: 仅显示指定虚拟主机的连接状态;-d: 指定屏幕刷新时间, 默认.
ftpwho
ftp服务器套件proftpd的工作指令,用于显示当前每个ftp会话信息.
lftp
优秀的文件客户端程序, 它支持ftp,SETP,HTTP和FTPs等多种文件传输协议.lftp支持tab自动补齐,记不得命令双击tab键, 就可以看到可能的选项了.lftp 用户名:密码@ftp地址:传送端口 (默认21);也可以先不带用户名登录, 然后在接口界面下用login命令来用指定账号登录,密码不显示.
lftpget
通过调用lftp指令下载指定的文件. 文件必须是合法的URL路径.
sz=================
rz, sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具,windows端需要支持ZModem的telnet/ssh客户端( 比如SecureCRT ).sz命令下载文件到本地.默认的sz到本地的目录路径C:\Users\[Administrator]\AppData\Roaming\NetSarang\Xshell\Received Files.编译安装sz和rz命令: root账号登陆后, 依次执行以下命令: tar zxvf lrzsz-0.12.20.tar.gz; cd lrzsz-0.12.20; ./configure ; make; make install; 上面安装过程默认把lsz和lrz安装到了/usr/local/bin目录下,现在我们并不能直接使用,下面创建软链接,并命名为rz/sz cd /usr/bin; ln -s /usr/local/bin/lrz rz; ln -s /usr/local/bin/lsz sz rz/sz速度只有10K左右,传大文件会累死人的.如果下载目录,只能先tar,在下载tar文件.
rz==================
---------------------
col
一个标准输入文本过滤器,它从标准输入设备读取文本内容,并把内容显示到标准输出设备.在许多UNIX说明文件里, 都有RLF控制字符. 当我们运用SHELL特殊字符>和>>,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码, col命令则能有效过滤掉这些控制字符.
column
用于删除文件中的指定列. column命令从标准输入设备读取数据,转而输出到标准输出设备. 如果不加任何参数, 用column命令不会过滤任何一行.起始列号:指定要删除的指定列;结尾列号:指定要删除的结尾列.
split=======================
可以将一个大文件分割成很多小文件, 有时需要将文件分割成更小的片段, 比如为提高可读性, 生成日志等,用split命令将date.txt分割成大小为10KB的小文件;split -b 10k date.file分割文件成多个带有数字的后缀文件,且用-a length来指定后缀的长度: split -b 10k date.file -d -a 3为分割后的文件指定文件名的前缀: split -b 10k date.file -d -a 3 split_file把文件分割成每个包含10行的小文件: split -l 10 date.file
zipsplit=====
将较大的"zip"压缩包分割成各个较小的"zip"压缩包.
csplit
将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件.碎片文件的命名类似"xx00","xx01".csplit命令是split的一个变体,split只能够根据文件大小或行数来分割,但csplit能够根据文件本身特点来分割文件.需要将server.log分割成server1.log,server2.log,server3.log,这些文件的内容分别取自原文件中不同的SERVER部分: csplit server.log /SERVER/ -n2 -s {*} -f server -b "%02d.log";rm server00.log
expand
将文件的制表符(TAB) 转换为空白字符(space), 将结果显示到标准输出设备.-t<数字>: 指定制表符所代表的空白字符的个数,而不使用默认的8.
unexpand
将给定文件中的空白字符(space) 转换为制表符(TAB), 并将转换结果显示在标准输出设备(显示终端).-a 或 --all: 转换文件中所有的空白字符;--first-only: 仅转换开头的空白字符;-t: 指定TAB所代表的N个 (N为整数) 字符数, 默认N值是8.
fmt
格式化文本文件中的内容.比如, 一个文本文件每行每一个单词, 而任务是把所有的单词都放在同一行.fmt xxx.txt >YYY.txt: 将文本中的N行都合并到一行,内容之间以空隔进行分隔.默认情况下,fmt命令产生的输出中的最大行宽为75.然而,如果你想的话,可以用-w选项进行修改,它接受一个表示新行宽的数字作为参数值,如:fmt -w 20 xxx.txtfmt -t xxx.txt: 让第一行的缩进与众不同,突出显示第一行fmt -s xxx.txt: 对长行进行拆分fmt -u xxx.txt: 在单词与单词之间用单个空格分开,句子之间用两个空格分开
fold=========
fold命令是 GNU coreutils包的一部分,控制文件内容输出时所占用的屏幕宽度,会以适合指定的宽度调整输入文件中的每一行,将其打印到标准输出.若不指定任何文件名称,或是所给予的文件名为"-",则fold指令会从标准输入设备读取数据.-b或--bytes: 以Byte为单位计算列宽,而非采用行数编号为单位;-s或--spaces: 以空格字符作为换列点;-w<每列行数>或--width<每列行数>: 设置每列的最大行数.fold linux.txt: 将文件linux.txt中的每一行换行为默认宽度,每行80列是默认的宽度.如果要指定宽度,则执行fold -w60 /etc/shadow > xxx.txt,不过有些词在行之间被中断.为了解决这个问题,我们可以使用-s标志来在空格处换行: fold -w60 -s /etc/shadow >xxx.txt fold -b20 linux.txt:使用-b选项将输出的宽度强制为指定的字节数
grep==============
一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.在多个文件中查找: grep "match_pattern" file_1 file_2 file_3 ...统计文本或者文本中包含匹配字符串的行数-c选项: grep -c "text" file_name搜索多个文件并查找匹配文本在哪些文件中: grep -l "text" file1 file2 file3 ...例子1: grep -v ^|; smb.conf |grep -v ^#|grep -v ^$ (将smb.conf文件中的注释行,空行去除)查找文件中包含root单词的行: grep "root" /etc/passwd查找文件中包含root单词的行并输出行号: grep -n "root" /etc/passwd查找文件中以root为行首的行: grep "^root" /etc/passwd查找文件中以root为结尾的行: grep "root$" /etc/passwd查找文件中以r或d为行首的行: grep "![r|d]" /etc/passwd递归查找当前目录下的所有PHP文件, 要求文件中包含关键字POST: grep -R --include="*.php" "POST" ./
ngrep
grep命令的网络版, 他力求更多的grep特征,用于搜寻指定的数据包.正由于安装ngrep需要用到libpcap库,所以支持最大的操作系统和网络协议.能识别TCP,UDP和ICMP包,理解bpf的过滤机制.捕捉amazon: 80端口的request和response.-d eth0是用来监听对外的网卡: ngrep -W byline -d eth0 port 80
egrep
在文本内查找指定的字符串.egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法.egrep是extended regular expression语法来解读的,而grep则是用basic regular expression语法解读,extended regular expression比basic regular expression的表达更规范.
fgrep
搜索file参数指定的输入文件 (缺省为标志输入) 中的匹配模式的行.fgrep命令特别搜索Pattern参数, 它们是固定的字符串.如果在File参数中指定一个以上的文件fgrep命令将显示包含匹配行的文件.fgrep命令于grep和egrep命令不同,因为他搜索字符串而不是搜索匹配表达式的模式.fgrep命令使用快捷的压缩算法.$,*,[,|,(,)和\等字符串被fgrep命令按字面意思解释.这些字符并不解释为正则表达式,但它们在grep和egrep命令中解释为正则表达式.因为这些字符对于shell有特定的含义,完整的字符串应该加上单引号"...".如果没有指定文件,fgrep命令假定标准输入.一般,找到的每行都复制到标准输出中去.如果不止一个输入文件,则在找到的每行前打印文件名.搜索几个文件中的一个简单字符串: fgrep strcpy *.c,在当前目录下所有以.c字符串结尾的文件中搜索字符串strcpy.
inspell
检查文件中出现的拼写错误.
spell
对文件进行拼写检查,并把拼写错误的单词输出.
join=============
将两个文件中,制定栏位内容相同的行链接起来.找出两个文件中,制定栏位内容相同的行,并加以合并,再输出到标准输出设备.
look
显示文件中以指定字符串开头的任意行.
paste
将多个文件按照队列进行合并.-d<间隔字符>或--delimiters=<间隔字符>: 用指定的间隔字符取代挑格字符; -s或-------serial串列进行而非平行处理.
pr
将文本文件转换成适合打印的格式,他可以把较大的文件分割成多个页面进行打印,并未每个页面添加标题.
printf
格式化并输出结果到标准输出.
rev
将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推.命令tac则以行为单位反序输出.
shuf
shuf命令用于在类Unix操作系统中生成随机排列.使用shuf命令,我们可以随机打乱给定输入文件的行.shuf xxx.txt -o output.txtshuf -n 5 ostechnix.txt: 显示文件中的任意5行shuf -i 1-10: 显示1到10之间的随机数
sort=============
将文件进行排序,并将排序结果标准输出.sort命令既可以从特定的文件,也可以从stdin中获取输入.sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出.忽略相同行使用-u选项或者uniq.-f 忽略大小写;-b 忽视最前面 空格符部分;-M 以月份的名字来排序,例如JAN,DEC等等的排序方法;-n 使用纯数字进行排序(默认是以文字形态来排序的);-r 反向排序;-u 就是相同的数据中仅出现一行代表(经测试,sort -u可以实现对11+GB的文件去重和排序! 只是时间有点慢);-t 分隔符,默认是用TAB键来分隔;-k 以哪个区间来进行排序的意思.利用sort和uniq求两个文件的并集,交集和差集;并集: cat file1.txt file2.txt | sort |uniq >file.txt 交集: cat file1.txt file2.txt | sort | uniq -d > file.txt差集: 求file1.txt相对于file2.txt的差集,可先求出两者的交集temp.txt,然后在file1.txt中除去temp.txt即可: cat file1.txt file2.txt |sort |uniq -d >temp.txt; cat file1.txt temp.txt | sort | uniq -u >file.txt 对/etc/passwd的账号进行排序: cat /etc/passwd | sort,sort是默认以第一个数据来排序,默认是以字符串形式来排序./etc/passwd内容是以冒号来分隔的,以第三栏来排序: cat /etc/passwd | sort -t':' -k 3 查看/etc/passwd有多少个shell对/etc/passwd的第七个域进行排序,然后去重: cat /etc/passwd | sort -t':' -k 7 -u
uniq===============
报告或忽略文件中的重复行, 一般与sort命令结合使用(先用sort排序再用uniq去除相邻的重复行).可以用于删除重复行,在文件中找出重复行,统计各行在文件中出现的次数,只显示单一行.为了使uniq起作用,所有的重复行必须是相邻的.在处理小文本时,sort+uniq的效率更高;在处理大文本时, 可以使用awk.-i 忽略大小写字符的不同;-c 进行计数;-u 只显示唯一的行.仅显示不重复的行: sort testfile | uniq -u仅显示存在重复的行,并在行首显示该行重复的次数 sort testfile | uniq -dc排序之后删除了重复行,同时在行首位置输出该行重复的次数: sort testfile | uniq -c排序文件,默认是去重: cat words | sort |uniq
tee
将数据重定向到文件, 另一方面还可以提供一份重定向数据的副本作为后续命令的stdin.简单的说就是把数据重定向到给定文件和屏幕上.存在缓存机制,每1024个字符将输出一次.若从管道接收输入数据,应该是缓冲区满, 才将数据转存到指定的文件中.若文件内容不到1024个字节,则接收完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件中.使用tee命令在屏幕上看到输出并同样写入到日志文件my.log中: mycoolapp arg1 arg2 input.file | tee my.log;tee可以保证你同时在屏幕上看到mycoolapp的输出并写入文件my.log;ping google.com | tee output.txt: 跟踪命令的输出内容,同时又想将输出的内容写入文件,确保之后可以用来参考ls file* | tee output.txt | wc -l: 让tee命令的输出内容直接作为另一个命令的输入内容:w !sudo tee %: 假如你使用Vim编辑器[1]打开文件,并且做了很多更改,然后当你尝试保存修改时, 你得到一个报错,让你意识到那是一个root所拥有的文件,如此情况下, 你可以(在Vim内) 使用tee命令来提高权限. [command] | tee -i [file]: -i命令行选项使tee命令忽视通常由ctrl+c组合键发起的中断信号(SIGINT)
tr
可以对来自标准输入的字符进行替换,压缩和删除.它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大.将输入字符由大写转换为小写: echo "HELLO WORLD" | tr 'A-Z''a-z'.
wc==========
wc命令显示每个输入文件的新行,单词和字节数.利用wc指令我们可以计算文件的Byte数,字数或是列数,若不指定文件名称,或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据.在命令行工作时,有时可能想要知道一个文件中的单词数量,字节数,甚至换行数量.如果指定多于一个文件,也列出总的行数.wc -c file.txt: 使用-c命令选项显示字节数.wc -m file.txt: 显示字符数wc -l file.txt: 使用-l命令选项来显示文件中的行数wc -w file.txt: 显示单词总数wc -L file.txt: 显示最长的行的长度wc --files0-form=names.txt: 如果您有多个文件名,并且您希望wc从一个文件中读取它们,那么使用-files0-form选项.wc命令在这个例子中输出了文件file.txt的行,单词和字符计数.文件名为file.txt的文件在name.txt文件中提及.值得一提的是,要成功地使用这个选项,文件中的文件名应该用NUL终止----------可以通过键入Ctrl+v然后按Ctrl+Shift+@来生成这个字符.
cut=================
显示或提取行中的指定部分, 删除文件中指定字段;合并文件.cut经常用来显示文件的内容,类似于下的type命令.说明: 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上; 其二是连接两个或多个文件,如cut f1 f2>f3把文件f1和f2的内容合并起来,将它们放入文件f3中. 当文件较大时,文本在屏幕上迅速闪过(滚屏), 用户往往看不清所显示的内容. 因此, 一般用more等命令分屏显示,为了控制滚屏,可以按Ctrl+S键,停止滚屏; 按Ctrl+Q键可以恢复滚屏. 按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态. cut wenjian.txt -d',' -f 1-5 (提取wenjian.txt中的1-5字段, 该文件中的字段以逗号分隔) 将PATH变量取出,找出第三和第五个路径: echo $PATH | cut -d':' -f 3,5
head
从文件开头部分显示文件内容.在默认情况下,head命令显示文件的头10行内容.查看操作系统版本: head -n 1 /etc/issue
tail============
显示文件的最后几行, 默认显示指定文件的末尾10行.如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题.注意: 如果表示字节或行数的N值之前有一个"+"号,则从文件开头的第N项开始显示,而不是显示文件的最后N项.N值后面可以有后缀: b表示512,k表示1024,m表示1M.tail命令从指定点开始将File参数指定的文件写道标准输出.如果没有指定文件,那么会使用标准输入.Number变量指定将多少单元写到标准输出.Number变量的值可以是正的或负的整数.如果值的前面有+(加号),从文件开头指定的单元数将文件写到标准输出.如果值的前面有-(减号),那么从文件末尾指定的单元数开始将文件写到标准输出.如果值前面没有+(加号)或-(减号),那么从文件末尾指定的单元号开始读取文件.Number变量用于确定计数的起点的单元类型由 -b,-c,-k,-m以及-n标志确定.如果没有指定其中的任何一个标志,那么tail命令就会读取指定文件的最后十行,并将其写到标准输出.这与在命令行输入-n 10是相同的.-m标志在单字节和双字节字符环境中提供了一致的结果.当输入是包含多字节字符的文本文件时应谨慎使用-c标志,因为产生的输出可能不从字符边界开始.tail file (显示文件file的最后10行);tail +20 file (显示文件file的内容,从第20行至文件末尾);tail -c 10 file (显示文件file的最后10个字符)标准语法;tail [-f] [-c Number| -n Number| -m Number| -b Number| -k Number] [File];要逆序显示行,请输入: tail [-r] [-n Number] [File] tail -n 100 /var/log/httpd/access_log
hexdump
一般用来查看"二进制"文件的十六进制编码,但实际上它能查看任何文件, 而不只限于二进制文件.hexdump -C test.txt: 以十六进制编码查看文件.可以找到相应的十六进制代码,再通过sed替换,通过在替换16进制数字前增加\x即可.sed -i 's/\x00\x00\x00\x03//g' 1.test.txt
less
作用与more十分相似,都可以用来浏览文字档案的内容, 不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览.用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页.要退出less程序,应按Q键.less是linux正统查看文件内容的工具,功能极其强大.less log2013.log;浏览多个文件: Less log2013.log log2014.log(输入: n后,切换到log2014.log, 输入: p后,切换到log2013.log)ps -ef |less查看命令历史使用记录并通过less分页显示: history |less
more============
more命令, 功能类似cat, cat命令是整个文件的内容从上到下显示在屏幕上.more会以一页一页的显示方便使用逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功能,还支持直接跳转行等功能.more命令从前向后读取文件,因此在启动时就加载整个文件.常用的快捷键有H (获得帮助信息), Enter(向下翻滚一行), 空格(向下滚动一屏), Q(退出命令).显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比: more -dc file显示文件file的内容,每10行显示一次,而且在显示之前先清屏: more -c -10 file;每页显示5个文件信息,按Ctrl+F或者空格键将会显示下5条文件信息: ls -l | more -5显示文件中从第3行起的内容: more +3 log2012.log 从文件中查找第一个出现"day3"字符串的行, 并从该处前两行开始显示输出: more +/day3 log2012.log 设定每屏显示行数: more -5 log2012.log
od
输出文件的八进制,十六机制或其它格式编码的字节, 通常用于显示或查看文件中不能直接显示在终端的字符.常见的文件为文本文件和二进制文件.此命令主要用来查看保存在二进制文件中的值.比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数.这些数据记录放在一个文件中,如果想查看这个数据,这时候od命令就排上用场了.在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释. 不管是IEEE754格式的浮点数还是ASCII码, od命令都能按照需求输出他们呢的值.
mattrib
用来变更或显示MS-DOS文件的属性.mattrib为mtools工具指令,模拟MS-DOS的attrib指令,可变更MS-DOS文件的属性.列出A槽MSDOS格式磁片上所有文件的属性: mattrib a:除去A槽磁片上msdos.sys档案的隐藏,系统与唯读属性: mattrib -h -s -r a:msdos.sys除去A槽磁片上包含子目录下所有档案的唯读属性: mattrib -r -/ a:*.*
chattr========================
改变文件属性,参数有+ (开启属性), -(关闭属性), = (指定属性), -R(递归处理,将指定目录下的所有文件及子目录一并处理).这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有八种模式abcddisSu:+_a 让文件或目录仅额能往里面追加数据而不能修改.适用于各种日志文件.如: chattr +a /var/log/messages+_b 不更新文件或目录的最后存取时间.+_c 将文件或目录压缩候存放.+_d 将文件或目录排除在倾倒操作之外.+_i 不得任意更新文件或目录,+i可以防止系统中某个关键文件被修改.如: chattr +i /etc/resolv.conf+_s 保密性删除文件或目录.+_S 即时更新文件或目录.+_u 预防意外删除文件或目录.
lsattr
查看文件的第二扩展系统属性.经常使用的几个选项-D,-E,-R这三个选项不可以一起使用,它们是互斥的,经常使用的还有-l,-H, 使用lsattr时, 必须指出具体的设备名, 用-l选项指出要显示设备的逻辑名称, 否则要用-c,-s,-t等选项唯一的确定某个已经存在的设备.(注意: 有时ls被禁用了, 可以用lsattr.)例如:查看resolv.conf的文件属性: lsattr /etc/resolv.conf
chgrp
改变文件或目录所属的群组(用户组),参数有: -c(效果类似-v,但仅回显更改的部分),-f(安静模式,不显示错误信息),-h(只对符号连接的文件作修改,而不更动其它任何相关文件),-R(递归处理),-v(详细模式, 显示命令执行过程),--reference(设置参考文件或目录). 在UNIX系统家族里, 文件或目录权限的掌控以拥有者及所属群组来管理.您可以使用chgrp指令去变更文件与目录的所属群组,组名可以是群组名称(用户组的组名),群组识别码(用户组的id).文件名可以是由空格分开的要改变数组的文件列表,也可以是由通配符将描述的文件集合.如果用户不是该文件主或超级用户(root),则不能改变该文件的组.例如,将/usr/meng及其子目录下的所有文件的用户组改为mengxin: chgrp -R mengxin /usr/meng, 修改候可用ll命令查看是否修改成功. 例如,将log1.log的群组属性设置的和参考文件log2.log的群组属性一样: chgrp --reference=log2.log log1.log
chown
改变某个文件或目录的所有者和所属的组, 该命令可以向某个用户授权,使该用户变成指定文件的所有者或者文件所属的组.用户可以是用户或者用户D,用户组可以是组名或组id.文件名可以使由空格分开的文件列表,在文件名中可以包含通配符.只有文件主和超级用户才可以使用该命令.将目录/usr/meng及其下面的所有文件,子目录的文件主改成liu: chown -R liu /usr/meng 注意: chown命令是用来改变某个文件的属主的命令;chmod命令是用来改变某个文件的访问模式的命令.
chmod===================
变更文件或目录的权限.Linux/Unix的文件调用权限分为三级: 文件拥有者,群组,其他. 利用chmod可以控制文件如何被他人所调用.在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可.符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件.u 表示该文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者, o表示其他以外的人, a表示这三者皆是.+ 表示增加权限, - 表示取消权限, =表示唯一设定权限.r 表示可读取, w表示可写入, x表示可执行, X表示只有当该文件是个子目录或者该文件已经被设定过为可执行.将文件file1.txt设为所有人皆可读取: chmod ugo+r file1.txt将文件file1.txt设为所有人皆可读取: chmod a+r file1.txtchmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限chown user:market f01 //把文件f01给user,添加到market组将文件file1.txt与file2.txt 设为文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入: chmod ug+w,o-w file1.txt file2.txt将ex1.py设定为只有该文件拥有者可以执行: chmod u+x ex1.py将目前目录下的所有文件与子目录皆设为任何人可读取: chmod -R a+r * 锁定一个文件夹: chmod 0000 /downloads, root用户仍旧可以访问,而ls和cd命令则不工作.要还原它用: chmod 0755 /downloads
dos2unix
将DOS格式的文本文件转换成UNIX格式的(DOS/MACtoUNIXtestfileformatconverter).DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D0A.而Unix下的文本文件是以\n作为新行标志,表示成十六进制就是0A.DOS格式的文本文件在Linux底下, 用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本.而Unix格式的文本文件在Windwos下用Notepad打开时会拼在一起显示.因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转换成DOS格式的就是unix2dos命令.
file===============
探测给定文件的类型,用于判断文件类型.file命令对文件的检查分为文件系统,魔法幻数检查和语言检查3个过程.MSB为大尾模式(大端模式), LSB为小尾模式(小端模式).在大端模式下, 数据的高位保存在存储器的低地址中.使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件,还是Shell Script文件, 或者是其他的什么格式.file能识别的文件类型有目录,Shell脚本,英文文本,二进制可执行文件,C语言源文件,文本文件,DOS的可执行文件.需要说明的是,file命令不能探测包括图形,音频,视频等多媒体文件类型.实际测试发现: OFFCIE2007文档有无后缀名或使用伪造的后缀名,均能准确识别.
acl
ACL (访问控制列表).Default ACL是指对于一个目录进行Default ACL设置,并且在此目录下建立的文件都将继承此目录的ACL.
getacl
chacl
改变文件和目录的Access ACL and Default ACL.chacl -B 可以彻底删除文件或者目录的ACL属性 (包括Default ACL),比如你即使使用了 setfacl -x 删除了所有文件的ACL属性,那个+号还是会出现在文件的末尾, 所以正确的删除方法应该是用chacl -B用cp来复制文件的时候我们现在可以加上-p选项.
setfacl
在命令行里设置ACL (访问控制列表).在命令行里, 一系列的命令跟随以一系列的文件名.https://wiki.archlinux.org/index.php/File_permission_and_attributes.
stat==========
显示文件的状态信息.stat命令的输出信息比ls命令的输出信息要更详细.-L: 支持符号连接;-f: 显示文件系统状态而非文件状态;-t: 以简洁方式输出信息.stat file.txt
rhmask
用于对文件进行加密和解密操作.执行rhmask指令可制作加密过的文件, 方便用户在公开的网络上传输该文件, 而不至于被任意盗用.
umask
设置限制新建文件权限的掩码.当新文件被创建时,其最初的权限由文件创建掩码决定.用户每次注册进入系统时, umask命令都被执行,并自动设置掩码mode来限制新文件的权限. 用户可以通过再次执行umask命令来改变默认值, 新的权限将会把旧的覆盖掉.
arj
是 ".arj" 格式的压缩文件的管理器, 用于创建和管理 ".arj" 压缩包.
bunzip2
解压缩由bzip2指令创建的" .bz2"压缩包.对文件进行压缩与解压缩.此命令类似于"gzip/gunzip"命令, 只能对文件进行压缩.对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以".bz2"为后缀的压缩包.bunzip2其实是bzip2的符号链接,即软链接,因此压缩解压都可以通过bzip2实现.将/opt目录下的etc.zip, var.zip和backup.zip进行压缩,设置压缩率为最高,同时在压缩完毕后不删除原始文件, 显示压缩过程的详细信息: bzip2 -9vk /opt/etc.zip /opt/var.zip 将/opt目录下的etc.zip, var.zip和backup.zip进行压缩,设置压缩率为最高,同时在压缩完毕后不删除原始文件,显示压缩过程的详细信息:bzip2 -9vk /opt/etc.zip /opt/var.zip /opt/backup.zip
bzcat
解压缩指定的.bz2文件, 并显示解压缩后的文件内容,保留原压缩文件,并且不生成解压缩后的文件.
bzgrep
使用正则表达式搜索".bz2"压缩包中文件, 将匹配的行显示到标注输出.
bzip2
创建和管理 (包括解压缩) ".bz2"格式的压缩包.我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法种的Linuxbzip2命令的多种范例供查看
bzip2recover
恢复被破坏的".bz2"压缩包中的文件.bzip2是以区块的方式来压缩文件, 每个区块视为独立的单位.因此, 当某一区块损坏时, 便可利用bzip2recover,试着将文件中的区块隔开来, 以便解压缩正常的区块. 通常只适用在压缩文件很大的情况.
bzless
增强 ".bz2" 压缩包查看器, bzless 比 bzmore 命令功能更加强大.
bzmore
查看bzip2压缩过的文本文件的内容, 当下一屏显示不下时可以实现分屏显示.
compress
适用"Lempress.Ziv" 编码压缩数据文件.compress是个历史悠久的压缩程序,文件经它压缩后, 其名称后面会多出".Z"的扩展名.当要解压缩时,可执行uncompress指令.事实上,uncompress是指向compress的符号链接,因此不论是压缩或解压缩,都可通过compress指令单独完成.
uncompress
解压缩由compress压缩后产生的".Z"压缩包.
gunzip
解压缩文件.gunzip是个使用广泛的解压缩程序, 它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz 事实上,gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成.
gzexe
压缩可执行文件, 压缩后的文件仍然为可执行文件,在执行时进行自动解压缩.当您去执行被压缩过的执行文件时, 该文件会自动解压缩后继续执行,和使用一般的执行文件相同.这个命令也可以看成是gunzip命令的一个扩展.-d: 解压缩被gunexe压缩过的可执行文件.
ar
用于建立或修改备存文件, 或是从备存文件中抽取文件.ar可以让您集合许多文件,成为单一的备存文件.在备存文件中,所有成员文件皆保有原来的属性与权限.ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]
uudecode
用于将uuencode编码后的档案还原.早期在许多unix系统的传送协定只能传送七位元字元,并不支援二进位档案, 像中文文字就有用到八位元,所以无法完整地送到另一架机器上.uuencode指令,可以将二进位档转换成七位元的档案,传送到另一架机器上再以uudecode还原.最常见的是用在以电子邮件传送二进位档.uuencode编码后的资料都已begin开始,以end作为结束.
uuencode
uuencode 将uuencode编码后的档案还原,uuencode 只会将begin与end标记之间的编码资料还原, 程序会跳过标记以外的资料.可以一起还原好几个档案: uuencode file1.uud file2.uud
gzip===============
压缩文件.gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处".gz"扩展名;gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用来压缩大的,较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式.据统计,gzip命令对文本文件有60%~70%的压缩率.减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.递归地解压目录: gzip -dr test6把test6目录下的每个文件压缩成.gz文件: gzip *
lha
从lharc演变而来的压缩程序, 文件经它压缩后, 会另外产生具有.lzh扩展名的压缩文件.lha -a abc.lhz a.b #压缩a.b文件,压缩后生成abc.lhz文件lha -a abc2 /home/hnlinux #压缩目录lha -xiw=agis abc #解压文件abc, 到当前目录
tar==============
可以为linux的文件和目录创建档案(Tape Archive).利用tar, 可以为某一特定文件创建档案(备份文件), 也可以在档案中改变文件, 或者向档案中加入新的文件.tar 最初被用来在磁带上创建档案, 现在, 用户可以在任何设备上创建档案.利用tar命令,可以把一大堆的文件和目录全部打包成一个文件, 这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的.首先要弄清两个概念:打包和压缩. 打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件.为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样档你想要压缩一大堆文件时,你得先将一大堆文件先打成一个包 (tar命令), 然后再用压缩程序进行压缩(gzip bzip2命令).tar zpvxf XXX.tar.gz -C / (f参数后面必须直接接文件名)tar -g snapshot -zpvxf XXX.tar.gz / -exclude=/tmp -exclude=/media (-g参数可用于增量备份, -exclude用于将文件夹排除在压缩过程中.)tar 是一个打包解压程序,如果需要压缩或解压缩, 可以用-z参数.tar cvf backup.tar /etc (将/etc/下的所有文件打包成tar存档文件backup.tar; "x"选项用于解包, "c"选项用于打包)
unarj
解压缩由arj命令创建的压缩包.
zcat
不真正解压缩文件, 就能显示压缩包中文件的内容场合.
zfore
强制为gzip格式的压缩文件添加".gz"后缀.
zip
解压缩文件, 或者对文件进行打包操作. zip是个使用广泛的压缩程序, 文件经它压缩后会另外产生具有".zip"扩展名的压缩文件.将/home/Blinux/html/这个目录下所有文件和文件夹打包为当前目录下的html.zip;zip -q -r html.zip /home/Blinux/html上面的命令操作是将绝对地址的文件及文件夹进行压缩,以下给定压缩相对路径目录,比如目前在Blinux这个目录下,执行以下操作可以达到以上同样的效果: zip -q -r html.zip html 比如现在我的html目录下, 我操作的zip压缩命令是: zip -q -r html.zip *
unzip==============
解压缩由zip命令压缩的".zip"压缩包.将压缩文件text.zip在当前目录下解压缩: unzip test.zip将压缩文件text.zip在指定目录/tmp下解压缩,如果已经有相同的文件存在,要求unzip命令不覆盖原先的文件: unzip -n test.zip -d /tmp查看压缩文件目录, 但不解压: unzip -v test.zip 将压缩文件test.zip在指定目录/tmp下解压缩,如果已经有相同的文件存在,要求unzip命令覆盖原先的文件: unzip -o test.zip -d tmp/
unrar
解压rar格式压缩包
zipinfo
列出压缩文件信息.执行zipinfo指令可得知zip压缩文件的详细信息.
znew
将使用compress命令压缩的".Z"压缩包重新转化为使用gzip命令压缩的".gz"压缩包.-f: 强制执行转换操作,即是目标 ".gz"已经存在;-t: 删除原文件前面测试新文件;-v: 显示文件名和每个文件的压缩比;-9: 食用油花的压缩比,速度较慢;-P: 使用管道完成转换操作,以降低磁盘空间使用;-K: 当".Z"文件比".gz"文件小时,保留".Z"文件.
chconn
修改对象 (文件) 的安全上下文, 比如: 用户,角色,类型,安全级别. 也就是将每个文件的安全环境变更至指定环境.使用--reference选项时,把指定文件的安全环境设置为与参考文件相同.chconn命令位于/usr/bin/chconn.如果你想把这个ftp共享给匿名用户的话,需要开启以下: chcon -R -t public_content_t /var/ftp; 如果你想让你设置的FTP目录可以上传文件的话,SELINUX需要设置: chcon -t public_content_rw_t /var/ftp/uncoming;如果你希望将samba目录共享给其他用户,你需要设置: chcon -t samba_share_t /directory;共享rsync目录时: chcon -t public_content_t /directories
sestatus
要检查SElinux是否阻止了应用程序,使用tail和grep在/var/log/audit日志记录中查找"denied"(被拒绝)的信息.否则,使用sestatus来检查是否启动了SELinux.
getsebool
查询SELinux策略内备项规则的布尔值.SELinux的策略与规则管理相关命令包括seinfo命令,sesearch命令,getsebool命令,setsebool命令,semanage命令.查询httpd_enable_homedirs是否为关闭;getsebool httpd_enable_homedirs,若没有关闭请关闭它;setsebool -P httpd_enable_homedirs=0 //0是关闭 1是开启.getsebool -a : 查询本系统内所有的布尔值设置状况
restorecon
恢复SELinux文件属性即恢复文件的安全上下文.假设CentOS按装了apache,网页默认的主目录是/var/www/html,我们经常遇到这样的问题,在其他目录中创建了一个网页文件,然后用mv移动到网页默认目录/var/www/html中,但是在浏览器中却打不开这个文件,这很可能是因为这个文件的SELinux配置信息是继承原来那个目录的,与/var/www/html目录不同,使用mv移动的时候,这个SELinux配置信息也一起移动过来了,从而导致无法打开页面.
seinfo
查询SELinux的策略提供多少相关规则,一个主体进程能否读取到目标文件资源的重点是在于SELinux的策略以及策略内的备项规则,然后再通过该规则的定义去处理备项目标文件的安全上下文,尤其是"类型"部分.列出与httpd有关的规则: seinfo -b | grep httpd
semanage
查询与修改SELinux默认目录的安全上下文.
sesearch
使用seinfo命令可以查询SELinux的策略提供多少相关规则,如果查到的相关类型或者布尔值,想要知道详细规则时,使用sesearch命令查询.找出目标文件资源类型为httpd_sys_content_t的有关信息: sesearch -a -t httpd_sys_content_t 找出主体进程为httpd_t且目标文件类型为httpd相关的所有信息: sesearch -s httpd_t -t httpd_* -a 查看布尔值httpd_enable_homedirs设置了多少规则: sesearch -b httpd_enable_homedirs -a
setsebool
修改SELinux策略内备项规则的布尔值.setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组.允许vsvtp匿名用户写入权限: setsebool -P allow_ftpd_anon_write=1如果你希望你的ftp用户可以访问自己的家目录的话,需要开启: setsebool -P ftp_home_dir 1 如果你希望将vsftpd以daemon的方式运行的话,需要开启: setsebool -P ftpd_is_daemon 1你可以让SELinux停止保护vsftpd的daemon方式执行: setsebool -P ftpd_disable_trans 1 HTTP备设置允许cgi的设置: setsebool -P httpd_enable_cgi 1 允许httpd访问终端: setsebool -P httpd_tty_comm 1 关于named,master更新selinux设定: setsebool -P named_write_master_zones 1Selinux将本机的NFS共享设置成只读: setsebool -P nfs_export_all_ro 1 停止rsync的进程保护: setsebool -P rsync_disable_trans 1允许系统使用kerberos: setsebool -P allow_kerberos 1
startx
启动XWindow, 实际上启动XWindow的程序为xinit.要在工作站上强制启动X会话: startx -w要为X终端启动X会话,并注销用户的telnet会话: startx;kill -9 $$ 要使用.xinitrc脚本启动X会话: startx -x .xinitrc要使用mwm窗口管理器启动X会话: startx -m mwm
xinit
Linux下X-Window系统的初始化程序, 主要完成X服务器的初始化设置.
xauth
显示和编辑被用于链接X服务器的认证信息.add: 添加认证条目到认证文件中;extract: 将指定的设备内容加入到指定的密码文件中;info: 显示授权文件相关信息;exit: 退出交互模式;list: 列出给定的显示设备的内容;merge: 合并多个授权文件内容;extract: 将指定设备内容写入指定的授权文件中;nextrct: 将指定设备内容写入指定的授权文件;nmerge: 合并多个授权文件内容;remove: 删除指定显示设备的授权条目;source: 从指定文件读取包含xauth的内容指令.
xclip
在X系统里面,从一个窗口复制一段文字到另一个窗口,有两套机制,分别是Selections和cutbuffers.常用的copy&paste是利用的cubuffers机制;另外用鼠标选中一段文字,然后在另一个窗口按鼠标中键实现复制,利用的是selections机制.selection又可以分为master和slaveselection.当用鼠标选中一段文字,这段文字就自动被复制到masterselection.然后在另一个地方按鼠标中键,就自动把masterselection的内容粘贴出来.当你想复制少量文字的时候,两种方法都是很方便的.但是当复制大段文字的时候就挺麻烦.另外就是你可能会频繁的执行一些复制粘贴工作,不停的用鼠标选中文字,然后再粘贴.这是对手指的折磨.把文件/etc/passwd的内容复制到X master selections 里: xclip -i /etc/passwd
xhost
X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示.该命令必须从有显示连接的机器上运行.可以通过使用-host参数,从访问列表中除去一个名称.不用从访问列表中除去当前的名称.如果已经这样作了,请在作出任何更改之前注销系统.
xlsations
列出X服务器内部所有定义的原子成分,每个原子成分都有自身的编号.可利用参数设置列表范围,或直接指定欲查询的原子成本名称.-display<显示器编号>: 指定X Server连接的显示器编号,该编号由"0"开始计算,依序递增; -format<输出格式>: 设置成分清单的列表格式,您可使用控制字符改变显示样式; -name<成分名称>:列出指定的成分; -range<列表范围>:设置成分清单的列表范围.
xlsclients
列出显示器中的客户端应用程序.语法: xlsclients [-display dpy] [-m len] [-[a][l]] [-version].参数: -a:列出所有显示器的客户端应用程序信息; -display<显示器编号>: 指定X Server连接的显示器编号,该编号由"0"开始计算, 依序递增; -l: 使用详细格式列表; -m<最大指令长度>: 设置显示指令信息的最大长度,单位以字符计算.
xlsfonts
列出XServer使用的字体, 也能使用范本样式仅列出的符合条件的字体.参数: -I: 除字体名称外,同时列出字体的属性; -II: 此参数的效果和指定"i"参数类似,但显示更详细的信息; -III: 此参数的效果和指定"II"参数类似,但显示更详细的信息; -m: 配置参数"-l"使用时, 一并列出字体大小的上下限; -n<显示栏位数>: 设置每列显示的栏位数; -o: 以OpenFont的形式列出字体清单; -u: 列出字体清单时不依照其名称排序; -w<每列字符数>:设置每列的最大字符数.
xset
设置X-Window系统中的用户爱好的实用工具.-b: 峰铃器开关设置;-c: 键盘按键 声响设置.
at
在指定时间执行命令.at允许实用一套相当复杂的指定时间的方法.它能够接受在当天的hh:mm (小时:分钟) 式的时间指定.假如该时间已过去,那么就放在第二天执行.当然也能够实用midnight(深夜),noon(中午),teatime(饮茶时间, 一般是下午4点) 等比较模糊的词语来指定时间. 用户还能够采用12小时计时制,即在时间后面加上AM(上午) 或PM(下午) 来说明是上午还是下午.也能够指定命令执行的具体日期, 指定格式为monthday(月日) 或mm/dd/yy(月/日/年) 或dd-mm-yy (日.月.年).指定的日期必须跟在指定时间的后面.-f: 指定包含具体指令的任务文件;-q: 指定新任务的队列名称;-l: 显示待执行任务的列表;-d: 删除指定的待执行任务;-m: 任务执行完成后向用户发送E-mail.
atq
查询系统中待执行的任务列表, 也就是列出当前用户的at任务列表.-q: 查询指定队列的任务.
atrm
删除待执行任务队列中的指定任务.atrm 2 //删除任务2
batch
在指定时间, 当系统不繁忙时执行任务吗,用法与at相似.-f: 指定包含具体指令的任务文件;-q: 指定新任务的队列名称;-m: 任务执行完后向用户发送E-mail.
crontab=================
提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后, 默认会安装此服务工具,并且会自动启动crond进程, crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务.查看crontab服务状态: service crond status手动启动crontab服务: service crond start在上午8点到11点的第3和第15分钟执行: 3,15 8-11 * * * command每小时执行/etc/cron.hourly目录内的脚本:01 * * * * root run0-parts /etc/cron.hourly
init===============
进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1.init命令是Linux操作系统中不可缺少的程序之一,init纪念册是Linux内核引导运行的,是系统中的第一个进程.-b: 不执行相关脚本而直接进入单用户模式;-s: 切换到单用户模式.查看init的配置文件: more /etc/inittab查看系统当前运行的级别: runlevel
ipcrm
删除一个或更多的消息队列,信号量集或者共享内存标识.删除和SharedMemoryID 18602 相关的共享内存段: ipcrm -m 18602
ipcs
报告Linux中进程间通信设施的状态, 显示的信息包括消息列表,共享内存和信号量的信息.-a: 显示全部可显示的信息;-q: 显示活动的消息队列信息;-m: 显示活动的共享内存信息;-s: 显示活动的信号量信息.
killall================
按照进程的名称杀死进程, 使用此指令可以杀死一组同名进程.我们可以使用kill命令杀死指定进程PID的进程, 如果要找到我们需要杀死的进程, 我们还需要在之前使用ps等命令再配合grep来查找进程, 而killall把这两个过程合二为一,是一个很好用的命令.killall命令杀死除调用进程之外的所有进程.如果已经登录或正在运行应用程序,那么在执行killall命令之前退出或完成这些应用程序.-e: 对长名称进行精确匹配;-l: 忽视大小写的不同;-p: 杀死进程所属的进程组;-i: 交互式杀死进程,杀死进程前需要进程确认;-l: 打印所有已知信号列表;-q: 如果没有进程被杀死,则不输出任何信息;-r: 使用正则表达式匹配要杀死的进程名称;-s: 用指定的进程号代替默认信号"SIGTERM";-u: 杀死指定用户的进程.杀死所有同名进程: killall vikill -9 bash: 强制终止所有进程名为BASH的进程kill bash: 终止所有进程名为BASH的进程在Gnome中,你可以使用这个命令重启Nautilus: killall nautilus
xkill=================
xkill是图形方式kill一个应用.当你在终端键入"xkill",你的光标将立刻变成一个"十字".你只需要作的是在不正常的应用上点击一下,它就会立刻kill掉这个应用.如果你经常用的话,你也可以添加一个键盘快捷键来激活xkill.
pkill=============
按照进程名杀死进程.pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉.--o: 仅向找到的最小(起始)进程号发送信号;-n: 仅向找到的最大(结束)进程号发送信号;-P: 指定父进程号发送信号;-g: 指定进程组;-t: 指定开启进程的终端;pkill firefox: kill掉Firefox浏览器.使用正则表达式匹配的话,你可以输入进程名称的部分字符,比如:pkill fire. 为了避免Kill掉错误的进程, 你应该用一下"pgrep -l [进程名]"列表来匹配进程名称.
kill============
强制终结执行中的程序或工作.kill可将指定的信息发送至程序.预设的信息为SIGTERM(IS),可将指定程序终止.若仍然无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序.程序或工作的编号可利用ps指令或job指令查看.-a: 当处理当前进程时,不限制命令名和进程号的对应关系;-l<信息编号>: 若不加<信息编号>选项,则-l参数会列出全部的信息名称;-p: 指定kill命令只打印相关进程的进程号,而不发送任何信号;-s<信息名称或编号>: 指定要送出的信息;-u: 指定用户. (kill对应的是PID, pkill对应的是command)kill -9 pid 强制终止进程号为PID的进程, 此命令等同于kill SIGKILL PIDkill -9 PID1 PID2 PID3: 在同一时间kill多个进程.kill pid 终止进程,如果你不知道应用的PID,仅需要运行这个命令: ps ux, 它会显示所有正在运行的应用还有应用的PID. kill -l: 所有60个可以使用的信号的列表,基本上你只需要知道SIGTERM(IS)和SIGKILL(9).
nice
以指定的进程调度优先级启动其他的程序.-n: 指定进程的优先级(整数). 新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用大多CPU;nice -19 tar zcf pack.tar.gx documents
gitps
用于报告程序状况.gitps(gnu interactive tools process status)是用来报告并管理程序执行的指令, 基本上它就是通过ps指令来报告,管理程序,也能同gitps指令随时中断,删除不必要的程序.因为gitps指令会去执行ps指令,所以其参数和ps指令相当类似.
renice
可以修改正在运行的进程的调度优先级.预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级, 并修改所有隶属于该程序群组或用户程序的优先权.只有系统管理者可以改变其他用户程序的优先权,也有系统管理者可以设置负数等级.将行程id为987及32的行程拥有者为daemon及root的优先序号码加1: renice 1 987 -u daemon root -p 32注意: 每一个行程都有一个唯一的id.
nohup============
可以将程序以忽视挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端.无论是否将nohup命令的输出重定向到终端,输出都将附加到当前目录的nohup.out文件中.如果当前目录的nohup.out文件不可写, 输出重定向到$HOME/nohup.out文件中.如果没有文件能创建或打开以用于追加,那么command参数指定的命令不可调用.如果标准错误是一个终端,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件;nohup command > myout.file 2>&1& 在上面的例子中,输出被重定向到myout.file文件中.
pgrep
以名称为依据从运行进程队列中查找进程,并显示查找到的进程id.每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行.对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合.-o: 仅显示找到的最小(起始)进程号;-n: 仅显示找到的最大(结束)进程号;-l:: 显示进程名称;-p: 指定父进程号;-g: 指定进程组;-t: 指定开启进程的终端;-u: 指定进程的有效用户ID.pgrep -l chrom: 列出所有正在运行的含有关键字的进程.
procinfo
用于显示系统状态.DEBIAN中未发现此命令.procinfo(process information)指令从/proc目录里读取相关数据,将数据妥善整理过后输出到标准输出设备.
pidof
查找指定名称的进程的进程id号.-s: 仅返回一个进程号;-c: 仅显示具有相同"root"目录的进程;-x: 显示由脚本开启的进程;-o: 指定不显示的进程ID如pidof bash
lsof====================
查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP,UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议(TCP)和用户数据报协议(UDP)套接字等, 系统在后台都为该应用程序分配一个文件描述符, 无论这个文件的本质如何, 该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的.-a:列出打开文件存在的进程;-c<进程名>: 列出指定进程所打开的文件;-g: 列出GID号进程详情;-d<文件号>: 列出占用该文件号的进程;+d<目录>: 列出目录下被打开的文件;+D<目录>: 递归列出目录下被打开的文件;-n<目录>: 列出使用NFS的文件;-i<条件>: 列出符合条件的进程;(4,6,协议, :端口, @ip) -p<进程号>: 列出指定进程号所打开的文件;-u: 列出UID号进程详情.
pmap================
报告进程的内存映射关系,是Linux调试及运维一个很好的工具.-x:显示扩展格式;-d: 显示设备格式;-q: 不显示头尾行;-V: 显示指定版本.
ps===================
报告当前系统的进程状态.可以搭配kill指令随时中断,删除不必要的程序.ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态,进程是否结束,进程有没有僵死,哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的.ps -ef: 查看当前系统正在运行的所有进程ps -ef| grep bash: 查找当前系统正在运行的, 进程名包含BASH的进程ps -aux: 显示不以终端区分,所有进程按用户ID排列
pstack
可显示每个进程的栈跟踪.pstack命令必须由相应进程的属主或root运行.可以使用pstack来确定进程挂起的位置.此命令允许使用的唯一选项是要检查的进程的PID.
pstree====================
以树状图的方式展现进程之间的派生关系,显示效果比较直观.-a: 显示每个程序的完整指令,包含路径, 参数或是常驻服务的标示;-c: 不使用精简标示法;-G: 使用VT100终端的列绘图字符;-h: 列出树状图时, 特别指明现在执行的程序;-H<程序识别码>: 此参数的效果和指定"-h"参数类似,但特别标明指定的程序;-l: 采用长列格式显示树状图;-n: 用程序识别码排序.预设是以程序名称来排序;-p: 显示程序识别码;-u: 显示用户名称;-U: 使用UTF-8列绘图字符.
runlevel
用于显示当前Linux系统的运行等级.linux操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做runlevel, 同样,当linux操作系统关闭时也要经历另外几个不同的runlevel.进入每个runlevel都需要启动或关闭相应的一系列服务(services),这些服务(services)以初始化脚本的方式放置于目录/etc/rc.d/rc2.d/或者/etc/rc2.d下面(?代表runlevel的对应序号). 在大多数的linux发行版中, 通常有8个runlevel,多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面,而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面,runlevel 1和2 除了调试之外很少使用,runlevel s和S并不是直接给用户使用,而是用来为Single user mode作准备.linux的运行模式比起windows的启动模式的优势在于: 你可以在系统空闲时使用init命令切换你现在使用的runlevel,另外,当你关闭或者启动linux系统时你已经不知不觉中切换你的runlevel,系统关机进程需要调用runlevel(0或6)来关闭所有正在运行中的进程.
service=================
控制系统服务的实用工具,它以启动,停止,重新启动和关闭系统服务,还可以显示所有系统服务的当前状态.服务名即/etc/init.d目录下的脚本文件名.--status-all: 显示所服务的状态.修改了主机名,ip地址等信息时, 经常需要把网络重启使之生效: service network restart 重启mysql: service mysqld restart
systemctl==============
系统服务器管理指令, 它实际上将service和chkconfig这两个命令组合到一起.CENTOS7以上版本只用此命令,不再用service命令.启动nfs服务 systemctl start nfs-server.service设置开机自启动 systemctl enable nfs-server.service 查看服务当前状态 systemctl status nfs-server.service 重新启动某服务 systemctl restart nfs-server.service 查看所有已经启动的服务: systemctl list-units --type=service开启防火墙22端口 iptables -I INPUT -p tcp --dport 22 -j accept
telint
切换当前正在运行的Linux系统的运行等级.-t: 指定等待的秒数.
w==============重点
显示已经登陆系统的哟呼列表, 并显示用户正在执行的指令.执行这个命令可得知目前登入系统的用户有那些人,以及他们正在运行的程序.单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息.-h: 不打印头信息;-u: 当显示当前进程和cpu时间时忽视用户名;-s: 实用短输出格式;-f: 显示用户从哪登陆.
watch
以周期性的方式执行给定的指令,指令输出以全屏方式显示.watch是一个非常实用的命令, 基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省的你一遍遍的手动运行.-n: 指定指令执行的间隔时间(秒);-d: 高亮显示指令输出信息不同之处;-t: 不显示标题.FreeBSD和Linux下watch命令的不同,在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果,如: watch -n 1 -d netstat -ant, 而在FreeBSD下的watch命令是查看其它用户的正在运行的操作,watch允许你偷看其它terminal正在作什么,该命令 只能让超级用户使用.
ltrace
跟踪进程调用库函数的情况.最基本应用,不带任何参数: ltrace ./a.out 输出调用时间开销: ltrace -T ./a.out 显示系统调用: ltrace -S ./a.out
iotop
监视磁盘I/O使用状况的top类工具.iotop具有与top相似的UI,其中包括PID,用户,I/O,进程等相关信息.Linux下的IO统计工具iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以哼方便的查看.-o: 只显示有io操作的进程-b: 批量显示,无交互,主要用作记录到文件.-n NUM: 显示NUM次,主要用于非交互式模式.-d SEC:间隔SEC秒显示一次.-p PID: 监控的进程pid.-u USER:监控的进程用户.
mc
mc命令用于提供一个菜单式的文件管理程序.执行mc之后,将会看到菜单式的文件管理程序,供分成4个部分.
mdel
用来删除MSDOS格式的档案.在删除只读之前会有提示信息产生.
dumpe2fs
查询 "ext2/ext3" 文件系统的超级块和块组信息.-b: 打印文件系统中预留的块信息;-ob<超级块>: 指定检查文件系统时使用的超级块;-OB<块大小>: 检查文件系统时使用的指定的块大小;-n: 仅显示超级块信息;-i: 从指定的文件系统映像文件中读取文件系统信息;-x: 以16进制格式打印信息块成员.例如dumpe2fs /dev/hda1
fsck
检查且试图修复文件系统中的错误.当文件系统发生错误,可用fsck指令尝试加以修复.linux的文件系统损坏会导致linux不正常关机,出错的时候如果系统告诉你是哪一块硬盘的分区有问题,比如是/dev/hda2,接着用如下的命令去对付它:fsck -y /dev/hda2结束后使用reboot命令重启系统这样就好了!
e2fsck
检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误.检查/dev/sda1是否有问题,如发现问题便自动修复:e2fsck -a -y /dev/sda1;执行e2fsck或fsck前请先umount partition,否则有机会令档案系统毁损.如果需要对根目录/进程检查及修复,便需要进入singal user mode执行.
e2image
将处于危险状态的 "ext2" 或者 "ext3"文件系统保存到文件中.-l: 将文件中的 "ext2/ext3" 文件系统元数据还原到分区上.
e2label
设置第二扩展文件系统的卷标.
resize2fs
增大或者收缩未加载的 "ext2/ext3" 文件系统的大小.如果文件系统是处于mount状态下,那么它只能做到扩容,前提条件是内核支持在线resize, linuxkernel2.6支持在mount状态下扩容但仅限于ext3文件系统.-d: 打开调试特性;-p: 打印已经完成的百分比进度条;-f: 强制执行调整大小操作,覆盖掉安全检查操作;-F: 开始执行调整大小前,刷新文件系统设备的缓冲区.LV分区重设大小: resize2fs /dev/vbirdvg/vbirdlv
tune2fs=============
允许系统管理员调整 "ext2/ext3" 文件系统中的可改参数.Windows如果意外断电死机,下次开机一般会系统自检.Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令自行定义自检周期及方式.tune2fs -c 30 /dev/hda1 设置强制检查前文件系统可以挂载的次数tune2fs -c -l /dev/hda1 关闭强制检查挂载次数限制.tune2fs -i 10 /dev/hda1 10天后检查tune2fs -i 1d /dev/hda1 1天后检查tune2fs -i 3w /dev/hda1 3周后检查tune2fs -i 6m /dev/hda1 半年后检查tune2fs -i 0 /dev/hda1 禁用时间检查tune2fs -j /dev/hda1 添加日志功能,将ext2转换成ext3文件系统tune2fs -r 40000 /dev/hda1 调整/dev/hda1分区的保留空间为40000个磁盘块tune2fs -o acl,user_xattr /dev/hda1 设置/dev/hda1挂载选项,启用Posix Access Control Lists和用户指定的扩展属性
findfs
依据卷标 (Label) 和UUID (通用唯一识别码) 查找文件系统所对应的设备文件.findfs命令会搜索整个磁盘,看是否有匹配的标签或者UUID没有,如果有则打印到标准输出上.findfs命令也是e2fsprogs项目的一部分.通过卷标名查找对应的文件系统: findfs LABEL=/boot
mke2fs
创建磁盘分区上的 "etc2/etc3" 文件系统.创建指定的ext2文件系统: mke2fs -q /dev/hda1
mkfs===================
在设备上 (通常为硬盘) 创建Linux文件系统.是个危险命令, mkfs之后写的任何命令都将会被一个空白的linux文件系统格式化,替代.mkfs本身并不执行建立文件系统的工作, 而是去调用相关的程序来执行.在/dev/hda5上建一个msdos的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来:mkdfs -V -t msdos -c /dev/hda5mkfs -t ext3 /dev/sda6 //将sda6分区格式化为ext3格式mkfs -t ext2 /dev/sda7 //将sda7分区格式化为ext2格式mkfs.cranfs (格式化硬盘, 无需管理员权限)mkfs.ext4 /dev/sdb1
mount=================
加载文件系统到指定的加载点.常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用mount命令来手动完成挂载.-l: 显示已经加载的文件系统列表;-v: 冗长模式,输出指令执行的详细信息;-n: 加载没有写入文件 "/etc/mtab"中的文件系统;-r: 将文件系统加载为只读模式;-a: 加载文件"/etc/fstab"中描述的所有文件系统.在决定将设备挂接之前, 先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(Mount Point)的目录.建议在/mnt里建几个/mnt/cdrom./mnt/floppy, /mnt/mo等目录,当作目录的专用挂载点.mount /dev/sdc1 /mnt: 将sdc1分区挂载到/mnt挂载点mount可以将Windows分区作为Linux的一个"文件:挂接到Linux的一个空文件夹下.首先要在/mnt下建立winc文件夹,在命令提示符下输入下面命令: mount -t vfat /dev/hda1 /mnt/winc, 即标示将Windows的C分区挂到Linux的/mnt/winc目录下.使用类似的方法可以访问Windows系统的D,E盘.在Linux系统显示Windows的分区一般顺序这样的: hda1为C盘,hda5为D盘,hda6为E盘...以此类推> 可以通过加入一些参数让它显示中文,还以上面的操作为例,此时输入命令: mount -t vfat -o iocharset=cp936 /dev/hda1 /mnt/winc. 许多Linux发行版本现在都可以自动加载Vfat分区来访问Windows系统,而Red Hat各个版本都没有自动加载Vfat分区,因此还需要进行手工操作.
umount===============
卸载已经加载的文件系统.利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱.通过设备名卸载: umount -v /dev/sda1通过挂载点卸载: umount -v /mnt/mymount/ umount -vl /mnt/mymount: 执行延迟卸载 eject /dev/cdrom:卸载并弹出CD. Linux挂装CD-ROM后,会锁定CD-ROM,这样就不能用CD-ROM面板上的Eject按钮弹出它.但是,当不再需要光盘时,如果已经将/cdrom作为符号链接,请使用umount /cdrom来卸载它.仅当无用户正在使用光盘时,该命令才会成功.该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口.
mountpoint
判断指定的目录是否是加载点,如果是挂载点返回0,如果不是就返回非0.设备总是挂载在某个指定的目录下,所以就可以使用mountpoint这条命令来确认某个目录是否"临时性" 的被文件系统占用.-q: 不打印任何信息;-d: 打印文件系统的主设备号和次设备号;-x: 显示块数设备的主设备号和次设备号.查看/mnt目录是不是挂载点: mountpoint /mnt查看/usr/local是不是挂载点: mountpoint /usr/local查看挂载的/mnt的主/次设备号码: mountpoint -d /mnt看一个设备的主/次设备号: mountpoint -x /dev/sda9
quota
显示用户或者工作组的磁盘配额信息,输出信息包括磁盘使用和配额限制.-g: 列出群组的磁盘空间限制;-q: 简明列表,只列出超过限制的部分;-u: 列出用户的磁盘空间限制;-v: 显示该用户或群组,在所有挂入系统的存储设备的空间限制.
edquota
编辑指定用户或工作组磁盘配额.edquota预设会使用vi来编辑使用者或群组的quota设置.-u: 设置用户的quota,这是预设的参数;-g: 设置群组的quota;-p<原用户名称>: 将原用户的quota设置套用至其它用户或群组;-t: 设置宽限期限.
quotacheck
通过扫描指定的文件系统,获取磁盘的使用情况,创建,检查和修复磁盘配额(quota)文件.执行quotacheck指令,扫描挂入系统的分区,并在备份区的文件系统根目录下产生quota.user和quota.group文件,设置用户和群组的磁盘空间限制.-a: 扫描在/etc/fstab文件里,有加入quota设置的分区;-d: 详细显示指令执行过程,便于排错或了解程序执行的情形;-g: 扫描磁盘空间时,计算每个群组识别码所占用的目录和文件数目;-R: 排除根目录所在的分区;-u: 扫描磁盘空间时,计算每个用户识别码所占用的目录和文件数目;-v: 显示指令执行过程.将所有的在/etc/mtab内, 含有quota支持的partition进行扫描: quotacheck -avug 强制扫描已经挂载的filesystem: quotacheck -avug -m
quotaoff
关闭Linux内核中指定文件系统的磁盘配额功能.-a: 关闭在/etc/fstab文件里,有加入quota设置的分区的空间限制;-g: 关闭群组的磁盘空间限制;-u: 关闭用户的磁盘空间限制;-v: 显示指令执行过程.
quotaon
激活Linux内核中指定文件系统的磁盘配额功能.
执行quotaon指令可开启用户和群组的才半秒年空间限制,各分区的文件系统根目录必须有quota.user和quota.group配置文件.
-a: 开启在/etc/fstab文件里,有加入quota设置的分区的空间限制;
-g: 开启群组的磁盘空间限制;
-u: 开启用户的磁盘空间限制;
-v: 显示指令执行过程.
总结
标签:脚本,文件,Shell,指定,二十七,命令,进程,txt,目录 来源: https://blog.csdn.net/qq_43058317/article/details/117958995