更新目录
★ mv命令
mv 对给定的目录或文件更名或移动
▷ A. 更名目录”/samples/langs” 为 “/samples/languages”
1 | mv /samples/langs /samples/languages |
如果命令运行正确,则不返回任何输出结果。
▷ B. 验证更名成功与否
- 输入命令:
1
ls -l /samples/langs
返回输出结果如下:
1 | ls: /samples/langs: No such file or directory |
- 输入命令:
1
ls /samples/languages
返回输出结果如下:
1 | c.pdf css.pdf java python.pdf |
思考:languages和Languages是一个目录吗?
在Mac和Window操作系统里,文件和目录名不区分大小写,所以是一个目录。但是,Linux和Unix系列操作系统则区分大小写。未来大家写的程序分发到Unix Like系统里的场合很多,建议大家养成不使用大小写字符区分文件和目录的习惯。
mv命令不但可以更改目录名,其实对文件名同样使用,这个大家自己去实验。
更新文件
★ echo命令
echo 组合>>参数追加文本到目标文件
▷ A. echo组合>>符号
这里,我们要学习如何对文件的内容进行更新操作。
前文创建的 /samples/database/rdb/mysql.txt 有内容 “MySQL is a open-source database”,现在我们运行命令:
1 | echo 'but it is not free.'>>/samples/database/rdb/mysql.txt |
这将追加>>符号前面双引号里的文字内容到mysql.txt(文件里原来的内容保留)。
▷ B. 验证mysql.txt内容是否更新
1 | cat /samples/database/rdb/mysql.txt |
返回如下输出结果:
MySQL is a open-source database
but it is not free.
▷ C. 不合法的命令
现在想在mysql.txt里再追加一行文字:MySQL isn’t Free.,仍然使用echo命令:
1 | echo 'MySQL isn't Free.'>>/samples/database/rdb/mysql.txt |
结果屏幕会显示>符号,光标停留在>后面
1 | MagicLife:/ banyuan$ echo 'MySQL isn't Free.'>>/samples/database/rdb/mysql.txt |
echo “MySQL isn’t Free.”>>/samples/database/rdb/mysql.txt
1 |
|
echo “Hi guys, \” is a special character.”>>/samples/database/rdb/mysql.txt
1 | 返回输出结果如下: |
MySQL is a open-source database
but it is not free.
MySQL isn’t Free.
Hi guys, “ is a special character.
1 |
|
/samples/
├── database
│ └── rdb
│ ├── mysql.txt
│ └── oracle.txt
…
├── os
│ ├── linux-guide.jpg
│ ├── linux-introduction.docx
│ ├── mac os.html
│ └── unix
│ ├── unix-intro.pdf
│ └── what-is-bash.pdf
……
1 |
|
mv /samples/database /samples/os
1 |
|
/samples/
…
├── os
│ ├── database
│ │ └── rdb
│ │ ├── mysql.txt
│ │ └── oracle.txt
│ ├── linux-guide.jpg
│ ├── linux-introduction.docx
│ ├── mac os.html
│ └── unix
│ ├── unix-intro.pdf
│ └── what-is-bash.pdf
…
1 | 对比一下上述变化,能理解mv移动目录的用法了吗? |
mv /samples/os/linux-introduction.docx /samples/os/linux-intro.docx
1 | 再运行ls命令检查上面操作成功与否: |
ls -l /samples/os
1 | 返回输出结果: |
drwxr-xr-x 4 AllenGuo staff 128 4 3 22:15 database
-rw-r--r--@ 1 AllenGuo staff 28113 4 3 18:20 linux-guide.jpg
-rw-r--r--@ 1 AllenGuo staff 17183 4 3 18:22 linux-intro.docx
-rw-r--r--@ 1 AllenGuo staff 1469 4 3 18:25 mac os.html
drwxr-xr-x 4 AllenGuo staff 128 4 3 23:01 unix
1 |
|
/samples/
…
├── basic
│ ├── algorithm.pdf
│ ├── compiling.pdf
│ └── math
│ └── linear.algebra.pdf
├── [important]
…
1 |
|
cp /samples/basic/math/linear.algebra.pdf /samples/important
1 | 操作后文件目录结构如下: |
/samples/
…
├── basic
│ ├── algorithm.pdf
│ ├── compiling.pdf
│ └── math
│ └── linear.algebra.pdf
├── [important]
│ └── linear.algebra.pdf
…
1 |
|
cp -r /samples/basic /samples/important
1 | 操作后目录结构如下: |
/samples/
├── [basic]
│ ├── algorithm.pdf
│ ├── compiling.pdf
│ └── [math]
│ └── linear.algebra.pdf
├── [important]
│ ├── linear.algebra.pdf
│ └── [basic]
│ ├── algorithm.pdf
│ └── compiling.pdf
│ └── [math]
│ └── linear.algebra.pdf
…
1 |
|
cp -r /samples/basic/ /samples/important
1 | 操作后目录结构如下: |
/samples/
├── [basic]
│ ├── algorithm.pdf
│ ├── compiling.pdf
│ └── [math]
│ └── linear.algebra.pdf
├── [important]
│ ├── algorithm.pdf
│ ├── compiling.pdf
│ ├── linear.algebra.pdf
│ └── [math]
│ └── linear.algebra.pdf
1 | 注意到差异了吗?源目录路径中最后一级目录 **basic** 本身没有被创建到目标目录,仅按源目录布局复制了其子目录和文件。 |
cp
1 | 屏幕返回输出结果: |
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file … target_directory`