Linux 基本指令 ls 和 cd
cd 指令
第一个要知道的指令就是怎么样去到你想去的地方. cd
(Change Directory) 就是干这个的. 找到 Linux 的 terminal 窗口, 然后他默认跳出来是在你的用户目录 (Home). Terminal 中的 ~ $ 就是说你输入指令将在 ~ 这个目录下执行. 而 ~ 这个符号代表的是你的 Home 目录.
使用 cd
指令, 我们能在 Terminal 中轻松切换到不同的文件夹. 想从 Home 去 Documents 这个文件夹? 输入下面的命令就可以了.
$ cd Documents/
接着你会看到它在下一行跳出了这个东西, 在 $
前面的 ~/Documents
就说明你现在已经在 Documents 这个文件夹里了. 你现在要执行的命令将会在这个目录下生效.
接着我们来列举另外一些常用的 cd 命令.
- 返回上一级目录
$ cd ..
- 去往子文件夹
$ cd Documents/folder1/
- 返回你刚刚所在的目录
$ cd -
- 向上返回两次
$ cd ../../
- 去往 Home
$ cd ~
- 去往电脑任何地方, 你需要的是一个绝对路径
$ cd /home/morvan/Documents/folder1
ls 指令
我们现在能在电脑的文件中移动来移动去了, 这还没什么意思, 接着我们就来移动去一个地方, 再看看那个地方有些什么.
我们将目录导去 Documents, 然后使用 ls (list 的简写) 看看这里面的东西.
~/Documents$ ls
file1 folder1
我们再来看看 ls
的其他使用方式.
- 输出详细信息
-l
(long 的简写). 这个指令会打印出文件的权限 (-rw-rw-r-- 之后我们在细说这个), 用户名, 文件大小, 修改日期, 文件名
~/Documents$ ls -l
total 4
-rw-rw-r-- 1 morvan morvan 0 Oct 12 07:38 file1
drwxrwxr-x 2 morvan morvan 4096 Oct 12 07:26 folder1
-
-a
(all 的简写) 显示所有文件 . 这里还会显示隐藏的文件 (以 . 开头的)
$ ls -a
. .. file1 folder1 .hidden_file
-
-lh
(human), 直接-l
不方便人看, 这个指令是为了方便给人观看的. 注意这里的文件大小使用了 K, MB, GB 之类概括
$ ls -lh
total 4.0K
-rw-rw-r-- 1 morvan morvan 0 Oct 12 07:38 file1
drwxrwxr-x 2 morvan morvan 4.0K Oct 12 07:26 folder1
- 还有很多其他的功能, 我们可以通过
--help
来查看
$ ls --help
Linux 基本指令 touch, cp 和 mv
touch 新建
touch 的使用很简单, 我们先去往 Documents 的文件夹, 里面已经有了 folder1 和 file1, 如果我们想新建一个 file2 使用下面的语句就好. 一个空文件就建立好了.
$ touch file2
如果你想同时建立多个文件, 输入多个文件的名字, 以空格分开.
$ touch file3 file4 file5
cp 复制
cp (copy) 是复制文件或者文件夹的指令, 常用的方式是复制 “老文件” 到 “新文件”.
$ cp 老文件 新文件
- 我们用上面建立好的 file1 来举例, 将 file1 复制成 file1copy
$ cp file1 file1copy
- -i (interactive) 注意: 如果 file1copy 已经存在, 它将会直接覆盖已存在的 file1copy, 如果要避免直接覆盖, 我们在 cp 后面加一个选项.
$ cp -i file1 file1copy
cp: overwrite 'file1copy'?
在这句问句后面打上 “Yes”, “Y”, 或者任何大小写形式的 “y” 和 “yes”, 它将进行覆盖操作. 直接回车或者打其他字母, 就会放弃复制这项操作.
- 复制去文件夹
$ cp file1 folder1/
- 复制文件夹, 需要加上 -R (recursive)
$ cp -R folder1/ folder2/
- 复制多个文件. 复制名字部分相同的多个文件, * 是说”你就找文件前面是 file 的文件, 后面是什么名字无所谓”
$ cp file* folder2/
或者你可以单独选定几个文件, cp 会默认最后一个选项是要复制去的文件夹. 比如下面把 file1copy 和 file2 复制去 folder1/
$ cp file1copy file2 folder1/
mv 剪切
知道了 cp, mv就好理解多了, 基本是一样的.
- 移动去另一个文件夹
$ mv file1 folder1/
- 重命名文件
因为移动文件到原始的地点, 但是以不同的文件名. 这种做法不就是在重命名嘛!
$ mv file1 file1rename
最后还是想要提一句, 如果想要查看使用说明, 直接在指令后面打上 --help
就能查看.
Linux 基本指令 mkdir, rmdir 和 rm
mkdir 建立文件夹
mkdir
(make directory) 就是创建一个文件夹的意思, 使用起来很简单.
$ mkdir folder2
如果你想在这个目录给 folder2 里面再建一个文件夹也是 Ok.
$ mkdir folder2/f2
这样, f2 这个文件夹就被新建在了 folder2 里面.
rmdir 移除文件夹
rmdir
(remove directory) 也就是字面意思, 移除文件夹. 不过这有一个前提条件. 这些要移除的文件夹必须是空的. 不然会失败. 所以如果想刚刚建立的那个 folder2 就不能被移除, 因为里面有个 f2 文件夹.
要移除个空文件夹, 比如我再新建一个 folder3, 然后移除
$ rmdir folder3
rm 移除文件
那文件夹里面有文件的这种情况, 或者是移除单个文件的情况, 我们都能用 rm
来实现. 注意: 执行了 rm
以后是不能进行返回操作的, 请确保别执行像这样的操作 rm /
, 这会清空你的电脑.
- 我们用上面建立好的 file1 来举例, 将 file1 复制成 file1copy
$ rm file1
-
-i
或-I
有提示地移除文件 (为了避免误删)
- -i 会每个要移除的文件都进行提示
- -I 超过3个文件才进行提示
$ rm -i f1 f2 f3 f4
rm: remove regular empty file 'f1'?
rm: remove regular empty file 'f2'? y
rm: remove regular empty file 'f3'?
rm: remove regular empty file 'f4'? y
$ rm -I f1 f2 f3 f4
rm: remove 4 arguments? y
-
-r
或-R
(recursively) 用来删文件夹
和rmdir
不同,rm -r
可以在文件夹中有文件的情况下删除这个文件夹. 比如我的 folder1 里有 file1 和 file2 两个文件.
$ rm -r folder1
Linux 基本指令 nano 和 cat
nano
nano 是 linux 的一款文字编辑工具. 我们可以拿它来做最基本的 terminal 端的文本编辑, 甚至可以写代码~ 下面我们用 touch 创建一个 Python 脚本. 如果大家不懂 Python 也没关系, 你就知道我们可以拿 nano 来编辑文字或者脚本就好了.
$ rm *
$ touch t.py
然后用 nano 执行这个 t.py 文件.
$ nano t.py
他就会变成一个文本编辑器, 你在里面可以打上一些脚本, 比如像我这样.然后按 “Ctrl + x” 来保存和退出. 如果提示你保存, 你就按一下 “y” 键, 然后回车, 你的文件就被保存下来了.
接着如果你在 terminal 中输入这个, 你就能看到 terminal 执行了你的 python 文件.
$ python t.py
This is a Python script!
cat
cat
(catenate) 可以用来显示文件内容, 或者是将某个文件里的内容写入到其他文件里. 我们举例说明.
- 查看文件内容
$ cat t.py
print("This is a Python script!")
-
>
将文件的内容放到另一个文件里
$ cat t.py > t1.py
$ cat t1.py
print("This is a Python script!")
-
>
将多个文件的内容打包一起放入另一个文件
比如这里我们把 t.py 和 t1.py 的内容同时放入了 t2.py, 如果在显示 t2.py 的时候, 它有两行 “print…”.
$ cat t.py t1.py > t2.py
$ cat t2.py
print("This is a Python script!")
print("This is a Python script!")
-
>>
将内容添加在一个文件末尾
我创建了一个 t3 的文件, 文件里写上了 “This is t3”. 我们将这个内容添加进 t2.py 吧. 使用了 >> 会将 t3 的内容添加在 t2.py 的末尾.
$ cat t3 >> t2.py
$ cat t2.py
print("This is a Python script!")
print("This is a Python script!")
This is t3.