linux学习笔记-近期整理的linux命令

1. some cmds
7za  (^ 压缩和解压缩 *.7z 文件 ^)
alsamixer -c0  (^ 打开声音控制器 ^)
apropos keyword  (^ 如果你想实现某种功能, 但是不知道该使用什么命令, 你可以试试apropos命令 ^)
arch  (^ 返回机器的类型 ^)
ar ruv libcii.a f1.o f2.o f3.o  (^ 创建静态库 ^)
awk: f=2; echo $f; echo " ab oa fo " | awk ' { print $ '$f'  } (^ 在awk的print选项中使用shell变量 ^)
awk ' /ppp/ {print $1} (^ 表示得到ppp的进程id. ^)
bc: echo " ibase=16; C " | bc  (^ ibase: 输入数的进制; 把C转换成十进制的(C必须是大写的) ^)
bc: echo " obase=2; 8 " | bc  (^ obase: 输出数的进制; 把8转换成二进制的 ^)
bc: echo " scale=4; sqrt(3) " | bc  (^ 求平方根 ^)
bc: echo " scale=9; 332/100.0 " | bc  (^ 把求332/100.0, 保留9位小数 ^)
bc: echo " scale=9; s(1.7) " | bc -l  (^ 求弧度为1.7的正弦s(), -l: 调用bc的算术库; 还有sqrt()等 ^)
bzcat filename.bz2   (^ 查看压缩文件内容 ^)
bzip2 -v -d minix_R3.1.5-r5612.iso.bz2  (^ 解压! ^)
bzip2 -z filename   (^ 压缩,加[-d]解压  ^)
cat file | xargs -n1  (^ 每行显示一个单词 ^)
cat -n  (^ 在文件的每一行加上行号, 另见nl ^)
cat -s   (^ 只保留多个相邻空行的第一行 ^)
cdrecord -v -isosize speed=2 dev=cdrom in.iso  (^ 把in.iso刻录到光盘中 ^)
cd -  (^ 可进入上一次进入的目录 ^)
change -l longinname  (^ 查看密码过期信息 ^)
chattr  (^ 命令修改 ^)
chgrp  (^ 改变档案群组 ^)
chkconfig --level 345 iptables on  (^ 设置iptables在level:345下默认是自动启动的 ^)
chkconfig --list | grep telnet  (^ 查看telnet是否已启动 ^)
chkconfig rsync on  (^ 所有服务通过init启动有些是通过xinetd服务启动的, 如rsync启动rsync ^)
chkconfig  (^ 检查某个服务状态, 包括各个级别0~6的状态 ^)
chmod 1770 xxx  (^ 设置粘着位(Sticky bit) ^)
chmod -R 444 *  (^ 改变所有子目录及文件的属性 ^)
chmod u+s /usr/bin/mentohust
cmp -s  (^ 若两文件相同,则返回0,否则返回1. ^)
cmp  (^ 比较2个文件 ^)
column: cat data_file | column -t  (^ 把data_file按表格形式输出 ^)
compress filename   (^ 压缩文件,加[-d]解压:uncompress ^)
convert -delay 0 *.bmp -loop 0 animated.gif  (^ 把当前目录下的所有bmp文件合成一个gif图片动画, 每帧间隔0ms, 重复播放 ^)
convert filename.bmp filename.jpg  (^ bmp转jpg ^)
cpio -covB  > [ file|device ]    (^ 份份 ^)
cpio: find src_dir -depth | cpio -admvp des_dir  (^ 把目录树src_dir复制到des_dir ^)
cpio -icduv < [ file|device ]    (^ 还原 ^)
cpio --make-directories -F in.cpio -i   (^ 解包cpio归档文件; -i:解包 ^)
Ctrl+Alt+BackSpace  (^ 强行退出X ^)
Ctrl+Alt+Del  (^ 重新启动 ^)
date -d " 2004/06/04 20:30:00 " +%s  (^ 把指定的时间转换为秒数 ^)
date +%j  (^ 今天是今年的第几天? ^)
date +%s  (^ The number of seconds elapsed since 01/01/1970 ^)
date " +%Y-%m-%d %H:%M:%S %w (^ 输出为: 2012-04-30 11:42:53 1 ^)
date +%Y-%m-%d.%S  (^ 输出为: 2010-05-31.44 ^)
dc: echo " 11 16 o p " | dc  (^ o: 设置输出的基数(数制), p: 打印栈顶 ^)
dc: echo " 11 16 o p " | dc  (^ 把11转换为16进制的(dc可以转换任意进制) ^)
dc: echo " 111[p]s2[lip/dli%0=1dvsr]s12sid2%0=13sidvsr[dli%0=1lrli2+dsi!>.]ds.xd1<2 " | dc (^ 求111的约数 ^)
dd: echo -n " hello world " | dd cbs=2 conv=unblock 2> /dev/null  (^ conv=unblock: 每输出cbs个字符就换行一次 ^)
dd if=/dev/urandom of=$file bs=$BLOCKSIZE count=$flength  (^ 带有 /dev/urandom 的 I/O 必须要有单位块尺寸 ^)
dd if=/dev/zero of=disk.img count=1024 bs=1024KB  (^ 将zero写入自定义的disk.img文件1024次, 每次写入1024Kb; 也就是创建一个1GB的文件, 用zero文件进行填充.  ^)
dd if=file.in conv=ucase of=file.out 2>/dev/null  (^ 拷贝file.in, 并转为大写 ^)
dd if=$filename conv=lcase > $filename.lppercase  (^ 将一个文件转换为小写 ^)
dd if=$input_file of=$output_file bs=1 skip=$ ((n-1) ) count=$ ((p-n+1) ) 2> /dev/null  (^ 把位置n到p的字符提取出来 ^)
dd: keys=$ (dd bs=1 count=$keypresses 2> /dev/null)   (^ 记录所下按的键于keys中 ^)
Debugfs  (^ QQQQQ http://en.wikipedia.org/wiki/Debugfs  ^)
deplate -m utf8 hello.viki  (^ 编译含有中文的viki文件 ^)
deplate -m zh-cn-autospace hello.viki
diff -urN linux/ my_linux/ >mypatch.diff
diff  (^ 比较2个文件 ^)
dmesg  (^ 显示开机自检的内容命令 ^)
dos2unix -k -n hosts.dos hosts.linux  (^ 转换为unix格式 ^)
du -sh -X ./exclude.list  (^ 不计算...中匹配的文件.(*.zip ...) ^)
echo -n " fff (^ -n: 不换行 ^)
echo | tr '\012'   '\001'  (^ 产生 Ctrl+A ^)
edquota -u redhat  (^ 进VI编缉用户配额编缉用户可用的字节数, 软性的, 硬性的, 文件数, 软件性的, 硬性的 ^)
egrep -o " ^[[:digit:]]+ " /var/run/ntpd.pid   (^ 从 /var/run/ntpd.pid 文件中读取出进程PID. -o: 只输出匹配内容而不是整行 ^)
eject -t  (^ 收回 ^)
eject  (^ 弹出光盘 ^)
/etc/init.d/network restart  (^ 重起网卡 ^)
/etc/rc.d/init.d/httpd start  (^ 启动https ^)
eval " cat $file (^ 执行""里的命令 ^)
fc n  (^ n: 历史命令的序号,这将打开一个编辑窗口,修改这条命令,以满足需要.当退出时,该命令就会执行 ^)
file filename  (^ 显示文件的类型及格式等 ^)
file libc-2.10.2.so  (^ 确认文件系统要求的最低内核 ^)
find / -amin -10   (^ 查找在系统中最后10分钟访问的文件 ^)
find / -atime -2   (^ 查找在系统中最后48小时访问的文件 ^)
find -depth  (^ 先查找出目录下的文件, 后是目录本身(深度优先) ^)
find / -empty   (^ 查找在系统中为空的文件或者文件夹 ^)
find . -exec chown scr:scr {} \;  (^ 改变当前目录下的所有子目录包括文件的属主 ^)
find -fprint0 file  (^ 打印文件完整文件名包括空的文件 ^)
find -fprintf file  (^ format打印文件格式 ^)
find -fprint file  (^ 打印文件完整文件名 ^)
find .  | grep svn | xargs rm -r  (^ 删除当前目录下的路径名含有"svn"的文件或目录 ^)
find / -group cat   (^ 查找在系统中属于groupcat的文件 ^)
find . -iname " *abcd* (^ 不区分大小写 ^)
find -ls  (^ 打印同种文件格式的文件. ^)
find . -maxdepth 2 -name fred   (^ 查找目录的最大深度为2  ^)
find / -mmin -5   (^ 查找在系统中最后5分钟里修改过的文件 ^)
find /mnt/cdrom -name *.mp3 -print > cd.play.list  (^ 快速建立MP3播放列表,然后使用xmms或x11amp就能进行播放了 ^)
find / -mtime -1  (^ 查找在系统中最后24小时里修改过的文件 ^)
find . -name " * * " -exec rm -f {} \;  (^ 删除文件名中以任何方式包含空白的文件 ^)
find / -name " httpd.conf " -ls  (^ 查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息 ^)
find . -name '*[+{ ;"\\=?~()<>&*|$ ]*'   //  (^ 查找文件名中包含有 + { ; " \ = ? ~ ( ) < > & * | $ space 这些字符的文件 ^)
find / -nouser  (^ 查找在系统中属于作废用户的文件 ^)
find -ok command;  (^ 给用户命令执行操作, 根据用户的Y确认输入执行 ^)
find -printf format  (^ 打印文件格式 ^)
find /tmp -size +10000000c -and -mtime +2  (^ 在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件 ^)
find /tmp ! -user panda  (^ 在/tmp目录中查找所有不属于panda的文件 ^)
find . -type d -exec chmod 755 {} \;
find . -type f -a \ ( -name *.txt -o -name install \)   (^ -a 和 -o 参数的使用 ^)
find . -type f -exec chmod 644 {} \;
find . -type f -exec grep " the string you want find... " {} \; -print  (^ 查找含特定字符串的文件 ^)
find . -type f -exec gvim --servername GVIM --remote-tab {} \;  (^ 用gvim打开find找到的第一个文件 ^)
find . -type f -exec gvim --servername GVIM --remote-tab {} +  (^ 用gvim打开find找到的所有文件于不同的标签页 ^)
find . -type f -exec vim {} \;  (^ 用vim打开find的结果, 但每次只打开一个文件 ^)
find . -type f -exec vim {} +  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
find . -type f -name *.vim  |xargs cat | wc -l  (^ 统计当前目录下所有.vim文件的行数 ^)
find . -type f | xargs chmod -x
find . -type f | xargs grep ' ????? '
find . -type f | xargs grep ' NAL (^ 查找有NAL内容的文件 ^)
find -type l -exec ls -l --color {} \;  (^ 查找当前目录下的所有软连接 ^)
find / -user fred -or -user george
find / -user user-id  (^ 查找在系统中属于FRED这个用户的文件 ^)
finger -l root
finger  (^ 查看当前所有登录用户所使用的终端 ^)
fmt: echo file | fmt -w 80  (^ fmt -w 80 输出设为80列宽; 等价于: fold - -s -w ^)
fold: fold - -s -w  (^ 见fmt ^)
for a in  `seq 80`    // 与  " for a in 1 2 3 4 5 ... 80 "相同  (少敲了好多字!). (12_49)
free  (^ 查看内存使用情况 ^)
fsck.ext3 /dev/sdb1  (^ 检查文件系统数据完整性的工具 ^)
fsck.ext3 -y /dev/sdb1  (^ 自动修复错误 ^)
fsck -t ext2 /dev/sdb1  (^ 检查文件系统数据完整性的工具 ^)
fuser 23/tcp  (^ 同: fuser -n tcp 23 ^)
fuser -l  (^ 列出所有的signal的对应的名称 ^)
fuser -m /mnt/share  (^ -m: 根据挂载目录找出挂载进程的PID ^)
fuser -n tcp 23  (^ 查看端口号为23的tcp连接的进程ID号 ^)
fuser telnet/tcp  (^ 同: fuser -n tcp 23 ^)
fuser -un tcp 23  (^ -u: 同时显示其用户名 ^)
getconf PAGESIZE  (^ 查看一block的大小 ^)
git branch -d hotfix  (^ 删除分支 ^)
git checkout -b branch1  (^ 新建并切换到该分支 ^)
git checkout c59d73e4e12ffcccdaa9a0f8ca86ab5ad1cd91b3 -- README  (^ 恢复之前删除的文件: README, 前提是 README 在版本c59...b3时没被删除 ^)
git checkout master  (^ 切换到 master 分支 ^)
git checkout --track -b foo origin/foo  (^ 有个远程分支是foo, 在本地checkout它 ^)
git config --global core.editor emacs
git config --global user.email  [email protected]
git config --global user.name " John Doe (^ "--global"参数使得保存在 ~/.gitconfig ^)
git config --list  (^ 要检查已有的配置信息 ^)
git config --system user.name " John Doe (^ "--system"参数使得保存在 /etc/gitconfig ^)
git config user.name " John Doe (^ "--global"参数使得保存在工作目录: .git/config ^)
git diff 1c09 94da  (^ 比较两个版本的差异 ^)
git log --stat | sed ' 1,3d ' | sed ' /Author: /q ' | sed ' $d ' | sed ' $d (^ 只输出最近一次提交的历史 ^)
git reset --hard HEAD~1  (^ 取消最后一次提交 ^)
git status  (^ 检查当前文件状态 ^)
gnome-screenshot -a  (^ 屏幕抓图 ^)
gnome-terminal --geometry=130x38  (^ 启动终端的尺寸大小 ^)
gnome-terminal --help  (^  ^)
grep -A1 -B1 regexp flie  (^ 打印匹配regexp的行和前后各一行 ^)
grep -Fw  (^ 固定字符串; 整个单词 ^)
grep i " name (^ 不区分大小写 ^)
grep ' . '   (^ 删除文件中的所有空行 ^)
gvim -U NONE  (^ 启动gvim时, 跳过任何启动初始化脚本 ^)
gzexe gawk  (^ 可以使用gzexe压缩可执行文件, 压缩后的可执行文件仍然可以直接执行 ^)
gzip filename    (^ 压缩,加[-d]解压  ^)
head -1 /proc/asound/card0/codec#0  (^ 确认你的声卡型号 ^)
head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个随机数 ^)
history -c  (^ 清除所有的命令历史 ^)
hostname
idesk  (^ QQQQQ http://idesk.sourceforge.net/  ^)
id  (^ 显示用户(组)ID ^)
ifconfig eth0 down  (^ 关闭网卡设备 ^)
ifconfig eth0 hw ether 00:1E:90:13:e0:25
ifconfig eth0 hw ether 00:1E:90:13:e0:7E  (^ 修改mac地址. 修改前须: service network stop ^)
ifconfig eth0 hw ether MAC地址  (^ 修改MAC地址 ^)
ifconfig eth0 新ip  (^ 永久更改ip  ^)
info tcsh -o tcsh.txt -s  (^ 把info的信息存为文本文件 ^)
init 1  (^ 进入单用户环境 ^)
init 6  (^ 重新启动 ^)
kill -2 7873  (^ 给进程7873发送SIGINT信号 ^)
kudzu  (^ 用来检测硬件 ^)
lastb  (^ 显示最后一个登录不成功的登录尝试 ^)
last  (^ 显示最后一个登录到系统的用户 ^)
last  (^ 显示最近登陆到系统的用户与其相关信息 ^)
lde-i386  (^ 磁盘读写工具 http://lde.sourceforge.net/  ^)
ln: rm dir  (^ 删除目录软链接时, 后面不能带"/"; 即: rm dir/ 是错的!!! ^)
locale -a  (^ 查看系统对语言的支持情况, 看已经安装的字符集 ^)
locale  (^ 显示系统语言环境 ^)
locate filename  (^ 快速查找文件,要经常用updatedb命令更新数据库,可以在crontab中定时设置 ^)
logger -f /var/log/myapp.log  (^ 把/var/log/myapp.log文件中的信息记录到syslog中 ^)
logger -s " Hard disk full (^ 把消息发送到屏幕(标准错误) ^)
logger System rebooted  (^ 向syslog的系统日志文件写入一行信息:"System rebooted" ^)
logger -t full -s " Hard disk full (^ -t: 设置tag为full ^)
log: tail -f /var/log/messages   (^ 察看实时的日志 ^)
look word  (^ 检查列表中单词word的正确性 ^)
lsattr  (^ 命令列出文件属性 ^)
ls -i
ls -l --block-size=1  (^ 以字节显示文件大小 ^)
ls -l -c  (^ 显示 ctime: last-time of i-node status, (chmod, chown) ^)
ls -lRF  (^ "F" 选项将标记出文件类型 <比如: 目录是以 /结尾, 而可执行文件以 *结尾> ^)
ls -l --time-style=long-iso
ls -l -u  (^ 显示 atime: last-access time of file data, (read) ^)
ls -l     (^ 显示 mtime: last-modification time of file data, (write) ^)
lsmod |grep mii  (^ 查看内核是否已加载了网卡模块 ^)
lsof -i :22  (^ 查出22端口现在运行什么程序 ^)
lspci | grep Audio  (^ 查看声卡信息 ^)
lspci | grep net  (^ 查看网卡信息 ^)
lspci -n | grep 14e4  (^ find the Device ID's of Broadcom cards ^)
lspci  (^ 查看物理信息, /proc/cpuinfo (cpu信息) ^)
ls . | xargs -i -t cp ./{} dir  (^ 把当前目录下的文件拷贝到dir目录中; -i 是"替换字符串"选项.^)
mail -s  (^ -s: subject ^)
man ls | col -b > ls.txt  (^ 把man的信息存为文本文件 ^)
mcookie  (^ 产生126字节的随机16进制值(magic cookie) ^)
mencoder -ovc lavc basket.rm -oac mp3lame -o basket.avi  (^ *.rm 转为 *.avi ^)
mesg n  (^ 禁止别人把信息显示在我的终端 ^)
mesg y  (^ 允许别人把信息显示在我的终端 ^)
mkfs.ext2 /dev/sdb4  (^ 格式化成ext2 ^)
mkfs.ext2 -N 5000000 -b 1024 -I 128 disk.img  (^ 格式化成ext2分区,制定inode大小为128byte,inode数量为5000000,块大小为1024byte ^)
mkfs.ext3 -b 4096 -i 8192 -m 5 /dev/sdb4  (^ -b 数据块大小,-i inode 节点表示的字节数或数据块大小,-

5 为管理员保留的磁盘空间 5% ^)
mkfs.ext3 -m 3 -L LA  /dev/sdb2  (^ 为超级用户保留3%, label为"LA" ^)
mkisofs -r -o out.iso /opt  (^ 把opt目录下文件<包括子目录>制作成一个iso文件 ^)
modprobe -l  (^ 列出系统内核所有可用的模块 ^)
modprobeusb -storage  (^ 检查usb-storage模块是否已加载, 否则无法自动识别USB设备 ^) (^ ????? ^)
mogrify -format jpg *.bmp  (^ bmp转jpg ^)
mogrify -resize 640x480 *.jpg  (^ 把图片放缩为640x480 ^)
mount.cifs  //192.168.0.22/linux /mnt -o username=redhat%redhat (^ 将共享目录挂载到本地目录, 然后再访问 ^)
mount /dev/fd0 /mnt/floppy  (^ 软盘 ^)
mount /dev/sda1 /mnt/cdrom  (^ USB闪存 ^)
mount /dev/sdb2 /mmt/d -o iocharset=utf8,ro,uid=redhat,umask=0077  (^ 常用字符编码有gb2312和utf8 ^)
mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom  (^ FAT32的分区 ^)
mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom  (^ NTFS的分区 ^)
mount -o loop /abc.iso /mnt/cdrom  (^ ISO文件 ^)
mount -o usrquota,grpquota /dev/sdb1 /mnt/d1 或 mount -o emount,usrquota,grpquota /  (^ 使用磁盘配额,默认系统内核已支持quota ^)
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount -t iso9660 /dev/dvd /mnt/cdrom或mount -t udf /dev/dvd /mnt/cdrom  (^ 访问DVD  ^)
mount -t iso9660 xxxxx.iso /any/path/if/u/like -o loop  (^ 使用.iso文件 ^)
mount -t ntfs /dev/hda3 /mnt/d  (^ 需重新编译内核才能支持NTFS ^)
mount -t vfat /dev/hda2 /mnt/c
mount -t vfat -o iocharset=gb2312 /dev/sdb1 /mnt/u
mpg123 --title -C -Z *  (^ 随机播放当前目录的音频文件(永远不会结束) ^)
mpg123 --title -C *  (^ 顺序播放当前目录的音频文件 ^)
nasm -hf  (^ 查看nasm默认下生成的是什么格式的文件 ^)
native2ascii  (^ 把非ASCII字符转换成对应的16进制值 ^)
netstat -atnlp | grep qq  (^ -p : 显示PID ^)
netstat -atuln | grep ' :80 (^ -a: all, t: tcp, u: udp, n: 用显示数字, l: listening ^)
netstat -lpn|grep :53 | awk ' {print $5} '| sort
netstat -tuln | grep ' :80 (^ 查看系统是否己启动某一端口号 ^)
nl filename  (^ 在文件的每一行加上行号, 不统计空行 ^)
nmblookup my-server  (^ 查询服务器的IP ^)
nmblookup \*  (^ 查询所有活动的主机的IP ^)
nm  (^ 从a.out格式文件中读取可读字符串(函数等) ^)
nohup tar -cf /dev/tape /home &  (^ 进程在退出系统后还能执行 ^)
ntsysv  (^ 打开服务管理器, 与chkconfig相似 ^)
ntsysv  (^ 为setup的子命令 ^)
od: head -1 /dev/urandom | od -N 1 | awk ' { print $2 } (^ 产生1个随机数 ^)
od: head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个一位数的随机数 ^)
od -N4 -tu4  (^ -N4 选项将限制输出为4个字节; -tu4 选项将使用无符号10进制格式来输出. ^)
paste file1 file2  (^ 将file1和file2行号相同的行连接成一行 ^)
pidof program-name  (^ 查找program-name的pid; 如果有多个相同的program同时运行, 则返回所有的pid ^)
pidof vsftpd  (^ 根据进程名显示进程号 ^)
popd n  (^ 转到dir栈中第n个目录 ^)
printf " %02d. %s\n " $nr ${ line#*/ (^ 格式化输出 ^)
printk: echo " 8 " > /proc/sys/kernel/printk  (^ 改变控制台的消息级别(可从1到8) ^)
ps -ef |grep java |grep -v grep |awk ' {print $2} ' |xargs kill -9  (^ 如何批量杀掉进程 ^)
pstree  (^ 以树状图显示程序 ^)
pushd dir  (^ 把dir压入栈中 ^)
quotacheck -cvuga 或 quotacheck -cvag  (^ /dev/sdb1 ^)
quotaoff /mnt/sdb1  (^ 关闭磁盘配额 ^)
quotaon -a  (^ 激活 ^)
quotaon /mnt/sdb1  (^ 开启 ^)
quota -t  (^ 配置过期时间 ^)
quota -u redhat
ranlib libtttt.a  (^ 对libtttt.a生成索引, 好处是使得其里边的函数可以相互调用, 而不管它们所处的位置 ^)
rdate -s ntp2.uk.uu.net  (^ 与ntp2.uk.uu.net同步时间 ^)
rename ' y/A-Z/a-z/ ' *  (^ 批量重命名, 并转化为小写 ^)
rev file.name  (^ 将内容倒序读出 ^)
rev file  (^ 将行中的字符逆序, 第一个字成为最后一字 ^)
rm  " -file (^ 处理文件名内含有特殊字符的文件 ^)
rm  \-file   (^ 处理文件名内含有特殊字符的文件 ^)
rm -- -file  (^ 处理文件名内含有特殊字符的文件 ^)
route add default gw 网关的IP  (^ 手动添加默认网关 ^)
rpm2cpio <  in.rpm  > out.cpio  (^ 将rpm归档文件转换为cpio归档文件 ^)
rpm --import /etc/pki/rpm-gpg/*  (^ */ 导入FedoraGPG秘匙 ^)
rpm -ivh --aid samba*.rpm  (^ 装了rpmdb才有效 ^)
rpm -ivh cups-libs*.rpm
rpm -ivh rpmdb-fedora*.rpm
rpm -ivh samba*.rpm
rpm -qa | grep samba  (^ 查看所有软件包列表 ^)
rpm -q curl libcurl yum  (^ 查看yum的相关包及其对应的版本信息 ^)
rpm -qf cmd  (^ 查看程序cmd所在的软件包(rpm包) ^)
rpm -q kernel-devel  (^ 查看kernel-devel是否已安装 ^)
rpm -ql samba | more  (^ 查讯某个软件列表 ^)
rsync  (^  a fast, versatile, remote (and local) file-copying tool. # -r: 递归下载 # -t: 保存时间 # -v: verbose ^)
runlevel  (^ 查看当前系统的运行级别 ^)
samba: netstat -au | grep netbios  (^ 查看nmb是否启动成功 ^)
samba: service smb start  (^ 启动samba服务器 ^)
samba: smbclient  //10.3.1.4/lcy-share -U lcy (^ 登陆samba服务器, lcy为用户名 ^)
samba: smbclient -L 192.168.138.110 -N  (^ 查看机器上共享了什么, 并查找出局域网内的其它有共享服务的机器 ^)
samba: smbstatus  (^ 查看状态 ^)
samba: smbtree  (^ 查看局域网中的所有共享服务 ^)
samba: testparm  (^ 用于测试samba的配置文件 /etc/samba/smb.conf 语法是否正确 ^)
/sbin/ifconfig eth0 up  (^ 重启网卡 ^)
script file  (^ 把当前终端的输入输出自动保存到文件 file 中. ^)
sed ' 1d ' filename  (^ 删除第一行 ^)
sed ' $d ' | sed ' $d ' filename  (^ 删除最后两行 ^)
sed ' /^$/d (^ 删除文件中的所有空行(与"grep '.' "效果相同) ^)
sed ' /./!d (^ 删除文件中的所有空行(与"grep '.' "效果相同) ^)
sed ' /./,/^$/!d (^ 只保留多个相邻空行的第一行,并删除文件顶部的空行(模拟"cat -s") ^)
sed: echo $CLASSPATH | sed 's/:/\n/g' | sort  (^ java 类路径 ^)
sed: echo  " fae " | sed -e ' s:^0[bBxX]:: ' | tr ' [a-f] ' ' [A-F] (^ 把fae转换成大写 ^)
sed -e 's/\. //g'  -e 's/\,//g' -e 's/ /\ /g' (^ 过滤掉句号和逗号, 并且将单词间的空格修改为换行 ^)
sed: find . | sed -e " s/^.// (^ 把每一行的第一个字符删除 ^)
sed: head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个随机数 ^)
sed -n ' /^[A-Z]/p (^ 匹配大写字母开头的行 ^)
sed '$!N; /^\ (.*\) \n\1$/!P; D'  (^ 删除文件中相邻的重复行,只保留重复行中的第一行(模拟"uniq") ^)
sed '/^$/N;/\n$/D'  (^ 只保留多个相邻空行的第一行(模拟"cat -s") ^)
sed -n /" pattern "/p file  (^ 在file文件中查找匹配pattern的行 ^)
sed ' N;$!P;$!D;$d ' filename  (^ 删除最后两行 ^)
sed -n /[\+\{ \ }\;\" \ "\\\=\?~\ (\) \< \ >\&\*\|\$ ]/p  (^ 等价于:sed -n '/[+{};"\=?~()<>&*|$ ]/p'; -n表示只输出符合条件的 ^)
sed -n '/[+{};" \ "\=?~()<>&*|$ ]/p'  (^ 和find结合使用: find . | sed -n  '/[+{};" \=?~()<>&*|$ ]/p' ^)
sed '$!N; s/^\(.*\)\n\1$/\1/; t; D' (^ 删除除重复行外的所有行(模拟 "uniq -d") ^)
sed '$!N;s/\n/ /' file  (^ 将每两行连接成一行 ^)
sed " s/\r// " infile >outfile  (^ 把win格式的换行符换为unix格式的 ^)
selinux: setenforce 0  (^ 关闭SElinux, 要彻底禁用SELinux,需要在 /etc/sysconfig/selinux 中设置参数 selinux=0, 或者在 /etc/grub.conf 中添加这个参数 ^)
selinux: setenforce 1  (^ 打开SElinux ^)
seq 1 8  // 与  " 打印: 1 2 3 4 5 ... 8 "相同
service kudzu start  (^ 重新检测硬件, 让系统自动识别新 ^)
services: cat /etc/services | grep telnet  (^ 查看telnet的端口号 ^)
service --status-all  (^ 查看系统中各个服务的当前状态 ^)
service xinetd restart  (^ 重起xinetd ^)
setleds  (^ 开机修改各个键盘灯的状态 ^)
setterm -blank 0  (^ 不让显示器休眠 ^)
shred  (^ 安全的删除一个文件 ^)
shutdown -r now  (^ 重新启动 ^)
skill -KILL -v pts/2   (^ 注消终端用户: pts/2 ^)
smbclient  //192.168.0.22/linux -U redhat%redhat
smbclient  //host/share
smbclient -L 192.168.0.22 -U redhat%redhat  (^ 以redhat用户登录并显示共享目录 ^)
smbtar -s win2000 -u redhat -p redhat -x chinalab -t itlab.tar  (^ 远程备份网上邻居中的文件 ^)
sort list.txt  (^ 对list.txt中的每一行进行排序 ^)
sort -nr  (^ 按数字返序排序 ^)
sort: sed ' 1d ' file | sort -t\> +0 -1 -u  (^ 对文件file中除了第一行外的所有行进行按第一个字段排序, 字段以"<"分隔, 并只输出唯一行 ^)
sort -u list.txt  (^ 对list.txt中的每一行进行排序, 且对于重复行只输出一次 ^)
sort | uniq -c | sort -nr  (^ 最后统计出现次数,把数字显示在第一列,然后显示单词,并按数字排序 ^)
str: file=/home/scr/book/TCP-IP_I1/bin/tdtraceroute.sh; echo ${ file%/* (^ 只取路径名: /home/scr/book/TCP-IP_I1/bin ^)
str: file=/home/scr/book/TCP-IP_I1/bin/tdtraceroute.sh; echo ${ file##*/ (^ 只取文件名: tdtraceroute.sh ^)
strings file  (^ 把file中所有可打印的字符打印出来  ^)
stty echo  (^ 打开回显功能 ^)
stty -echo  (^ 关闭回显功能 ^)
stty: old_tty_setting=$ (stty -g)   (^ 保存终端设置; stty "$old_tty_setting": 恢复终端设置 ^)
stty " $old_tty_setting (^ 恢复老的终端设置 ^)
sudo -b  (^ command Background 在后台执行指定的命令.  ^)
sudo -e  (^ file Edit 不是执行命令, 而是修改文件, 相当于命令sudoedit.  ^)
sudo -h  (^ Help 列出使用方法, 退出.  ^)
sudo -k  (^ Kill 清除"入场卷"上的时间, 下次再使用sudo时要再输入密码.  ^)
sudo -K  (^ Sure kill 与-k类似, 但是它还要撕毁"入场卷", 也就是删除时间戳文件.  ^)
sudo -l  (^ List 列出当前用户可以执行的命令. 只有在sudoers里的用户才能使用该选项.  ^)
sudo -p  (^ prompt command Prompt 可以更改询问密码的提示语, 其中%u会代换为使用者帐号名称, %h会显示主机名称 ^)
sudo -u  (^ username|#uid User 以指定用户的身份执行命令. 后面的用户是除root以外的, 可以是用户名, 也可以是#uid.  ^)
sudo -V  (^ Version 显示版本信息, 并退出.  ^)
sync  (^ 刷新buffer. ^)
sysctl -p  (^ 使得内核改变立即生效;  ^)
tail -f /var/log/messages  (^ -f: 流动模式查看(即: 当文件有变动时, tail也相应的显被更新 ^)
tar cjvf bin.tar.bz2 bin/*    //*/ (^  把bin目录下文件<包括子目录>打包并压缩为文件:bin.tar.bz2 ^)
tar -cvf /home/123.tar /etc   (^ 打包,不压缩 ^)
tar -jxvf /home/123.tar.bz2   (^ 以bzip2解压 ^)
tar tvf lab.tar  (^ 显示备份包里的文件 ^)
tar -xvf 123.tar    (^ 解开包 ^)
tar xvzf file.tar.Z  (^ 解压*.tar.Z文件 ^)
tar xvzf vjde.tgz -C tdir  (^ -C : 解压到目录 tdir 下! ^)
tar zcf vimgdb_runtime.tgz doc macros syntax  (^ 压缩打包 ^)
tar -ztvf /tmp/etc.tar.gz    (^ 查看tar内容 ^)
tar zxf vimgdb_runtime.tgz -C /usr/lo  (^ 解压到/usr/lo下 ^)
tar -zxvf /home/123.tar.gz   (^ 以gzip解压 ^)
tar zxvf xxxx.tar.gz  (^ 解压*.tar.gz文件 ^)
tr a-z A-Z <  filename (^ 转换为大写 ^)
tr: cat cs.BAK | tr -d "^V^M"  > cs  (^ 把win格式的换行符换为unix格式的, 用dos2unix比较好 ^)
tr: cat file | tr a-z n-za-m  (^ 把file文件中的a转换为n, b转换为o, ... ^)
tr: cat file | tr -cd  a  (^ 输出file中为a的字符a. -c: 输出匹配的, -d: 若没-c则输出的非匹配的 ^)
tr -cs ' [:alpha:] ' Z  (^ 将非字母表字符转换为多个 Z, -s:然后去除多个连续的 Z. ^)
tr -d \r < infile  >outfile  (^ 把win格式的换行符换为unix格式的 ^)
tr: echo $CLASSPATH | tr : '\n' | sort  (^ java 类路径 ^)
tree:  (export LS_COLORS=NONE; tree | sed  's/\[.*\]  //')   (^ 目录树 ^)
tr -s '\173-\377' Z   (^ 把所有z后边的字符都转换为Z,并且去除多余重复的Z.注意173"{"和377都是8进制. 注意有-s参数 ^)
tty  (^ 查看自己所使用的终端 ^)
tune2fs -c -1 /dev/sdb1  (^ 不管挂载多小次都不自检 ^)
tune2fs -c -1 -i 0 /dev/sdb1  (^ 让分区永远不自检 ^)
tune2fs -j /dev/sdb4  (^ 转换为ext3 ^)
tune2fs -l /dev/sda7 | grep " Block size: (^ 查看一block的大小 ^)
tune2fs -l /dev/sda7  (^ 打印文件系统属性 ^)
tune2fs -l /dev/sdb1 | grep features  (^ 看Filesystemfeatures: has_journal是否有has_journal, 有则是ext3文件系统 ^)
type ./configure ; make ; make install  (^ 在同一个命令行上同时执行多条命令,用分号分隔 ^)
ulimit  (^ 设置系统资源限制 ^)
uname -r  (^ 看内核版本 ^)
uniq --all-repeated -i file  (^ 输出file中所有重复行, --all-repeated等价于-D ^)
uniq -c file  (^ 在每行前显示重复次数,可与其他选项结合,例如-cu或-cd或-c ^)
uniq -c  (^ 把数字显示在第一列 ^)
uniq -d file  (^ 只输出file中的重复行,且只输出一次,但不输出唯一的行 ^)
uniq -i file  (^ 比较时忽略大小写 ^)
uniq -u file  (^ 只输出file中的唯一行(当然是一次啦) ^)
uniq -ui wordslist.txt  (^ 只 ^)
units miles meters  (^ 求miles与meters的换算公式 ^)
units  (^ 这个工具用来在不同的计量单位之间互相转换 ^)
unix2dos -k hosts  (^ 将提供的hosts文件格式更新为dos格式 ^)
unrar e sa.rar   (^ 解压rar文件当前目录, 不自动创建目录 ^)
unrar x sa.rar dir   (^ 解压rar文件目录dir, 自动创建目录 ^)
updatedb  (^ 更新文件路径数据库 ^)
uptime: cat /proc/uptime | awk -F. '{ run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("run_days=%d\trun_hour=%d\trun_minute=%d\trun_second=%d\n",run_days,run_hour,run_minute,run_second) }' (^ 查看/proc/uptime文件计算系统运行时间 ^)
uptime: cat /proc/uptime  (^ 查看系统已启动了多久, 第一数字即是系统已运行的时间 ^)
uptime: date -d " $(awk -F. '{print $1}' /proc/uptime) second ago " +" %Y-%m-%d %H:%M:%S (^ 推算系统是什么时候启动的 ^)
uptime: date -d" $(ls --full-time /var/run/runlevel.dir | awk '{print $7,$8,$10,$9}') " +" %Y-%m-%d %H:%M:%S (^ 查看/var/run/runlevel.dir文件的时间信息获取大致的系统启动时间 ^)
uptime  (^ 查看系统已启动了多久 ^)
uudecode  (^ 这个工具用来把uuencode后的ASCII字符串恢复为二进制文件. ^)
uuencode  (^ 这个工具用来把二进制文件编码成ASCII字符串,这个工具适用于编码e-mail消息体,或者新闻组消息. ^)
vim: find . -type f -exec gvim -O {} +  (^ 在新的gvim中打开find找到的所有文件于不同的垂直窗口中 ^)
vim: find . -type f -exec gvim -o {} +  (^ 在新的gvim中打开find找到的所有文件于不同的水平窗口中 ^)
vim: find . -type f -exec gvim -p --remote-tab {} +  (^ 在现有的gvim中打开find找到的所有文件于不同的标签页 ^)
vim: find . -type f -exec gvim -p {} +  (^ 在新的gvim中打开find找到的所有文件于不同的标签页中 ^)
vim: find . -type f -exec gvim --servername GVIM --remote-tab {} \;  (^ 用gvim打开find找到的第一个文件 ^)
vim: find . -type f -exec gvim --servername GVIM --remote-tab {} +  (^ 用gvim打开find找到的所有文件于不同的标签页 ^)
vim: find . -type f -exec vim {} \;  (^ 用vim打开find的结果, 但每次只打开一个文件 ^)
vim: find . -type f -exec vim {} +  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
vim $ (find . -type f)   (^ 用vim打开find的结果 ^)
vim  `find .... `   (^ 用vim打开find的结果 ^)
vim -u NONE  (^ 启动vim时, 跳过任何启动初始化脚本 ^)
vim: xargs -a < (find . -type f)  vim  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
wall this system   will halt after 5 minutes  (^ 发公告信息给所有终端用户 ^)
watch -n 10 ls -l file.name  (^ 使用watch命令, 可以反复执行命令, 和ls配合, 可以达到每10秒观察某文件大小变化的效果 ^)
wget -p  http://www.xyz23.com/file01.html   (^ -p选项将会使得wget取得显示指定页时所需要的所有文件(如图片等) ^)
wget -r  ftp://ftp.xyz24.net/~bozo/project_files/  -O savefile.txt  (^ -r选项将会递归的从指定站点上下载所有连接. ^)
whatis
whereis ls  (^ 快速查找命令文件, 可以使用whereis ^)
whoami
write root /dev/pts/4  (^ 给某个终端的用户发送信信息 ^)
(^ Show who is logged on and what they are doing. ^)
yum --disablerepo=repo_name  (^ 禁用软件仓库 ^)
yum --enablerepo=repo_name  (^ 启用软件仓库 ^)
yum info application_name  (^ 查找某个应用程序的信息 ^)
yum install application_name
yum localinstall application_name  (^ 从硬盘安装rpm包并使用yum解决依赖 ^)
yum remove application_name  (^ 删除应用程序 ^)
yum search application_name  (^ 搜索某个应用程序 ^)
yum update  (^ 更新整个系统 ^)
zcat 123.gz  (^ 查看压缩文件内容 ^)
zip -r  t.zip t  (^ 递归地把t目录及其子目录文件压缩为t.zip ^)

1.1 unknown command

gpic  /home/scr/.rt/book/tools/gpic/gpic.raymond.ps
cdrecord
[~]# gcc -c test.c
[~]# ld -o test -Ttext 0x0 -e main test.o
[~]# objcopy -R .note -R .comment -S -O binary test test.bin
[~]# objdump --disassemble-all test.o

1.2 shell特有变量

 $#  传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数. 与位置
     变量不同, 此选项参数可超过9个.
 $$  脚本运行的当前进程ID号
 $!  后台运行的最后一个进程的进程ID号
 $@  与$#相同, 但是使用时加引号, 并在引号中返回每个参数
 $-  显示shell使用的当前选项, 与set命令功能相同
 $?  显示最后命令的退出状态. 0表示没有错误, 其他任何值表明有错误.

1.3 shell "2>&1"

// 这里"2>&1"的意思就是将标准错误也输出到标准输出当中.
[]$ /tmp/test.sh > /tmp/test.log 2>&1
//  NOTE : 下面这一行的写法是错误的!!!!!
[]$ /tmp/test.sh > 2>&1 /tmp/test.log

1.3 管道

" 管道命令 "是指包含管道的一个复杂命令.

管道, 即把一个程序的输出作为另一个程序的输入. ls 这种程序根本不理睬标准输入
(stdin) , 所以你 find xxx | ls 的话, ls 根本不理睬 find 给它的文件列表. xargs
命令从标准输入读取, 并将其作为参数构建命令行. 如:
$ echo a b | xargs ls
xargs 从标准输入读到 a 和 b 两行字符, 把它们作为两参数交给程序 ls, 于是
xargs 执行 ls a b.


有些程序既可从标准输入读取数据, 也可从文件读取, 如 sed:

$ find xxx | sed 's/a/b/'
这是使用 find 得到一个文件列表, 然后利用 sed 把其中每行的第一个 a 替换成b 再输
出.

$ find xxx | xargs sed 's/a/b/'
这是使用 find 得到一个文件列表, 然后利用 sed 把这些文件的内容替换了再输出.


1.4 String Operations

t=" ./a/b/f "

s=${ t#*/ }       // 从前面开始, 去除最短的匹配串: s="a/b/f"
s=${ t%/* }       // 从后面开始, 去除最短的匹配串: s="./a/b"

s=${ t##*/ }      // 从前面开始, 去除最长的匹配串: s="f"
s=${ t%%/* }      // 从后面开始, 去除最长的匹配串: s="."

1. some cmds
7za  (^ 压缩和解压缩 *.7z 文件 ^)
alsamixer -c0  (^ 打开声音控制器 ^)
apropos keyword  (^ 如果你想实现某种功能, 但是不知道该使用什么命令, 你可以试试apropos命令 ^)
arch  (^ 返回机器的类型 ^)
ar ruv libcii.a f1.o f2.o f3.o  (^ 创建静态库 ^)
awk: f=2; echo $f; echo " ab oa fo " | awk ' { print $ '$f'  } (^ 在awk的print选项中使用shell变量 ^)
awk ' /ppp/ {print $1} (^ 表示得到ppp的进程id. ^)
bc: echo " ibase=16; C " | bc  (^ ibase: 输入数的进制; 把C转换成十进制的(C必须是大写的) ^)
bc: echo " obase=2; 8 " | bc  (^ obase: 输出数的进制; 把8转换成二进制的 ^)
bc: echo " scale=4; sqrt(3) " | bc  (^ 求平方根 ^)
bc: echo " scale=9; 332/100.0 " | bc  (^ 把求332/100.0, 保留9位小数 ^)
bc: echo " scale=9; s(1.7) " | bc -l  (^ 求弧度为1.7的正弦s(), -l: 调用bc的算术库; 还有sqrt()等 ^)
bzcat filename.bz2   (^ 查看压缩文件内容 ^)
bzip2 -v -d minix_R3.1.5-r5612.iso.bz2  (^ 解压! ^)
bzip2 -z filename   (^ 压缩,加[-d]解压  ^)
cat file | xargs -n1  (^ 每行显示一个单词 ^)
cat -n  (^ 在文件的每一行加上行号, 另见nl ^)
cat -s   (^ 只保留多个相邻空行的第一行 ^)
cdrecord -v -isosize speed=2 dev=cdrom in.iso  (^ 把in.iso刻录到光盘中 ^)
cd -  (^ 可进入上一次进入的目录 ^)
change -l longinname  (^ 查看密码过期信息 ^)
chattr  (^ 命令修改 ^)
chgrp  (^ 改变档案群组 ^)
chkconfig --level 345 iptables on  (^ 设置iptables在level:345下默认是自动启动的 ^)
chkconfig --list | grep telnet  (^ 查看telnet是否已启动 ^)
chkconfig rsync on  (^ 所有服务通过init启动有些是通过xinetd服务启动的, 如rsync启动rsync ^)
chkconfig  (^ 检查某个服务状态, 包括各个级别0~6的状态 ^)
chmod 1770 xxx  (^ 设置粘着位(Sticky bit) ^)
chmod -R 444 *  (^ 改变所有子目录及文件的属性 ^)
chmod u+s /usr/bin/mentohust
cmp -s  (^ 若两文件相同,则返回0,否则返回1. ^)
cmp  (^ 比较2个文件 ^)
column: cat data_file | column -t  (^ 把data_file按表格形式输出 ^)
compress filename   (^ 压缩文件,加[-d]解压:uncompress ^)
convert -delay 0 *.bmp -loop 0 animated.gif  (^ 把当前目录下的所有bmp文件合成一个gif图片动画, 每帧间隔0ms, 重复播放 ^)
convert filename.bmp filename.jpg  (^ bmp转jpg ^)
cpio -covB  > [ file|device ]    (^ 份份 ^)
cpio: find src_dir -depth | cpio -admvp des_dir  (^ 把目录树src_dir复制到des_dir ^)
cpio -icduv < [ file|device ]    (^ 还原 ^)
cpio --make-directories -F in.cpio -i   (^ 解包cpio归档文件; -i:解包 ^)
Ctrl+Alt+BackSpace  (^ 强行退出X ^)
Ctrl+Alt+Del  (^ 重新启动 ^)
date -d " 2004/06/04 20:30:00 " +%s  (^ 把指定的时间转换为秒数 ^)
date +%j  (^ 今天是今年的第几天? ^)
date +%s  (^ The number of seconds elapsed since 01/01/1970 ^)
date " +%Y-%m-%d %H:%M:%S %w (^ 输出为: 2012-04-30 11:42:53 1 ^)
date +%Y-%m-%d.%S  (^ 输出为: 2010-05-31.44 ^)
dc: echo " 11 16 o p " | dc  (^ o: 设置输出的基数(数制), p: 打印栈顶 ^)
dc: echo " 11 16 o p " | dc  (^ 把11转换为16进制的(dc可以转换任意进制) ^)
dc: echo " 111[p]s2[lip/dli%0=1dvsr]s12sid2%0=13sidvsr[dli%0=1lrli2+dsi!>.]ds.xd1<2 " | dc (^ 求111的约数 ^)
dd: echo -n " hello world " | dd cbs=2 conv=unblock 2> /dev/null  (^ conv=unblock: 每输出cbs个字符就换行一次 ^)
dd if=/dev/urandom of=$file bs=$BLOCKSIZE count=$flength  (^ 带有 /dev/urandom 的 I/O 必须要有单位块尺寸 ^)
dd if=/dev/zero of=disk.img count=1024 bs=1024KB  (^ 将zero写入自定义的disk.img文件1024次, 每次写入1024Kb; 也就是创建一个1GB的文件, 用zero文件进行填充.  ^)
dd if=file.in conv=ucase of=file.out 2>/dev/null  (^ 拷贝file.in, 并转为大写 ^)
dd if=$filename conv=lcase > $filename.lppercase  (^ 将一个文件转换为小写 ^)
dd if=$input_file of=$output_file bs=1 skip=$ ((n-1) ) count=$ ((p-n+1) ) 2> /dev/null  (^ 把位置n到p的字符提取出来 ^)
dd: keys=$ (dd bs=1 count=$keypresses 2> /dev/null)   (^ 记录所下按的键于keys中 ^)
Debugfs  (^ QQQQQ http://en.wikipedia.org/wiki/Debugfs  ^)
deplate -m utf8 hello.viki  (^ 编译含有中文的viki文件 ^)
deplate -m zh-cn-autospace hello.viki
diff -urN linux/ my_linux/ >mypatch.diff
diff  (^ 比较2个文件 ^)
dmesg  (^ 显示开机自检的内容命令 ^)
dos2unix -k -n hosts.dos hosts.linux  (^ 转换为unix格式 ^)
du -sh -X ./exclude.list  (^ 不计算...中匹配的文件.(*.zip ...) ^)
echo -n " fff (^ -n: 不换行 ^)
echo | tr '\012'   '\001'  (^ 产生 Ctrl+A ^)
edquota -u redhat  (^ 进VI编缉用户配额编缉用户可用的字节数, 软性的, 硬性的, 文件数, 软件性的, 硬性的 ^)
egrep -o " ^[[:digit:]]+ " /var/run/ntpd.pid   (^ 从 /var/run/ntpd.pid 文件中读取出进程PID. -o: 只输出匹配内容而不是整行 ^)
eject -t  (^ 收回 ^)
eject  (^ 弹出光盘 ^)
/etc/init.d/network restart  (^ 重起网卡 ^)
/etc/rc.d/init.d/httpd start  (^ 启动https ^)
eval " cat $file (^ 执行""里的命令 ^)
fc n  (^ n: 历史命令的序号,这将打开一个编辑窗口,修改这条命令,以满足需要.当退出时,该命令就会执行 ^)
file filename  (^ 显示文件的类型及格式等 ^)
file libc-2.10.2.so  (^ 确认文件系统要求的最低内核 ^)
find / -amin -10   (^ 查找在系统中最后10分钟访问的文件 ^)
find / -atime -2   (^ 查找在系统中最后48小时访问的文件 ^)
find -depth  (^ 先查找出目录下的文件, 后是目录本身(深度优先) ^)
find / -empty   (^ 查找在系统中为空的文件或者文件夹 ^)
find . -exec chown scr:scr {} \;  (^ 改变当前目录下的所有子目录包括文件的属主 ^)
find -fprint0 file  (^ 打印文件完整文件名包括空的文件 ^)
find -fprintf file  (^ format打印文件格式 ^)
find -fprint file  (^ 打印文件完整文件名 ^)
find .  | grep svn | xargs rm -r  (^ 删除当前目录下的路径名含有"svn"的文件或目录 ^)
find / -group cat   (^ 查找在系统中属于groupcat的文件 ^)
find . -iname " *abcd* (^ 不区分大小写 ^)
find -ls  (^ 打印同种文件格式的文件. ^)
find . -maxdepth 2 -name fred   (^ 查找目录的最大深度为2  ^)
find / -mmin -5   (^ 查找在系统中最后5分钟里修改过的文件 ^)
find /mnt/cdrom -name *.mp3 -print > cd.play.list  (^ 快速建立MP3播放列表,然后使用xmms或x11amp就能进行播放了 ^)
find / -mtime -1  (^ 查找在系统中最后24小时里修改过的文件 ^)
find . -name " * * " -exec rm -f {} \;  (^ 删除文件名中以任何方式包含空白的文件 ^)
find / -name " httpd.conf " -ls  (^ 查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息 ^)
find . -name '*[+{ ;"\\=?~()<>&*|$ ]*'   //  (^ 查找文件名中包含有 + { ; " \ = ? ~ ( ) < > & * | $ space 这些字符的文件 ^)
find / -nouser  (^ 查找在系统中属于作废用户的文件 ^)
find -ok command;  (^ 给用户命令执行操作, 根据用户的Y确认输入执行 ^)
find -printf format  (^ 打印文件格式 ^)
find /tmp -size +10000000c -and -mtime +2  (^ 在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件 ^)
find /tmp ! -user panda  (^ 在/tmp目录中查找所有不属于panda的文件 ^)
find . -type d -exec chmod 755 {} \;
find . -type f -a \ ( -name *.txt -o -name install \)   (^ -a 和 -o 参数的使用 ^)
find . -type f -exec chmod 644 {} \;
find . -type f -exec grep " the string you want find... " {} \; -print  (^ 查找含特定字符串的文件 ^)
find . -type f -exec gvim --servername GVIM --remote-tab {} \;  (^ 用gvim打开find找到的第一个文件 ^)
find . -type f -exec gvim --servername GVIM --remote-tab {} +  (^ 用gvim打开find找到的所有文件于不同的标签页 ^)
find . -type f -exec vim {} \;  (^ 用vim打开find的结果, 但每次只打开一个文件 ^)
find . -type f -exec vim {} +  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
find . -type f -name *.vim  |xargs cat | wc -l  (^ 统计当前目录下所有.vim文件的行数 ^)
find . -type f | xargs chmod -x
find . -type f | xargs grep ' ????? '
find . -type f | xargs grep ' NAL (^ 查找有NAL内容的文件 ^)
find -type l -exec ls -l --color {} \;  (^ 查找当前目录下的所有软连接 ^)
find / -user fred -or -user george
find / -user user-id  (^ 查找在系统中属于FRED这个用户的文件 ^)
finger -l root
finger  (^ 查看当前所有登录用户所使用的终端 ^)
fmt: echo file | fmt -w 80  (^ fmt -w 80 输出设为80列宽; 等价于: fold - -s -w ^)
fold: fold - -s -w  (^ 见fmt ^)
for a in  `seq 80`    // 与  " for a in 1 2 3 4 5 ... 80 "相同  (少敲了好多字!). (12_49)
free  (^ 查看内存使用情况 ^)
fsck.ext3 /dev/sdb1  (^ 检查文件系统数据完整性的工具 ^)
fsck.ext3 -y /dev/sdb1  (^ 自动修复错误 ^)
fsck -t ext2 /dev/sdb1  (^ 检查文件系统数据完整性的工具 ^)
fuser 23/tcp  (^ 同: fuser -n tcp 23 ^)
fuser -l  (^ 列出所有的signal的对应的名称 ^)
fuser -m /mnt/share  (^ -m: 根据挂载目录找出挂载进程的PID ^)
fuser -n tcp 23  (^ 查看端口号为23的tcp连接的进程ID号 ^)
fuser telnet/tcp  (^ 同: fuser -n tcp 23 ^)
fuser -un tcp 23  (^ -u: 同时显示其用户名 ^)
getconf PAGESIZE  (^ 查看一block的大小 ^)
git branch -d hotfix  (^ 删除分支 ^)
git checkout -b branch1  (^ 新建并切换到该分支 ^)
git checkout c59d73e4e12ffcccdaa9a0f8ca86ab5ad1cd91b3 -- README  (^ 恢复之前删除的文件: README, 前提是 README 在版本c59...b3时没被删除 ^)
git checkout master  (^ 切换到 master 分支 ^)
git checkout --track -b foo origin/foo  (^ 有个远程分支是foo, 在本地checkout它 ^)
git config --global core.editor emacs
git config --global user.email  [email protected]
git config --global user.name " John Doe (^ "--global"参数使得保存在 ~/.gitconfig ^)
git config --list  (^ 要检查已有的配置信息 ^)
git config --system user.name " John Doe (^ "--system"参数使得保存在 /etc/gitconfig ^)
git config user.name " John Doe (^ "--global"参数使得保存在工作目录: .git/config ^)
git diff 1c09 94da  (^ 比较两个版本的差异 ^)
git log --stat | sed ' 1,3d ' | sed ' /Author: /q ' | sed ' $d ' | sed ' $d (^ 只输出最近一次提交的历史 ^)
git reset --hard HEAD~1  (^ 取消最后一次提交 ^)
git status  (^ 检查当前文件状态 ^)
gnome-screenshot -a  (^ 屏幕抓图 ^)
gnome-terminal --geometry=130x38  (^ 启动终端的尺寸大小 ^)
gnome-terminal --help  (^  ^)
grep -A1 -B1 regexp flie  (^ 打印匹配regexp的行和前后各一行 ^)
grep -Fw  (^ 固定字符串; 整个单词 ^)
grep i " name (^ 不区分大小写 ^)
grep ' . '   (^ 删除文件中的所有空行 ^)
gvim -U NONE  (^ 启动gvim时, 跳过任何启动初始化脚本 ^)
gzexe gawk  (^ 可以使用gzexe压缩可执行文件, 压缩后的可执行文件仍然可以直接执行 ^)
gzip filename    (^ 压缩,加[-d]解压  ^)
head -1 /proc/asound/card0/codec#0  (^ 确认你的声卡型号 ^)
head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个随机数 ^)
history -c  (^ 清除所有的命令历史 ^)
hostname
idesk  (^ QQQQQ http://idesk.sourceforge.net/  ^)
id  (^ 显示用户(组)ID ^)
ifconfig eth0 down  (^ 关闭网卡设备 ^)
ifconfig eth0 hw ether 00:1E:90:13:e0:25
ifconfig eth0 hw ether 00:1E:90:13:e0:7E  (^ 修改mac地址. 修改前须: service network stop ^)
ifconfig eth0 hw ether MAC地址  (^ 修改MAC地址 ^)
ifconfig eth0 新ip  (^ 永久更改ip  ^)
info tcsh -o tcsh.txt -s  (^ 把info的信息存为文本文件 ^)
init 1  (^ 进入单用户环境 ^)
init 6  (^ 重新启动 ^)
kill -2 7873  (^ 给进程7873发送SIGINT信号 ^)
kudzu  (^ 用来检测硬件 ^)
lastb  (^ 显示最后一个登录不成功的登录尝试 ^)
last  (^ 显示最后一个登录到系统的用户 ^)
last  (^ 显示最近登陆到系统的用户与其相关信息 ^)
lde-i386  (^ 磁盘读写工具 http://lde.sourceforge.net/  ^)
ln: rm dir  (^ 删除目录软链接时, 后面不能带"/"; 即: rm dir/ 是错的!!! ^)
locale -a  (^ 查看系统对语言的支持情况, 看已经安装的字符集 ^)
locale  (^ 显示系统语言环境 ^)
locate filename  (^ 快速查找文件,要经常用updatedb命令更新数据库,可以在crontab中定时设置 ^)
logger -f /var/log/myapp.log  (^ 把/var/log/myapp.log文件中的信息记录到syslog中 ^)
logger -s " Hard disk full (^ 把消息发送到屏幕(标准错误) ^)
logger System rebooted  (^ 向syslog的系统日志文件写入一行信息:"System rebooted" ^)
logger -t full -s " Hard disk full (^ -t: 设置tag为full ^)
log: tail -f /var/log/messages   (^ 察看实时的日志 ^)
look word  (^ 检查列表中单词word的正确性 ^)
lsattr  (^ 命令列出文件属性 ^)
ls -i
ls -l --block-size=1  (^ 以字节显示文件大小 ^)
ls -l -c  (^ 显示 ctime: last-time of i-node status, (chmod, chown) ^)
ls -lRF  (^ "F" 选项将标记出文件类型 <比如: 目录是以 /结尾, 而可执行文件以 *结尾> ^)
ls -l --time-style=long-iso
ls -l -u  (^ 显示 atime: last-access time of file data, (read) ^)
ls -l     (^ 显示 mtime: last-modification time of file data, (write) ^)
lsmod |grep mii  (^ 查看内核是否已加载了网卡模块 ^)
lsof -i :22  (^ 查出22端口现在运行什么程序 ^)
lspci | grep Audio  (^ 查看声卡信息 ^)
lspci | grep net  (^ 查看网卡信息 ^)
lspci -n | grep 14e4  (^ find the Device ID's of Broadcom cards ^)
lspci  (^ 查看物理信息, /proc/cpuinfo (cpu信息) ^)
ls . | xargs -i -t cp ./{} dir  (^ 把当前目录下的文件拷贝到dir目录中; -i 是"替换字符串"选项.^)
mail -s  (^ -s: subject ^)
man ls | col -b > ls.txt  (^ 把man的信息存为文本文件 ^)
mcookie  (^ 产生126字节的随机16进制值(magic cookie) ^)
mencoder -ovc lavc basket.rm -oac mp3lame -o basket.avi  (^ *.rm 转为 *.avi ^)
mesg n  (^ 禁止别人把信息显示在我的终端 ^)
mesg y  (^ 允许别人把信息显示在我的终端 ^)
mkfs.ext2 /dev/sdb4  (^ 格式化成ext2 ^)
mkfs.ext2 -N 5000000 -b 1024 -I 128 disk.img  (^ 格式化成ext2分区,制定inode大小为128byte,inode数量为5000000,块大小为1024byte ^)
mkfs.ext3 -b 4096 -i 8192 -m 5 /dev/sdb4  (^ -b 数据块大小,-i inode 节点表示的字节数或数据块大小,-

5 为管理员保留的磁盘空间 5% ^)
mkfs.ext3 -m 3 -L LA  /dev/sdb2  (^ 为超级用户保留3%, label为"LA" ^)
mkisofs -r -o out.iso /opt  (^ 把opt目录下文件<包括子目录>制作成一个iso文件 ^)
modprobe -l  (^ 列出系统内核所有可用的模块 ^)
modprobeusb -storage  (^ 检查usb-storage模块是否已加载, 否则无法自动识别USB设备 ^) (^ ????? ^)
mogrify -format jpg *.bmp  (^ bmp转jpg ^)
mogrify -resize 640x480 *.jpg  (^ 把图片放缩为640x480 ^)
mount.cifs  //192.168.0.22/linux /mnt -o username=redhat%redhat (^ 将共享目录挂载到本地目录, 然后再访问 ^)
mount /dev/fd0 /mnt/floppy  (^ 软盘 ^)
mount /dev/sda1 /mnt/cdrom  (^ USB闪存 ^)
mount /dev/sdb2 /mmt/d -o iocharset=utf8,ro,uid=redhat,umask=0077  (^ 常用字符编码有gb2312和utf8 ^)
mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom  (^ FAT32的分区 ^)
mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom  (^ NTFS的分区 ^)
mount -o loop /abc.iso /mnt/cdrom  (^ ISO文件 ^)
mount -o usrquota,grpquota /dev/sdb1 /mnt/d1 或 mount -o emount,usrquota,grpquota /  (^ 使用磁盘配额,默认系统内核已支持quota ^)
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount -t iso9660 /dev/dvd /mnt/cdrom或mount -t udf /dev/dvd /mnt/cdrom  (^ 访问DVD  ^)
mount -t iso9660 xxxxx.iso /any/path/if/u/like -o loop  (^ 使用.iso文件 ^)
mount -t ntfs /dev/hda3 /mnt/d  (^ 需重新编译内核才能支持NTFS ^)
mount -t vfat /dev/hda2 /mnt/c
mount -t vfat -o iocharset=gb2312 /dev/sdb1 /mnt/u
mpg123 --title -C -Z *  (^ 随机播放当前目录的音频文件(永远不会结束) ^)
mpg123 --title -C *  (^ 顺序播放当前目录的音频文件 ^)
nasm -hf  (^ 查看nasm默认下生成的是什么格式的文件 ^)
native2ascii  (^ 把非ASCII字符转换成对应的16进制值 ^)
netstat -atnlp | grep qq  (^ -p : 显示PID ^)
netstat -atuln | grep ' :80 (^ -a: all, t: tcp, u: udp, n: 用显示数字, l: listening ^)
netstat -lpn|grep :53 | awk ' {print $5} '| sort
netstat -tuln | grep ' :80 (^ 查看系统是否己启动某一端口号 ^)
nl filename  (^ 在文件的每一行加上行号, 不统计空行 ^)
nmblookup my-server  (^ 查询服务器的IP ^)
nmblookup \*  (^ 查询所有活动的主机的IP ^)
nm  (^ 从a.out格式文件中读取可读字符串(函数等) ^)
nohup tar -cf /dev/tape /home &  (^ 进程在退出系统后还能执行 ^)
ntsysv  (^ 打开服务管理器, 与chkconfig相似 ^)
ntsysv  (^ 为setup的子命令 ^)
od: head -1 /dev/urandom | od -N 1 | awk ' { print $2 } (^ 产生1个随机数 ^)
od: head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个一位数的随机数 ^)
od -N4 -tu4  (^ -N4 选项将限制输出为4个字节; -tu4 选项将使用无符号10进制格式来输出. ^)
paste file1 file2  (^ 将file1和file2行号相同的行连接成一行 ^)
pidof program-name  (^ 查找program-name的pid; 如果有多个相同的program同时运行, 则返回所有的pid ^)
pidof vsftpd  (^ 根据进程名显示进程号 ^)
popd n  (^ 转到dir栈中第n个目录 ^)
printf " %02d. %s\n " $nr ${ line#*/ (^ 格式化输出 ^)
printk: echo " 8 " > /proc/sys/kernel/printk  (^ 改变控制台的消息级别(可从1到8) ^)
ps -ef |grep java |grep -v grep |awk ' {print $2} ' |xargs kill -9  (^ 如何批量杀掉进程 ^)
pstree  (^ 以树状图显示程序 ^)
pushd dir  (^ 把dir压入栈中 ^)
quotacheck -cvuga 或 quotacheck -cvag  (^ /dev/sdb1 ^)
quotaoff /mnt/sdb1  (^ 关闭磁盘配额 ^)
quotaon -a  (^ 激活 ^)
quotaon /mnt/sdb1  (^ 开启 ^)
quota -t  (^ 配置过期时间 ^)
quota -u redhat
ranlib libtttt.a  (^ 对libtttt.a生成索引, 好处是使得其里边的函数可以相互调用, 而不管它们所处的位置 ^)
rdate -s ntp2.uk.uu.net  (^ 与ntp2.uk.uu.net同步时间 ^)
rename ' y/A-Z/a-z/ ' *  (^ 批量重命名, 并转化为小写 ^)
rev file.name  (^ 将内容倒序读出 ^)
rev file  (^ 将行中的字符逆序, 第一个字成为最后一字 ^)
rm  " -file (^ 处理文件名内含有特殊字符的文件 ^)
rm  \-file   (^ 处理文件名内含有特殊字符的文件 ^)
rm -- -file  (^ 处理文件名内含有特殊字符的文件 ^)
route add default gw 网关的IP  (^ 手动添加默认网关 ^)
rpm2cpio <  in.rpm  > out.cpio  (^ 将rpm归档文件转换为cpio归档文件 ^)
rpm --import /etc/pki/rpm-gpg/*  (^ */ 导入FedoraGPG秘匙 ^)
rpm -ivh --aid samba*.rpm  (^ 装了rpmdb才有效 ^)
rpm -ivh cups-libs*.rpm
rpm -ivh rpmdb-fedora*.rpm
rpm -ivh samba*.rpm
rpm -qa | grep samba  (^ 查看所有软件包列表 ^)
rpm -q curl libcurl yum  (^ 查看yum的相关包及其对应的版本信息 ^)
rpm -qf cmd  (^ 查看程序cmd所在的软件包(rpm包) ^)
rpm -q kernel-devel  (^ 查看kernel-devel是否已安装 ^)
rpm -ql samba | more  (^ 查讯某个软件列表 ^)
rsync  (^  a fast, versatile, remote (and local) file-copying tool. # -r: 递归下载 # -t: 保存时间 # -v: verbose ^)
runlevel  (^ 查看当前系统的运行级别 ^)
samba: netstat -au | grep netbios  (^ 查看nmb是否启动成功 ^)
samba: service smb start  (^ 启动samba服务器 ^)
samba: smbclient  //10.3.1.4/lcy-share -U lcy (^ 登陆samba服务器, lcy为用户名 ^)
samba: smbclient -L 192.168.138.110 -N  (^ 查看机器上共享了什么, 并查找出局域网内的其它有共享服务的机器 ^)
samba: smbstatus  (^ 查看状态 ^)
samba: smbtree  (^ 查看局域网中的所有共享服务 ^)
samba: testparm  (^ 用于测试samba的配置文件 /etc/samba/smb.conf 语法是否正确 ^)
/sbin/ifconfig eth0 up  (^ 重启网卡 ^)
script file  (^ 把当前终端的输入输出自动保存到文件 file 中. ^)
sed ' 1d ' filename  (^ 删除第一行 ^)
sed ' $d ' | sed ' $d ' filename  (^ 删除最后两行 ^)
sed ' /^$/d (^ 删除文件中的所有空行(与"grep '.' "效果相同) ^)
sed ' /./!d (^ 删除文件中的所有空行(与"grep '.' "效果相同) ^)
sed ' /./,/^$/!d (^ 只保留多个相邻空行的第一行,并删除文件顶部的空行(模拟"cat -s") ^)
sed: echo $CLASSPATH | sed 's/:/\n/g' | sort  (^ java 类路径 ^)
sed: echo  " fae " | sed -e ' s:^0[bBxX]:: ' | tr ' [a-f] ' ' [A-F] (^ 把fae转换成大写 ^)
sed -e 's/\. //g'  -e 's/\,//g' -e 's/ /\ /g' (^ 过滤掉句号和逗号, 并且将单词间的空格修改为换行 ^)
sed: find . | sed -e " s/^.// (^ 把每一行的第一个字符删除 ^)
sed: head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个随机数 ^)
sed -n ' /^[A-Z]/p (^ 匹配大写字母开头的行 ^)
sed '$!N; /^\ (.*\) \n\1$/!P; D'  (^ 删除文件中相邻的重复行,只保留重复行中的第一行(模拟"uniq") ^)
sed '/^$/N;/\n$/D'  (^ 只保留多个相邻空行的第一行(模拟"cat -s") ^)
sed -n /" pattern "/p file  (^ 在file文件中查找匹配pattern的行 ^)
sed ' N;$!P;$!D;$d ' filename  (^ 删除最后两行 ^)
sed -n /[\+\{ \ }\;\" \ "\\\=\?~\ (\) \< \ >\&\*\|\$ ]/p  (^ 等价于:sed -n '/[+{};"\=?~()<>&*|$ ]/p'; -n表示只输出符合条件的 ^)
sed -n '/[+{};" \ "\=?~()<>&*|$ ]/p'  (^ 和find结合使用: find . | sed -n  '/[+{};" \=?~()<>&*|$ ]/p' ^)
sed '$!N; s/^\(.*\)\n\1$/\1/; t; D' (^ 删除除重复行外的所有行(模拟 "uniq -d") ^)
sed '$!N;s/\n/ /' file  (^ 将每两行连接成一行 ^)
sed " s/\r// " infile >outfile  (^ 把win格式的换行符换为unix格式的 ^)
selinux: setenforce 0  (^ 关闭SElinux, 要彻底禁用SELinux,需要在 /etc/sysconfig/selinux 中设置参数 selinux=0, 或者在 /etc/grub.conf 中添加这个参数 ^)
selinux: setenforce 1  (^ 打开SElinux ^)
seq 1 8  // 与  " 打印: 1 2 3 4 5 ... 8 "相同
service kudzu start  (^ 重新检测硬件, 让系统自动识别新 ^)
services: cat /etc/services | grep telnet  (^ 查看telnet的端口号 ^)
service --status-all  (^ 查看系统中各个服务的当前状态 ^)
service xinetd restart  (^ 重起xinetd ^)
setleds  (^ 开机修改各个键盘灯的状态 ^)
setterm -blank 0  (^ 不让显示器休眠 ^)
shred  (^ 安全的删除一个文件 ^)
shutdown -r now  (^ 重新启动 ^)
skill -KILL -v pts/2   (^ 注消终端用户: pts/2 ^)
smbclient  //192.168.0.22/linux -U redhat%redhat
smbclient  //host/share
smbclient -L 192.168.0.22 -U redhat%redhat  (^ 以redhat用户登录并显示共享目录 ^)
smbtar -s win2000 -u redhat -p redhat -x chinalab -t itlab.tar  (^ 远程备份网上邻居中的文件 ^)
sort list.txt  (^ 对list.txt中的每一行进行排序 ^)
sort -nr  (^ 按数字返序排序 ^)
sort: sed ' 1d ' file | sort -t\> +0 -1 -u  (^ 对文件file中除了第一行外的所有行进行按第一个字段排序, 字段以"<"分隔, 并只输出唯一行 ^)
sort -u list.txt  (^ 对list.txt中的每一行进行排序, 且对于重复行只输出一次 ^)
sort | uniq -c | sort -nr  (^ 最后统计出现次数,把数字显示在第一列,然后显示单词,并按数字排序 ^)
str: file=/home/scr/book/TCP-IP_I1/bin/tdtraceroute.sh; echo ${ file%/* (^ 只取路径名: /home/scr/book/TCP-IP_I1/bin ^)
str: file=/home/scr/book/TCP-IP_I1/bin/tdtraceroute.sh; echo ${ file##*/ (^ 只取文件名: tdtraceroute.sh ^)
strings file  (^ 把file中所有可打印的字符打印出来  ^)
stty echo  (^ 打开回显功能 ^)
stty -echo  (^ 关闭回显功能 ^)
stty: old_tty_setting=$ (stty -g)   (^ 保存终端设置; stty "$old_tty_setting": 恢复终端设置 ^)
stty " $old_tty_setting (^ 恢复老的终端设置 ^)
sudo -b  (^ command Background 在后台执行指定的命令.  ^)
sudo -e  (^ file Edit 不是执行命令, 而是修改文件, 相当于命令sudoedit.  ^)
sudo -h  (^ Help 列出使用方法, 退出.  ^)
sudo -k  (^ Kill 清除"入场卷"上的时间, 下次再使用sudo时要再输入密码.  ^)
sudo -K  (^ Sure kill 与-k类似, 但是它还要撕毁"入场卷", 也就是删除时间戳文件.  ^)
sudo -l  (^ List 列出当前用户可以执行的命令. 只有在sudoers里的用户才能使用该选项.  ^)
sudo -p  (^ prompt command Prompt 可以更改询问密码的提示语, 其中%u会代换为使用者帐号名称, %h会显示主机名称 ^)
sudo -u  (^ username|#uid User 以指定用户的身份执行命令. 后面的用户是除root以外的, 可以是用户名, 也可以是#uid.  ^)
sudo -V  (^ Version 显示版本信息, 并退出.  ^)
sync  (^ 刷新buffer. ^)
sysctl -p  (^ 使得内核改变立即生效;  ^)
tail -f /var/log/messages  (^ -f: 流动模式查看(即: 当文件有变动时, tail也相应的显被更新 ^)
tar cjvf bin.tar.bz2 bin/*    //*/ (^  把bin目录下文件<包括子目录>打包并压缩为文件:bin.tar.bz2 ^)
tar -cvf /home/123.tar /etc   (^ 打包,不压缩 ^)
tar -jxvf /home/123.tar.bz2   (^ 以bzip2解压 ^)
tar tvf lab.tar  (^ 显示备份包里的文件 ^)
tar -xvf 123.tar    (^ 解开包 ^)
tar xvzf file.tar.Z  (^ 解压*.tar.Z文件 ^)
tar xvzf vjde.tgz -C tdir  (^ -C : 解压到目录 tdir 下! ^)
tar zcf vimgdb_runtime.tgz doc macros syntax  (^ 压缩打包 ^)
tar -ztvf /tmp/etc.tar.gz    (^ 查看tar内容 ^)
tar zxf vimgdb_runtime.tgz -C /usr/lo  (^ 解压到/usr/lo下 ^)
tar -zxvf /home/123.tar.gz   (^ 以gzip解压 ^)
tar zxvf xxxx.tar.gz  (^ 解压*.tar.gz文件 ^)
tr a-z A-Z <  filename (^ 转换为大写 ^)
tr: cat cs.BAK | tr -d "^V^M"  > cs  (^ 把win格式的换行符换为unix格式的, 用dos2unix比较好 ^)
tr: cat file | tr a-z n-za-m  (^ 把file文件中的a转换为n, b转换为o, ... ^)
tr: cat file | tr -cd  a  (^ 输出file中为a的字符a. -c: 输出匹配的, -d: 若没-c则输出的非匹配的 ^)
tr -cs ' [:alpha:] ' Z  (^ 将非字母表字符转换为多个 Z, -s:然后去除多个连续的 Z. ^)
tr -d \r < infile  >outfile  (^ 把win格式的换行符换为unix格式的 ^)
tr: echo $CLASSPATH | tr : '\n' | sort  (^ java 类路径 ^)
tree:  (export LS_COLORS=NONE; tree | sed  's/\[.*\]  //')   (^ 目录树 ^)
tr -s '\173-\377' Z   (^ 把所有z后边的字符都转换为Z,并且去除多余重复的Z.注意173"{"和377都是8进制. 注意有-s参数 ^)
tty  (^ 查看自己所使用的终端 ^)
tune2fs -c -1 /dev/sdb1  (^ 不管挂载多小次都不自检 ^)
tune2fs -c -1 -i 0 /dev/sdb1  (^ 让分区永远不自检 ^)
tune2fs -j /dev/sdb4  (^ 转换为ext3 ^)
tune2fs -l /dev/sda7 | grep " Block size: (^ 查看一block的大小 ^)
tune2fs -l /dev/sda7  (^ 打印文件系统属性 ^)
tune2fs -l /dev/sdb1 | grep features  (^ 看Filesystemfeatures: has_journal是否有has_journal, 有则是ext3文件系统 ^)
type ./configure ; make ; make install  (^ 在同一个命令行上同时执行多条命令,用分号分隔 ^)
ulimit  (^ 设置系统资源限制 ^)
uname -r  (^ 看内核版本 ^)
uniq --all-repeated -i file  (^ 输出file中所有重复行, --all-repeated等价于-D ^)
uniq -c file  (^ 在每行前显示重复次数,可与其他选项结合,例如-cu或-cd或-c ^)
uniq -c  (^ 把数字显示在第一列 ^)
uniq -d file  (^ 只输出file中的重复行,且只输出一次,但不输出唯一的行 ^)
uniq -i file  (^ 比较时忽略大小写 ^)
uniq -u file  (^ 只输出file中的唯一行(当然是一次啦) ^)
uniq -ui wordslist.txt  (^ 只 ^)
units miles meters  (^ 求miles与meters的换算公式 ^)
units  (^ 这个工具用来在不同的计量单位之间互相转换 ^)
unix2dos -k hosts  (^ 将提供的hosts文件格式更新为dos格式 ^)
unrar e sa.rar   (^ 解压rar文件当前目录, 不自动创建目录 ^)
unrar x sa.rar dir   (^ 解压rar文件目录dir, 自动创建目录 ^)
updatedb  (^ 更新文件路径数据库 ^)
uptime: cat /proc/uptime | awk -F. '{ run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("run_days=%d\trun_hour=%d\trun_minute=%d\trun_second=%d\n",run_days,run_hour,run_minute,run_second) }' (^ 查看/proc/uptime文件计算系统运行时间 ^)
uptime: cat /proc/uptime  (^ 查看系统已启动了多久, 第一数字即是系统已运行的时间 ^)
uptime: date -d " $(awk -F. '{print $1}' /proc/uptime) second ago " +" %Y-%m-%d %H:%M:%S (^ 推算系统是什么时候启动的 ^)
uptime: date -d" $(ls --full-time /var/run/runlevel.dir | awk '{print $7,$8,$10,$9}') " +" %Y-%m-%d %H:%M:%S (^ 查看/var/run/runlevel.dir文件的时间信息获取大致的系统启动时间 ^)
uptime  (^ 查看系统已启动了多久 ^)
uudecode  (^ 这个工具用来把uuencode后的ASCII字符串恢复为二进制文件. ^)
uuencode  (^ 这个工具用来把二进制文件编码成ASCII字符串,这个工具适用于编码e-mail消息体,或者新闻组消息. ^)
vim: find . -type f -exec gvim -O {} +  (^ 在新的gvim中打开find找到的所有文件于不同的垂直窗口中 ^)
vim: find . -type f -exec gvim -o {} +  (^ 在新的gvim中打开find找到的所有文件于不同的水平窗口中 ^)
vim: find . -type f -exec gvim -p --remote-tab {} +  (^ 在现有的gvim中打开find找到的所有文件于不同的标签页 ^)
vim: find . -type f -exec gvim -p {} +  (^ 在新的gvim中打开find找到的所有文件于不同的标签页中 ^)
vim: find . -type f -exec gvim --servername GVIM --remote-tab {} \;  (^ 用gvim打开find找到的第一个文件 ^)
vim: find . -type f -exec gvim --servername GVIM --remote-tab {} +  (^ 用gvim打开find找到的所有文件于不同的标签页 ^)
vim: find . -type f -exec vim {} \;  (^ 用vim打开find的结果, 但每次只打开一个文件 ^)
vim: find . -type f -exec vim {} +  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
vim $ (find . -type f)   (^ 用vim打开find的结果 ^)
vim  `find .... `   (^ 用vim打开find的结果 ^)
vim -u NONE  (^ 启动vim时, 跳过任何启动初始化脚本 ^)
vim: xargs -a < (find . -type f)  vim  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
wall this system   will halt after 5 minutes  (^ 发公告信息给所有终端用户 ^)
watch -n 10 ls -l file.name  (^ 使用watch命令, 可以反复执行命令, 和ls配合, 可以达到每10秒观察某文件大小变化的效果 ^)
wget -p  http://www.xyz23.com/file01.html   (^ -p选项将会使得wget取得显示指定页时所需要的所有文件(如图片等) ^)
wget -r  ftp://ftp.xyz24.net/~bozo/project_files/  -O savefile.txt  (^ -r选项将会递归的从指定站点上下载所有连接. ^)
whatis
whereis ls  (^ 快速查找命令文件, 可以使用whereis ^)
whoami
write root /dev/pts/4  (^ 给某个终端的用户发送信信息 ^)
(^ Show who is logged on and what they are doing. ^)
yum --disablerepo=repo_name  (^ 禁用软件仓库 ^)
yum --enablerepo=repo_name  (^ 启用软件仓库 ^)
yum info application_name  (^ 查找某个应用程序的信息 ^)
yum install application_name
yum localinstall application_name  (^ 从硬盘安装rpm包并使用yum解决依赖 ^)
yum remove application_name  (^ 删除应用程序 ^)
yum search application_name  (^ 搜索某个应用程序 ^)
yum update  (^ 更新整个系统 ^)
zcat 123.gz  (^ 查看压缩文件内容 ^)
zip -r  t.zip t  (^ 递归地把t目录及其子目录文件压缩为t.zip ^)

1.1 unknown command

gpic  /home/scr/.rt/book/tools/gpic/gpic.raymond.ps
cdrecord
[~]# gcc -c test.c
[~]# ld -o test -Ttext 0x0 -e main test.o
[~]# objcopy -R .note -R .comment -S -O binary test test.bin
[~]# objdump --disassemble-all test.o

1.2 shell特有变量

 $#  传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数. 与位置
     变量不同, 此选项参数可超过9个.
 $$  脚本运行的当前进程ID号
 $!  后台运行的最后一个进程的进程ID号
 $@  与$#相同, 但是使用时加引号, 并在引号中返回每个参数
 $-  显示shell使用的当前选项, 与set命令功能相同
 $?  显示最后命令的退出状态. 0表示没有错误, 其他任何值表明有错误.

1.3 shell "2>&1"

// 这里"2>&1"的意思就是将标准错误也输出到标准输出当中.
[]$ /tmp/test.sh > /tmp/test.log 2>&1
//  NOTE : 下面这一行的写法是错误的!!!!!
[]$ /tmp/test.sh > 2>&1 /tmp/test.log

1.3 管道

" 管道命令 "是指包含管道的一个复杂命令.

管道, 即把一个程序的输出作为另一个程序的输入. ls 这种程序根本不理睬标准输入
(stdin) , 所以你 find xxx | ls 的话, ls 根本不理睬 find 给它的文件列表. xargs
命令从标准输入读取, 并将其作为参数构建命令行. 如:
$ echo a b | xargs ls
xargs 从标准输入读到 a 和 b 两行字符, 把它们作为两参数交给程序 ls, 于是
xargs 执行 ls a b.


有些程序既可从标准输入读取数据, 也可从文件读取, 如 sed:

$ find xxx | sed 's/a/b/'
这是使用 find 得到一个文件列表, 然后利用 sed 把其中每行的第一个 a 替换成b 再输
出.

$ find xxx | xargs sed 's/a/b/'
这是使用 find 得到一个文件列表, 然后利用 sed 把这些文件的内容替换了再输出.


1.4 String Operations

t=" ./a/b/f "

s=${ t#*/ }       // 从前面开始, 去除最短的匹配串: s="a/b/f"
s=${ t%/* }       // 从后面开始, 去除最短的匹配串: s="./a/b"

s=${ t##*/ }      // 从前面开始, 去除最长的匹配串: s="f"
s=${ t%%/* }      // 从后面开始, 去除最长的匹配串: s="."

5 为管理员保留的磁盘空间 5% ^)
mkfs.ext3 -m 3 -L LA  /dev/sdb2  (^ 为超级用户保留3%, label为"LA" ^)
mkisofs -r -o out.iso /opt  (^ 把opt目录下文件<包括子目录>制作成一个iso文件 ^)
modprobe -l  (^ 列出系统内核所有可用的模块 ^)
modprobeusb -storage  (^ 检查usb-storage模块是否已加载, 否则无法自动识别USB设备 ^) (^ ????? ^)
mogrify -format jpg *.bmp  (^ bmp转jpg ^)
mogrify -resize 640x480 *.jpg  (^ 把图片放缩为640x480 ^)
mount.cifs  //192.168.0.22/linux /mnt -o username=redhat%redhat (^ 将共享目录挂载到本地目录, 然后再访问 ^)
mount /dev/fd0 /mnt/floppy  (^ 软盘 ^)
mount /dev/sda1 /mnt/cdrom  (^ USB闪存 ^)
mount /dev/sdb2 /mmt/d -o iocharset=utf8,ro,uid=redhat,umask=0077  (^ 常用字符编码有gb2312和utf8 ^)
mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom  (^ FAT32的分区 ^)
mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom  (^ NTFS的分区 ^)
mount -o loop /abc.iso /mnt/cdrom  (^ ISO文件 ^)
mount -o usrquota,grpquota /dev/sdb1 /mnt/d1 或 mount -o emount,usrquota,grpquota /  (^ 使用磁盘配额,默认系统内核已支持quota ^)
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount -t iso9660 /dev/dvd /mnt/cdrom或mount -t udf /dev/dvd /mnt/cdrom  (^ 访问DVD  ^)
mount -t iso9660 xxxxx.iso /any/path/if/u/like -o loop  (^ 使用.iso文件 ^)
mount -t ntfs /dev/hda3 /mnt/d  (^ 需重新编译内核才能支持NTFS ^)
mount -t vfat /dev/hda2 /mnt/c
mount -t vfat -o iocharset=gb2312 /dev/sdb1 /mnt/u
mpg123 --title -C -Z *  (^ 随机播放当前目录的音频文件(永远不会结束) ^)
mpg123 --title -C *  (^ 顺序播放当前目录的音频文件 ^)
nasm -hf  (^ 查看nasm默认下生成的是什么格式的文件 ^)
native2ascii  (^ 把非ASCII字符转换成对应的16进制值 ^)
netstat -atnlp | grep qq  (^ -p : 显示PID ^)
netstat -atuln | grep ' :80 (^ -a: all, t: tcp, u: udp, n: 用显示数字, l: listening ^)
netstat -lpn|grep :53 | awk ' {print $5} '| sort
netstat -tuln | grep ' :80 (^ 查看系统是否己启动某一端口号 ^)
nl filename  (^ 在文件的每一行加上行号, 不统计空行 ^)
nmblookup my-server  (^ 查询服务器的IP ^)
nmblookup \*  (^ 查询所有活动的主机的IP ^)
nm  (^ 从a.out格式文件中读取可读字符串(函数等) ^)
nohup tar -cf /dev/tape /home &  (^ 进程在退出系统后还能执行 ^)
ntsysv  (^ 打开服务管理器, 与chkconfig相似 ^)
ntsysv  (^ 为setup的子命令 ^)
od: head -1 /dev/urandom | od -N 1 | awk ' { print $2 } (^ 产生1个随机数 ^)
od: head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个一位数的随机数 ^)
od -N4 -tu4  (^ -N4 选项将限制输出为4个字节; -tu4 选项将使用无符号10进制格式来输出. ^)
paste file1 file2  (^ 将file1和file2行号相同的行连接成一行 ^)
pidof program-name  (^ 查找program-name的pid; 如果有多个相同的program同时运行, 则返回所有的pid ^)
pidof vsftpd  (^ 根据进程名显示进程号 ^)
popd n  (^ 转到dir栈中第n个目录 ^)
printf " %02d. %s\n " $nr ${ line#*/ (^ 格式化输出 ^)
printk: echo " 8 " > /proc/sys/kernel/printk  (^ 改变控制台的消息级别(可从1到8) ^)
ps -ef |grep java |grep -v grep |awk ' {print $2} ' |xargs kill -9  (^ 如何批量杀掉进程 ^)
pstree  (^ 以树状图显示程序 ^)
pushd dir  (^ 把dir压入栈中 ^)
quotacheck -cvuga 或 quotacheck -cvag  (^ /dev/sdb1 ^)
quotaoff /mnt/sdb1  (^ 关闭磁盘配额 ^)
quotaon -a  (^ 激活 ^)
quotaon /mnt/sdb1  (^ 开启 ^)
quota -t  (^ 配置过期时间 ^)
quota -u redhat
ranlib libtttt.a  (^ 对libtttt.a生成索引, 好处是使得其里边的函数可以相互调用, 而不管它们所处的位置 ^)
rdate -s ntp2.uk.uu.net  (^ 与ntp2.uk.uu.net同步时间 ^)
rename ' y/A-Z/a-z/ ' *  (^ 批量重命名, 并转化为小写 ^)
rev file.name  (^ 将内容倒序读出 ^)
rev file  (^ 将行中的字符逆序, 第一个字成为最后一字 ^)
rm  " -file (^ 处理文件名内含有特殊字符的文件 ^)
rm  \-file   (^ 处理文件名内含有特殊字符的文件 ^)
rm -- -file  (^ 处理文件名内含有特殊字符的文件 ^)
route add default gw 网关的IP  (^ 手动添加默认网关 ^)
rpm2cpio <  in.rpm  > out.cpio  (^ 将rpm归档文件转换为cpio归档文件 ^)
rpm --import /etc/pki/rpm-gpg/*  (^ */ 导入FedoraGPG秘匙 ^)
rpm -ivh --aid samba*.rpm  (^ 装了rpmdb才有效 ^)
rpm -ivh cups-libs*.rpm
rpm -ivh rpmdb-fedora*.rpm
rpm -ivh samba*.rpm
rpm -qa | grep samba  (^ 查看所有软件包列表 ^)
rpm -q curl libcurl yum  (^ 查看yum的相关包及其对应的版本信息 ^)
rpm -qf cmd  (^ 查看程序cmd所在的软件包(rpm包) ^)
rpm -q kernel-devel  (^ 查看kernel-devel是否已安装 ^)
rpm -ql samba | more  (^ 查讯某个软件列表 ^)
rsync  (^  a fast, versatile, remote (and local) file-copying tool. # -r: 递归下载 # -t: 保存时间 # -v: verbose ^)
runlevel  (^ 查看当前系统的运行级别 ^)
samba: netstat -au | grep netbios  (^ 查看nmb是否启动成功 ^)
samba: service smb start  (^ 启动samba服务器 ^)
samba: smbclient  //10.3.1.4/lcy-share -U lcy (^ 登陆samba服务器, lcy为用户名 ^)
samba: smbclient -L 192.168.138.110 -N  (^ 查看机器上共享了什么, 并查找出局域网内的其它有共享服务的机器 ^)
samba: smbstatus  (^ 查看状态 ^)
samba: smbtree  (^ 查看局域网中的所有共享服务 ^)
samba: testparm  (^ 用于测试samba的配置文件 /etc/samba/smb.conf 语法是否正确 ^)
/sbin/ifconfig eth0 up  (^ 重启网卡 ^)
script file  (^ 把当前终端的输入输出自动保存到文件 file 中. ^)
sed ' 1d ' filename  (^ 删除第一行 ^)
sed ' $d ' | sed ' $d ' filename  (^ 删除最后两行 ^)
sed ' /^$/d (^ 删除文件中的所有空行(与"grep '.' "效果相同) ^)
sed ' /./!d (^ 删除文件中的所有空行(与"grep '.' "效果相同) ^)
sed ' /./,/^$/!d (^ 只保留多个相邻空行的第一行,并删除文件顶部的空行(模拟"cat -s") ^)
sed: echo $CLASSPATH | sed 's/:/\n/g' | sort  (^ java 类路径 ^)
sed: echo  " fae " | sed -e ' s:^0[bBxX]:: ' | tr ' [a-f] ' ' [A-F] (^ 把fae转换成大写 ^)
sed -e 's/\. //g'  -e 's/\,//g' -e 's/ /\ /g' (^ 过滤掉句号和逗号, 并且将单词间的空格修改为换行 ^)
sed: find . | sed -e " s/^.// (^ 把每一行的第一个字符删除 ^)
sed: head -c4 /dev/urandom | od -N4 -tu4 | sed -ne ' 1s/.* //p (^ 产生10个随机数 ^)
sed -n ' /^[A-Z]/p (^ 匹配大写字母开头的行 ^)
sed '$!N; /^\ (.*\) \n\1$/!P; D'  (^ 删除文件中相邻的重复行,只保留重复行中的第一行(模拟"uniq") ^)
sed '/^$/N;/\n$/D'  (^ 只保留多个相邻空行的第一行(模拟"cat -s") ^)
sed -n /" pattern "/p file  (^ 在file文件中查找匹配pattern的行 ^)
sed ' N;$!P;$!D;$d ' filename  (^ 删除最后两行 ^)
sed -n /[\+\{ \ }\;\" \ "\\\=\?~\ (\) \< \ >\&\*\|\$ ]/p  (^ 等价于:sed -n '/[+{};"\=?~()<>&*|$ ]/p'; -n表示只输出符合条件的 ^)
sed -n '/[+{};" \ "\=?~()<>&*|$ ]/p'  (^ 和find结合使用: find . | sed -n  '/[+{};" \=?~()<>&*|$ ]/p' ^)
sed '$!N; s/^\(.*\)\n\1$/\1/; t; D' (^ 删除除重复行外的所有行(模拟 "uniq -d") ^)
sed '$!N;s/\n/ /' file  (^ 将每两行连接成一行 ^)
sed " s/\r// " infile >outfile  (^ 把win格式的换行符换为unix格式的 ^)
selinux: setenforce 0  (^ 关闭SElinux, 要彻底禁用SELinux,需要在 /etc/sysconfig/selinux 中设置参数 selinux=0, 或者在 /etc/grub.conf 中添加这个参数 ^)
selinux: setenforce 1  (^ 打开SElinux ^)
seq 1 8  // 与  " 打印: 1 2 3 4 5 ... 8 "相同
service kudzu start  (^ 重新检测硬件, 让系统自动识别新 ^)
services: cat /etc/services | grep telnet  (^ 查看telnet的端口号 ^)
service --status-all  (^ 查看系统中各个服务的当前状态 ^)
service xinetd restart  (^ 重起xinetd ^)
setleds  (^ 开机修改各个键盘灯的状态 ^)
setterm -blank 0  (^ 不让显示器休眠 ^)
shred  (^ 安全的删除一个文件 ^)
shutdown -r now  (^ 重新启动 ^)
skill -KILL -v pts/2   (^ 注消终端用户: pts/2 ^)
smbclient  //192.168.0.22/linux -U redhat%redhat
smbclient  //host/share
smbclient -L 192.168.0.22 -U redhat%redhat  (^ 以redhat用户登录并显示共享目录 ^)
smbtar -s win2000 -u redhat -p redhat -x chinalab -t itlab.tar  (^ 远程备份网上邻居中的文件 ^)
sort list.txt  (^ 对list.txt中的每一行进行排序 ^)
sort -nr  (^ 按数字返序排序 ^)
sort: sed ' 1d ' file | sort -t\> +0 -1 -u  (^ 对文件file中除了第一行外的所有行进行按第一个字段排序, 字段以"<"分隔, 并只输出唯一行 ^)
sort -u list.txt  (^ 对list.txt中的每一行进行排序, 且对于重复行只输出一次 ^)
sort | uniq -c | sort -nr  (^ 最后统计出现次数,把数字显示在第一列,然后显示单词,并按数字排序 ^)
str: file=/home/scr/book/TCP-IP_I1/bin/tdtraceroute.sh; echo ${ file%/* (^ 只取路径名: /home/scr/book/TCP-IP_I1/bin ^)
str: file=/home/scr/book/TCP-IP_I1/bin/tdtraceroute.sh; echo ${ file##*/ (^ 只取文件名: tdtraceroute.sh ^)
strings file  (^ 把file中所有可打印的字符打印出来  ^)
stty echo  (^ 打开回显功能 ^)
stty -echo  (^ 关闭回显功能 ^)
stty: old_tty_setting=$ (stty -g)   (^ 保存终端设置; stty "$old_tty_setting": 恢复终端设置 ^)
stty " $old_tty_setting (^ 恢复老的终端设置 ^)
sudo -b  (^ command Background 在后台执行指定的命令.  ^)
sudo -e  (^ file Edit 不是执行命令, 而是修改文件, 相当于命令sudoedit.  ^)
sudo -h  (^ Help 列出使用方法, 退出.  ^)
sudo -k  (^ Kill 清除"入场卷"上的时间, 下次再使用sudo时要再输入密码.  ^)
sudo -K  (^ Sure kill 与-k类似, 但是它还要撕毁"入场卷", 也就是删除时间戳文件.  ^)
sudo -l  (^ List 列出当前用户可以执行的命令. 只有在sudoers里的用户才能使用该选项.  ^)
sudo -p  (^ prompt command Prompt 可以更改询问密码的提示语, 其中%u会代换为使用者帐号名称, %h会显示主机名称 ^)
sudo -u  (^ username|#uid User 以指定用户的身份执行命令. 后面的用户是除root以外的, 可以是用户名, 也可以是#uid.  ^)
sudo -V  (^ Version 显示版本信息, 并退出.  ^)
sync  (^ 刷新buffer. ^)
sysctl -p  (^ 使得内核改变立即生效;  ^)
tail -f /var/log/messages  (^ -f: 流动模式查看(即: 当文件有变动时, tail也相应的显被更新 ^)
tar cjvf bin.tar.bz2 bin/*    //*/ (^  把bin目录下文件<包括子目录>打包并压缩为文件:bin.tar.bz2 ^)
tar -cvf /home/123.tar /etc   (^ 打包,不压缩 ^)
tar -jxvf /home/123.tar.bz2   (^ 以bzip2解压 ^)
tar tvf lab.tar  (^ 显示备份包里的文件 ^)
tar -xvf 123.tar    (^ 解开包 ^)
tar xvzf file.tar.Z  (^ 解压*.tar.Z文件 ^)
tar xvzf vjde.tgz -C tdir  (^ -C : 解压到目录 tdir 下! ^)
tar zcf vimgdb_runtime.tgz doc macros syntax  (^ 压缩打包 ^)
tar -ztvf /tmp/etc.tar.gz    (^ 查看tar内容 ^)
tar zxf vimgdb_runtime.tgz -C /usr/lo  (^ 解压到/usr/lo下 ^)
tar -zxvf /home/123.tar.gz   (^ 以gzip解压 ^)
tar zxvf xxxx.tar.gz  (^ 解压*.tar.gz文件 ^)
tr a-z A-Z <  filename (^ 转换为大写 ^)
tr: cat cs.BAK | tr -d "^V^M"  > cs  (^ 把win格式的换行符换为unix格式的, 用dos2unix比较好 ^)
tr: cat file | tr a-z n-za-m  (^ 把file文件中的a转换为n, b转换为o, ... ^)
tr: cat file | tr -cd  a  (^ 输出file中为a的字符a. -c: 输出匹配的, -d: 若没-c则输出的非匹配的 ^)
tr -cs ' [:alpha:] ' Z  (^ 将非字母表字符转换为多个 Z, -s:然后去除多个连续的 Z. ^)
tr -d \r < infile  >outfile  (^ 把win格式的换行符换为unix格式的 ^)
tr: echo $CLASSPATH | tr : '\n' | sort  (^ java 类路径 ^)
tree:  (export LS_COLORS=NONE; tree | sed  's/\[.*\]  //')   (^ 目录树 ^)
tr -s '\173-\377' Z   (^ 把所有z后边的字符都转换为Z,并且去除多余重复的Z.注意173"{"和377都是8进制. 注意有-s参数 ^)
tty  (^ 查看自己所使用的终端 ^)
tune2fs -c -1 /dev/sdb1  (^ 不管挂载多小次都不自检 ^)
tune2fs -c -1 -i 0 /dev/sdb1  (^ 让分区永远不自检 ^)
tune2fs -j /dev/sdb4  (^ 转换为ext3 ^)
tune2fs -l /dev/sda7 | grep " Block size: (^ 查看一block的大小 ^)
tune2fs -l /dev/sda7  (^ 打印文件系统属性 ^)
tune2fs -l /dev/sdb1 | grep features  (^ 看Filesystemfeatures: has_journal是否有has_journal, 有则是ext3文件系统 ^)
type ./configure ; make ; make install  (^ 在同一个命令行上同时执行多条命令,用分号分隔 ^)
ulimit  (^ 设置系统资源限制 ^)
uname -r  (^ 看内核版本 ^)
uniq --all-repeated -i file  (^ 输出file中所有重复行, --all-repeated等价于-D ^)
uniq -c file  (^ 在每行前显示重复次数,可与其他选项结合,例如-cu或-cd或-c ^)
uniq -c  (^ 把数字显示在第一列 ^)
uniq -d file  (^ 只输出file中的重复行,且只输出一次,但不输出唯一的行 ^)
uniq -i file  (^ 比较时忽略大小写 ^)
uniq -u file  (^ 只输出file中的唯一行(当然是一次啦) ^)
uniq -ui wordslist.txt  (^ 只 ^)
units miles meters  (^ 求miles与meters的换算公式 ^)
units  (^ 这个工具用来在不同的计量单位之间互相转换 ^)
unix2dos -k hosts  (^ 将提供的hosts文件格式更新为dos格式 ^)
unrar e sa.rar   (^ 解压rar文件当前目录, 不自动创建目录 ^)
unrar x sa.rar dir   (^ 解压rar文件目录dir, 自动创建目录 ^)
updatedb  (^ 更新文件路径数据库 ^)
uptime: cat /proc/uptime | awk -F. '{ run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("run_days=%d\trun_hour=%d\trun_minute=%d\trun_second=%d\n",run_days,run_hour,run_minute,run_second) }' (^ 查看/proc/uptime文件计算系统运行时间 ^)
uptime: cat /proc/uptime  (^ 查看系统已启动了多久, 第一数字即是系统已运行的时间 ^)
uptime: date -d " $(awk -F. '{print $1}' /proc/uptime) second ago " +" %Y-%m-%d %H:%M:%S (^ 推算系统是什么时候启动的 ^)
uptime: date -d" $(ls --full-time /var/run/runlevel.dir | awk '{print $7,$8,$10,$9}') " +" %Y-%m-%d %H:%M:%S (^ 查看/var/run/runlevel.dir文件的时间信息获取大致的系统启动时间 ^)
uptime  (^ 查看系统已启动了多久 ^)
uudecode  (^ 这个工具用来把uuencode后的ASCII字符串恢复为二进制文件. ^)
uuencode  (^ 这个工具用来把二进制文件编码成ASCII字符串,这个工具适用于编码e-mail消息体,或者新闻组消息. ^)
vim: find . -type f -exec gvim -O {} +  (^ 在新的gvim中打开find找到的所有文件于不同的垂直窗口中 ^)
vim: find . -type f -exec gvim -o {} +  (^ 在新的gvim中打开find找到的所有文件于不同的水平窗口中 ^)
vim: find . -type f -exec gvim -p --remote-tab {} +  (^ 在现有的gvim中打开find找到的所有文件于不同的标签页 ^)
vim: find . -type f -exec gvim -p {} +  (^ 在新的gvim中打开find找到的所有文件于不同的标签页中 ^)
vim: find . -type f -exec gvim --servername GVIM --remote-tab {} \;  (^ 用gvim打开find找到的第一个文件 ^)
vim: find . -type f -exec gvim --servername GVIM --remote-tab {} +  (^ 用gvim打开find找到的所有文件于不同的标签页 ^)
vim: find . -type f -exec vim {} \;  (^ 用vim打开find的结果, 但每次只打开一个文件 ^)
vim: find . -type f -exec vim {} +  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
vim $ (find . -type f)   (^ 用vim打开find的结果 ^)
vim  `find .... `   (^ 用vim打开find的结果 ^)
vim -u NONE  (^ 启动vim时, 跳过任何启动初始化脚本 ^)
vim: xargs -a < (find . -type f)  vim  (^ 用vim打开find的结果, 若有多个文件则放入buffer中 ^)
wall this system   will halt after 5 minutes  (^ 发公告信息给所有终端用户 ^)
watch -n 10 ls -l file.name  (^ 使用watch命令, 可以反复执行命令, 和ls配合, 可以达到每10秒观察某文件大小变化的效果 ^)
wget -p  http://www.xyz23.com/file01.html   (^ -p选项将会使得wget取得显示指定页时所需要的所有文件(如图片等) ^)
wget -r  ftp://ftp.xyz24.net/~bozo/project_files/  -O savefile.txt  (^ -r选项将会递归的从指定站点上下载所有连接. ^)
whatis
whereis ls  (^ 快速查找命令文件, 可以使用whereis ^)
whoami
write root /dev/pts/4  (^ 给某个终端的用户发送信信息 ^)
(^ Show who is logged on and what they are doing. ^)
yum --disablerepo=repo_name  (^ 禁用软件仓库 ^)
yum --enablerepo=repo_name  (^ 启用软件仓库 ^)
yum info application_name  (^ 查找某个应用程序的信息 ^)
yum install application_name
yum localinstall application_name  (^ 从硬盘安装rpm包并使用yum解决依赖 ^)
yum remove application_name  (^ 删除应用程序 ^)
yum search application_name  (^ 搜索某个应用程序 ^)
yum update  (^ 更新整个系统 ^)
zcat 123.gz  (^ 查看压缩文件内容 ^)
zip -r  t.zip t  (^ 递归地把t目录及其子目录文件压缩为t.zip ^)

1.1 unknown command

gpic  /home/scr/.rt/book/tools/gpic/gpic.raymond.ps
cdrecord
[~]# gcc -c test.c
[~]# ld -o test -Ttext 0x0 -e main test.o
[~]# objcopy -R .note -R .comment -S -O binary test test.bin
[~]# objdump --disassemble-all test.o

1.2 shell特有变量

 $#  传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数. 与位置
     变量不同, 此选项参数可超过9个.
 $$  脚本运行的当前进程ID号
 $!  后台运行的最后一个进程的进程ID号
 $@  与$#相同, 但是使用时加引号, 并在引号中返回每个参数
 $-  显示shell使用的当前选项, 与set命令功能相同
 $?  显示最后命令的退出状态. 0表示没有错误, 其他任何值表明有错误.

1.3 shell "2>&1"

// 这里"2>&1"的意思就是将标准错误也输出到标准输出当中.
[]$ /tmp/test.sh > /tmp/test.log 2>&1
//  NOTE : 下面这一行的写法是错误的!!!!!
[]$ /tmp/test.sh > 2>&1 /tmp/test.log

1.3 管道

" 管道命令 "是指包含管道的一个复杂命令.

管道, 即把一个程序的输出作为另一个程序的输入. ls 这种程序根本不理睬标准输入
(stdin) , 所以你 find xxx | ls 的话, ls 根本不理睬 find 给它的文件列表. xargs
命令从标准输入读取, 并将其作为参数构建命令行. 如:
$ echo a b | xargs ls
xargs 从标准输入读到 a 和 b 两行字符, 把它们作为两参数交给程序 ls, 于是
xargs 执行 ls a b.


有些程序既可从标准输入读取数据, 也可从文件读取, 如 sed:

$ find xxx | sed 's/a/b/'
这是使用 find 得到一个文件列表, 然后利用 sed 把其中每行的第一个 a 替换成b 再输
出.

$ find xxx | xargs sed 's/a/b/'
这是使用 find 得到一个文件列表, 然后利用 sed 把这些文件的内容替换了再输出.


1.4 String Operations

t=" ./a/b/f "

s=${ t#*/ }       // 从前面开始, 去除最短的匹配串: s="a/b/f"
s=${ t%/* }       // 从后面开始, 去除最短的匹配串: s="./a/b"

s=${ t##*/ }      // 从前面开始, 去除最长的匹配串: s="f"
s=${ t%%/* }      // 从后面开始, 去除最长的匹配串: s="."

猜你喜欢

转载自wangxiaoxu.iteye.com/blog/1538549