我有一台 MacbookPro Lion,我尝试归档我的文件,如果源比目标新,我试图复制和覆盖这些文件。我尝试了以下命令
cp -u source destination
Run Code Online (Sandbox Code Playgroud)
但它说, -u 是非法的。我也没有在man cp.
你能帮忙吗,在这种情况下我该怎么办?
[我有问题从 SO 移到这里,所以请随时再次回答。我希望这是处理这个问题的正确方法]
mtime's-和+switch有什么区别,因为两者都没有带回我需要的结果?
我想删除所有超过 5 天的文件:
find /mnt/sdb1/tmp/ -type f -mtime +5 -exec ls {} \;
find /mnt/sdb1/tmp/ -type f -mtime -5 -exec ls {} \;
Run Code Online (Sandbox Code Playgroud)
我已将输出更改为ls以比较结果。
我正在尝试在 Mac OS X 终端上编写一个简单的别名来复制当前工作目录。我有这个:
alias cpwd="echo \`pwd\` | pbcopy; echo \"Copied \`pwd\`\""
Run Code Online (Sandbox Code Playgroud)
然后我可以运行以下命令来复制它:
$ cpwd
Run Code Online (Sandbox Code Playgroud)
问题是最后echo pwd包含换行符。所以当我粘贴它时,它会立即执行(如果粘贴在终端中)。
我想要做的就是去掉试用换行符,但我在互联网上找到的任何东西似乎都不适合我。看过涉及sed,awk和 的各种解决方案cut,但我不太明白。似乎很容易做到。
我想下载 git repo 的 tar 并将其内容解压缩到另一个文件夹。
以下行(为了清楚起见而分解)有效:
curl -L -0 nt-dotfiles.tar.gz https://api.github.com/repos/nicktomlin/laptop/tarball \
| tar --strip-components=1 -zx -C ~/Documents/dotfiles
Run Code Online (Sandbox Code Playgroud)
但给出了这个错误:
curl: (6) Could not resolve host: nt-dotfiles.tar.gz; nodename nor servname provided, or not known
我可以保持原样(因为它仍然有效),但我对错误很好奇,如果它消失了会感觉更好。
谢谢!
我有很多(7500 个).wav 文件(以它们的编号命名),我想将它们合并为一个。我认为它必须使用 bash 循环来完成,因为使用通配符某些文件的顺序会错误(例如 2 之前的 1111)。
在 Linux 下执行此操作的最佳方法是什么?
我有一个来自 Gary Bernhardt 的 dotfiles 的 bash 脚本,它打印了最近 git 提交的漂亮彩色列表。它使用该column命令将输出排列成列。在我的 Mac 上,它运行得非常好。
然而奇怪的是,当我在 Cygwin 或 CentOS 6 上运行它时,列位不起作用。所有字段之间都有三个空格,无论它们的长度如何,都会在“列”之间产生锯齿状的排水沟。我已将其范围缩小到 ANSI 颜色转义码。如果我删除这些,列会排成一列。
zsh 版本在所有三个上都相同(并且问题在 bash 中的出现方式完全相同)。我不知道是什么版本column,但它们看起来完全一样,而且它们的手册页对于任何有价值的东西都是一样的。
为什么这适用于我的 Mac 而不适用于其他操作系统?
我刚开始使用 BASH,所以我可以将一个目录的所有内容移动到另一个目录。但问题是,我期待它合并目录。我正在使用 cron 作业来运行此脚本。
#!/bin/bash
shopt -s dotglob nullglob
mv mv_schedule/* public_html/
Run Code Online (Sandbox Code Playgroud)
来源:(/mv_schedule/包含文件夹/文件)
/files/
4.html
5.html
/assets/
sitemap.xml
Run Code Online (Sandbox Code Playgroud)
目的地:(/public_html/以前的文件夹已经存在)
/files/
1.html
2.html
3.html
/assets/
sitemap.xml
Run Code Online (Sandbox Code Playgroud)
所以,我想要的东西,是所有来自这些目录内的新文件/mv_schedule/与在那些合并/public_html/,并已经在那里存在的文件,与那些来自何处来代替/mv_schedule/。
当我使用当前脚本尝试此操作时,它当前正在通过电子邮件返回此错误:
mv: cannot move `mv_schedule/assets' to `public_html/assets': Directory not empty
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
例如,我的 Linux 服务器上有数据库备份,我想编写一个脚本将其上传到远程 FTP。我试过这个put命令,但它一次只能传输一个文件。然后我尝试了 mput 命令,但它只显示我要传输的文件的问号(也许我使用错误?...)
我试过这个:
#!/bin/bash
ftp -n <<EOF
open ftp.server.com
user name password
cd backup
mput /backup/*
EOF
Run Code Online (Sandbox Code Playgroud)
但它不会工作。它输出我想传输的文件名称,名称末尾带有问号。我错过了什么,或者有更好的更简单的方法吗?
当我跑
curl | tee test.txt; echo ${PIPESTATUS[0]}
Run Code Online (Sandbox Code Playgroud)
我正确地看到
curl:尝试“curl --help”或“curl --manual”以获取更多信息
2
但是当我尝试使用“/bin/sh”运行完全相同的命令时:
sh -c "curl | tee test.txt; echo \${PIPESTATUS[0]}"
Run Code Online (Sandbox Code Playgroud)
我得到
curl:尝试“curl --help”或“curl --manual”以获取更多信息
sh: 1: 替换错误
Bad substitution请问我们如何解决问题?
我在 Windows 8.1 上使用 Git Bash
我看到(至少)两种不同的方式来启动 Git Bash:
1) 开始屏幕 -> 输入 Git Bash -> 按 Enter
2) Windows 资源管理器 -> 右键单击文件夹 -> 选择“Git Bash”
当我用方法 1 打开程序时,我的字体很小。当我用方法 2 打开程序时,我的字体很大。这两种方法似乎都能正确读取我的 /etc/profile 和其他配置。
我更喜欢更大的字体,所以我希望它每次都用更大的字体打开。
启动方法有什么区别?为什么会发生这种情况,如何让它每次都使用大字体?