QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 784|回复: 4

发个小程序,以目录为单位创建和删除链接

[复制链接]
发表于 2003-12-26 11:10:53 | 显示全部楼层 |阅读模式
每次装系统都要弄一次java,
开个链接到可执等目录下,烦死了,而且以后升级java时还要弄一次。

干脆我就写了一个程序,自己完成目录到目录的链接,呵呵!
例子:
============================================
创建:
cl /usr/local/j2sdk1.4.2/bin /usr/local/bin
cl /usr/local/j2sdk1.4.2/man/man1 /usr/local/man/man1
删除:
cl -d /usr/local/j2sdk1.4.2/bin /usr/local/bin
cl -d /usr/local/j2sdk1.4.2/man/man1 /usr/local/man/man1
删除用dl也成,这样不用加参数了
============================================

程序没有完成
还有一些思路要完成如只对可执行文件进行操作呀!不过我想先请大家
帮我看看哪写得不好。还有有一些问题要问!

我用getopt_long来分析选项,
两个目录我都是用循环来扫描的。我知道这样子是不对的。
如果选项后而有参数我就没择了。

还有怎么从一个给定目录获得完整目录名:
我是用笨办法:
chdir --> getcwd

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2003-12-27 19:31:36 | 显示全部楼层
这个好办,把jdk放在别的分区就可以了。我现在两个Linux共享一套jdk。

我的jdk1.4.1_2是用RPM安装的,自动装在"/usr"下面。安装前我检查过文件,发现没有和系统目录发生关联,就把它转移到非系统分区里了。

唯一要做的是修改"/etc/profile"或者"主目录/.bash_profile",加入jdk的可执行文件路径和类路径。

#######################################
#        J2SDK
pathmunge /opt/lin_app02/java/j2sdk1.4.1_02/bin
export CLASSPATH="./":"/opt/lin_app02/java/jclass"
#######################################


我的"/etc/profile"如下:
[code:1]
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc


pathmunge () {
        if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
           if [ "$2" = "after" ] ; then
              PATH=$PATH:$1
           else
              PATH=$1:$PATH
           fi
        fi
}

# Path manipulation
if [ `id -u` = 0 ]; then
        pathmunge /sbin
        pathmunge /usr/sbin
        pathmunge /usr/local/sbin
fi

#######################################
#        J2SDK
pathmunge /opt/lin_app02/java/j2sdk1.4.1_02/bin
export CLASSPATH="./":"/opt/lin_app02/java/jclass"
#######################################

pathmunge /usr/X11R6/bin after

unset pathmunge

# No core files by default
ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"

HOSTNAME=`/bin/hostname`
HISTSIZE=1000

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
    INPUTRC=/etc/inputrc
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

#######################################
#        Tomcat
JAVA_HOME=/opt/lin_app02/java/j2sdk1.4.1_02
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HOME/bin:/opt/lin_app02/tomcat/bin
CATALINA_BASE=/opt/lin_app02/tomcat
CATALINA_HOME=/opt/lin_app02/tomcat
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME CLASSPATH ?CATALINA_BASE CATALINA_HOME
########################################

########################################
#        PostgreSQL
LD_LIBRARY_PATH=/opt/lin_app02/postgres/lib
export LD_LIBRARY_PATH
PGLIB=/opt/lin_app02/postgres/lib
PGDATA=/opt/lin_app02/postgre-data
PATH=$PATH:/opt/lin_app02/postgres/bin
MANPATH=$MANPATH:/opt/lin_app02/postgres/man
export PGLIB PGDATA PATH MANPATH
########################################

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
            . $i
    fi
done

unset i
[/code:1]

获取路径名的命令为"pwd",如果你用C语言写程序,可以用管道把这个命令的输出重定向回你的程序。
回复

使用道具 举报

 楼主| 发表于 2003-12-29 08:42:11 | 显示全部楼层
呵呵!谢了,可是我还想知道 关于

getopt  编程的事,怎么确定选项和参数呢?
回复

使用道具 举报

发表于 2003-12-29 23:38:26 | 显示全部楼层
是要能接收命令行参数的例子吗?我有。明天给你吧。
回复

使用道具 举报

发表于 2003-12-30 19:04:36 | 显示全部楼层
[code:1]
#include<stdio.h>
main (int argc,char *argv[])
{
        int i1,i2;

        char tmp[500]="";

        printf("\n版本:0.8.0B\n");

        printf("\n刚输入的文件名为:\n\"%s\"\n",argv[0]);
        //i1=0;i2=argc;
        i1=1;i2=argc-1;
        //while(argc>=1)
        while(argc>=2)
        {
                strcat(tmp,argv[i1]);
                i1++;
                strcat(tmp,"\n");
                argc--;
        }
        printf("\n除了本文件名,总共接收到%d组参数,参数如下\n%s\n",i2,tmp);
}
[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-9 03:07 , Processed in 0.041723 second(s), 17 queries .

© 2021 Powered by Discuz! X3.5.

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