基本上我想做以下事情:
ls -l[+someflags]
Run Code Online (Sandbox Code Playgroud)
(或通过其他方式)只显示符号链接的文件
所以输出看起来
-rw-r--r-- 1 username grp size date-time filename -> somedir
-rw-r--r-- 1 username grp size date-time filename2 -> somsdfsdf
Run Code Online (Sandbox Code Playgroud)
等等
例如,
仅显示我有别名的目录:
alias lsd 'ls -l | grep ^d'
Run Code Online (Sandbox Code Playgroud)
我想知道如何只显示隐藏文件或只隐藏目录?
我有以下解决方案,但它不显示颜色的输出:(
ls -ltra | grep '\->'
Run Code Online (Sandbox Code Playgroud) 直到3小时构建脚本的中途,我才会记得我想在输出结束后看到输出开头的内容.此时我已超过终端中的行数,因此我无法向上滚动查看它(或者开头很难找到).当然,我可以更好地存储我的输出,但我一直很好奇,如果这是可能的.
在linux shell中,是否可以返回最后一个命令的输出.我意识到我可以管道它或将输出发送到文件,但我的要求是在命令运行后检索该输出.
使用csh,但会听到任何shell.
我有一些csh脚本,我需要在开始做之前检查某些环境变量是否已设置,所以我做了这样的事情:
if ! $?STATE then
echo "Need to set STATE"
exit 1
endif
if ! $?DEST then
echo "Need to set DEST"
exit 1
endif
Run Code Online (Sandbox Code Playgroud)
这是很多打字.是否有更优雅的习惯用于检查环境变量是否已经设置?
笔记:
如果我必须在bash shell中检查变量是否为空,我可以使用以下脚本进行检查:
if [ -z "$1" ]
then
echo "variable is empty"
else
echo "variable contains $1"
fi
Run Code Online (Sandbox Code Playgroud)
但我需要将其转换为tcsh shell.
我正在将csh脚本转换为python脚本.该脚本调用内存密集型可执行文件,需要非常大的堆栈,因此csh脚本将stacksize设置为unlimited:
limit stacksize unlimited
Run Code Online (Sandbox Code Playgroud)
当我尝试在python中重现这个脚本时,我以一种非常天真的方式执行它们os.system,例如:
os.system('some_executable')
Run Code Online (Sandbox Code Playgroud)
但我不知道如何通过无限制的堆栈大小来告诉操作系统运行这些可执行文件.有没有办法为python脚本中的调用指定stacksize?是否有一些我应该使用的低级系统调用?是否有一个控制它的模块(类似于shutil)?
我喜欢在shell中使用这个快捷方式,并希望了解是否可以在csh或tsch中模拟和/或拥有(可能是安装附加组件或脚本)
谢谢
我有一个C shell脚本,它执行以下操作:
#!/bin/csh
gcc example.c -o ex
gcc combine.c -o combine
ex file1 r1 <-- 1
ex file2 r2 <-- 2
ex file3 r3 <-- 3
#... many more like the above
combine r1 r2 r3 final
\rm r1 r2 r3
Run Code Online (Sandbox Code Playgroud)
有一些办法可以让线1,2并3在运行并行而不是一个接另一个?
我们在Solaris上运行Oracle,默认情况下shell是csh.所以登录脚本也在csh中设置oracle_home,oracle_sid.但是我不喜欢csh而且想用bash来完成我的工作.那么如何在bash中获取csh登录脚本呢?
例如,以下是.cshrc文件中的内容.当使用bash时,我想使用这些变量.一种方法是再次复制变量并使用bash命令,例如export ORACLE_SID = TEST.但这样做需要我们维护两份文件.当我们更改数据库名称或升级数据库时,我需要单独维护bash登录文件.只是使用像这样的东西真好
在bash中使用.cshr,但它不起作用.
setenv ORACLE_SID TEST setenv ORACLE_HOME /oracle/TEST/home/products/10204 setenv EPC_DISABLED TRUE setenv MANPATH /usr/local/man:/usr/share/man setenv EDITOR vi setenv LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/sfw/lib/64 setenv NLS_LANG AMERICAN_AMERICA.UTF8 setenv NLS_DATE_FORMAT "DD-MON-RR"
是.我知道我不应该用它来编写脚本.是.这是垃圾.我确实是个傻瓜.
然而.
我想查看脚本正在执行的命令,以便进行调试.我认为你在bash脚本中使用set -x或set -v获得此效果.
所以,例如,如果脚本是
#!/bin/tcsh
echo "Hello"
Run Code Online (Sandbox Code Playgroud)
然后当它跑的时候,我会看到
echo "Hello"
Hello
Run Code Online (Sandbox Code Playgroud) 可能是一个真正容易的问题,但我想知道是否有人可以提供一些建议.
为了完成重复任务,我将使用从系统管理员处获得的凭据不断登录到远程Solaris服务器.但是,每次登录时,我必须更改shell(来自csh - > bash),因为必须使用BASH运行特定任务.
虽然这不是一个主要的问题,但我觉得改变bash shell有点单调乏味,因为我必须每天重复几次这个任务,偶尔可能会忘记在运行任务之前更换shell等等(我也更喜欢BASH)所以).
有没有办法我可以在一行中ssh并更改默认shell,这样我就可以立即启动我想要的远程服务器上的脚本?注意,我不知道要更改任何登录文件(如.login或.cshrc)的内容,因为远程服务器和凭据是共享的,并非专门针对我.我不想在服务器上更改默认shell,因为服务器和凭据也被多人使用.
有人会有任何想法如何摆脱这样的问题?任何建议将不胜感激.