-ZXVF在TAR -ZXVF <FILENAME>中是什么意思?

我在许多网站上看到了这样的命令," -ZXVF"或类似命令代表什么? tar -zxvf <filename> tar xvf <filename> 答案 z表示 (un)z̲ip。 x表示从存档中提取文件。 v意味着直接打印文件名。 f表示以下参数是文件名。 有关更多详细信息,请参阅tar的男人页。 来自: stackoverflow.com

./configure:/bin/sh^m:不良解释器

我一直在尝试在Fed 12系统上安装LPNG142。对我来说似乎是个问题。我有这个错误 [root@localhost lpng142]# ./configure bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory [root@localhost lpng142]# 我该如何解决?这/etc/fstab文件: # # /etc/fstab # Created by anaconda on Wed May 26 18:12:05 2010 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=ce67cf79-22c3-45d4-8374-bd0075617cc8 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 答案 要修复,请使用VI或VIM打开脚本,然后进入VI命令模式(键)Esc键),然后输入:...

./studio.sh 之后 Android Studio 错误

后./studio.sh在终端中,我收到此错误"tools.jar 不在 android studio 类路径中,请确保JAVA_HOME指向 JDK 而不是 JRE"。 我 Google 了一下,每个人都这么说:“你需要将环境变量设置为 JDK 路径而不是 JRE” 我尝试这两个命令 export PATH=${JDK_HOME}:/etc/java-7-openjdk export PATH=${JAVA_HOME}:/etc/java-7-openjdk 并再次执行./studio.sh我得到同样的错误 我的操作系统是Linux Mint 14 答案 我结合杰罗姆和贾罗德的回答解决了这个问题: 安装JDK——sudo apt-get install openjdk-7-jdk 环境变量——sudo nano /etc/environment添加以下行: JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386 重新启动,Android Studio 启动。 另外我刚刚发现https://stackoverflow.com/a/17827697/2533809这似乎有一个很好的写法,几乎相同的答案。 (我使用的是 Debian 7 Wheezy) 来自: stackoverflow.com

.htaccess 不工作(mod_rewrite)

我没有任何运气获得. htaccess mod_rewrite工作。http://www.example.com" 和 “https://www.example.com"。 如果我缺少任何内容(conf 文件等,请告诉我,我会更新它) 这是我的 .htaccess 文件(位于 @ /var/www/site/trunk/html/ ) Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) //%1/$1 [L,R=301] 我的 mod_rewrite 已启用: root@s15348441:/etc/apache2/mods-available# more rewrite.load LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 我的阿帕奇配置文件: Apache2.conf # # Based upon the NCSA server configuration files originally by Rob McCool. # # This is the main Apache server configuration file. It contains the # configuration directives that give the server its instructions....

'

考虑: gndlp@ubuntu:~$ test -x examples.desktop && echo $? gndlp@ubuntu:~$ test -x examples.desktop & echo $? [1] 2992 0 为什么 Bash 在这种情况下会这样做? 测试命令是否根本没有完成,因此echo命令未处理? 答案 的含义&&和&有着本质上的不同。 What is && in Bash? 在 Bash 以及许多其他编程语言中&&意思是"和"。&&在这种情况下应按顺序运行。 What is & in Bash? 还有一个单&表示前面的命令 - 紧邻的左侧&—应该简单地在后台运行。 所以看看你的例子: gndlp@ubuntu:~$ test -x examples.desktop && echo $? gndlp@ubuntu:~$ test -x examples.desktop & echo $? [1] 2992 0 第一个命令(按照其结构)实际上不返回任何内容。[1] 2992其中2992指的是后台运行的进程ID (PID)0是第一个命令的输出。 由于第二个命令刚刚运行test -x examples.desktop在后台,它发生得非常快,因此进程 ID 会生成并立即消失。 来自: stackoverflow.com

'“ sdl.h”编译时找不到此类文件或目录

这是我当前的 Makefile 的一部分: CFLAGS = -O2 -Wall -pedantic -std=gnu++11 `sdl-config --cflags --libs` -lSDL_mixer 我安装了libsdl,sdl.h在/usr/include/sdl所属的位置,但它不会编译。我也有线条#include "SDL.h"在我的 .h 文件中,但仍然不行。 有人知道为什么吗? 答案 如果头文件是/usr/include/sdl/SDL.h和你的代码有: #include "SDL.h" 您需要修复您的代码: #include "sdl/SDL.h" 或者告诉预处理器在哪里可以找到包含文件: CFLAGS = ... -I/usr/include/sdl ... 来自: stackoverflow.com

'bash -c'做什么?

