Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

7
cron执行作业时,“工作目录”是什么?
当我从命令行运行它时,我有一个可以运行的脚本,但是当我对其进行计划时,却cron收到了无法找到文件或命令的错误。我的问题是双重的: 当我使用计划Cron作业时crontab -e,它是否使用我的用户ID作为其权限的基础?还是使用某种cron用户ID及其相关权限? 启动cron作业时,工作目录是什么?是我指定要运行脚本的目录,还是其他目录? 这是我的Cron工作: 15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh 这是实际的脚本: vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`" echo "$vIP_ADDR" sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt ssmtp XXXXX@gmail.com < emailmsg.txt 这是我查看mail产生的消息时遇到的错误cron: sed: can't read template.txt: No such file or directory /home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found 它找不到,template.txt但与脚本位于同一目录中。它也无法运行ssmtp,但是我可以作为用户。我缺少什么让它正常工作?



3
查找命令:如何忽略大小写?
我正在巨大的目录层次结构中寻找文件“ WSFY321.c”。 通常我会使用GNU find:find . -name "WSFY321.c" 但是我不知道大小写,它可以是大写,小写或二者兼而有之。 查找此文件的最简单方法是什么? 有比这更好的东西find . | grep -i "WSFY321.c"吗?
170 find 

7
终端提示未正确包装
我有一个问题,如果我在bash中输入很长的命令,终端将无法正确显示我键入的内容。我希望如果我有如下命令: username@someserver ~/somepath $ ssh -i /path/to/private/key myusername@something.someserver.com 该命令应在两行上呈现。相反,它通常会环绕起来并开始在提示的顶部进行书写,如下所示: myreallylongusername@something.somelongserver.comh -i /path/to/private/key 如果我决定返回并更改一些参数,则无法确定光标将出现在哪里,有时在提示的中间,但通常在我键入的位置的那一行上。 当我Up执行上一个命令时,会带来更多乐趣。我已经在gnome-terminal和Terminator以及i3和Cinnamon上进行了尝试。有人建议这是我的提示,所以这里是: \[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\] Ctrll,,reset和clear都按照他们说的去做,但是当我重新输入命令时,还是Up发生了同样的事情。 我检查并checkwinsize启用了bash。这发生在80x24和其他窗口尺寸上。 这只是我学会生活的东西吗?我应该知道一些魔术吗?我已经同意只使用一个很短的提示,但这不能解决问题。
170 bash  terminal  prompt 

6
为什么遍历find的输出是不好的做法?
这个问题的灵感来自 为什么使用shell循环处理文本被认为是不好的做法? 我看到这些构造 for file in `find . -type f -name ...`; do smth with ${file}; done 和 for dir in $(find . -type d -name ...); do smth with ${dir}; done 即使有些人花时间在这些帖子上发表评论,解释为什么应避免此类事情的原因,也几乎每天都在这里使用... 看到此类帖子的数量(以及有时忽略这些评论的事实)我想我不妨问一个问题: 为什么循环遍历find输出是不正确的做法,并且为每个返回的文件名/路径运行一个或多个命令的正确方法是find什么?
170 files  find  filenames  for 

8
/ sbin / nologin和/ bin / false之间有什么区别
从技术上讲,除非pam您设置为不检查您的外壳,否则pam_shells,如果您不在外壳上,则这两种方法均无法阻止您的登录。在我的系统上,它们的大小甚至不同,因此我怀疑它们实际上在做什么。那有什么区别呢?他们为什么都存在?为什么我要一个使用另一个? -rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false -rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin
169 shell  security  login 

13
如何在没有密码提示的情况下以root用户身份运行特定程序?
我需要在没有密码的情况下以sudo的身份运行某些东西,因此我使用了visudo并将其添加到我的sudoers文件中: MYUSERNAME ALL = NOPASSWD: /path/to/my/program 然后我尝试了一下: $ sudo /path/to/my/program [sudo] password for MYUSERNAME: 为什么要求输入密码?如何以root用户身份与非root用户一起运行/使用命令,而无需输入密码?
169 sudo 

5
我删除了/ bin / rm。我该如何恢复?
只是为了好玩,我以为我会在运行Raspbian的Raspberry Pi上使用以下命令: sudo rm -f /bin/rm 我以为我可以重新安装coreutils:我错了! apt-get install --reinstall coreutils从给出了一个错误dpkg,说它无法删除该软件包。由于Makefile使用,无法从源代码进行编译rm。 我该如何找回工作rm?
168 command-line  rm  dpkg 

5
在vi中删除行
如何在VI中删除一行? 这是我现在正在做的事情: 打通终端alt+ ctrl+t vi a.txt 我将光标移到要删除的行,那么在vi编辑器中删除行应该使用什么组合键?
168 ubuntu  terminal  vim  vi 


5
如何挂起后台进程并将其置于前台
我有一个最初在前台运行的进程。我先按Ctrl+ 暂停Z,然后按继续在后台运行bg <jobid>。 我想知道如何暂停在后台运行的进程? 如何使后台进程成为前台? 编辑: 该进程输出到stderr,那么fg <jobid>当该进程输出到终端时我应该如何发出命令?


12
如何更改多个文件的扩展名?
我想将文件扩展名从更改*.txt为*.text。我尝试使用该basename命令,但是在更改多个文件时遇到了麻烦。 这是我的代码: files=`ls -1 *.txt` for x in $files do mv $x "`basename $files .txt`.text" done 我收到此错误: basename: too many arguments Try basename --help' for more information

6
在文件末尾添加新行有什么意义?
一些编译器(尤其是C或C ++编译器)会向您发出有关以下内容的警告: No new line at end of file 我以为这只是C程序员的问题,但是github在commit视图中显示了一条消息: \ No newline at end of file 一个PHP文件。 我了解此线程中解释的预处理器内容,但是与PHP有什么关系?是同一include()件事还是与\r\nvs \n主题有关? 在文件末尾添加新行有什么意义?
165 files  newlines 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.