免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 903 | 回复: 0
打印 上一主题 下一主题

关于shell [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-16 14:48 |只看该作者 |倒序浏览

要想知道自己的系统所使用的linux有哪些版本的shell,可以查询/etc/shells文件,如:
[abc@unig11 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/ash
/bin/bsh
/bin/ksh
/usr/bin/ksh
/usr/bin/pdksh
/bin/tcsh
/bin/csh


如果想知道自己目前默认使用的shell是哪个版本的可以查看/etc/passwd文件
如:
[abc@unig11 ~]$ grep abc /etc/passwd
abc:x:504:504::/home/abc:/bin/bash
最后一个字段为使用的shell的路径。如果想修改默认使用的shell可以修改这个字段。


如果想知道命令是否执行成功可以打印$?来查看,为0为执行成功,非0为失败
如:
[abc@unig11 ~]$ ls
a.txt
libjade  libjade.tar  test
[abc@unig11 ~]$ echo $?
0

[abc@unig11 ~]$ cp
cp: missing file argument
Try `cp --help' for more information.
[abc@unig11 ~]$ echo $?
1

如果想让一个命令在后台运行,不影响当前shell的输入,则在命令后加&
真实UID来自文件/etc/passwd,它是与用户的登录名相关联的一个正整数。真实UID是口令文件的第3个字段。在用户登录成功后,其真实UID 将赋给登录shell,之后所有从登录shell派生的进程都会继承它的权限。所有UID为0的进程都属于根用户(超级用户),具有根用户权限。真实用户 组标识,即GID,是与用户登录名关联的一个用户组。它是/etc/passwd文件的第4个字段。
可以用id来查看这些值
[abc@unig11 ~]$ id
uid=504(abc) gid=504(abc) groups=504(abc)
如果想让普通用户拥有超级用户的权限,只需将普通用户的UID改为0即可。

掩码umask
创建文件时,会得到一组默认的权限,这组权限由创建文件的进程决定。子进程从它们的父进程那继承了一个默认掩码。用户可以通过两种方式改变shell的掩码:在命令提示符后输入命令umask,或者在shell的初始化文件中设置它。umask命令用于从当前掩码中除去某些权限。在默认的情况下,目录的权限为777 文件的权限为666,大多数系统会通过程序/bin/login或初始化文件/etc/profile把umask的值设为022。所创建的文件都会从他们的默认权限中减去umask的值
如我的系统umask 为002
[abc@unig10 ~]$ umask
0002
[abc@unig10 ~]$ mkdir aa
[abc@unig10 ~]$ touch aaa
[abc@unig10 ~]$ ls -la
drwxrwxr-x
2 abc  abc   4096 10月  9 11:13 aa
-rw-rw-r--
1 abc  abc      0 10月 9 11:13 aaa



如果想修改权限用chmod 修改目录所有者用chown

输入输出重定向 和管道
如 ls >a.txt
将ls的结果写入到a.txt文件中
sort
将a.txt文件内容作为sort的输入

管道如:cat a.txt |grep aa
将cat a.tat的输出作为grep的输入
[abc@unig10 ~]$ ls > a.txt
[abc@unig10 ~]$ sort
aa
aaa
a.txt
client
client.cpp
client.o
Makefile
test
[abc@unig10 ~]$ cat a.txt |grep aa
aa
aaa

shell信号
信号把消息发送给进程,结果常常导致该进程终止,这通常是因为发生了段
冲突、总线错误、电源故障或程序错误(比如,除数为0或无效的内存引用)这类意外事件。用户可以通过键入Break、Delete、Quit或Stop键
来给进程发信号,而且所有共享终端的进程都会受所发出的信号的影响。还可以用kill命令终止进程。默认情况下,大部分信号会终止进程。每个进程对给定的
信号可采取的动作如下:忽略信号 停止进程 继续进程 进程可以被程序中定义的函数所捕获。SIGKILL SIGSTOP 不能被捕获或忽略。捕获信号可以用trap命令
如:[abc@unig10 ~]$ trap ls  2        
按ctrl+c时调用命令ls
[abc@unig10
~]$ aa  aaa  a.txt
client  client.cpp  client.o
Makefile  test
忽略信号用trap ‘’ 2
执行信号2的默认操作  trap  2

还有nohup命令  
nohup  ./pc&    即使退出当前终端,pc进程依然运行 (不过关闭终端要正常关闭,如exit,logout.
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36085/showart_401590.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP