Linux scp hidden file issue

The .. pattern in the {.,}* expansion represents the parent directory (one level above the current directory). This causes the error because scp tries to include the parent directory, which is not what you intend.

Solution:

To avoid including .., you can modify the pattern to match hidden files and directories without the .. directory. Here's the corrected command:

bash 复制代码
scp -r fapuser@158.220.199.227:/home/fapuser/{.[!.],}* .
  • {.[!.],}* ensures that . followed by any character except . is included, which prevents .. from being matched.
  • This pattern will still match hidden files and directories like .bashrc and .config.

This should fix the issue with the unexpected .. directory error.

The reason hidden files aren't transferred is because the * wildcard doesn't match files that start with a dot (.) by default. To include those hidden files, you need to use the {.,}* pattern. Here's how it works:

  • * matches all non-hidden files (files that don't start with a dot).
  • {.,}* matches both hidden files (starting with a dot) and regular files. The {.,} part tells the shell to consider both an empty prefix ("") and a dot (".") as valid matches before the filename.

This way, hidden files like .bashrc will be included in the transfer.

In Bash (and most other shells), the * wildcard is expanded by the shell before the actual command (like scp) is executed.

Here's what happens:

  1. Wildcard Expansion : Bash interprets the * wildcard and expands it to match all the filenames in the specified directory that are not hidden (i.e., do not start with a dot .).
  2. Command Execution : Once the shell expands the wildcard, it passes the resulting list of filenames to the command (in your case, scp).

For example:

bash 复制代码
scp -r fapuser@158.220.199.227:/home/fapuser/* .

If /home/fapuser/ contains files file1, file2, and .bashrc, Bash will expand * to file1 file2 and not .bashrc, so only file1 and file2 will be passed to scp.

This is why you need to use {.,}* if you want to match both hidden and non-hidden files; Bash will expand that pattern to include hidden files as well.

🚀 Looking for reliable cloud servers? Check out @Vultr! Great performance, easy setup, and affordable pricing. Use my ref link to get started: https://www.vultr.com/?ref=7922375 🌍💻 #CloudComputing #Vultr

相关推荐
赖small强4 分钟前
【Linux C/C++开发】Linux C/C++ 堆栈溢出:原理、利用与防护深度指南
linux·c语言·c++·stack·堆栈溢出
db_cy_206211 分钟前
Git对服务器配置文件进行版本控制
运维·服务器·git
TracyCoder12319 分钟前
在Ubuntu上搭建大模型最基础的应用环境
linux·运维·ubuntu
云和数据.ChenGuang21 分钟前
AI运维工程师技术教程之Linux环境下部署Deepseek
linux·运维·人工智能
qq_2516161924 分钟前
ubuntu nginx文件服务器
linux·服务器·网络
JuiceFS28 分钟前
JuiceFS + MinIO:Ariste AI 量化投资高性能存储实践
运维·后端
ejinxian33 分钟前
WindFlow - 通过多个AI增强您的自动化工作流程
运维·自动化·ai工作流程
kblj555537 分钟前
学习Linux——学习工具——DNS--BIND工具
linux·运维·学习
晚风吹长发39 分钟前
初步了解Linux中文件描述符-fd
linux·运维·服务器·c++·开发·文件
微风◝40 分钟前
AlmaLinux9配置本地镜像仓库
linux·运维·服务器