Pengenalan | Adalah satu perkara yang menarik untuk dapat menggunakan antara muka grafik dengan klik tetikus pada Linux...tetapi jika persekitaran interaktif pembangunan kegemaran anda dan pengkompil ialah tetingkap terminal, Bash dan Vim, maka anda sepatutnya menjadi seperti saya Kerap berinteraksi dengan terminal . |
Malah orang yang sering tidak menggunakan terminal boleh mendapat banyak manfaat daripada pemahaman mendalam tentang persekitaran terminal. Sebagai contoh, ambil arahan cp Menurut Wikipedia, arahan cp (salinan) adalah sebahagian daripada versi pertama Unix. Bersama-sama dengan set perintah lain ls, mv, cd, pwd, mkdir, vi, sh, sed, dan awk, cp yang disebutkan adalah salah satu arahan yang saya pelajari apabila saya diperkenalkan kepada sistem Unix Sistem V pada tahun 1984. Penggunaan arahan cp yang paling biasa adalah untuk membuat salinan fail. Seperti ini:
cp sourcefile destfile
Laksanakan arahan ini di terminal, arahan di atas akan menyalin fail bernama sourcefile ke fail bernama destfile. Jika fail destfile tidak wujud sebelum melaksanakan arahan, ia akan dibuat, jika ia sudah wujud, ia akan ditimpa.
Saya tidak tahu berapa kali saya telah menggunakan arahan ini (saya tidak mahu tahu), tetapi saya tahu bahawa saya sering menggunakannya apabila saya menulis kod ujian Untuk mengekalkan versi biasa semasa dan terus mengubah suai itu, saya akan masukkan arahan ini:
cp test1.py test1.bak
Saya telah menggunakan arahan ini berkali-kali sepanjang 30+ tahun yang lalu. Selain itu, apabila saya memutuskan untuk menulis versi kedua program ujian saya, saya akan menaip arahan ini:
cp test1.py test2.py
Ini melengkapkan langkah pertama mengubah suai program.
Saya biasanya jarang menyemak dokumentasi rujukan arahan cp, tetapi apabila saya membuat sandaran folder imej saya (menggunakan aplikasi "fail" dalam persekitaran GUI), saya mula berfikir "Adakah terdapat parameter dalam arahan cp yang menyokong hanya Salin fail baharu atau diubah suai "Sudah tentu, ia benar!
Penggunaan yang cekap 1: Kemas kini folder andaSebagai contoh, terdapat folder pada komputer saya yang menyimpan pelbagai fail Selain itu, saya perlu menambah beberapa fail baharu padanya dari semasa ke semasa, dan saya akan mengubah suai beberapa fail dari semasa ke semasa, seperti foto atau muzik yang dimuat turun. daripada telefon bimbit saya.
Dengan mengandaikan bahawa fail yang saya kumpul semuanya berharga bagi saya, saya kadang-kadang ingin membuat salinan dan menyimpan fail di media lain seperti "snapshot". Sudah tentu, terdapat banyak program yang menyokong sandaran, tetapi saya ingin menyalin struktur direktori ke peranti boleh tanggal dengan lebih tepat, supaya saya sering menggunakan peranti luar talian ini atau menyambungkannya ke komputer lain.
Perintahcp menyediakan cara mudah untuk melakukan ini. Contohnya seperti berikut:
Di bawah folder Pictures saya, saya mempunyai folder bernama Misc. Demi ilustrasi, saya menyalin fail ke peranti storan USB. Mari mulakan!
me@desktop:~/Pictures$ cp -r Misc /media/clh/4388-D5FE me@desktop:~/Pictures$
Arahan di atas disalin sepenuhnya dari tetingkap terminal. Sesetengah orang tidak begitu menyesuaikan diri dengan persekitaran ini Sebelum kita memasukkan atau melaksanakan perintah, kita perlu memberi perhatian kepada awalan me@mydesktop:~/Pictures saya ialah pengguna semasa, mydesktop ialah nama komputer, ~/Pictures This is direktori kerja semasa, yang merupakan singkatan laluan penuh /home/me/Pictures.
Saya masukkan arahan ini cp -r Misc /media/clh/4388-D5FE dan laksanakannya untuk menyalin semua fail dalam direktori Misc (parameter -r, nama penuh ialah "rekursif", pemprosesan rekursif, yang bermaksud semua fail dan sub-direktori dalam direktori direktori ini) ke direktori pelekap peranti USB/media/clh/4388-D5FE saya.
Kembali ke gesaan sebelumnya selepas melaksanakan perintah Kebanyakan arahan mewarisi ciri-ciri Unix Selepas perintah itu dilaksanakan, jika tiada pengecualian, tiada apa-apa yang akan dipaparkan Mesej gesaan seperti "pelaksanaan berjaya" tidak akan dipaparkan sebelum tugas tamat. Jika anda ingin mendapatkan lebih banyak maklum balas, gunakan parameter -v untuk menjadikan hasil pelaksanaan lebih terperinci.
Gambar di bawah adalah folder Misc yang baru sahaja disalin dari peranti USB saya. Terdapat sejumlah 9 gambar di dalamnya.
Imej salinan baharu Pelbagai pada pemacu USB
Andaikan saya ingin menambah beberapa fail baharu di bawah ~/Pictures/Misc di bawah laluan salinan asal, seperti ini:
Fail baharu ditambahkan pada direktori induk
Sekarang saya ingin menyalin hanya fail baharu ke peranti storan saya, jadi saya menggunakan pilihan "Kemas Kini" dan "Verbose" cp.
me@desktop:~/Pictures$ cp -r -u -v Misc /media/clh/4388-D5FE 'Misc/asunder.png' -> '/media/clh/4388-D5FE/Misc/asunder.png' 'Misc/editing tags guayadeque.png' -> '/media/clh/4388-D5FE/Misc/editing tags guayadeque.png' 'Misc/misc on usb.png' -> '/media/clh/4388-D5FE/Misc/misc on usb.png' me@desktop:~/Pictures$
Baris pertama di atas ialah arahan cp dan parameter khusus (-r ialah "rekursif", -u ialah "kemas kini", -v ialah "verbose"). Tiga baris seterusnya memaparkan maklumat tentang fail yang disalin, dan baris terakhir memaparkan gesaan baris arahan.
Secara umumnya, parameter -r juga boleh digunakan dalam gaya yang lebih verbose --rekursif. Tetapi dengan cara ringkas, -ruv juga boleh digunakan bersama dengan ini.
Penggunaan cekap 2: Sandaran versiBerbalik kepada contoh awal, saya kerap menyandarkan versi kod saya semasa pembangunan. Kemudian saya menemui satu lagi parameter cp yang berfungsi dengan lebih baik.
假设我正在编写一个非常有用的 Python 程序,作为一个喜欢不断修改代码的开发者,我会在一开始编写一个程序简单版本,然后不停的往里面添加各种功能直到它能成功的运行起来。比方说我的第一个版本就是用 Python 程序打印出 “hello world”。这只有一行代码的程序就像这样:
print 'hello world'
然后我将这个代码保存成文件命名为 test1.py。我可以这么运行它:
me@desktop:~/Test$ python test1.py hello world me@desktop:~/Test$
现在程序可以运行了,我想在添加新的内容之前进行备份。我决定使用带编号的备份选项,如下:
clh@vancouver:~/Test$ cp --force --backup=numbered test1.py test1.py clh@vancouver:~/Test$ ls test1.py test1.py.~1~ clh@vancouver:~/Test$
所以,上面的做法是什么意思呢?
第一,这个 --backup=numbered 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。
第二,如果源文件和目标文件名字是一样的。通常我们使用 cp 命令去拷贝成自己,会得到这样的报错信息:
cp: 'test1.py' and 'test1.py' are the same file
在特殊情况下,如果我们想备份的源文件和目标文件名字相同,我们使用 --force 参数。
第三,我使用 ls (意即 “list”)命令来显示现在目录下的文件,名字为 test1.py 的是原始文件,名字为 test1.py.~1~ 的是备份文件
假如现在我要加上第二个功能,在程序里加上另一行代码,可以打印 “Kilroy was here.”。现在程序文件 test1.py 的内容如下:
print 'hello world' print 'Kilroy was here'
看到 Python 编程多么简单了吗?不管怎样,如果我再次执行备份的步骤,结果如下:
clh@vancouver:~/Test$ cp --force --backup=numbered test1.py test1.py clh@vancouver:~/Test$ ls test1.py test1.py.~1~ test1.py.~2~ clh@vancouver:~/Test$
现在我有有两个备份文件: test1.py.~1~ 包含了一行代码的程序,和 test1.py.~2~ 包含两行代码的程序。
这个很好用的功能,我考虑做个 shell 函数让它变得更简单。
最后总结第一,Linux 手册页,它在大多数桌面和服务器发行版都默认安装了,它提供了更为详细的使用方法和例子,对于 cp 命令,在终端中输入如下命令:
man cp
对于那些想学习如何使用这些命令,但不清楚如何使用的用户应该首先看一下这些说明,然后我建议创建一个测试目录和文件来尝试使用命令和选项。
第二,兴趣是最好的老师。在你最喜欢的搜索引擎中搜索 “linux shell tutorial”,你会获得很多有趣和有用的资源。
第三,你是不是在想,“为什么我要用这么麻烦的方法,图形化界面中有相同的功能,只用点击几下岂不是更简单?”,关于这个问题我有两个理由。首先,在我们工作中需要中断其他工作流程以及大量使用点击动作时,点击动作可就不简单了。其次,如果我们要完成流水线般的重复性工作,通过使用 shell 脚本和 shell 函数以及 shell 重命名等功能就能很轻松的实现。
Atas ialah kandungan terperinci Penggunaan cekap dua arahan cp!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!