[20231207]bash ln建立软链接问题.txt
[20231207]bash ln建立软链接问题.txt
--//以前写的链接:http://blog.itpub.net/267265/viewspace-2753238/=>[20210126]bash ln建立软链接问题.txt
--//我个人喜欢在oracle目录下建立一个fastlink目录,里面包含一些经常进入的目录链接。
$ ls -l
total 0
lrwxrwxrwx 1 oracle oinstall 32 2023-12-07 16:27:52 adump -> /u01/app/oracle/admin/book/adump
lrwxrwxrwx 1 oracle oinstall 42 2023-12-07 16:27:52 bdump -> /u01/app/oracle/diag/rdbms/book/book/trace
lrwxrwxrwx 1 oracle oinstall 45 2023-12-07 16:27:45 dbs -> /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs
lrwxrwxrwx 1 oracle oinstall 20 2023-12-07 16:27:46 diag -> /u01/app/oracle/diag
lrwxrwxrwx 1 oracle oinstall 33 2023-12-07 16:27:48 dp -> /u01/app/oracle/admin/book/dpdump
lrwxrwxrwx 1 oracle oinstall 55 2023-12-07 16:27:46 net -> /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin
lrwxrwxrwx 1 oracle oinstall 15 2023-12-07 16:27:48 ob -> /u01/app/oracle
lrwxrwxrwx 1 oracle oinstall 41 2023-12-07 16:27:47 oh -> /u01/app/oracle/product/11.2.0.4/dbhome_1
lrwxrwxrwx 1 oracle oinstall 55 2023-12-07 16:27:47 tns -> /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin
lrwxrwxrwx 1 oracle oinstall 42 2023-12-07 16:27:53 udump -> /u01/app/oracle/diag/rdbms/book/book/trace
--//这样如果需要到某个目录。直接cd dbs就可以了。例子:
$ cd net
[~/fastlink/net ] $
$ cd -P net
--//加入-P 避开软链接。一般一些提示里面包含路径,如果没有-P ,提示行信息显示的软链接(如上的例子)。
$ pwd
/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin
--//这样可以快速进入我需要的目录。我当时写了一个脚本完成这些建立软链接的目录。
--//我当时脚本里面执行的是 ln -s -i $ORACLE_HOME/dbs dbs
--//这样第2次执行会形成1个环,参考链接http://blog.itpub.net/267265/viewspace-2753238/.
--//今天终于知道如何解决这个问题,加入-T参数就可以了。
-T, --no-target-directory
treat LINK_NAME as a normal file
--//演示:
$ cd fastlink
$ rm dbs
/bin/rm: remove symbolic link `dbs'? y
$ ln -sT -i $ORACLE_HOME/dbs dbs
$ ln -sT -i $ORACLE_HOME/dbs dbs
/bin/ln: replace `dbs'? y
--//这样就不会出现环的问题。
$ cd -P dbs
$ pwd
/u01/app/oracle/product/11.2.0.4/dbhome_1/dbs
$ ls -l | grep dbs
--//dbs目录下不再存在一个dbs目录。
--//我自己还建立一个函数cdp。
$ type cdp
cdp is a function
cdp ()
{
if [ ! -d ~/fastlink ]; then
echo 'not fount ~/fastlink! create it';
return 1;
fi;
if [ -z $1 ]; then
cd ~/fastlink;
ls --color=auto --time-style=+"%Y-%m-%d %H:%M:%S" -l --color=auto --time-style=+"%Y-%m-%d %H:%M:%S";
return 0;
fi;
if [ -n $1 ]; then
if [ -L $1 ]; then
cd -P $1;
return 0;
fi;
if [ -L ~/fastlink/$1 ]; then
cd -P ~/fastlink/$1;
return 0;
fi;
fi;
echo "not found directory $1 !!"
}
--//cdp 没有参数直接显示fastlink的目录内容。
--//cdp <目录>,直接进入目录,而且可以在任何其它目录执行。
--//附上建立软链接目录脚本:
#! /bin/bash
#
# fast cd directory (11g 12c)
[ _"$DEBUG" = _ON ] && set -x
fastlinkdebug=${FASTLINKDEBUG:-1}
echo
read -p "before run ,check and rmdir /home/oracle/fastlink directory !!! ctrl_c exit:" a
[ -n "$ORACLE_SID" ] || { echo 'setup ORACLE_SID' ; return 1 ; }
[ -n "$ORACLE_BASE" -a -d "$ORACLE_BASE" ] || { echo 'setup ORACLE_BASE' ; return 2 ; }
[ -n "$ORACLE_HOME" -a -d "$ORACLE_HOME" ] || { echo 'setup ORACLE_HOME' ; return 3 ; }
if [ $fastlinkdebug -eq 1 ] ; then
echo
echo ORACLE_SID = $ORACLE_SID
echo ORACLE_BASE = $ORACLE_BASE
echo ORACLE_HOME = $ORACLE_HOME
echo
read -p "check variable ORACLE_SID ORACLE_BASE ORACLE_HOME, ctrl_c exit:" a
fi
wc_count=$(ps -ef | grep [o]ra_pmon_${ORACLE_SID}|wc -l)
if [ $wc_count -eq 1 ] ; then
otrace=$(sqlplus -S -l / as sysdba <<EOF
set head off
set feedback off
select VALUE from v\$diag_info where name='Diag Trace';
quit
EOF
)
oadump=$(sqlplus -S -l / as sysdba <<EOF
set head off
set feedback off
select VALUE from v\$parameter where name='audit_file_dest';
quit
EOF
)
ORACLE_UNQNAME=$(sqlplus -S -l / as sysdba <<EOF
set head off
set feedback off
select VALUE from v\$parameter where name='db_unique_name';
quit
EOF
)
fi
mkdir -p /home/oracle/fastlink && cd /home/oracle/fastlink || return 5
[ -d $ORACLE_HOME/dbs ] && ln -sT -i $ORACLE_HOME/dbs dbs
[ -d $ORACLE_BASE/diag ] && ln -sT -i $ORACLE_BASE/diag diag
[ -d $ORACLE_HOME/network/admin ] && ln -sT -i $ORACLE_HOME/network/admin net
[ -d $ORACLE_HOME/network/admin ] && ln -sT -i $ORACLE_HOME/network/admin tns
[ -d $ORACLE_HOME ] && ln -sT -i $ORACLE_HOME oh
[ -d $ORACLE_BASE ] && ln -sT -i $ORACLE_BASE ob
[ -d $ORACLE_BASE/admin/${ORACLE_SID}/dpdump ] && ln -sT -i $ORACLE_BASE/admin/${ORACLE_SID}/dpdump dp
##################################
# delete otrace ,oadump of new line.
##################################
otrace=$(echo $otrace)
oadump=$(echo $oadump)
ORACLE_UNQNAME=$(echo $ORACLE_UNQNAME)
if [ $fastlinkdebug -eq 1 ] ; then
echo
echo otrace = "$otrace"
echo oadump = "$oadump"
echo ORACLE_UNQNAME = "$ORACLE_UNQNAME"
echo
read -p "check variable otrace,oadump ,ctrl_c exit:" a
fi
[ -n "$otrace" ] || return 6
[ -n "$oadump" ] || return 7
[ -n "$ORACLE_UNQNAME" ] || return 7
export ORACLE_UNQNAME=$ORACLE_UNQNAME
mkdir -p /home/oracle/fastlink && cd /home/oracle/fastlink || return 8
[ -d "$oadump" ] && ln -sT -i $oadump adump
[ -d "$otrace" ] && ln -sT -i $otrace bdump
[ -d "$otrace" ] && ln -sT -i $otrace udump
ls -l
echo
echo "fastlink create ok!!"
echo
--//以前写的链接:http://blog.itpub.net/267265/viewspace-2753238/=>[20210126]bash ln建立软链接问题.txt
--//我个人喜欢在oracle目录下建立一个fastlink目录,里面包含一些经常进入的目录链接。
$ ls -l
total 0
lrwxrwxrwx 1 oracle oinstall 32 2023-12-07 16:27:52 adump -> /u01/app/oracle/admin/book/adump
lrwxrwxrwx 1 oracle oinstall 42 2023-12-07 16:27:52 bdump -> /u01/app/oracle/diag/rdbms/book/book/trace
lrwxrwxrwx 1 oracle oinstall 45 2023-12-07 16:27:45 dbs -> /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs
lrwxrwxrwx 1 oracle oinstall 20 2023-12-07 16:27:46 diag -> /u01/app/oracle/diag
lrwxrwxrwx 1 oracle oinstall 33 2023-12-07 16:27:48 dp -> /u01/app/oracle/admin/book/dpdump
lrwxrwxrwx 1 oracle oinstall 55 2023-12-07 16:27:46 net -> /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin
lrwxrwxrwx 1 oracle oinstall 15 2023-12-07 16:27:48 ob -> /u01/app/oracle
lrwxrwxrwx 1 oracle oinstall 41 2023-12-07 16:27:47 oh -> /u01/app/oracle/product/11.2.0.4/dbhome_1
lrwxrwxrwx 1 oracle oinstall 55 2023-12-07 16:27:47 tns -> /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin
lrwxrwxrwx 1 oracle oinstall 42 2023-12-07 16:27:53 udump -> /u01/app/oracle/diag/rdbms/book/book/trace
--//这样如果需要到某个目录。直接cd dbs就可以了。例子:
$ cd net
[~/fastlink/net ] $
$ cd -P net
--//加入-P 避开软链接。一般一些提示里面包含路径,如果没有-P ,提示行信息显示的软链接(如上的例子)。
$ pwd
/u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin
--//这样可以快速进入我需要的目录。我当时写了一个脚本完成这些建立软链接的目录。
--//我当时脚本里面执行的是 ln -s -i $ORACLE_HOME/dbs dbs
--//这样第2次执行会形成1个环,参考链接http://blog.itpub.net/267265/viewspace-2753238/.
--//今天终于知道如何解决这个问题,加入-T参数就可以了。
-T, --no-target-directory
treat LINK_NAME as a normal file
--//演示:
$ cd fastlink
$ rm dbs
/bin/rm: remove symbolic link `dbs'? y
$ ln -sT -i $ORACLE_HOME/dbs dbs
$ ln -sT -i $ORACLE_HOME/dbs dbs
/bin/ln: replace `dbs'? y
--//这样就不会出现环的问题。
$ cd -P dbs
$ pwd
/u01/app/oracle/product/11.2.0.4/dbhome_1/dbs
$ ls -l | grep dbs
--//dbs目录下不再存在一个dbs目录。
--//我自己还建立一个函数cdp。
$ type cdp
cdp is a function
cdp ()
{
if [ ! -d ~/fastlink ]; then
echo 'not fount ~/fastlink! create it';
return 1;
fi;
if [ -z $1 ]; then
cd ~/fastlink;
ls --color=auto --time-style=+"%Y-%m-%d %H:%M:%S" -l --color=auto --time-style=+"%Y-%m-%d %H:%M:%S";
return 0;
fi;
if [ -n $1 ]; then
if [ -L $1 ]; then
cd -P $1;
return 0;
fi;
if [ -L ~/fastlink/$1 ]; then
cd -P ~/fastlink/$1;
return 0;
fi;
fi;
echo "not found directory $1 !!"
}
--//cdp 没有参数直接显示fastlink的目录内容。
--//cdp <目录>,直接进入目录,而且可以在任何其它目录执行。
--//附上建立软链接目录脚本:
#! /bin/bash
#
# fast cd directory (11g 12c)
[ _"$DEBUG" = _ON ] && set -x
fastlinkdebug=${FASTLINKDEBUG:-1}
echo
read -p "before run ,check and rmdir /home/oracle/fastlink directory !!! ctrl_c exit:" a
[ -n "$ORACLE_SID" ] || { echo 'setup ORACLE_SID' ; return 1 ; }
[ -n "$ORACLE_BASE" -a -d "$ORACLE_BASE" ] || { echo 'setup ORACLE_BASE' ; return 2 ; }
[ -n "$ORACLE_HOME" -a -d "$ORACLE_HOME" ] || { echo 'setup ORACLE_HOME' ; return 3 ; }
if [ $fastlinkdebug -eq 1 ] ; then
echo
echo ORACLE_SID = $ORACLE_SID
echo ORACLE_BASE = $ORACLE_BASE
echo ORACLE_HOME = $ORACLE_HOME
echo
read -p "check variable ORACLE_SID ORACLE_BASE ORACLE_HOME, ctrl_c exit:" a
fi
wc_count=$(ps -ef | grep [o]ra_pmon_${ORACLE_SID}|wc -l)
if [ $wc_count -eq 1 ] ; then
otrace=$(sqlplus -S -l / as sysdba <<EOF
set head off
set feedback off
select VALUE from v\$diag_info where name='Diag Trace';
quit
EOF
)
oadump=$(sqlplus -S -l / as sysdba <<EOF
set head off
set feedback off
select VALUE from v\$parameter where name='audit_file_dest';
quit
EOF
)
ORACLE_UNQNAME=$(sqlplus -S -l / as sysdba <<EOF
set head off
set feedback off
select VALUE from v\$parameter where name='db_unique_name';
quit
EOF
)
fi
mkdir -p /home/oracle/fastlink && cd /home/oracle/fastlink || return 5
[ -d $ORACLE_HOME/dbs ] && ln -sT -i $ORACLE_HOME/dbs dbs
[ -d $ORACLE_BASE/diag ] && ln -sT -i $ORACLE_BASE/diag diag
[ -d $ORACLE_HOME/network/admin ] && ln -sT -i $ORACLE_HOME/network/admin net
[ -d $ORACLE_HOME/network/admin ] && ln -sT -i $ORACLE_HOME/network/admin tns
[ -d $ORACLE_HOME ] && ln -sT -i $ORACLE_HOME oh
[ -d $ORACLE_BASE ] && ln -sT -i $ORACLE_BASE ob
[ -d $ORACLE_BASE/admin/${ORACLE_SID}/dpdump ] && ln -sT -i $ORACLE_BASE/admin/${ORACLE_SID}/dpdump dp
##################################
# delete otrace ,oadump of new line.
##################################
otrace=$(echo $otrace)
oadump=$(echo $oadump)
ORACLE_UNQNAME=$(echo $ORACLE_UNQNAME)
if [ $fastlinkdebug -eq 1 ] ; then
echo
echo otrace = "$otrace"
echo oadump = "$oadump"
echo ORACLE_UNQNAME = "$ORACLE_UNQNAME"
echo
read -p "check variable otrace,oadump ,ctrl_c exit:" a
fi
[ -n "$otrace" ] || return 6
[ -n "$oadump" ] || return 7
[ -n "$ORACLE_UNQNAME" ] || return 7
export ORACLE_UNQNAME=$ORACLE_UNQNAME
mkdir -p /home/oracle/fastlink && cd /home/oracle/fastlink || return 8
[ -d "$oadump" ] && ln -sT -i $oadump adump
[ -d "$otrace" ] && ln -sT -i $otrace bdump
[ -d "$otrace" ] && ln -sT -i $otrace udump
ls -l
echo
echo "fastlink create ok!!"
echo
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2017-12-12 [20171211][转载]如何实现dbms_output输出没有打开serveroutput on.txt