我遵循以下教程:http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/ 在某个时候,它告诉我执行以下命令: sudo bash -c "cat >> /etc/apache2/sites-available/magento-store.com <<EOF <VirtualHost *:80> ServerName localhost.magento-store.com ServerAlias www.localhost.magento-store.com DocumentRoot /home/dev/public_html/magento-store.com/public LogLevel warn ErrorLog /home/dev/public_html/magento-store.com/log/error.log CustomLog /home/dev/public_html/magento-store.com/log/access.log combined </VirtualHost> EOF" 这个命令做了什么,我如何取消它? 我重新启动了计算机,看来它仍在运行。我看了看.bashrc和.profile,但是我没有在里面找到它。 答案 引用man bash: -c字符串如果存在-c选项,则从字符串中读取命令。 如果字符串之后有参数,则将它们分配给位置参数,从$ 0开始。 您引用的命令会附加 Heredoc中的文字(即VirtualHost标签)到文件/etc/apache2/sites-available/magento-store.com。 来自: stackoverflow.com

“ opt”是什么意思(如“ opt”目录中)?这是缩写吗?

" opt"是什么意思(如" opt"目录中)?我通常会在带有开发工具的UNIX系统中看到此目录。 这是缩写吗? 答案 在过去,AT&T,Sun,Dec和第三方供应商等UNIX供应商使用了"/opt",以持有"选项"包;即,您可能已经支付了额外的钱。我不记得在伯克利BSD Unix上看到"/opt"。他们使用"/usr/local"来安装自己的东西。 但是,当然,不同目录的真实"含义"一直有些模糊。可以说这是一件好事,因为如果这些目录具有精确的(严格执行)的含义,您最终会以不同目录名称的扩散。 这文件系统层次结构标准关于"/opt/*“的话: “/OPT保留用于安装附加应用程序软件包。” 相比之下,它说明了”/usr/local/*": “/usr /本地层次结构在本地安装软件时,用于系统管理员。” 如今,"/usr/local/*“通常用于安装已经过去的软件建造本地,可能是在调整配置选项之后等。 来自: stackoverflow.com

“ posix”是什么意思?

什么是posix?我读过维基百科文章每次遇到这个词时,我都会阅读它。事实是,我从来没有真正理解它是什么。 谁也可以通过解释"对Posix的需求"向我解释吗? 答案 posix是一个标准家族,由IEEE,为了澄清和制造统一的应用程序界面(以及辅助问题,例如命令线壳实用程序)。 当您编写程序以依靠POSIX标准时,您可以肯定能够轻松地将它们移植到大型的Unix衍生产品(包括Linux)中(但不限于它!);如果并且当您使用某些未标准化为POSIX一部分的Linux API时,如果以及何时要将该程序或库移植到将来的其他Unix-Y系统(例如MacOSX)时,您将有更困难的时间。 来自: stackoverflow.com

“#!/usr/bin/env bash”和“#!/usr/bin/bash”有什么区别?

在BASH脚本的标题中,这两个陈述之间有什么区别: #!/usr/bin/env bash #!/usr/bin/bash 当我咨询env 男人页,我得到了这个定义: env - run a program in a modified environment 这是什么意思? 答案 通过/usr/bin/env有好处,可以在当前中寻找该程序的默认版本env铁。 这样,您就不必在系统上的特定位置寻找它,因为这些路径可能位于不同系统上的不同位置。只要它在您的道路上,就会找到它。 一个缺点是您将无法通过一个以上的参数(例如,您将无法写作/usr/bin/env awk -f)如果您想支持Linux,POSIX很模糊关于如何解释行,Linux在第一个表示单个参数的空间之后解释了所有内容。您可以使用/usr/bin/env -S在某些版本的env为了解决这个问题,但是随后该脚本将变得更加便携,并破坏相当近期的系统(例如,即使不是以后的Ubuntu 16.04)。 另一个不利的一面是,由于您没有调用明确的可执行文件,因此它具有错误的潜力,并且在Multiuser Systems安全问题上(如果有人设法获取其可执行文件bash例如,在您的道路上)。 #!/usr/bin/env bash #lends you some flexibility on different systems #!/usr/bin/bash #gives you explicit control on a given system of what executable is called 在某些情况下,第一个可能是首选的(例如运行具有多个版本的Python的Python脚本,而无需重新设计可执行的行)。但是,在安全性重点的情况下,后者将是首选,因为它限制了代码注入的可能性。 来自: stackoverflow.com

“cat << EOF”在 bash 中如何工作?

