Articles of bash

在bash中,我怎样才能得到可能的完成消失?

在bash中,当我点击tab并且完成模糊时,在我的屏幕上显示如下: chris@host / $ cd fo foo/ for/ foz/ chris@host / $ cd fo 然后我继续打字,但我又到了另一个完成: chris@host / $ cd fo foo/ for/ foz/ chris@host / $ cd foo/ba bar/ bat/ chris@host / $ cd foo/ba 另一个: chris@host / $ cd fo foo/ for/ foz/ chris@host / $ cd foo/ba bar/ bat/ chris@host / $ cd […]

基于telnet的程序如何将其terminaltypes报告给套接字服务器?

我写了一个由tcpserver调用的脚本,大量使用tput和类似的命令。 这些命令需要知道如何正确写入terminal,并依靠TERMvariables来获取这些信息。 现在TERMvariables正在从控制台tcpserver被启动,我想改变这一点。 我的客户端是基于telnet的terminal程序,如netcat和telnet 。 我怎样才能让这些程序传达用户的terminaltypes到远程服务器?

如何停止光秃秃的cd(改变目录命令)从改变工作目录到$ HOME?

我经常这样做: $ pwd /a/long/long/way/from/anywhere $ cd # oops – meant to tab-complete something /home/$USER 可以cd默认为$ HOME被禁用?

在/ etc / profile和〜/ .bash_profile中添加PATH,但不能通过SSH显示

在Centos 6.x上, 我正在添加一些pathexport PATH=$PATH:/some/path 在/etc/profile和~/.bash_profile 但是如果通过SSHlogin的话不起作用 它只显示如果我inputsource .bash_profile 我究竟做错了什么? (NB通过SSHlogin我使用以下别名: alias ssh-server='ssh -t user@server "cd /some/dir/ ; bash" )

mtr原始输出的格式是什么?

我使用mtr来计算主机的跳数,并将该数字传递给脚本。 我发现了-l (或–raw )选项,它产生一个输出准备parsing。 但是,我想知道在哪里可以find这个原始格式描述? 不幸的是, man和谷歌只给我这个: -l –raw Use this option to tell mtr to use the raw output format. This format is better suited for archival of the measure‐ ment results. It could be parsed to be presented into any of the other display methods.

脚本从CentOs迁移到Debian – 错误消息“[:10:-lt:unexpected operator”

当我试图在新环境中执行一个脚本时,我想出了这个错误: [: 10: -lt: unexpected operator 这是脚本的痛苦部分: end=$((SECONDS+60)) while [ $SECONDS -lt $end ]; do # process some queue… sleep 5 done 起源系统:Amazon Linux AMI 2013.09(cpe:/ o:amazon:linux:2013.09:ga) 目标系统:Debian版本6.0.7 我可以阅读shell / bash / dash版本可以改变,但这仍然是相当晦涩的我。 我试图在脚本的第一行指定正确的shell: #! /bin/bash 要么 #! /bin/sh 没有机会… 我也可以发现,使用operator ==而不是=时,用户有类似的错误信息。 那么什么才是正确的替代品? 有没有其他解决scheme? 任何暗示热烈欢迎!

通过SSH执行.bash_profile别名

我想远程执行一个.bash_profile别名,但我找不到正确的命令。 我试过了: ssh user@host "bash -ic myalias" 但它不起作用 我得到: bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell bash: myalias: command not found

批量重命名以点结尾的文件

我有一个大的Unix文件服务器,与一个大的SMB共享。 它适用于Mac,Linux和Windows客户端。 这个盒子上的很大一部分文件已经从Mac Xserve迁移过来了。 共享备份的方式之一是通过Windows盒子。 如果文件名中包含不喜欢的字符,则该特定的备份软件将会失败。 我已经设法解决大部分的文件名问题,但我正在努力争取以点结束的文件。 例如: filename. newfile.txt. stupid old file. 我正在尝试find一些方法来批量重命名所有以点结尾的文件,并且没有点。 所以filename. 成为filename find . -name "*." 寻找文件。 我已经尝试通过sedpipe道: find . -name "*." | sed 's/.$//' 它在控制台中执行作业,但实际上并没有重命名文件。 这是我正在努力的部分。

login时没有shell和启动应用程序

我正在将应用程序从OpenVMS迁移到RedHat Linux 6.该应用程序是一个绿色屏幕terminal应用程序。 用户将通过SSHlogin到Linux,应用程序应该自动启动,但不应该有权访问该shell。 一旦应用程序closures或崩溃,它应该自动登出。 什么是最好的方法来处理这个? 我试着用下面的命令创build一个新的用户。 useradd -s /sbin/nologin test 然后我把ftp&添加到用户.bash_profile中,希望能够立即打开ftp控制台,然后一旦退出,就会将其注销。 然而,在SSH上进行身份validation后,会话被终止。 有任何想法吗?

区别“crontab -e”和手动编辑crontab文件?

我注意到有些人使用“crontab -l”查看cronjobs和“crontab -e”来编辑它们。 不过也有些时候人们手动修改“/ etc / crontab”来查看/添加/删除cronjobs。 两种方法都可以正常工作,我注意到的唯一的事情就是,在“/ etc / crontab”里面添加了“crontab -e”的cronjob并没有显示出来,即使它仍然正常运行。 我想知道这两种方法有什么区别? 彼此有什么优点/缺点吗? PS。 我在CentOS上。