Giriş
copy anlamına gelir. mv komutu kopyalama yerine taşımak için kullanılabilir. cp komutu çaılırşen Ctrl+C ile kesilse bile sorun çıkmıyor.
cp komutu hedef dosya varsa bile onu uyarı vermeden ezer.
Örnek
Görmek için şöyle yaparız.
Açıklaması şöyle.
copy anlamına gelir. mv komutu kopyalama yerine taşımak için kullanılabilir. cp komutu çaılırşen Ctrl+C ile kesilse bile sorun çıkmıyor.
cp komutu hedef dosya varsa bile onu uyarı vermeden ezer.
Örnek
Görmek için şöyle yaparız.
$ cp first.html second.html
$ cat second.html
first
-a seçeneğiAçıklaması şöyle.
Sembolik linkeri de takip eder.-a Same as -pPR options. Preserves structure and attributes of files but not directory structure.
Örnek
Şöyle yaparız.
preserve anlamına gelir. dosyaların mode,ownership,timestamp gibi özellikleri muhafaza edilir. Açıklaması şöyle
Şöyle yaparız.
Şöyle yaparız.
Örnek - globbing
cp -a src_dir another_destination/
Örnek
Bir diski başka diske kopyalamak için şöyle yaparız
cp -a /media/external/disk1/. /media/external/disk2/
-n/--no-clobber seçeneği
Hedef dosya varsa onu değiştirmez. Açıklaması şöyle--no-clobber do not overwrite an existing fileNasıl çalıştığının açıklaması şöyle. Eğer cp komutu dosyayı yok olarak tespit etse, ve bir sonraki aşamada başka bir uygulama dosyayı yaratsa bir doğru çalışır. Çünkü dosyayı overwrite edecek bayraklar ile açmadğı için hata alır ve dosyayı ezmez.
When --no-clobber is set, it checks whether the destination already exists; if it determines it doesn’t, and it should therefore proceed with the copy, it remembers that it’s supposed to copy to a new file. When the time comes to open the destination file, it opens it with flags which enforce its creation, O_CREAT and O_EXCL; the operating system then checks that the file doesn’t exist while opening it, and fails (EEXIST) if it does.-p seçeneği
preserve anlamına gelir. dosyaların mode,ownership,timestamp gibi özellikleri muhafaza edilir. Açıklaması şöyle
-p same as --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,ownership,time‐
stamps), if possible additional attributes: context, links,
xattr, all
ÖrnekŞöyle yaparız.
cp --preserve oldfile newfile
Şöyle yaparız.cp -p oldfile newfile
ÖrnekŞöyle yaparız.
cp --preserve=timestamps oldfile newfile
-R/-r seçeneği
recursive anlamına gelir.Örnek - globbing
Her şeyi kopyalamak için şöyle yaparız
cp -r ~/Documents/* ~/copies # works as expected
Ancak bazı dosyaları kopyalama çalışmıyor
cp -r ~/Documents/*.odt ~/copies # does not work as expected
glob işlemini bash'e bırakarak şöyle yaparız. Burada target ve source directory yer değiştiriyor. Ayrıca "/**/*.odt" kullanabilmek için bash ile recursive glob etkinleştiriliyor.
shopt -s globstar
cp -nt ~/copies/ ~/Documents/**/*.odt
Eğer çok fazla dosya varsa şöyle yaparız
find ~/Documents -name '*.odt' -exec cp -nt ~/copies/ {} +
Örnek
cp -r srcdir/!(subdir) dstdir
-t seçeneği
target directory anlamına gelir.
Örnek
Şöyle yaparız
Şöyle yaparız.
Şöyle yaparız.target directory anlamına gelir.
Örnek
Şöyle yaparız
cp -t ~/me/dir1 dir1/linkdir6/file1
--remove-destination seçeneği
Örnek
Elimizde şöyle bir sembolik link olsun. common.py dosyasını yani gerçek dosyayı değil ama semboli linkin başlangıcını değiştirmek isteyelim
sd/common.py -> actual_file
Şöyle yaparsak çalışmaz. Çünkü gidip gerçek dosyanın üzerine yazar
cp /tmp/Star_Wrangler/common.py sd/common.py
Açıklaması şöyle
This depends on what Unix you are using.On some BSD systems (OpenBSD, FreeBSD), you will find that cp -f will unlink (remove) the symbolic link and replace it with the source.Using GNU cp, this would not have the same effect, and you would need to use the long option --remove-destination instead.On macOS, use cp -c to, as the manual says, "copy files using clonefile(2)".On NetBSD, use cp -a ("archive mode", the same as cp -RpP on that system). This doesn't work on GNU, macOS, OpenBSD, or FreeBSD, even though all of these systems have the same or similar -a option for cp (on GNU systems, it's the same as -dR --preserve).You already mention this yourself: Removing the link before copying the file will solve the issue. The rm utility removes the link rather than the file referenced by the link. This is also the most portable way to replace a symbolic link with a regular file.
$ cp --sparse=always junk junk.sparse && mv junk.sparse junk
-v seçeneğicp -v ~/Downloads/*.pdf ~/Downloads/BOOKS/
-x seçeneği - GNU ExtensionAçıklaması şöyle. İç içe iki mount noktası varsa işe yarar.
The -x flag to cp is a GNU extension. When copying a single file, this option will have no effect, but when copying a whole file hierarchy, the -x option prevents the copying of files and directories that does not live on the same filesystem as the original source.Örnek
For example, on a filesystem with mount points at /usr and /usr/local, using cp -xR /usr /some-dest would not copy the hierarchy under /usr/local.
There are other utilities with an -x option with similar semantics, such as du and find (the flag is called -xdev for find), and rsync
Şöyle yaparız.
cp -xr / blah
Hiç yorum yok:
Yorum Gönder