[转]Linux命令技巧大全

来源:http://blog.csdn.net/tge7618291/article/details/7587516

Linux的Shell很强大,当你越了解它,他就会越强大。从网络摘抄,感觉很全面,很实用,收藏之。感谢原作者!

 

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 johndoe@example.com
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 节点表示的字节数或数据块大小,-m 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 (^ 给某个终端的用户发送信信息 ^)
w (^ 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="."

转载于:https://www.cnblogs.com/eshizhan/archive/2012/08/07/2626332.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值