LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

【shell技巧交流区】:[把你的shell技巧贴出来,让我们分享]

[复制链接]
 楼主| 发表于 2004-1-9 00:22:47 | 显示全部楼层

技巧:查看键盘每个键的代码

在linux里面有关showkey这个命令,他的描述如下:
showkey - 检查来自键盘的扫描码和键盘码
有了他我们就知道键盘上所有按键的代码了:
[/home/javalee]showkey --help
showkey version 1.06

usage: showkey [options...]

valid options are:

        -h --help       display this help text
        -a --ascii      display the decimal/octal/hex values of the keys
        -s --scancodes  display only the raw scan-codes
        -k --keycodes   display only the interpreted keycodes (default)
[/home/javalee]showkey -a

Press any keys - Ctrl-D will terminate this program

1        49 0061 0x31    #字符1的10/8/16进制表示
2        50 0062 0x32
3        51 0063 0x33
4        52 0064 0x34
^D        4 0004 0x04    #按CTRL+D显示的控制字符的各个进制表示
 楼主| 发表于 2004-1-9 21:14:52 | 显示全部楼层

隐藏回显的另一法

除了用stty -echo来禁止显示诸如密码之类的方法外,也可以尝试这样
  1. echo -n "please input password:\\033[8m"
  2. read input
  3. echo -n "\\033[0m"
复制代码
 楼主| 发表于 2004-1-21 00:33:31 | 显示全部楼层

awk技巧两则

1,查找一个关键词在整个文件中出现的次数
  1. awk '/keyword/{count++}END{print count }' filename
复制代码
2,替换
  1. awk '{gsub(/oldstr/,"newstr");print}' filename
复制代码
 楼主| 发表于 2004-2-5 02:30:04 | 显示全部楼层

技巧:限定一个用户执行特定命令的方法

我们知道,linux是个比较安全的系统,而shell也具有很强的安全性,他的安全性是通过"约束"特定用户的
登录shell来实现的,
约束你的shell:
当带-r选项作为你登录的shell时,这个用户的shell是被约束的!,当约束shell时,你不能用cd命令,而且你不能
修改或复位SHELL,ENV,PATH等变量,任何重定向的操作被视为非法,不能用set来复位或置位该选项!

基于此,那么我就可以这样限定一个用户:
1,在/etc/passwd中将用户abc的登录shell改成:
abc:x:501:501::/home/abc:/bin/bash -r
2,将此用户的.bash_profile文件中PATH指定一个工作目录:
export PATH=${PATH}:~/mybin
3,将用户abc只能执行的几个常用命令,如ls等,cp到此目录,
cp /bin/ls /home/abc/mybin #ln也可
4,完成
设定好之后,这个用户abc登录后他就只能运行ls啦 ,当然,这个abc很苦恼~~~
试试看,很有意思吧~~ ;)
 楼主| 发表于 2004-4-20 12:39:41 | 显示全部楼层

技巧:从键盘输入生成文件的若干方法

1,用echo,如:

  1. echo "some strings ">filename
复制代码

2,用here文档,如:

  1. /home/javalee#cat <<! >filename
  2. >some strings
  3. >!
复制代码
#CTR+D退出
3,用dd命令,如:

  1. /home/javalee#dd </dev/tty >filename 2>/dev/null
复制代码
#CTR+D退出
4,用while循环,如:

  1. /home/javalee#while read i;do echo $i >>filename;done</dev/tty
复制代码
#CTR+D退出
5,用read:如:

  1. /home/javalee#while true;do read;echo $REPLY >>filename;[[ -z $REPLY ]]&&break;done
复制代码
 楼主| 发表于 2004-5-10 18:15:56 | 显示全部楼层

vi小技巧

作者:littlepig
:map <F9> ggO#^R%---<Esc>:read !date +\%m/\%d/\%y<CR>kJ$a---OK<Esc>
每次我敲<F9>自动在文件头加一行如下:
#xxx---05/10/04---OK
这里xxx是正在编辑的文件名
 楼主| 发表于 2004-5-30 12:10:48 | 显示全部楼层

小技巧:如何列出RPM包中所含的文件的方法

举例如下:
/home/lee/mysoft#rpm -q hunt
hunt-1.5-2
/home/lee/mysoft#rpm2cpio hunt-1.5-2.i386.rpm >hunt.tmp
/home/lee/mysoft#cpio -t -F hunt.tmp #这会列出其中的文件
./usr/bin/hunt
./usr/share/doc/hunt-1.5
./usr/share/doc/hunt-1.5/README.gz
./usr/share/doc/hunt-1.5/README.tp.gz
./usr/share/man/man1/hunt.1.gz
230 blocks
这样就列出了hunt的rpm包中的所含的若干文件
发表于 2004-7-16 13:30:08 | 显示全部楼层
显示奇偶行用awk可以这样:
awk 'NR%2==0' file
awk 'NR%!=0' file
删除空行还可以这样"
awk 'NF>0' file
 楼主| 发表于 2004-7-17 15:59:39 | 显示全部楼层
最初由 yongjian 发表
显示奇偶行用awk可以这样:
awk 'NR%2==0' file
awk 'NR%!=0' file
删除空行还可以这样"
awk 'NF>0' file

呵呵,awk 'NR%!=0' file这句少了一个2 :thank
 楼主| 发表于 2004-7-26 02:40:25 | 显示全部楼层

技巧:用grep提取网址/链接的方法

  1. grep -o 'http://[a-zA-Z0-9./?=%_~]*' urlfile
复制代码

感兴趣的话大家可以测试一下 :thank
grep version:
grep (GNU grep) 2.5.1
grep对-o选项的解释:
-o, --only-matching       show only the part of a line matching PATTERN
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表