我需要编写一个脚本来向程序输入多行输入(psql)。 经过一番谷歌搜索后,我发现以下语法有效: cat << EOF | psql ---params BEGIN; `pg_dump ----something` update table .... statement ...; END; EOF 这正确地构造了多行字符串(来自BEGIN;到END;,包括在内)并将其作为输入传递给psql。 但我不知道它是如何/为什么起作用的,有人可以解释一下吗? 我主要指的是cat << EOF, 我知道>输出到文件,>>附加到文件,<从文件读取输入。 什么是<<到底是怎么做的? 有它的手册页吗? 答案 这就是所谓的heredoc 格式 提供一个字符串到标准输入中。https://en.wikipedia.org/wiki/Here_document更多细节。 从man bash: 这里的文件 这种类型的重定向指示 shell 从当前源读取输入,直到看到仅包含单词(没有尾随空格)的行。 到该点读取的所有行都将用作命令的标准输入。 这里文档的格式是: <<[-]word here-document delimiter 不执行参数扩展、命令替换、算术扩展或路径名扩展word 。word 被引用,则delimiter 是删除引号的结果word ,以及中的行here-document 没有展开。word 未加引号,所有行here-document 进行参数扩展、命令替换和算术扩展。\<newline>被忽略,并且\必须用于引用字符\,$, 和`````。 如果重定向运算符是<<-,然后从输入行和包含的行中删除所有前导制表符delimiter。 来自: stackoverflow.com

“git add”返回“致命:外部存储库”错误

我刚刚进入 git 的奇妙世界。/var/www/myapp。 我创建了一个新目录/home/mylogin/gitclone。git clone针对公共回购,我能够获得创建的最新副本。 我现在正在尝试找出如何获取工作文件夹中的所有文件(/var/www/myapp)并将它们"签入"到主存储库。 从/home/mylogin/gitclone, 我试过git add /var/www/myapp但我收到一个错误,表明我尝试添加的文件夹位于存储库之外。 你能给我一些关于我做错了什么的指示吗? 答案 首先,您可以在克隆文件夹中创建一个分支(这样主分支就保持不变) git branch [branch_name] 之后,只需将所需的文件从旧文件夹复制到克隆文件夹即可。 完成后,只需添加/提交您的更改并合并你的分支进入"master"分支。 git add . git commit -m "Comments" git checkout master git merge [new_branch] 尝试这个来自 GitHub 的教程。 来自: stackoverflow.com

“grep -rnw”:在所有文件中搜索字符串

相关问题:如何在 Linux 上查找包含特定文本的所有文件? 我一直在使用上述问题的答案中提到的命令来搜索所有文件中出现的字符串: grep -rnw '/path/to/somewhere/' -e "pattern" 不过最近我遇到了一个问题,如下图所示: 看起来这个命令只能识别作为单词或其他东西突出的字符串。 答案 解释shell有助于解释您的命令,并给出摘录man grep: -w, --word-regexp Select only those lines containing matches that form whole words. 所以只需删除-w因为这明确地做了你不想要的事情: grep -rn '/path/to/somewhere/' -e "pattern" 来自: stackoverflow.com

“to_string”不是“std”的成员?

好的,所以我有 tmp.cpp: #include <string> int main() { std::to_string(0); return 0; } 但是当我尝试编译时我得到: $ g++ tmp.cpp -o tmp tmp.cpp: In function 'int main()': tmp.cpp:5:5: error: 'to_string' is not a member of 'std' std::to_string(0); ^ 我正在运行 g 版本 4.8.1。不是使用 MinGW,我使用的是 Linux (3.11.2)。 有什么想法为什么会发生这种情况吗? 答案 你可能想指定 C 版本 g++ -std=c++11 tmp.cpp -o tmp 我手头没有 gcc 4.8.1 ,但在旧版本的 GCC 中,您可以使用 g++ -std=c++0x tmp.cpp -o tmp 至少 gcc 4.9.2 我相信也通过指定支持 C 14 的一部分 g++ -std=c++1y tmp....

“ulimit -s unlimited”有什么作用?

可以理解的是,有很多关于堆栈分配的相关问题 栈和堆是什么以及在哪里? 为什么堆栈大小有限制? 堆栈和堆内存的大小 但是在各种 *nix 机器上我可以发出 bash 命令 ulimit -s unlimited 或 csh 命令 set stacksize unlimited 这如何改变程序的执行方式? 如果有更多相关的系统细节,我主要关心在 x86_64 硬件上运行的 Linux 上使用 GCC 编译的程序。 答案 当您调用函数时,会在堆栈上分配一个新的"命名空间"。 为了限制程序使用大量堆栈空间,通常通过以下方式进行限制ulimit -s。ulimit -s unlimited,我们的程序将能够不断地消耗 RAM 来支持不断增长的堆栈,直到最终系统完全耗尽内存。 int eat_stack_space(void) { return eat_stack_space(); } // If we compile this with no optimization and run it, our computer could crash. 通常,使用大量堆栈空间是偶然的,或者是非常深的递归的症状,可能不应该过多依赖堆栈。 对性能的影响很小,但确实存在。time命令,我发现消除堆栈限制将性能提高了几分之一秒(至少在 64 位 Ubuntu 上)。 来自: stackoverflow.com