不小心输入了 mv /* ../* 怎么办?

本来想把当前目录下所有的文件移动到上级,但没注意少输入了个点,现在处理基本的 cd ,echo…其他命令都用不了了。在线等,急…

假设你还在当前目录,那么mv命令的完整路径应该是../usr/bin/mv,你可以用这个命令把根目录下的文件和文件夹再移动回去。

看错了,我刚刚试了一下,你应该先找到上级目录下的最后一个文件夹,用ls ../*查看最后一个文件夹的名字,假设是z的话,mv命令应该在../z/usr/bin/目录下。

如果你没有用 root 权限运行该命令,应该不会造成这么严重的破坏。不过既然已经无法使用相关命令,说明你的系统已经被破坏,最简单的修复办法是备份重要数据然后重装。

使用 U 盘或者任意外部设备启动,用 LiveCD 可以备份数据到其它安全的硬盘或者 U 盘。推荐使用 ventoy 制作启动盘,只需在 U 盘放入镜像即可从镜像直接启动。

或者你可以从 LiveCD 启动,挂载硬盘尝试修复文件系统。

不过你用的这个命令,会不会把上级目录也移动了?我不知道。

可以重装系统而不丢失数据(不要重新分区就行了),如果找不到mv命令,重装可能是最好的办法了。

上一级目录有你说的 /bin

root@openstickPerformace:~/.config/switchNetworkModel/wwanModel/system-connections# echo *
app bin boot bridge.nmconnection CMMC_4G.nmconnection etc home hotPoint.nmconnection lib lost+found media mnt modem.nmconnection opt sbin srv tmp ufi.sh usb.nmconnection USB.nmconnection usr var wifi桥接.nmconnection
root@openstickPerformace:~/.config/switchNetworkModel/wwanModel/system-connections# cd bi
-bash: cd: bi: No such file or directory
root@openstickPerformace:~/.config/switchNetworkModel/wwanModel/system-connections# cd bin
root@openstickPerformace:~/.config/switchNetworkModel/wwanModel/system-connections/bin# echo *
[ 1panel 1pctl aa-enabled aa-exec aarch64-linux-gnu-addr2line aarch64-linux-gnu-ar aarch64-linux-gnu-as aarch64-linux-gnu-c++filt aarch64-linux-gnu-cpp aarch64-linux-gnu-cpp-10 aarch64-linux-gnu-dwp aarch64-linux-gnu-elfedit aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc-10 aarch64-linux-gnu-gcc-ar aarch64-linux-gnu-gcc-ar-10 aarch64-linux-gnu-gcc-nm aarch64-linux-gnu-gcc-nm-10 aarch64-linux-gnu-gcc-ranlib aarch64-linux-gnu-gcc-ranlib-10 aarch64-linux-gnu-gcov aarch64-linux-gnu-gcov-10 aarch64-linux-gnu-gcov-dump aarch64-linux-gnu-gcov-dump-10 aarch64-linux-gnu-gcov-tool aarch64-linux-gnu-gcov-tool-10 aarch64-linux-gnu-gold aarch64-linux-gnu-gprof aarch64-linux-gnu-ld aarch64-linux-gnu-ld.bfd aarch64-linux-gnu-ld.gold aarch64-linux-gnu-lto-dump-10 aarch64-linux-gnu-nm aarch64-linux-gnu-objcopy aarch64-linux-gnu-objdump aarch64-linux-gnu-ranlib aarch64-linux-gnu-readelf aarch64-linux-gnu-size aarch64-linux-gnu-strings aarch64-linux-gnu-strip adbd add-apt-repository addpart addr2line appletviewer apt apt-add-repository apt-cache apt-cdrom apt-config apt-get apt-key apt-mark ar arch as awk b2sum base32 base64 basename basenc bash bashbug bc bootctl btrfs btrfsck btrfs-convert btrfs-find-root btrfs-image btrfs-map-logical btrfs-select-super btrfstune busctl c89 c89-gcc c99 c99-gcc captoinfo cat catchsegv cc c++filt chage chattr chcon chfn chgrp chmod choom chown chrt chsh cksum clear clear_console clhsdb cmp comm containerd containerd-shim containerd-shim-runc-v1 containerd-shim-runc-v2 corelist cp cpan cpan5.32-aarch64-linux-gnu cpp cpp-10 c_rehash csplit ctr curl cut cvtsudoers dash date dbus-cleanup-sockets dbus-daemon dbus-monitor dbus-run-session dbus-send dbus-update-activation-environment dbus-uuidgen dd debconf debconf-apt-progress debconf-communicate debconf-copydb debconf-escape debconf-set-selections debconf-show deb-systemd-helper deb-systemd-invoke delpart df diff diff3 dir dircolors dirmngr dirmngr-client dirname dmesg dnsdomainname docker docker-compose dockerd dockerd-rootless-setuptool.sh dockerd-rootless.sh docker-proxy domainname dpkg dpkg-deb dpkg-divert dpkg-maintscript-helper dpkg-query dpkg-realpath dpkg-split dpkg-statoverride dpkg-trigger du dwp echo editor egrep elfedit enc2xs encguess env ex expand expiry expr extcheck factor faillog fallocate false fgrep fincore find findmnt flock fmt fold free gapplication gc gcc gcc-10 gcc-ar gcc-ar-10 gcc-nm gcc-nm-10 gcc-ranlib gcc-ranlib-10 gcov gcov-10 gcov-dump gcov-dump-10 gcov-tool gcov-tool-10 gdbus gencat getconf getent getopt gio gio-querymodules git git-receive-pack git-shell git-upload-archive git-upload-pack glib-compile-schemas gold gpasswd gpg gpg-agent gpgcompose gpgconf gpg-connect-agent gpgparsemail gpgsm gpgsplit gpgtar gpgv gpg-wks-server gpg-zip gprof grep gresource groups gsettings gunzip gzexe gzip h2ph h2xs head helpztags hostid hostname hostnamectl hsdb htop iconv id idlj infocmp infotocap install instmodsh ionice ipcmk ipcrm ipcs iptables-xml ischroot jar jarsigner java javac javadoc javah javap jcmd jconsole jdb jdeps jexec jfr jhat jinfo jjs jmap join journalctl jps jrunscript jsadebugd json_pp jstack jstat jstatd kbxutil kernel-install keytool kill kmod last lastb lastlog lcf ld ld.bfd ldd ld.gold less lessecho lessfile lesskey lesspipe libnetcfg link linux32 linux64 ln locale localectl localedef logger login loginctl logname ls lsattr lsblk lsb_release lscpu lsipc lslocks lslogins lsmem lsmod lsns lspgpot lto-dump-10 lzcat lzcmp lzdiff lzegrep lzfgrep lzgrep lzless lzma lzmainfo lzmore mawk mcookie md5sum md5sum.textutils memusage memusagestat mesg migrate-pubring-from-classic-gpg mkdir mkfifo mknod mktemp mmcli more mount mountpoint mtrace mv namei nano native2ascii nawk netstat networkctl newgrp nice nisdomainname nl nm nmcli nm-online nmtui nmtui-connect nmtui-edit nmtui-hostname nohup nproc nsenter numfmt objcopy objdump od openssl orbd pack200 pager partx passwd paste patch pathchk pdb3 pdb3.9 perl perl5.32.1 perl5.32-aarch64-linux-gnu perlbug perldoc perlivp perlthanks pgrep pico piconv pidof pidwait pigz pinentry pinentry-curses ping ping4 ping6 pinky pkaction pkcheck pkcon pkexec pkill pkmon pkttyagent pl2pm pldd plog pmap pod2html pod2man pod2text pod2usage podchecker poff policytool pon pr printenv printf prlimit prove ps ptar ptardiff ptargrep ptx pwd pwdx qemu-aarch64-static qmicli qmi-firmware-update qmi-network qrtr-cfg qrtr-lookup qrtr-ns ranlib rbash rcp readelf readlink realpath renice reset resizepart resolvectl rev rgrep rlogin rm rmdir rmic rmid rmiregistry rmtfs rnano rootlesskit rootlesskit-docker-proxy rpcgen rsh runc runcon run-parts rview rvim savelog schemagen scp script scriptlive scriptreplay sdiff sed select-editor sensible-browser sensible-editor sensible-pager seq serialver servertool setarch setpriv setsid setterm sftp sg sh sha1sum sha224sum sha256sum sha384sum sha512sum shasum shred shuf size skill slabtop sleep slirp4netns slogin snice sort sotruss splain split sprof ssh ssh-add ssh-agent ssh-argv0 ssh-copy-id ssh-keygen ssh-keyscan stat stdbuf streamzip strings strip stty su sudo sudoedit sudoreplay sum sync systemctl systemd systemd-analyze systemd-ask-password systemd-cat systemd-cgls systemd-cgtop systemd-delta systemd-detect-virt systemd-escape systemd-hwdb systemd-id128 systemd-inhibit systemd-machine-id-setup systemd-mount systemd-notify systemd-path systemd-resolve systemd-run systemd-socket-activate systemd-stdio-bridge systemd-sysusers systemd-tmpfiles systemd-tty-ask-password-agent systemd-umount tabs tac tail tar taskset tee tempfile test tic timedatectl timeout tload tnameserv toe top touch tprt tput tr tree true truncate tset tsort tty tzselect ucf ucfq ucfr udevadm umount uname unattended-upgrade unattended-upgrades uncompress unexpand uniq unlink unlzma unpack200 unpigz unshare unxz update-alternatives uptime users utmpdump vdir vi view vim vim.basic vimdiff vimtutor vmstat w wall watch watchgnupg wc wdctl wget whereis which who whoami wpa_passphrase wsgen wsimport X11 xargs xjc xsubpp xxd xz xzcat xzcmp xzdiff xzegrep xzfgrep xzgrep xzless xzmore yes ypdomainname zcat zcmp zdiff zdump zegrep zfgrep zforce zgrep zipdetails zless zmore znew

所以你确实用 root 权限错误的破坏了操作系统。现在最简单的办法就是重装。

如果是在上级目录的话,你用的应该是mv /* ../命令而不是标题上写的命令。

不过不管怎么样,既然找到了mv命令,你可以尝试把文件夹和文件移动回去。

补充:
你的mv命令大概是用不了了,因为lib目录也被移动了。
你可以用 live cd 通过 U 盘启动,然后挂载你的硬盘,再把相关的文件/文件夹移动到原来的位置上。

楼主使用 root 权限进行这种操作说明楼主很可能没有修复根文件系统的相关知识,备份重要数据然后重装系统是比较稳妥的办法。

是的,如果楼主不会操作,或者上述方法不行,也可以重装系统。

确实,./bash 命令也用了

不过为了安全起见还是一定要备份,这是无数次惨痛教训带来的经验 :innocent:

我这个是 openstick wifi 棒子,有其他办法吗,比如把系统读取出来,用另一个系统操作这个目录之类的。

这种专有设备建议询问相关社群有没有解决方案,我想我没有简单的办法通过网络指导你尝试恢复文件系统。

另外注意如果你现在关机,将无法再次启动到 Linux。

2 个赞

惨……不过你这上下文太少了,我没法直接给命令。

首先,去 usr 同级,看看有几个 lib 开头的,再看看 usr 里边有几个 lib 开头的(用 echo 或者补全就行)。目的是找到链接器 ld.so。比如在 x86-64 系统上它可能是叫 /usr/lib/ld-linux-x86-64.so.2。

找到 ld.so 之后,使用 LD_LIBRARY_PATH=lib目录的路径 ld.so的路径 mv的路径 mv的参数们 把东西移回去。

又或者,如果你的系统上有静态链接的 busybox,也可以直接用那个的 mv 命令。

1 个赞