Linux命令大全
一、系统管理与设置;
二、用户和用户组管理;
三、磁盘管理;
四、文件和目录管理;
五、备份与压缩;
六、网络管理与相关应用;
七、vi/vim编辑器;
八、Shell编程
一、系统管理与设置
1、信息显示命令
# man & info //帮助手册
# man 命令 //显示相应命令的帮助内容
# arch //显示当前系统体系结构
# cal //显示当前月份
# cal 2012 //显示2012年的月历
# cal 10 2012 //显示2012年10月的月历
# cal -y //显示整年日历
# cat /etc/issue //看当前系统发行版本
# cat /etc/redhat-release//看操作系统版本(redhat和centos)
# cat /etc/shells //查看shell版本
# cat /etc/services |more //查看各种服务的port
# cat /proc/cpuinfo //显示CPU信息
# cat /proc/cpuinfo | grepflags | grep ' lm ' | wc -l //结果大于0, 说明支持64位计算。lm指long mode, 支持lm则是64位
# getconf LONG_BIT //查看CPU位数(32or 64)
# cat /proc/cpuinfo |grep name | cut -f2 -d: | uniq -c //查看CPU型号
# cat /proc/cpuinfo |grep physical | uniq -c //查看实际有几颗CPU
# getconf LONG_BIT //显示当前CPU运行在什么模式下
# cat /proc/devices //列出字符和块设备的主设备号,以及分配到这些设备号的设备名称
# cat/proc/filesystems //看文件系统
# cat/proc/interrupts //显示中断
# cat /proc/ioports //看设备io端口
# cat /proc/loadavg // 看系统负载
# cat /proc/meminfo //看内存信息
# cat /proc/mounts //显示当前系统所安装的文件系统信息
# free //看内存信息
# dmidecode //查看内存型号
#/usr/platform/sun4u/sbin/prtdiag -v //查看内存信息(unix)
# cat /proc/modules //看当前系统模块
# cat /proc/net/dev 显示网络适配器及统计
# cat/proc/partitions //看当前系统分区
# cat/proc/scsi/scsi //查看scsi硬盘信息
# cat /proc/swaps //看所有swap分区
# cat /proc/version //查看Linux内核版本
# cat/etc/security/limits.conf //查看打开最大文件数等设置
# cd /proc/pid号;ls -lexe //查看进程的完整路径
# date //显示当前时间
# date +'%Y/%m/%d' //以yyyy/mm/dd格式显示日期
# date +'%Y-%m-%d' //以yyyy-mm-dd格式显示日期
# date +%H:%M //显示时、分
# date -r test //显示test文件最后一次的修改时间
# dmesg //看启动信息
# dmidecode | grep"Product Name" //查看机器型号
# dmidecode | more //查看硬件(如内存型号、生产厂家等)信息
# dmidecode |grep 'SerialNumber' //查看主板的序列号
# dmidecode -q //显示硬件系统部件 (SMBIOS / DMI)
# dmidecode -ssystem-serial-number //查看系统序列号
# dmidecode -t 11 //查看OEM信息
# dmidecode -tmemory //查看内存信息
# dmidecode -tprocessor //查看CPU详细信息
# echo //显示文本行
# echo $LANG //显示系统语言
# echo $PATH //显示系统的环境变量
# env //显示所有环境变量
# export //查看环境变量(在bash下)
# fgconsole //显示活动的虚拟终端数目
# file -s /dev/sd* //查看设备信息
# file /sbin/init //查看系统是32位还是64位:
64位系统输出信息如下:
sbin/init: ELF 64-bit LSBexecutable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked(uses shared libs), for GNU/Linux 2.6.9, stripped
32位系统输出信息如下:
/sbin/init: ELF 32-bitLSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamicallylinked (uses shared libs), stripped
# free -m //以M为单位显示内存状态
# free -m -s5 //以M为单位,每隔5秒刷新一次内存状态
# gcc -v //查看GCC版本
# getconf LONG_BIT //查看系统是32位还是64位
# glxinfo //显示有关GXL扩展和OpenGL渲染器的信息
# grep -i '10.52'/etc/hosts //查找/etc/hosts文件中包含10.52的行,不区分大小写
# hdparm -i /dev/hda 罗列一个磁盘的架构特性
# hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
# head -5/etc/passwd //看文件passwd的前5行
# tail -10/etc/passwd //看文件passwd的后10行
# sed -n '5,10p' /etc/passwd //查看文件passwd的第5行到第10行
# history //显示历史记录
# history 5 //显示最近执行的5个历史记录
# history -c //清除历史记录
# sysdef -h //查看主机ID(Unix)
# hostname //显示主机名
# hostname -a //显示主机别名
# hostname -d //显示主机域名
# hostname -i //显示主机IP地址
# hostname 主机名 //设置主机名称
# hwclock //获取当前硬件时间
# hwclock --show //查看硬件时间
# clock --show //查看硬件时间
# hwclock –version //显示hwclock命令的版本信息
# info 命令 //显示相应命令info内容
# iostat -d 2 3 //评估磁盘性能,每隔2s刷新一次信息,且刷新3次
# lastlog //最近登入的时间
# locale //显示系统当前的语言设置
# locale -a //显示所有可用字体
#/etc/sysconfig/i18n //语言配置文件
# lsb_release -a //查看系统发行版本,该命令适合所有的linux发行版本
# lsmod //显示所有已加载的模块
# lspci | more //显示当前系统的硬件配置
# lspci -v //查看系统硬件配置详细信息
# lspci -vv |more //查看系统硬件配置更为详细的信息
# lspci| grepEthernet //查看网卡信息
# lspci -tv //列出所有PCI设备
# lsusb //输出所有的usb设备
# ls /etc/rc3.d/S* |cut-c 15- //显示运行3级别开启的服务
# ls -l/lib/modules/$(uname -r)/kernel/fs //查看Linux支持哪些文件系统
# cat/proc/filesystems //查看当前已加载到内存中支持的文件系统
# mount //列出系统的所有分区
# mpstat //多处理器使用率
# netstat -pan|grep177 //查看177端口情况
# netstat -nlap //查询进程占用哪些端口
# ps aux //显示所有进程状态和进程的基本信息
# ps -e //查看当前所有进程
# ps -u root –N //显示所有不是以root身份运行的进程
# ps -U ow2003 //显示ow2003用户进程
# ps -ef |grepow2003 //显示ow2003用户进程
# pstree -h //高亮显示当前正在执行的进程
# pstree -p //以树状图方式显示进程及进程号
# pwd //显示当前目录
# rpm -qaredhat-release //看操作系统版本(只适用RH系列)
# rpm -qa | xargs rpm-V //查看系统中所有被修改过的文件,这对新安装的系统比较有效
# rpm -qa vsftpd | xargsrpm -V //查看系统中某个rpm包中的文件是否被修改
# runlevel //显示系统运行级别
# set //显示所有本地定义的Shell变量
# stat -f filename //显示文件系统状态
# stat filename //显示文件详细内容
# tac /etc/hosts //与cat相反,是将hosts内容从最后一行到第一行反向显示在屏幕上
# time ls //查看执行ls命令所需的时间
# top n 2 //显示进程信息,刷新两次后退出
# top -d 2 -n 3 -b>test.txt //将top的结果输出到文件test.txt中(每隔2秒,打印3次)
# top -bn1 //top命令列出所有进程
# top -bn1 >1.txt //将进程输出到文件1.txt里
# touch --help //显示touch帮助信息
# tty //显示当前终端的名称
# uname -a //显示全部信息
64位系统输出如下信息:
Linux server141.guodu.net2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64GNU/Linux
32位系统输出如下信息:
Linux bank.guodu.net2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux
# uname -i //显示硬件平台
# uname -m //显示机器硬件名
# uname -n //显示网络节点主机名
# uname -o //显示操作系统
# uname -p //显示处理器类型
# uname -r //显示内核版次
# uname -s //显示内核名
Linux内核版本信息:
Redhat9.0———————————————2.4.20-8
RHEL 3 Update8————————————2.4.21-47
RHEL 4————————————————2.6.9-5
RHEL 4 Update 1————————————2.6.9-11
RHEL 4 Update2————————————2.6.9-22
RHEL 4 Update3————————————2.6.9-34
RHEL 4 Update4————————————2.6.9-42
RHEL 4 Update5————————————2.6.9-55
RHEL 4 Update6————————————2.6.9-67
RHEL 4 Update7————————————2.6.9-78
CENTOS 5/RHEL 5———————————2.6.18-8
CENTOS 5.1/RHEL 5 Update1——————2.6.18-53
CENTOS 5.2/RHEL 5 Update2——————2.6.18-92
CENTOS 5.3/RHEL 5 Update3——————2.6.18-128
CENTOS 5.4/RHEL 5 Update4——————2.6.18-164
CENTOS 5.5/RHEL 5 Update5——————2.6.18-194
CENTOS 5.6/RHEL 5 Update6——————2.6.18-238
# uptime //查询系统自启动到现在总的运行时间及负载情况
# vmstat //显示虚拟内存的使用信息
# vmstat 2 3 //显示虚拟内存每隔2s刷新一次信息,且刷新3次
# whatis [命令或数据] //相当于man -f [命令或数据]
# yes string //设定重复显示的字符串
2、系统管理命令
# bc //调用计算器(如果要输出小数,则要执行 scale=number,这个number就是小数点后的位数),输入quit退出bc
# chkconfig rloginon //开启rlogin服务
# chkconfig rsh on //开启远端服务器rsh
# chsh //shell设置
# chsh -l //列出当前所有可用的shell
# chsh -s /bin/bash //改变当前的shell设置为/bin/bash
# /bin/sh //切换shell
# exit //退出shell
# clear //清除终端屏幕
# cp /dev/cdrom mycd.iso& //后台运行制作镜像(加&)
# Ctrl + L //清除终端屏幕
# dos2unix filedos.txtfileunix.txt //将一个文本文件的格式从MSDOS转换成UNIX
# unix2dos fileunix.txtfiledos.txt //将一个文本文件的格式从UNIX转换成MSDOS
# recode ..HTMLpage.html //将一个文本文件转换成html
# recode -l | more //显示所有允许的转换格式
# badblocks -v/dev/hda1 //检查磁盘hda1上的坏磁块
# fsck /dev/hda1 //修复/检查hda1磁盘上linux文件系统的完整性
# fsck.ext2/dev/hda1 //修复/检查hda1磁盘上ext2文件系统的完整性
# e2fsck /dev/hda1 //修复/检查hda1磁盘上ext2文件系统的完整性
# e2fsck -j/dev/hda1 //修复/检查hda1磁盘上ext3文件系统的完整性
# fsck.ext3/dev/hda1 //修复/检查hda1磁盘上ext3文件系统的完整性
# fsck.vfat/dev/hda1 //修复/检查hda1磁盘上fat文件系统的完整性
# fsck.msdos/dev/hda1 //修复/检查hda1磁盘上dos文件系统的完整性
# dosfsck /dev/hda1 //修复/检查hda1磁盘上dos文件系统的完整性
# echo $shell //显示当前用户的默认shell
# fg 2178 //将后台进程编号为2178调到前台
# ftp 10.52.19.189& //让ftp进程在后台执行
# init 0 //关闭系统(停止)
# telinit 0 //关闭系统(3)
# init 1 //单用户模式(root)
# init 2 //多用户文本模式(不能使用NFS)
# init 3 //多用户文本模式(能使用网络共享)
# init 5 //图形登录模式
# init 6 //重新启动系统
# shutdown -h now //关闭系统(1)
# shutdown -hhours:minutes & //按预定时间关闭系统
# shutdown -c //取消按预定时间关闭系统
# shutdown -r now //重启(1)
# reboot //重启(2)
# logout //注销
# jobs 查看后台运行的进程
# kill -9 2178 //强制终止ID为2178的进程(强制法可能导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效)
# mc //对当前目录文件进行可视化管理
# ntsysv //设置系统开机时启动的各种服务
#system-config-services //图形界面的设置系统开机时启动的各种服务
# pgrep nslookup //显示与指定字符串相关的进程
# pgrep -u root -l //查找由root用户创建的进程
# pgrep -u root -l-v //查找不是由root用户创建的进程
# ps -aux //显示当前运行的进程(静态)
# ps -ef // 查看所有进程
# pstree //查看当前进程树
# pwck /etc/passwd //检测passwd文件的正确性
# pwck /etc/shadow //检测shadow文件的正确性
# rlogin -l ow200310.52.19.200 //以用户ow2003登录远端主机
# rmmod 未使用的模块名 //卸载unused模块
# rsh 10.52.19.189 //登录远端主机10.52.19.189
# rsh -l ow200310.52.19.189 //以用户ow2003登录远端主机
# runlevel //显示系统当前运行级别
# sleep 2m //让系统休眠2分钟
# ssh 10.52.19.189 //登录远端主机10.52.19.189
# ssh -l ow200310.52.19.189 //以用户ow2003登录远端主机
# sudo -L //显示sudo命令可以使用的参数及相关描述信息
# sudo -u ow2003 ls -l/home //以用户ow2003身份执行命令
# suspend //暂停正在使用的shell
# suspend -f //强制暂停正在使用的shell
# symlinks -v / //显示根目录下的所有符号链接
# testparm //测试samba配置,回车后继续
# top //显示当前运行的进程(动态)
# top (Ctrl+Z) // 将当前top进程调到后台并停止
# vlock //锁定虚拟终端
# watch -n 10--difference=cumulative who //以高亮字符显示累加差异
# watch -n 10 who //每隔10秒执行一次who命令
# whereis //找到指定文件的源、二进制文件和手册等各部分
# xkill //鼠标点死掉的图形即可终止,如果想终止xkill ,按右键取消
bash 快捷键:
常用:
Ctrl+a 开始位置
Ctrl+e 最后位置
Ctrl+k 删除此处至末尾所有内容
Ctrl+u 删除此处至开始所有内容
Ctrl-C 杀死当前任务
Ctrl-L 刷新屏幕
Ctrl-shift-c 复制
Ctrl-shift-v 粘贴
tab 补全
terminal窗口操作:
Alt+1 切换到标签页1
Alt+2 切换到标签页2
Alt+3 切换到标签页3
Ctrl+PageDown 后一标签页
Ctrl+PageUp 前一标签页
Shift+Ctrl+N 新建窗口
Shift+Ctrl+PageDown 标签页右移
Shift+Ctrl+PageUp 标签页左移
Shift+Ctrl+Q 关闭终端
Shift+Ctrl+T 新建标签页
Shift+Ctrl+W 关闭标签页
terminal窗口中的复制/粘贴:
Shift+Ctrl+C 复制
Shift+Ctrl+V 粘贴
改变terminal窗口大小:
!! 执行上一条命令
!?string? 执行含有string字符串的最新命令
!num 执行命令历史列表的第num条命令
↑(Ctrl+p) 显示上一条命令
↓(Ctrl+n) 显示下一条命令
Alt+< 历史列表第一项
Alt+> 历史列表最后一项
Ctrl - 减小
Ctrl+Shift + 放大
Ctrl 0 原始大小
Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令
Ctrl+s 与Ctrl+r类似,只是正向检索
F11:全屏
history 显示命令历史列表
ls !$ 执行命令ls,并以上一条命令的参数为其参数
光标移动:
Alt+b 光标向后移动一个单词
Alt+c 把当前词汇变成首字符大写
Alt+d 剪切光标之后的词
Alt+f 光标向前移动一个单词
Alt+l 把当前词转化为小写
Alt+t 交换当前与以前单词的位置
Alt+u 把当前词转化为大写
Ctrl+(x u) 按住Ctrl的同时再先后按x和u,撤销刚才的操作
Ctrl+a 光标移到行首。
Ctrl+b 光标左移一个字母
Ctrl+c 删除整行
Ctrl+d 删除光标所在字母(注意与backspace以及Ctrl+h的区别,这两个是删除光标前的字符)
Ctrl+d 退出当前 Shell(当前行无字符时)
Ctrl+e 光标移到行尾。
Ctrl+f 光标右移。
Ctrl+h 删除光标前一个字符,相当于按 backspace 键。
Ctrl+k 清除光标后至行尾的内容。
Ctrl+l 清屏,相当于clear
Ctrl+q 重新启用挂起的shell
Ctrl+r 搜索以前输入过的命令。将有提示,根据输入的关键字搜索bash的history
Ctrl+s 挂起当前shell
Ctrl+t 交换光标位置前的两个字符。
Ctrl+u 清除光标前至行首间的所有内容。
Ctrl+v 插入特殊字符,如Ctrl+v+Tab加入Tab字符键
Ctrl+w 清除光标所在处之前的一个词(以空格、标点等为分隔符)
Ctrl+y 粘贴或恢复上次的删除。
Ctrl+z 把当前进程转到后台运行,使用 fg 命令恢复。
Esc+b 移动到当前单词的开头
Esc+f 移动到当前单词的结尾
Esc+t 颠倒光标所在处及其相邻单词的位置
Esc+w 删除光标所在处之前的字符至其单词尾(以空格、标点等为分隔符)
3、系统维护命令
# alias //列出已设置的别名
# alias rm 'rm -i' //设置别名
# authconfig //设置系统的认证信息
# bind -l //显示按键组合的内容
# bind -q abort //查询abort上绑定的键
# chattr +i filename //禁止删除
# chattr -i filename //取消禁止
# chattr +i/etc/fstab //禁止修改fstab文件
# chattr -i/etc/fstab //取消禁止修改fstab文件
# chmod 4755 test //使test文件具有SUID权限(4为SUID)。SUID对目录是无效的
# chmod 2755 test //使test文件具有SGID权限(2为SGID)。SGID可用于文件或目录
# chmod 1755 /test //使/test目录具有SBIT权限(1为Sticky bit即SBIT)。SBIT只对当前目录有效
# chmod 7666 test //test文件拥有者无执行权限,设置后的大写S、T表示“空的”,即没有执行权限
# lsattr -a test //显示文件test的隐藏属性
# lsattr -a //显示当前目录下所有的目录和文件,包括隐藏文件或目录
# lsattr -R //递归显示指定目录及子目录的内容
# lsattr //显示当前目录下的文件属性
# chkconfig --list //列出chkconfig所知道的所有服务
# chkconfig telnetoff //关闭telnet服务
# chkconfig telneton //开启telnet服务
# cat /etc/sysconfig/clock //查看所属时区和是否使用UTC时间
# date -s 2007-08-03 //只修改日期
# date -s"2007-08-03 14:15:00" //同时修改日期和时间,加双引号
# date -s 02/16/2012 //修改日期(按月日年格式)
# date -s 13:56:00 //修改时间(按时分秒格式)
# clock -r //查询BIOS时间
# cp/usr/share/zoneinfo/Asia/Shanghai /etc/localtime //修改时区
修改/etc/sysconfig/clock文件的内容为:
ZONE=”Asia/Shanghai”
UTC=false
ARC=false
# hwclock –w //同步BIOS时间
# hwclock -set-date="07/07/06 10:19:00'' //设置硬件时间(月/日/年 时:分:秒)
# clock -set-date="07/07/06 10:19:00'' //设置硬件时间(月/日/年 时:分:秒)
# hwclock -hctosys //硬件时钟与系统时钟同步(hc代表硬件时间,sys代表系统时间)
# clock -hctosys //硬件时钟与系统时钟同步(hc代表硬件时间,sys代表系统时间)
# hwclock -systohc //系统时钟与硬件时钟同步
# clock -systohc //系统时钟与硬件时钟同步
# tzselect //时区设置
# DEB 包(Debian, Ubuntu 以及类似系统)
# dpkg -ipackage.deb //安装/更新一个 deb 包
# dpkg -rpackage_name //从系统删除一个deb 包
# dpkg -l //显示系统中所有已经安装的 deb 包
# dpkg -l | grephttpd //显示所有名称中包含"httpd" 字样的deb包
# dpkg -spackage_name //获得已经安装在系统中一个特殊包的信息
# dpkg -Lpackage_name //显示系统中已经安装的一个deb包所提供的文件列表
# dpkg --contentspackage.deb //显示尚未安装的一个包所提供的文件列表
# dpkg -S /bin/ping //确认所给的文件由哪个deb包提供
# declareBASH=/bin/csh //修改变量BASH的值为/bin/csh
# declare -p //显示shell的所有变量及值
# declare -x //显示所有环境变量的值
# dircolors -b //显示Bourne Shell颜色代码设置
# dircolors -c //显示C Shell颜色代码设置
# dircolors -p //显示ls命令默认颜色值
# enable -a //显示shell的所有内置指令
# enable alias //加载内部命令alias
# enable -n alias //关闭alias
# eval pwd;df -h;ls //连接多个命令pwd,df -h和ls
# export MYENVIRON //自定义一个环境变量MYENVIRON
# export MYNAME= "Wang Xuri" //定义环境变量并赋值
# export -p //列出当前的环境变量值
# unset MYNAME //清除环境变量MYNAME
(注:以上命令使用的shell是bash)
# fdisk /mbr //删除GRUB
# hostid //显示当前主机的数字标识
# ldd /bin/ls //显示/bin/ls命令所使用的共享函数库
# ldd -v /bin/ls //以冗余模式显示的/bin/ls所使用的共享函数库
# losetup /dev/loop0 //显示设备/dev/loop0的状态
# depmod //分析可载入模块的相依性
# insmod //载入模块
# lsmod //显示所有已加载的模块
# lsmod -v usb-uhci //使用insmod命令安装模块"usb-uhci"
# modinfo //显示kernel模块的信息
# modprobe //自动处理可载入模块
# modprobe -c //显示当前自动处理可载入模块的默认配置
# rmmod //删除模块
# modprobe -v8139too //安装网卡8139too
# mouseconfig --devicepsaux //指定鼠标端口为PS/2,鼠标为psaux
# mouseconfig --nouigenericusb //以命令形式指定鼠标类型为genericusb
# mouseconfig --text //在图形界面方式下配置鼠标
# resize -c //使用C shell表示当前终端窗口大小
# resize -s 30 100 //设置虚拟终端大小,高为30列,长为100个字符
# resize -u //使用Bourne shell表示当前终端窗口大小
# rpm --checksigpackage.rpm //确认一个rpm包的完整性
# rpm -e package-name //卸载具体的软件包
# rpm -ev RealPlayer //卸载软件RealPlay
# rpm -hivRealPlayer10GOLD.rpm //安装RealPlayer10GOLD.rpm包
# rpm -i mplay.rpm //安装mplay软件包(不显示信息)
# rpm -ivh --forcemplay.rpm //强制安装mplay软件包(显示信息)
# rpm -ivh package-name//安装软件包并显示过程
# rpm -oldpackgemplay.rpm //降级mplay软件包
# rpm -q http //查询指定的包http是否安装
# rpm -qinstalled-package-name //查看是否安装
# rpm -q telnet-server //查看telnet服务器包
# rpm -qa //查看系统中已安装的所有rpm包(不分屏)
# rpm -qa|grep ftp //查询指定RPM
# rpm -qa|less //查询已安装RPM(分屏)
# rpm -qf luo //查询文件luo所属的软件包
# rpm -qf package-name //查询某个文件所属的软件包
# rpm -qi http //查询指定的包http详细信息(已安装)
# rpm -qi package-name //查看软件的描述信息
# rpm -qi Realplayer //查询RealPlay的安装信息
# rpm -ql http //查询指定的包http文件列表(已安装)
# rpm -ql package-name //查询软件包的文件列表
# rpm -qp package-name //查询未安装的软件包信息
# rpm -qpi http //查询指定的包http详细信息(未安装)
# rpm -qpl http //查询指定的包http文件列表(未安装)
# rpm -U mplay.rpm //升级mplay软件包
# rpm -Uvh package-name//升级软件包并显示过程
# rpm -V package-name //验证软件包的大小,类型等等
# which mount //获得mount所属包可执行文件路径
# for i in ‘rpm -qa |grep-i php’
>do rpm -e $i -nodeps
>done //删除系统中与软件php相关的所有已安装的软件包
# alias td //显示别名信息
# alias td=tcpdump //tcpdump命令设置别名td
# runlevel //显示当前系统运行等级
# runlevel 2 //设置执行级别
# set //显示当前的环境变量设置
# set SHELL “/bin/sh” //设置环境变更SHELL的值为/bin/sh
# setserial -a/dev/ttyS1 //显示串口/dev/ttyS1的详细配置信息
# setserial -v/dev/ttyS1 //显示串口/dev/ttyS1的配置信息
# setup //用来设置认证、防火墙、鼠标、网络配置、系统服务等公用程序
# fdisk -l //显示分区信息
# startx & init5 //进入图形界面
# swapoff /dev/sda3 //卸载交换区/dev/sda3
# swapon /dev/sda3 //加载交换区/dev/sda3
# sync //将内存信息同步写入磁盘(在一些“危险”操作前使用)
# system-config- //连续按两下tab键,调出配制命令列表,以备选用
# tmpwatch -t 100/tmp/ //查看100小时内未被使用的文件(不删除文件,仅进行测试)
# tmpwatch 100 /tmp/ //删除/tmp目录下100小时内未被使用的文件
# tmpwathc -s 100/tmp/ //在删除文件之前,使用fuser命令检测该文件是否正被使用
# ulimit -a //显示系统资源配置
# ulimit -n 1000 //设置同一时间可打开的文件数目
# ulimit -u 500 //设置单用户创建进程上限为500
# ulimit -v 1024 //设置最大虚拟内存数
# unalias td //删除别名
# unset pwd //删除环境变量
# up2date //升级Red Hat Linux系统
# up2date -l //列出所有可用的升级包
释放linux系统的内存(在RHEL4.0及以上版本测试通过。注:在应用程序未退出时不能使用该命令):
# free -m
# sync
# echo 3 > /proc/sys/vm/drop_caches
# cat/proc/sys/vm/drop_caches
# free -m
# ./configure;make;makeinstall //编译安装过程(cd到安装目录执行)
# sh ./file_name //安装.run后缀文件
# system-config-packages//启动图形界面包管理程序
# nvidia-settings //设置nvidia显卡
为内核打补丁
# bunzip2 patch-2.6.0-rmk2.bz2 //将包解压成patch-2.6.0-rmk2
# mv patch-2.6.0-rmk2./linux-2.6.0 //将补丁移到大内核目录
# cd linux-2.6.0 //进入内核目录
# patch -p1 # zcat./patch-2.6.0-rmk2.gz | patch -p1 # YUM 软件包升级器 -(Fedora, RedHat及类似系统) # yum installpackage_name //下载并安装一个rpm包 # yum localinstallpackage_name.rpm //将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 # yum updatepackage_name.rpm //更新当前系统中所有安装的rpm包 # yum updatepackage_name //更新一个rpm包 # yum removepackage_name //删除一个rpm包 # yum list //列出当前系统中安装的所有包 # yum searchpackage_name //在rpm仓库中搜寻软件包 # yum clean packages //清理rpm缓存删除下载的包 # yum clean headers //删除所有头文件 # yum clean all //删除所有缓存的包和头文件 # iconv -f big5 -t utf8vi.big5 -o vi.utf8 //把用big5编码的文件vi.big5转成utf8编码文件vi.utf8 # iconv -f utf8 -t big5vi.utf8 | \ > iconv -f big5 -tgb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8 //把用繁体编码的utf8文件vi.utf8转成简体的utf8文件vi.gb.utf8 4、自动作业处理 # /sbin/service anacronrestart //重启anacron服务 # /sbin/service anacronstart //启动anacron服务 # /sbin/service anacronstop //停止anacron服务 # /usr/sbin/atd //启动atd守护进程 # at -c 6 //显示已经设置的任务6的内容 # at -l //查询已设置的任务 # atd -d //以输出调试信息的方式运行队列中的任务 # atq //查询当前已设置的任务 # atrm 3 //删除当前任务队列中的第3个任务 # atrun //执行已排队的任务 # cat/var/spool/cron/root //查看任务内容 # chkconfig --level 35crond off //关闭crond服务(在3,5级别) # chkconfig --level 35crond on //启动crond服务(在3,5级别) # chkconfig --level级别列表 服务名称 [on|off|reset] # chkconfig --level 24syslog off //设置syslog 2,4级别的启动状为off # chkconfig --list 服务名称 # chkconfig --list //显示已运行所有服务的启动状态 # chkconfig --list syslog//显示指定syslog服务的启动状态 # chkconfig服务名[on,off,reset] # chkconfig rsync on //设置rsync服务状态为启动 # chkconfig --listcrond //查询crond在各运行级别的启动状态 # chkconfig --list|grepiptables //查看防火墙状态 # crontab -e //编辑cron任务(编完后,系统默认保存位置是/tmp) # crontab -l //查看当前的cron任务列表 # crontab -r //删除cron任务 # rpm -qa anacron //查看系统中是否已安装anacron服务 # rpm -qa crontabs //检查系统中是否已安装crond服务 # service crondrestart //重启cron服务 # service crondstart //启动crond服务 # service crondstatus //查看cron服务启动状态 # service crond stop //停止crond服务 # pgrep crond //判断crond 是否在运行 # pkill crond //杀掉正在运行中的crond # pgrep crond //查看是否被杀掉了 # /usr/sbin/crond //运行crond # /etc/init.d/crondstop //停止cron服务 # /etc/init.d/crondrestart //重启cron服务 5、系统日志 # /sbin/syslogd //启动syslog日志守护进程 # /sbin/syslogd -r //守护进程可以接收来自网络的syslog信息 # killall -HUPsyslogd //重新修改配置文件后,重启syslog进程使其生效 # echo >/user/local/apache/logs/error_log //清空Apache服务日志 二、用户和用户组管理 # ac //查看系统总的连接时间 # ac -d //按天对连接进行汇总 # ac -p //列出所有用户的连接时间 # cat /etc/shadow //查看/etc/shadow文件 # chage //改变用户变更密码的期限,要求用户必须在几天之内变更密码 # chage -l ow2003 //查看ow2003用户密码的有效期 # chfn //用来改变一个用户的完整用户名和其他信息 # chpasswd //一次性更新一组现有用户的密码 # chroot /tmp/empty /ls –Rl/ //以/tmp/empty为根运行ls命令 # chsh //改变用户的缺省登陆shell # cut -d: -f 1/etc/group // 查看系统所有组 # cut -d: -f 1/etc/passwd // 查看系统所有用户 # dpasswd //删除或者更新用户登录shell的拨号密码 # expiry //检查并强制执行密码失效策略 # faillog //检查登录失败日志/var/log/faillog,设置允许登录失败的次数或重置失败次数 # finger -l //列出当前登录用户的相关信息 # finger ow2003 //查看ow2003用户描述信息 # gpasswd //用来管理/etc/group文件 # grep ow2003/etc/shadow //查看ow2003是否禁用(用户名后紧跟!号) # grep ow2003/etc/shadow //查看ow2003是否启用(用户名后无!号) # groupadd //建立新的用户组 # groupadd benet //添加benet组 # groupadd -g 502student //添加用户组student,GID为502 # groupadd -g benet st03//添加st03用户并指定属于benet组 # groupdel //删除用户组 # groupdel benet //删除benet组 # groupmod //修改用户组 # groupmod -nnew_group_name old_group_name //重命名一个用户组 # groupmod -g 503teacher //修改teacher用户的组标识为503 # groupmod -g 550 -n dirctor teacher //将teacher用户组标识号改为550,用户组名改为director # groups //显示当前用户所属的用户组 # grpck //校验用户组文件的完整性,/etc/group 和 /etc/gshadow # grpconv //根据/etc/group文件建立/etc/gshadow文件 # grpunconv //根据/etc/group和/etc/gshadow文件建立新的/etc/group文件,并删除/etc/gshadow文件 # id //显示当前用户的UID、GID和用户所属的组列表 # id 用户名 // 查看指定用户信息 # id -g //显示当前用户的用户组GID # id -G //显示所有的用户组GID # id -G -n //显示所有的群组名称 # id ow2003 //显示指定用户ow2003的用户信息 # id root //显示root用户的用户信息 # last //显示最近用户的登录信息(last命令查找/var/log/wtmp文件) # last -n 10 //仅显示10行记录 # last -x //查询最近用户登录情况,同时显示系统关机及系统运行等级变化 # lastb //显示最近登录失败用户信息(lastb命令查找/var/log/btmp文件) # lastlog //格式化并输出最后一个登录日志的内容,或者是某个用户的最近一次登陆内容 # ln /usr/sbin/groupadd/usr/sbin/addgroup //创建名为addgroup的链接命令,链接到groupadd命令 # login //系统用它来允许用户登陆 # logname //显示登录用户的用户名 # logoutd //用/etc/porttime中的设置强制限制登录时间和端口 # mkpasswd //读取参数设定的某格式文件并转化至相应的数据库文件格式 # newgrp //不指定转换的用户组时,系统默认转换为登录时的用户组 # newgrp [-] [groupname] //选项“-”用于重新加载用户工作环境。如果不带“-”选项,则在切换用户组时,用户的工作环境(包括当前工作目录等)不会改变 # newgrp bin //改变当前用户的主用户组为bin # newusers //批量加入新的用户 # passwd //修改当前用户的密码 # passwd -d ow2003 //快速删除ow2003用户的密码 # passwd -l ow2003 //锁定ow2003用户使其不能登录 # passwd ow2003 //根用户修改普通用户ow2003的密码 # passwd -u ow2003 //解锁ow2003用户使其可以登录 # pwck //校验密码文件的完整性,/etc/passwd 和 /etc/shadow # pwconv //根据/etc/passwd文件建立/etc/shadow文件(解决两者不匹配时的问题,如用户ow203在passwd中有记录而在shadow中无记录的现象;解决无法进入图形界面的用户和组管理器现象) # pwunconv //根据/etc/shadow和/etc/passwd文件建立新的/etc/passwd文件,并删除/etc/shadow文件 # rwho -a //显示局域网内所有用户 # sg //设置用户的GID到指定组,或者以指定组的身分执行一个命令 # su - //切换为根用户 # touch /etc/nologin //在系统维护期间禁止用户登录(但不限于SSH登录) # useradd //添加新的用户或者改变新用户的默认信息 # useradd -D //显示当前的默认值 # useradd -D -s/bin/csh //修改该命令所用shell的默认值为/bin/csh # useradd wxr2 -u 502 -d/home/wxr -s /bin/bash -e 10/30/11 -g 100 //添加一新用户wxr2,UID为502,用户组ID为100,用户目录为/home/wxr,用户的默认shell为/bin/bash,账号的失效期为2011年10月30日 # userdel /删除用户 # userdel ow2003 //删除ow2003用户(仅删帐号) # userdel -r ow2003 //删除ow2003用户(连同主目录删除) # usermod //修改用户信息 # usermod -d /home/wxr2-s /bin/ksh -g users wxr //用户登录目录改为/home/wxr2,用户登录shell改为ksh,用户所在组改为users和wxr # usermod -g benet st03//设置st03用户新的组名为benet # usermod -G szxsst03 //添加st03用户到其它组szxs(多组) # usermod -L ow2003 //禁用ow2003用户 # usermod -U ow2003 //启用ow2003用户 # usermod -u0 -o ow2003//提升ow2003用户管理员权限 # users //显示所有登录的用户 # vigr //能用来编辑 /etc/group 或 /etc/gshadow文件 # vigr /etc/group //编辑group时自动对该文件加锁,编辑结束时自动解锁 # vipw //编辑passwd时将自动对该文件加锁,编辑结束时自动解锁 # vipw //能用来编辑 /etc/passwd 或 /etc/shadow文件 # w -f //显示登录用户信息,但不显示登录位置(即from字段) # w -h //在显示登录用户信息时,不显示标题栏 # w root //只查询指定用户root的信息 # w -s //以精简模式显示登录用户信息 # w // 查看当前登陆用户及所进行的操作 # who -H //显示登录系统的用户信息时,显示标题栏 # who -H -m //只显示使用当前标准输入设备的用户 # who -H -p //显示由init进程创建的活动进程 # who -H -u //显示空闲时间段 # who -q //显示所有登录的用户名以及登录用户的数目 # who -T -H //显示用户状态信息 # who // 显示当前登陆系统的用户 # whoami //显示当前登录用户名称 # skill -9 pts/2 //杀掉从pts/2虚拟终端登录的用户 # write wang EOF //向登录用户wang发送即将关机的信息 System will shutdownsoon! 三、磁盘管理 # blkid //列出当前系统中所有已挂载文件系统的类型 # blkid -s LABEL //仅显示每个(指定)设备相匹配的标签 # blkid /dev/sda1 //查看/dev/sda1设备所采用的文件系统类型 # e2label device[newlabel] //改变本地设备文件系统的label名称 # dd if=/dev/zero of=f1bs=10MB count=2 //用虚拟文件f1检查配额情况 # dd if=/dev/sdaof=/home/backup/boot_MBR bs=446 count=1 //备份MBR。解决Linux和Windows双系统的引导问题(IED硬盘为hda) # ddif=/home/backup/boot_MBR of=/dev/sda bs=446 count=1 //恢复MBR # dd if=/dev/zeroof=/home/loopdev bs=1M count=512 //创建一个空的文件在/home/loopdev # mkfs -t ext3/home/loopdev //对/home/loopdev进行格式化 # mount -o loop/home/loopdev /media/cdrom //挂载/home/loopdev这个loop设备到/media/cdrom目录 # df //用于报告文件系统的总容量,使用量,剩余容量 # df -ah //查询所有分区使用量,以可被识别的方式展现 # df -h //以用户容易识别的方式显示磁盘空间使用情况 # df -i //以inode模式显示磁盘的使用情况 # df -T //查看磁盘格式挂载后的信息 # df -t ext3 //只显示ext3类型磁盘的信息 # df -x ext3 //不显示指定磁盘类型的磁盘使用信息 # dmesg | grep IDE // 查看启动时IDE设备检测状况 # dmesg | grep DMA //查看硬盘是否运行在DMA模式 # du -a DirPath //显示所有文件及其子目录占用的数据块数 # du -a | sort -n >/home/disk_used & //将显示结果储存到/home/disk_used文件中 # du -b /home //查看目前/HOME目录的容量(k)及子目录的容量(k) # du -sh DirPath //以用户易读格式显示目录大小 # du -sk DirPath //查看目录的容量(k) # du -sm DirPath //查看目录的容量(m) # fdisk /dev/sda //对磁盘sda进行分区 # fdisk -l //查看磁盘及分区信息 # sfdisk -l //查看磁盘及分区信息 # sfdisk -s //查看系统中所有磁盘的大小 # fdisk -s /dev/sdb //显示/dev/sdb设备中所有分区大小总和 # fdisk -s /dev/sdb2 //显示/dev/sdb2分区大小 # fdisk -v //显示fdisk版本号 # hdparm -i /dev/hda // 查看磁盘参数(仅适用于IDE设备) # mkfs.ext2 /dev/sda1 //格式化sda1为ext2格式 # mkfs.ext3/dev/sda2 //格式化sda2为ext3格式 # mount //显示当前已挂载的文件系统 # mount -a //搜索/etc/fstab文件中满足条件的文件系统,进行挂载操作。只有root用户可以操作。 # mount -l //列出所有已经挂载的文件系统列表 # mount /dev/sda1 /bbb //挂载sda1到/bbb目录下 # mount | column -t // 查看挂接的分区状态 # mount -t 文件系统类型 设备路经 访问路经 # mount -t iso9600/dev/cdrom /mnt/cdrom //在/mnt/cdrom目录下挂载光驱(iso9600为光盘的标准文件系统类型) # mount /dev/cdrom /aaa/ //挂载设备CDROM到/aaa/目录下 # mount -t ntfs-3g/dev/sdb* /mnt/aaa //不编译内核,mountntfs分区 # cp /dev/cdrom123.iso //将cdrom内容制作成123.iso镜像 # mount -t iso9660 -oloop xxx.iso /path //挂载ISO文件 # mount -o loop 123.iso/bbb/ //将123.iso镜像文件挂载到/bbb/下 # mount -t isoDVD/dev/cdrom /mnt/cdrom //挂载光驱 # mount -t iso9660/dev/cdrom /mnt/cdrom //挂载光盘 # mount -t vfat -oiocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 //挂载fat32分区 # mount -t ntfs -onls=utf8,umask=000 /dev/hda3 /mnt/hda3 //挂载ntfs分区 # mount -t vfat /dev/hda6/mnt/cdrom //挂第一个ide的第六个逻辑分区 # mount -no remount, ro/ //以只读模式重新挂载/分区 # mount -n -o remount, rw/ //以读写模式重新挂载/分区(单用户维护模式时有用) # umount /aaa/ //卸载目录/aaa # umount /dev/cdrom //卸载设备 cdrom # showmount -e10.52.19.4 //显示对方服务器nfs共享目录 ========================== 参考: mount远程目录并让本地非root用户可读可写 http://blog.chinaunix.net/uid-20680966-id-4153081.html ========================== # fuser -km /mnt //当设备繁忙时强制卸载 # eject -n //查看系统默认的弹出设备 # eject //弹出默认的设备 # quotastats //显示系统磁盘空间限制的当前状态 # repquota -a //显示文件系统的磁盘使用情况 # edquota -u ccnp //对组ccnp设置配额 # edquota -u st26 //对用户设置配额 # quota -g ccnp //查看组ccnp配额情况 # quota -u st26 //查看用户st26配额情况 # quotacheck -cmug / //创建配额文件 # quotacheck -mfvug/ //对文件系统的配额进行一致性检测 # quotaon -a //启用所有的磁盘配额限制 # quotaon /home //启用/home的磁盘空间配额 # quotaon -aguv //不指定分区,使用自动搜索启用磁盘配额 # quotaoff -a //关闭所有配额限制 # quotaoff /home //关闭/home的磁盘配额 # quotaoff -aguv //不指定分区,使用自动搜索关闭磁盘配额 # quotaoff -aguv //不指定分区,使用自动搜索关闭磁盘配额 # reboot //重启系统 # swapon /dev/sdb2 //开启交换分区/dev/sdb2 # swapoff /dev/sdb2 //关闭交换分区/dev/sdb2 # swapon -s // 查看所有交换分区 # grep SwapTotal /proc/meminfo //查看swap空间大小 # swapoff -a //关闭所有交换区 # swapon -a //开启所有交换区(与上面成对使用后可使swap还原到初始状态) # fdisk /dev/sdb //由设备分区(sdb1)来创建SWAP分区,注意分区类型82 # mkswap /dev/sdb1 //格式化分区并创建文件系统 # vi /etc/fstab //添加:/dev/sdb1 swap swap defaults 0 0 # dd if=/dev/zeroof=/data1/image/swap bs=1024 count=2048000 //添加交换文件并设置其大小为2G # mkswap/data1/image/swap //创建交换空间 # swapon/data1/image/swap //启动新增加的2G的交换空间 # vi /etc/fstab //在文件最后加入:/data1/image/swap swap swap defaults 0 0 使得新加的2G交换空间在系统重新启动后自动生效 # vi /etc/fstab //自动挂载磁盘分区,添加: /dev/sdb5 dd ext3 defauls 0 0 # vi /etc/fstab //修改fstab文件中分区装载设置在defaults后加入usrquota,grpquota 重新挂载文件系统(对根分区设置配额重启) # sync --version //显示sync命令版本信息 # sync --help //显示sync命令的帮助信息 # sync //将内存数据写入磁盘 # rsync -av -e ssh/home/share/*.doc [email protected]:/usr/local/share //将一台名为student.example.com主机上的/home/share目录中的所有doc文件备份到主机teacher.example.com的/usr/local/share目录下 # pvdisplay //查看组成LVM卷的物理卷(PV) # pvcreate /dev/sdd //在二级SCSI控制器的从属驱动器上创建一个新物理卷 # vgcreate myvolume/dev/sdd1 /dev/sdc2 //创建一个名为myvolume的VG # lvextend -L 2000M/dev/myvolume/mylogical //对dev/myvolume/mylogical的容量进行添加 # smartctl -H/dev/sdb //对sdb盘做一下健康自检(PASSED为合格) # tune2fs -l /dev/sdc1|grep "Block size" //查看ext3文件系统的block size(bytes) Block size: 4096 四、文件和目录管理 # cat /home/333 //查看/home下文件333的内容(不停顿) # cd //进入当前帐户所在目录 # cd 配合通配符*会更方便些 # cd /home/ccc //进入/home/ccc目录 # cd - //可以回到你之前所在的那个目录 # cd ../.. //返回上两级目录 cp [-adfilprsu] 源文件(source)目标文件(destination) cp [options] source1source2 source3 … directory 参数: -a:相当于-pdr的意思,见后文(常用); -d:若源文件为连接文件属性,则复制连接文件属性而非文件本身; -f:若目标文件已存在且无法开启,则删除后再尝试一次; -i:若目标文件已存在时,在覆盖时会先询问操作的进行(常用); -l:进行硬连接的连接文件创建,而非复制文件本身; -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用); -r:递归持续复制,用于目录的复制行为(常用); -s: 复制成为符号链接文件,即“快捷方式”文件; -u:若destination比source旧才更新destination。最后需注意的是,如果源文件有两个以上,则最后一个目的文件一定要是“目录”才行。 # cp 333 /home/ccc //复制文件333到/home/ccc下 # cp 333 444 //复制文件333为444(同目录下) # cp -fr test//data1/wxr/ //复制当前路径下的目录test到指定路径/data1/wxr/ # cp .bashrc bashrc //将 .bashrc 拷贝成 bashrc 这个文件 # cp -a /etc /tmp //将目录/etc以完整权限复制到/tmp目录 # dos2unix a.txtb.txt //将dos格式的a.txt转换成unix格式的b.txt # dos2unix a.txt //直接将a.txt中的^M符号删除(也可用vi命令(:%s/^m//g)删除) # scp -rp /path/filenameusername@remoteIP:/path //从A机复制到B机 # scp -rp username@remoteIP:/path/filename/path //从B机复制到A机 # cp /dev/cdrommycdrom.iso //将光盘中的内容制成镜像文件,文件名为mycdrom.iso # cp /dev/cdrommycdrom.iso & //将光盘中的内容制成镜像文件,文件名为mycdrom.iso(后台运行,加&) # dd if=/dev/cdromof=file.iso //把 CD/DVD作成 ISO 文件 # mkisofs -r -omybackup.iso /home/backup //将/home/backup目录下的所有文件制成镜像文件,文件名为mybackup.iso # mount -o loopmybackup.iso /mnt //将镜像文件mybackup.iso挂接到/mnt目录下 # file 222 //显示文件222的文件类型 # file * //显示当前目录下所有文件的文件类型 # find /etc -name"host*" -print //在/etc目录中查找文件名以host开头的文件 # find //显示当前目录下所有内容(无参数) # find $HOME -print //查找当前用户主目录下的所有文件 # find . -group root-exec ls -l { } \; //查找系统中所有属于root组的文件 # find . -maxdepth 1-size +1000000c //查找当前目录下的大于1M的文件 # find . -name"[A-Z]*" -print //在当前目录及子目录中查找文件名以大写字母开头的文件 # find . -perm -7 -print| xargs chmod o-w //在当前目录下查找所有用户具有读、写和执行权限的文件,并取消others用户的写权限 # find . -perm 755-print //当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件 # find . -type d |sort //查找当前文件系统中的所有目录并排序 # find . -type d -exectree {} \; | more //显示当前目录的目录结构并以树形结构分页显示 # find . -type f -exec ls-l {} \; | more //查当前目录下的所有普通文件,并用ls -l命令将它们分页列出 # find . -type f -perm644 -exec ls -l { } \; //让当前目录中文件属主具有读、写权限,且文件所属组的用户和其他用户具有读权限的文件 # find . -type f -print |xargs file //查找当前目录下的文件属于哪类文件 # find / -name"file*" -print | xargs echo "" > /temp/core.log //在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中 # find / -type f -size 0-exec ls -l { } \; //查找系统中所有文件长度为0的普通文件,并列出它们的完整路径 # find /apps -path"/apps/bin" -prune -o -print //在/apps目录下(排除/apps/bin目录)查找文件 # find /home -name “*.sgy”–print //查找/home下所有sgy文件 # find /usr/sam -path"/usr/sam/dir1" -prune -o -print //在/usr/sam目录下查找不在dir1子目录之内的所有文件 # find /var/log -type f-mtime +7 -ok rm { } \; //查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们 # find /data/pa/xyz/ -name"*.cgm" -atime +8 -exec rm -f {} \; //查找并删除8昼夜(不含8昼夜本身)前被访问过的cgm文件 # find ~ -print //查找当前用户主目录下的所有文件 # find DirPath -type f |wc -l //查看某目录下有多少个文件 # find -name 11* //查找文件名包含11的所有文件 # find -user luo //查找属于用户luo的所有文件 # mv 333 /home/ccc //移动文件333到/home/ccc下 # mv 333 444 //移动文件333为444(同目录下改名) # mv 目录名 目录名 //目标目录已存在,源目录移到目标目录,目标目录不存在,改名 # rm 333 //删除文件333 # touch 333 //创建333空文件 chmod ---=0 -w-=2r--=4 rw-=6 --x=1 -wx=3 r-x=5 rwx=7s,S,t,T=特殊权限 # chmod [ugoa][+-=][rwx]file u=属主 g=属组o=其它用户 a=所有用户rwx=读,写,执行 +-=:加权限,减权限,赋权限 # chown -R ow2003wxr //更改目录wxr属于用户ow2003 # chgrp -R ow2003wxr //更改目录wxr属于组ow2003 # chgrp root * //把当前目录中所有文件的组属性设置成root # chmod 765 111 //为111文件的属主设为完全权限,属组设成读写权,其它用户具有读和执行权限 # chmod a-r 111 //将111文件所有用户撤消读取权限 # chmod g+x 111 //将111文件属组增加执行权限 # chmod o+r 111 //将111文件其它用户增加读取权限 # chmod u+w 111 //将111文件属主增加可写权限 # chmod g-r,o-r 111 //去掉文件111的同组和其他用户的读权限 # chmod o=rwx 111 //重设文件111的其他用户权限为读、写执行 # chown :benet 222 //更改文件222属于组benet # chown st03 222 //更改文件222属于用户st03 # chown st03:benet 222 //更改文件222属于用户st03组benet # find / -perm -u+s //罗列一个系统中所有使用了SUID控制的文件 # chmod u+s/bin/file1 //设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 # chmod u-s/bin/file1 //禁用一个二进制文件的 SUID位 # chmod g+s/home/public //设置一个目录的SGID位 - 类似SUID ,不过这是针对目录的 # chmod g-s/home/public //禁用一个目录的SGID 位 # chmod o+t/home/public //设置一个文件的STIKY 位 - 只允许合法所有人删除文件 # chmod o-t/home/public //禁用一个目录的STIKY 位 # cut -d ":" -f1,7 /etc/passwd //只显示第一列(userID)和第 7 列(user shell) 内容 # file //查看文件类型 # grep 字符 文件名//根据字符匹配来查看文件部分内容 # head 10 /home/333 //查看/home下文件333的头部10行内容 # less用法: 空格键:向下翻动一页; [PageDown]:向下翻动一页; [PageUp]:向上翻动一页; /字符串:向下查询“字符串”的功能; ?字符串:向上查询“字符串”的功能; n:重复前一个查询(与/或?有关); N:反向重复前一个查询(与/或?有关); q:离开less这个程序。 # less /home/333 //查看/home下文件333的内容(分屏,可以往前翻页) # ln -s source_dirdestination_dir //将目标目录链接到源目录。用绝对路径。在与源目录的同级目录处创建。文件链接同理。用ls -l查看,会看到destination_dir -> source_dir 如: # ln -s /home /disk1 # ls -l lrwxrwxrwx 1 root root 4 Apr 7 2010disk1 -> home/ # unlinkdestination_dir //取消目标目录与源目录的链接 # ll -h //以用户容易识别的方式的长格式显示当前目录的内容 # lsattr -a //显示所有文件和内容,包括现行目录“.”与上层目录“..” # lsattr -R //递归显示目录下的所有文件和子目录 # lsattr test //显示文件test有属性 # ls //以短格式显示当前目录的内容 # ls * //显示当前目录下的所有文件 # ls -l //以长格式显示当前目录的内容 # ls -l /home/bbb/ //显示指定目录/home/bbb的内容 # ls -l 111 //只显示当前目录下文件111的信息 # ls c* //列出当前目录下以字母“c”开头的文件 # ls ??n* //列出当前目录下所有第3个字母是“n”的文件 # ls [b,c]* //显示所有以字母b或c开头的文件名 # ls -F | grep /$ //只列子目录(短格式) # ls -l | grep"^d" //只列子目录(长格式) # ls -l |grep"^-"|wc -l //计算当前目录下的文件数 # ls -l |grep"^d"|wc -l //计算当前目录下的目录数 # ls -lSr |more //以尺寸大小排列文件和目录 # ls --color=never //不要根据文件特性给予颜色 # ls --color=always //显示颜色 # ls --color=auto //让系统自行依据设置来判断是否给予颜色 # ls --full-time //以完整时间模式(包含年、月、日、时、分)输出 # lsof |grep 文件系统的挂接点 //查看是否有任何程序正在使用挂接点的文件系统 # man -t ls | ps2pdf -ls.pdf //创建ls命令的pdf格式文件 # man -t manpage | ps2pdf- filename.pdf //创建man的pdf格式文件 # mkdir ddd //在当前目录下创建ddd目录 # mkdir -p /a/b/c //创建/a/b/c目录(多层目录) # mkdir -m a=r wxr //创建一个目录wxr且指定该目录的属性为对所有用户可读 # mkdir -m 700/data1/wxr/test //创建新目录/data1/wxr/test,且指定权限为700 # more /home/333 //查看/home下文件333的内容(仅分屏) # nl filename //显示文件内容时,同时输出行号 # od filename //以二进制方式读取文件内容 # pwd //显示当前所在目录 # rmdir ddd //删除ddd目录(空) # rm -r ddd //删除ddd目录(非空,先询问) # rm -rf ddd //直接删除ddd目录(非空,不询问) # rm -f /data/*.cgm //超级用户下删除/data目录下所有.cgm文件(不再询问) # rm -i -r ddd //交互模式删除ddd目录(删除前先询问) # \rm -r ddd/* //删除ddd目录下文件(不询问) # sed -n '5,10p'/etc/passwd //只查看passwd的第5行到第10行内容 # setfacl -m u:ow2003:rwx/home/hoework //对用户ow2003设置对/homework目录的读、写和执行权限 # setfacl -m u:ow2003:rw/home/hoework //对用户ow2003设置对/homework目录的读、写权限 # setfacl -m u:dba:r/home/hoework //对用户组dba设置对/homework目录的读权限 # setfacl l -x u:dba/home/hoework //删除用户组dba的权限 # setfacl -d g:rw /home/ftp //对/home/ftp目录的用户组设定默认的权限为读、写(若组中用户重新指定了权限,则默认的组权限将被覆盖,即具体指定的ACL权限优先于默认ACL权限) # sort/home/ow2003/dk //显示文档dk内容并排序 # split -b 900m filefile_part //把文件file以900m增量来分割 # cat file_part* >file //将分割后的文件重新组装 # tac/home/ow2003/dk //以逆序显示文档dk内容(注:与cat相反) # tail 10 /home/333 //查看/home下文件333的尾部10行内 # touch aa //使用touch命令创建aa文件(aa文件不存在) # touch aa //使用touch命令更新文件aa的时间为当前时间(aa文件存在) # touch aa -t200808081500.00 //更新文件aa的存取时间为指定时间2008年8月8日15点 # tree //显示文件和目录由根目录开始的树形结构 # wc /home/ow2003/dk //显示文档dk的行数、词数和字数 # which ssh //通过命令which,查找文件ssh(其查找范围由环境变量$PATH设置) # yes |rm *.cgm //自动回答rm提出的问题,无需用户再连续输入yes 五、备份与压缩 # dd if=/dev/sda | gzip-c | ssh user@ip 'dd of=/mnt/backups/sda.dd' //通过ssh复制整个硬盘到远程目录(带压缩) # tar -c 创建包;-x 释放包;-v 显示命令过程;-z 代表压缩包;-t列出包文件(打包时应尽量采用相对路径,而不用绝对路径) # tar -cvf wxr.tar wxr //把当前wxr目录打包 # tar -cvf wxr.tar wxr--exclude '*.3dv' --exclude '*.3dh' --exclude '*.cgm' --exclude '*.inp' //把当前wxr目录打包,并排除.3dv、.3dh、.cgm、.inp文件 # tar -zcvf apache.tar.gz--exclude=c --exclude=d apache //若/opt/apache/目录下有 a,b,c,d目录,只打包a 、b目录,不打包c 、d目录 # tar -zcvf wxr.tar.gzwxr //把当前wxr目录打包压缩 # tar -hcvf wxr.tarwxr //对目录wxr中链接文件也一并打包 # tar -rvf wxr.tarfile1 //向wxr.tar包添加文件file1 # tar -tf wxr.tar //查看包wxr.tar内容 # tar -tzf wxr.tar.gz //查看压缩包wxr.tar.gz的内容 # tar -jtv -f wxr.tar.bz2//查看压缩包wxr.tar.bz2的内容 # tar -jcv -f wxr.tar.bz2bar/ //将目录bar打包并压缩为wxr.tar.bz2 # tar -jxv -fwxr.tar.bz2 //对压缩包wxr.tar.bz2解压恢复 # tar -jxv -f wxr.tar.bz2-C bar/ //将压缩包解压到目录bar/ # tar -xvf wxr.tar -C /home //恢复包wxr.tar到指定目录/home # tar -xvf wxr.tar //解压缩包wxr.tar # tar -xzf wxr.tar.gz -C /home //恢复压缩包wxr.tar.gz到指定目录/home(不带-C则恢复到原目录) # tar -xzfwxr.tar.gz //解压缩包wxr.tar.gz # tar -xzf wxr.tar.gzblah.txt //从压缩包wxr.tar.bz2解压出文件blah.txt # tar -zcvf wxr.tar.gz/project //把目录project打包并压缩 # tar -zxvfwxr.tar.gz //压缩包的文件解压恢复 # tar cvf - dir1 dir2 |(cd /dir3; tar xvf - ) //将当前目录dir1dir2边打包边释放到/dir3目录下 # for ARK in ./*.tar.gz;do tar xvf $ARK; done //解压当前目录下的所有 .tar.gz 结尾的文件(把当前目录下所有的 .tar.gz 文件的文件名逐一赋给变量 ARK,让 tar 来引用 ARK 变量) # dump -0f home.dump/home //将/home目录备份到文件home.dump # dump -0j -f/root/etc.dump.bz2 /etc //备份/etc目录并含压缩功能 # restore -rvfhome.dump //恢复home目录 # restore -tfhome.dump //查看备份文件home.dump的文件列表 # dump -w //查看有无任何文件系统被dump过的数据 # zip -r data.zip data //将data文件夹压缩成了data.zip格式 # unzip data.zip //将data.zip文件解压到当前文件夹 # zip -r yasuo.zipabc.txt dir1 //把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip # unzip yasuo.zip //解压缩yasuo.zip文件 # unzip abc\?.zip //将当前目录下的abc1.zip,abc2.zip和abc3.zip一起解压缩(?表示一个字符,如果用*表示任意多个字符) # unzip -v large.zip //不解压,只想查看压缩文件large.zip的内容 # unzip -t large.zip //检验压缩文件large.zip是否下载完全了 # unzip -j music.zip //用-v选项发现music.zip里有多级目录,且子目录中均为mp3文件,若想把这些文件都下载到第一级目录,而非一层一层建目录 六、网络管理与相关应用 # arp -a | awk '{print$4}' //得到网卡的 MAC地址 # dd if=/dev/zero bs=4096count=1048576 | ssh user@ip 'cat > /dev/null' //不浪费磁盘的情况下测试网络速度(通过 ssh 发送 4 GB 数据到远程主机,但不会占用任何磁盘空间) # dmesg | grep eth //显示每个网卡的硬件配置信息 # echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all //关闭ping # echo 0>/proc/sys/net/ipv4/icmp_echo_ignore_all //重启ping # ethtool eth0 //显示或改变网卡设置(参考:man ethtool) # ifconfig //查看当前有效网络接口信息 # ifconfig -a //查看当前所有网络接口信息 # ifconfig eth0 //查看指定网络接口eth0信息 # ifconfig eth0192.168.1.11 //设置eth0接口IP地址(标准掩码)(相当于动态修改IP) # ifconfig eth0192.168.1.11 netmask 255.255.255.128 //设置eth0接口IP地址及子网掩码 # ifconfig eth0 hw ether 000C1254D321//更改网卡物理地址 # ifconfig lo //查看lo状态 # ifdown eth0 //禁用eth0网络接口 # ifdown lo //关闭本地回环网络接口 # ifup eth0 //启用eth0网络接口 # ifup lo //启动本地回环网络接口 # ip ad sh //显示IP地址等信息 # iptables -L // 查看防火墙设置 # iptraf //可交互式IP网络监控工具 # mii-tool -v //查看网卡有关信息 # netconfig //设置网络环境 # netstat -antp // 查看所有已经建立的连接 # netstat -apt //显示所有TCP应用程序所使用的端口号,并显示使用此端口号的进程 # netstat -lntp // 查看所有监听端口 # netstat -s // 查看网络统计信息 # netstat -tulnp //目前系统上已在监听的网络连接及其PID # ping 10.52.19.187 //检测到10.52.19.187之间是否连通 # ping -c 510.52.19.187 //向10.52.19.187发送5个分组报文 # ping -s 6553 -c 510.52.19.187 //向10.52.19.187发送5个分组、每组大小为6553字节的报文(注:最大分组报文不能超过65507字节) # ping -c 8 -i 3 -s 1024-t 25 10.52.19.187 //向10.52.19.187以3秒间隔、包大小1024字节、IP生存期25、8个包发送报文 # route -n // 查看路由表 # tracepath10.52.19.189 //显示连接到10.52.19.189的路由 # traceroute -n10.52.19.190 //对到达10.52.19.190的路由进行跟踪,且使用IP地址表示每一跳主机 # ss //显示网络套接字信息,它允许显示类似netstat一样的信息 # wget192.168.20.148 //从网站192.168.20.148下载资料 动态增加IP # traceroute211.148.192.136 //检测到目的IP经过的路由信息 # hostname //查看主机名称 # hostname luo //设置主机名称为luo # ping 192.168.1.10//Ping主机192.168.1.10 # ifconfig eth0 add10.52.19.147 # ifconfig eth0:0broadcast 10.52.19.255 DNS域名 # nslookup 待解析域名(或IP) # nslookup211.148.192.136 //反向解析IP---域名 # nslookupwww.163.com //解析指定的域名---IP # route add default gw192.168.1.1 //添加默认网关为192.168.1.1 # route del default gw192.168.1.1 //删除默认网关为192.168.1.1 NFS服务 # exportfs -auv //停止输出所有共享目录 # exportfs -av //输出启用所有共享目录 # exportfs -rv //重新输出共享目录 # mount -t nfs192.168.2.10:/luo /wei //在客户机上挂载共享目录到/wei # service iptables stop//关闭防火墙 # service nfs start //启动nfs服务 # service portmap start//启动portmap服务 # showmount -a //显示NFS服务器的客户与被挂载目录 # showmount -d //显示NFS服务器被挂载的目录 # vi /etc/exports //修改共享配置文件(加共享目录) showmount -e 192.168.2.106 //在客户上查看服务器共享目录 配置文件 vi /etc/hosts vi /etc/network //修改主机名称配置文件 vi /etc/rc.local //修改mac地址配置文件 vi /etc/resolv.conf //修改DNS配置文件 vi/etc/sysconfig/network-scripts/ifcfg-eth0 //修改网卡配置文件 vi /var/spool/cron/username //修改cron任务配置文件 vi /var/spool/mail //修改邮件配置文件 七、vi/vim编辑器 也可建立vi到vim的符号连接(即实际调用的是vim) # mv /bin/vi /bin/vi.bak # ln -s /usr/bin/vim/bin/vi 进入vi的命令: vi 直接进入编辑并创建新文件 vi filename 编辑文件(不存在则创建文件),并将光标置于第一行首 vi +n filename 打开文件,并将光标置于第n行首 vi + filename 打开文件,并将光标置于最后一行首 vi +/patternfilename 打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename 在上次正用vi编辑时发生系统崩溃,恢复文件 vi file1....filen 打开多个文件,依次进行编辑 vi -o aaa bbb 水平窗口打开aaa,bbb两个文件 vi -O aaa bbb 垂直窗口打开aaa,bbb两个文件(Ctrl+W两次可在多个文件间切换) 多文本编辑的按键: :n 编辑下一个文件 :N 编辑上一个文件 :files 列出目前这个vi的打开的所有文件 多窗口情况下的按键功能: :sp [filename] 打开一个新窗口,如果有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示) [ctrl]+w+j [ctrl]+w+↓ 按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j(或向下箭头键),则光标可移动到下方的窗口 [ctrl]+w+k [ctrl]+w+↑ 同上,不过光标移动到上面的窗口 [ctrl]+w+q 其实就是:q结束离开。例如,想要结束下方的窗口,那么利用[ctrl]+w+↓移动到下方窗口后,按下:q即可离开,也可以按下[ctrl]+w+q 块选择的按键意义: v 字符选择,将光标经过的地方反白选择 V 行选择,将光标经过的行反白选择 Ctrl + v 块选择,可以用长方形的方式选择数据 y 将反白的地方复制起来 d 将反白的地方删除 恢复命令: u 恢复最后一个指令之前的结果 . 继续最后一个指令的执行结果 ctrl+r 撤销恢复 U 恢复光标该行之所有改变 移动光标命令: h 光标左移一个字符 l 光标右移一个字符 space 光标右移一个字符 Backspace 光标左移一个字符 k或Ctrl+p 光标上移一行 j或Ctrl+n 光标下移一行 Enter 光标下移一行 w或W 光标右移一个字至字首 b或B 光标左移一个字至字首 e或E 光标右移一个字至字尾 ) 光标移至句尾 ( 光标移至句首 } 光标移至段落开头 { 光标移至段落结尾 nG 光标移至第n行首 n+ 光标下移n行 n- 光标上移n行 n$ 光标移至第n行尾 H 光标移至屏幕顶行 M 光标移至屏幕中间行 L 光标移至屏幕最后行 0 (注意是数字零)光标移至当前行首 $ 光标移至当前行尾 翻屏命令: Ctrl+u 向文件首翻半屏 Ctrl+d 向文件尾翻半屏 Ctrl+f 向文件尾翻一屏 Ctrl+b 向文件首翻一屏 nz 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部 插入文本、复制与粘贴: i 在光标前插入 I 在当前行首插入 a 在光标后插入 A 在当前行尾插入 o 在当前行之下新开一行 O 在当前行之上新开一行 r 替换当前字符 R 替换当前字符及其后的字符,直至按ESC键 s 从当前光标位置处开始,以输入的文本替代指定数目的字符 S 删除指定数目的行,并以所输入文本代替之 ncw或nCW 修改指定数目的字 nCC 修改指定数目的行 yy p 复制当前行,并粘贴到下一行 nyy n为数字。复制光标所在的向下n行,例如20yy,则是复制20行 y1G 复制光标所在行到第一行的所有数据 yG 复制光标所在行到最后一行的所有数据 y0 复制光标所在的那个字符到该行行首的所有数据 y$ 复制光标所在的那个字符到该行行尾的所有数据 shift + i 在该行之首插入字符 shift + a 在该行末尾输入字符 shift + r 改写自光标位置及后面的所有内容 shift +o 在光标之上新增一行输入字符 删除命令: ndw或ndW 删除光标处开始及其后的n-1个字 d0 删至行首(为数字0) d$ 删至行尾 shift + d 剪切至行尾 dd 删除一行 ndd 删除自光标开始的n行 s 删除光标所在之字符,并进入输入模式直到《ESC》 S 删除光标所在之该行资料,并进入输入模式直到《ESC》 x或X 删除一个字符,x删除光标后的,而X删除光标前的 nx n为数字,连续向后删除n个字符。如,要连续删除10个字符,则:“10x” Ctrl+u 删除输入方式下所输入的文本 搜索及替换命令: /pattern 从光标开始处向文件尾搜索pattern ?pattern 从光标开始处向文件首搜索pattern n 在同一方向重复上一次搜索命令 N 在反方向上重复上一次搜索命令 :s/p1/p2/ 替换当前行第一个p1为p2 :s/p1/p2/g 将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g 将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g 将文件中所有p1均用p2替换 : 1,$s/old/new/g 将文件中所有的『old』改成『new』 : 1,$s/old/new/gc 将文件中所有的『old』改成『new』,并在改前提示用户确认 : 10,20s/^/ / 将第10行至第20行资料的最前面插入5个空格 : %s/^m//g 删除文件中所有的^M符号 选项设置: all 列出所有选项设置情况 term 设置终端类型 ignorance 在搜索中忽略大小写 list 显示制表位(Ctrl+I)和行尾标志($) number 显示行号 report 显示由面向行的命令修改过的数目 terse 显示简短的警告信息 warn 在转到别的文件时若没保存当前文件则显示NO write信息 nomagic 允许在搜索模式中,使用前面不带“\”的特殊字符 nowrapscan 禁止vi在搜索到达文件两端时,又从另一端开始 mesg 允许vi显示其他用户用write写到自己终端上的信息 最后行方式命令: :n1,n2 co n3 将n1行到n2行之间的内容拷贝到第n3行下 :n1,n2 m n3 将n1行到n2行之间的内容移至到第n3行下 :n1,n2 d 将n1行到n2行之间的内容删除 :e filename 打开文件filename进行编辑 :e!dd 强制关闭当前文件(不保存)打开新文件dd : e! 放弃修改重新编辑 :q! 不保存文件并退出vi :r fff 在当前位置读入fff文件 :set nonu 不显示行号 :set nu 显示行号 :w 保存输入的内容到当前文件 :w eee 另存为eee文件 :wq 保存并退出 :x 保存当前文件并退出 :n1,n2 w eee 将文件中n1行至n2行的内容保存成eee文件 :!command 暂时离开vi到命令行模式下执行command的显示结果。例如,“:! ls /home”即可在vi当中查看/home下面以ls输出的文件信息 寄存器操作: "?nyy 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 "?nyw 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 "?nyl 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 "?p 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 ndd 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中 vim操作环境(不建议修改/etc/vimrc文件;建议手动修改~/.vimrc文件) vim常用指令示意图 八、shell编程 # grep $LOGNAME/etc/passwd //显示当前登录用户使用的shell # sh //启动bsh(为BourneShell的简称---伯恩shell) # bash //启动bash(为Bourne Again Shell的简称) # csh //启动C Shell # type [-tpa] name //bash shell的内置命令。 type:不加任何参数时,type会显示出name是外部命令还是bash内置命令 -t :当加入-t参数时,type会将name以下面这些字眼显示出它的意义: file:表示为外部命令 alias:表示该命令为命令别名所设置的名称; builtin:表示该命令为bash内置的命令功能。 -p :如果后面接的name为外部命令时,才会显示完整文件名; -a :会由PATH变量定义的路径中,将所有含name的命令都列出来,包含alias # cp/var/spool/mail/root /etc/crontab \ > /etc/fstab /root //将三个文件复制到root目录下(如果命令串太长的话,可以用两行来输出)。“\[Enter]”为转义符,“>”为系统自动出现的,不需要输入。 # source ~/.bashrc //将主文件夹的~/.bashrc的设置读入目前的bash环境中 # . ~/.bashrc //将主文件夹的~/.bashrc的设置读入目前的bash环境中 # ll -d /etc/cron* //找出/etc/下面以cron为开头的文件名 # ll -d /etc/????? //找出/etc/下面文件名刚好是五个字母的文件名 # ll -d /etc/*[0-9]* //找出/etc/下面文件名含有数字的文件名 # ll -d /etc/[^a-z]* //找出/etc/下面文件名开头非为小写字母的文件名 # cp -a /etc/[^a-z]*/tmp //将上例找到的文件复制到 /tmp中 # last | cut -d ' ' -f1 | sort //将输出的数据仅取账号,并加以排序 # last | cut -d ' ' -f1 | sort | uniq //将输出的数据仅取账号,排序后仅取出一位 # last | cut -d ' ' -f1 | sort | uniq -c //将输出的数据仅取账号,排序后仅取出一位并显示每个账号登录的总次数 # last | grep [a-zA-Z] |grep -v ‘wtmp’| wc -l //显示登录系统的总人数 # last | tee last.list | cut -d “ “ -f1 //将last的输出存一份到last.list文件中 # ls -l /home| tee ~/homefile | more //将ls的数据存一份到~/homefile,同时屏幕也有输出信息 # ls -l / |tee -a ~/homefile | more //加上-a参数则能将信息累加 # cp /etc/passwd /root/passwd && unix2dos /root/passwd # file /etc/passwd/root/passwd # cat /root/passwd | tr-d ‘\r’ > /root/passwd.linux # ll /etc/passwd /root/passwd* //将/etc/passwd转存成dos断行到/root/passwd中,再将^M 符号删除。\r指的是dos的断行字符 ^M # cat -A /etc/man.config # cat /etc/man.config |col -x | cat -A | more //利用cat -A 显示所有特殊按键,最后以 col将[tab]转成空白。上面看到的^I符号就是tab,如此一来,[tab]按键会被替换成为空格键,输出就美观多了 # man col >/root/col.man # vi /root/col.man # man col | col -b > /root/col.man //将col的manpage转存成为/root/col.man的纯文本文件 ############################################# 通配符与特殊符号 符号 意义 * 代表『 0 个到无穷多个』任意字符 ? 代表『一定有一个』任意字符 [ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』 [ - ] 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如[0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的! [^ ] 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。 bash 环境中的特殊符号 符号 内容 # 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行 \ 跳脱符号:将『特殊字符或通配符』还原成一般字符 | 管线 (pipe):分隔两个管线命令的界定(后两节介绍); ; 连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同) ~ 用户的家目录 $ 取用变量前导符:亦即是变量之前需要加的变量取代值 & 工作控制 (job control):将命令变成背景下工作 ! 逻辑运算意义上的『非』 not 的意思! / 目录符号:路径分隔的符号 >, >> 数据流重导向:输出导向,分别是『取代』与『累加』 <, << 数据流重导向:输入导向 ' ' 单引号,不具有变量置换的功能 " " 具有变量置换的功能! ` ` 两个『 ` 』中间为可以先运行的命令,亦可使用 $( ) ( ) 在中间为子 shell 的起始与结束 { } 在中间为命令区块的组合! ############################################# # dmesg | grep -n-color=auto ‘eth’ //用dmesg列出内核信息,再以grep找出内含eth的那些行,并显色、加上行号 # dmesg | grep -n -A3 -B2-color=auto ‘eth’ //承上,在关键字所在行的前两行与后三行也一起找出来显示 ############################################# 基础正则表达式字符 (characters) ^word 意义:待查找的字符串(word)在行首 范例:查找行首为 # 开始的那一行,并列出行号 grep -n '^#' regular_express.txt word$ 意义:待查找的字符串(word)在行尾 范例:将行尾为 ! 的那一行列印出来,并列出行号 grep -n '!$'regular_express.txt . 意义:代表一定有一个任意字符的字符 范例:查找的字符串可以是 (eve) (eae) (eee)(e e), 但不能仅有 (ee),亦即 e 与 e 中间“一定”仅有一个字符,而空格符也是字符 grep -n 'e.e'regular_express.txt \ 意义:转义字符,将特殊符号的特殊意义去除 范例:查找含有单引号 ' 的那一行 grep -n \'regular_express.txt * 意义:重复零个到无穷多个的前一个 RE(regular)字符 范例:找出含有 (es) (ess) (esss) 等等的字符串,注意,因为 * 可以是 0 个,所以 es 也是符合带查找字符串。另外,因为 * 为重复“前一个 RE 字符”的符号, 因此,在 * 之前必须要紧接著一个 RE 字符喔。例如任意字符则为 “.*” grep -n 'ess*' regular_express.txt [list] 意义:从字符集合的 RE 字符里面找出想要选取的字符 范例:查找含有 (gl) 或 (gd) 的那一行,需要特别留意的是,在 [] 当中代表一个待查找的字符,例如“ a[afl]y ”代表查找的字符串可以是 aay, afy, aly即 [afl] 代表 a 或 f 或 l 的意思 grep -n 'g[ld]'regular_express.txt [n1-n2] 意义:从字符集合的 RE 字符里面找出想要选取的字符范围 范例:查找含有任意数字的那一行。需特别留意,在字符集合 [] 中的减号 - 是有特殊意义的,他代表两个字符之间的所有连续字符。但这个连续与否与 ASCII 编码有关,因此,你的编码需要配置正确(在 bash 当中,需要确定 LANG与 LANGUAGE 的变量是否正确)。例如所有大写字符则为 [A-Z] grep -n '[A-Z]'regular_express.txt [^list] 意义:从字符集合的 RE 字符里面找出不要的字符串或范围 范例:查找的字符串可以是 (oog) (ood) 但不能是 (oot) ,那个 ^ 在 [] 内时,代表的意义是“反向选择”的意思。例如,我不要大写字符,则为 [^A-Z]。但是,需要特别注意的是,如果以 grep -n [^A-Z]regular_express.txt 来查找,却发现该文件内的所有行都被列出,为什么?因为这个 [^A-Z]是“非大写字符”的意思, 因为每一行均有非大写字符,例如第一行的 "OpenSource" 就有 p,e,n,o等小写字符 grep -n 'oo[^t]'regular_express.txt \{n,m\} 意义:连续 n 到 m 个的前一个 RE 字符,若为\{n\} 则是连续 n 个的前一个 RE 字符,若是 \{n,\} 则是连续 n 个以上的前一个 RE 字符 范例:在 g 与 g 之间有2个到3个的o存在的字符串,亦即 (goog)(gooog) grep -n 'go\{2,3\}g'regular_express.txt ====================================== # test -e /pa/lamprj&& echo "exist" || echo "Not exist" //检查/pa/lamprj目录是否存在 ====================================== 文件测试的标志与意义: 关於某个文件名的“文件类型”判断,如 test -efilename 表示存在否 -e 该文件名是否存在?(常用) -f 该文件名是否存在且为文件(file)(常用) -d 该文件名是否存在且为目录(directory)(常用) -b 该文件名是否存在且为一个 block device 设备 -c 该文件名是否存在且为一个 character device 设备 -S 该文件名是否存在且为一个 Socket 文件 -p 该文件名是否存在且为一个 FIFO (pipe) 文件 -L 该文件名是否存在且为一个连结文件 关於文件的权限检测,如 test -r filename 表示可读否 (但 root 权限常有例外) -r 检测该文件名是否存在且具有“可读”的权限 -w 检测该文件名是否存在且具有“可写”的权限 -x 检测该文件名是否存在且具有“可执行”的权限 -u 检测该文件名是否存在且具有“SUID”的属性 -g 检测该文件名是否存在且具有“SGID”的属性 -k 检测该文件名是否存在且具有“Sticky bit”的属性 -s 检测该文件名是否存在且为“非空白文件” 两个文件之间的比较,如:test file1 -ntfile2 -nt (newer than)判断 file1 是否比 file2 新 -ot (older than)判断 file1 是否比 file2 旧 -ef 判断 file1 与 file2 是否为同一文件,可用在判断 hard link 的判定上。 主要意义在判定两个文件是否均指向同一个 inode 关於两个整数之间的判定,例如 test n1 -eq n2 -eq 两数值相等 (equal) -ne 两数值不等 (not equal) -gt n1 大於 n2 (greater than) -lt n1 小於 n2 (less than) -ge n1 大於等於 n2 (greater than or equal) -le n1 小於等於 n2 (less than or equal) 判定字串的数据 test -z string 判定字串是否为 0,若 string 为空字串,则为 true test -n string 判定字串是否非为0,若 string 为空字串,则为 false 注:-n 亦可省略 test str1 = str2 判定 str1 是否等於 str2 ,若相等,则回传 true test str1 != str2 判定 str1 是否不等於 str2 ,若相等,则回传 false 多重条件判定,例如:test -r filename -a-x filename -a 两个条件同时成立!例如 test -r file -a -xfile,则 file 同时具有 r 与 x 权限时,才回传 true -o 任何一个条件成立!例如 test -r file -o -xfile,则 file 具有 r 或 x 权限时,就可回传 true ! 反相状态,如 test ! -x file ,当 file 不具有 x 时,回传true ======= 常用shell命令组合 # kudzu --probe--class=network //kudzu查看网卡型号 # ps -e -o "%C : %p: %z : %a"|sort -k5 -nr //查看进程,按内存从大到小排列 # ps -e -o "%C : %p: %z : %a"|sort -nr //按cpu利用率从大到小排列 # ls /etc/rc3.d/S* |cut-c 15- //显示运行3级别开启的服务(从中了解到cut的用途,截取数据) # ifconfig eth0 |grep"inet addr:" |awk '{print $2}'|cut -c 6- //显示IP地址 # free -m |grep"Mem" | awk '{print $2}' //显示内存的大小 # cat /proc/cpuinfo |grep-c processor //显示CPU的数量 # mpstat 1 1 //显示CPU负载 # du -cks * | sort -rn |head -n 10 //显存当前路径下从大到小排序的前10个文件或目录大小 # iostat -x 1 2 //磁盘I/O负载 # sar -n DEV //网络负载 # ps aux | wc -l //进程总数