我查看了此处的其他问题以及 Internet 上的各种“scp 使用”教程,但我无法弄清楚出了什么问题。
我正在使用 Linux Mint 并试图弄清楚scp是如何工作的。
我在目录/home/name/dir/ 中有一个文件file.ext(在我的电脑上)
我使用ssh连接到远程机器,例如:
ssh -p 2222 username@domain
Run Code Online (Sandbox Code Playgroud)
它问我密码,shell 显示:
username@domain ~ $
Run Code Online (Sandbox Code Playgroud)
现在,如果我发出命令(在我运行 ssh 之前,我在本地目录 /home/name/dir 中):
scp -r -P 2222 file.ext username@domain
Run Code Online (Sandbox Code Playgroud)
输出是:
cp: cannot stat ‘file.ext’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我写的是完整路径而不是 file.ext,则结果相同
scp -r -P 2222 /home/name/dir/file.ext username@domain
Run Code Online (Sandbox Code Playgroud)
此外,服务器管理员告诉我,我会将文件上传到我的远程主目录(而不是根目录),例如:
scp -r -P 2222 file.ext username@domain:~/
Run Code Online (Sandbox Code Playgroud)
但是当我这样做并按“Enter”时,什么也没有发生,就好像外壳正在等待进一步的输入一样。
我的问题总结:
有什么建议?
您是否真的通过输入此转义序列来“结束文件”,即交互式 shell 会话是否被 shell 视为真正的文件流,就像任何其他文件流一样?如果是,是哪个文件?
或者,Ctrl+D信号只是一个占位符,表示“用户已完成输入,您可以终止”?
大多数 shell 提供类似&&和;以某种方式链接命令执行的功能。但是如果一个命令已经在运行,我是否仍然可以根据第一个命令的结果以某种方式添加另一个要执行的命令?
说我跑了
$ /bin/myprog
some output...
Run Code Online (Sandbox Code Playgroud)
但我真的很想要/bin/myprog && /usr/bin/mycleanup。我无法杀死myprog并重新启动一切,因为会浪费太多时间。我可以Ctrl+Z它和fg/bg如果有必要。这是否允许我链接另一个命令?
我最感兴趣的是 bash,但欢迎所有常见 shell 的答案!
是否有任何 Linux 命令可以用来对文件的子集进行采样?例如,一个文件包含一百万行,我们只想从该文件中随机抽取一千行。
对于随机,我的意思是每条线都有相同的被选择概率,并且所选择的线都不是重复的。
head并且tail可以选择文件的子集但不能随机选择。我知道我总是可以编写一个 python 脚本来这样做,但只是想知道是否有这种用法的命令。
目前我玩得很开心apt-get- 不好的是,这是我自己的错。我已经启用了这些testing包/etc/apt/sources.list来安装某个包。我告诉我的系统做apt-get dist-upgrade。一切正常,但现在我正试图恢复stable更新 - 但我失败了......
尝试执行该操作时apt-get dist-upgrade,我得到以下信息:
The following packages will be REMOVED:
linux-image-3.10-3-amd64
The following NEW packages will be installed:
libcgi-fast-perl libfcgi-perl libyaml-syck-perl
The following packages will be DOWNGRADED:
initramfs-tools libdate-manip-perl munin munin-common
Run Code Online (Sandbox Code Playgroud)
好吧,没关系,但是当我尝试这样做时,我会收到一条粗体友好红色字母的警告:
You are running a kernel (version 3.10-3-amd64) and attempting to remove the same version.
...
It is highly recommended to abort the kernel removal unless you are prepared to fix the system after …Run Code Online (Sandbox Code Playgroud) 这个问题是由关于ls'-1选项的问题以及人们反复提出问题和答案的倾向引起的,包括处理ls.
输出的这种重用ls似乎是可以理解的,例如:如果您知道如何对文件列表进行排序,ls那么您可能希望以这种方式使用输出作为其他内容的输入。
如果这些问答不包含对由行为良好的文件名(没有空格和换行符之类的特殊字符)组成的文件名列表的引用,则经常有人评论它们,指出命令序列在出现时不起作用的危险是带有换行符、空格等的文件。
find,sort和其他实用程序解决了将“困难”文件名传达给的问题,例如,xargs通过使用一个选项将文件名与 NUL 字符/字节分开,这不是文件名中的有效字符(除了/?之外的唯一一个) Unix/Linux 文件系统。
我查看了手册页ls和输出ls --help(列出了更多选项),但找不到ls(from coreutils) 有一个选项来指定 NUL 分隔的输出。它确实有一个-1选项可以解释为“用换行符分隔的输出文件名”)
问:是否有技术或哲学原因为什么ls没有“输出由 NUL 分隔的文件名”的--zero或-0选项?
如果您执行的操作仅输出文件名(而不使用 eg -l),则可能有意义:
ls -rt -0 | xargs -r0 …
Run Code Online (Sandbox Code Playgroud)
我可能会遗漏一些为什么这不起作用的东西,或者我忽略了这个例子的替代方案,而且不是更复杂和/或模糊。
附录:
这样做ls -lrt -0可能没有多大意义,但在以同样的方式find . -ls -print0不对,所以这不是一个理由不提供-0/ -z …
我正在尝试在 Fedora 19 中安装 VMWare 播放器。我遇到了多个用户遇到的问题,其中 VMware 播放器找不到内核头文件。我已经安装了kernel-headers和kernel-devel包yum,出现的文件/usr/src/kernels是:
3.12.8-200.fc19.x86_64
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,uname -r我的 Fedora 内核版本是:
3.9.5-301.fc19.x86_64
Run Code Online (Sandbox Code Playgroud)
这是一个不同的版本。这似乎意味着当我将 VMware player 指向内核路径时,我收到此错误:
C header files matching your running kernel were not found.
Refer to your distribution's documentation for installation instructions.
Run Code Online (Sandbox Code Playgroud)
如何安装正确的内核,如果不是,我应该将 VMware 指向哪里/usr/src/kernels/<my-kernel>?
我最近将我的 Fedora 更新到 20 并想安装 vim。但是运行sudo yum install vim返回了这个错误:
Transaction check error:
file /usr/share/man/man1/vim.1.gz from install of vim-common-2:7.4.179-1.fc20.x86_64 conflicts with file from package vim-minimal-2:7.4.027-2.fc20.x86_64
Error Summary
-------------
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
我们是否有一个键绑定表来翻译所有指代按键的方式?我正在使用zsh,但我认为如果有这样的表,它将适用于任何外壳。
我问的原因是我想分配一些键绑定,但我不知道如何引用它们(除非我要窃取一个已经定义的)。
例如,在“zbindkey”中,我们有这样的事情:
[[ "$terminfo[kend]" == " O"* ]] && \
bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
Run Code Online (Sandbox Code Playgroud)
...我可以猜到“kend”意味着这是指End钥匙。
交叉检查bindkey我看到这些行:
"^E" end-of-line
"^[OF" end-of-line
"^[[F" end-of-line
Run Code Online (Sandbox Code Playgroud)
...所以我相信其中一行是指End密钥。哪一个?
我们在“bindkey”文件中也有这个:
bindkey "\e[A" history-beginning-search-backward
Run Code Online (Sandbox Code Playgroud)
现在,我碰巧知道那是Up Arrow关键,但如果我不知道,我怎么知道呢?
$ bindkey (at CLI)
Run Code Online (Sandbox Code Playgroud)
... 为同一个键提供了不同的语言:
"^[[A" history-beginning-search-backward
Run Code Online (Sandbox Code Playgroud)
...但至少现在我知道 ^[[A在 bindkey-at-CLI 中说话与\e[A在 bindkey-in-zbindkey 中说话是一样的。这很容易。在过去的DOS下,Up Arrow 是0;72-你会发现每一个法律按键的扫描码,有仅仅是一种语言。
有桌子吗?或者能够选择击键并知道如何terminfo[]在“bindkey-in-zbindkey”中……在“bindkey-at-CLI”和/或任何其他语言中引用它的其他方式碰巧是?
同样,在 DOS 中有scancode程序——键入一个键,你就得到了扫描码。这太容易了。
从答案中我猜想没有办法打印出所有可能绑定的表格?无论如何'bindkey'几乎可以满足我的要求:
pts/2 HP-y5-10-Debian1 root /aWorking/Docs $ bindkey -L
bindkey …Run Code Online (Sandbox Code Playgroud) 在 Mac OS X 中,我可以使用 Activity Monitor 程序来查看正在运行的程序/进程是否为 64 位。无论风格如何,我如何在 Linux 操作系统中做到这一点?