今天学习了Linux下的一些基本指令,来分享一下。
基本文件和目录操作
文件的操作指令有copy,move,rename,remove。对应指令很好记,基本为英文字母的缩写。
- 复制文件目录
$ cp -r dir1 dir2
$ cp file1 file2
对文件夹进行操作时,要加上‘ -r ’修饰。所以上面两行表达的意思为将目录dir1拷贝到目录dir2和将文件file1拷贝到file2
- 删除文件目录
$ rm file
$ rm -r dir
方法和copy很像,只是这个是删除功能。
- 移动文件目录
$ mv dir1 Desktop/dir1
将dir1移动到Desktop/dir1中。
- 重命名文件目录
$ mv file1 file2
$ mv dir1 dir2
将file1重名为file2和将dir1命名为dir2。
我们发现移动命令和重命名命令一致。那怎么来区分呢?
我们将mv指令的原理,将前者先复制的后者中,然后删除前者。如果后者存在就是移动,而后者原本不存在就会被创建,即是重命名。
- 创建文件目录
$ mkdir dir
$ touch file
$ >file
$ vim file
从上到下依次为:创建目录,创建文件(常用),创建文件,创建文件并可输入内容。
- 查看文件类型 fiie
$ file file1
$ file dir1
- 查看文件大小
$ du -k file
$ du -m file
重定向
重定向可以改变文件的输入输出属性。
来看最简单的,同时也是最常用的一种重定向,标准输出重定向。
$ cat file1 >file
这样我们就把 cat 命令的输出数据流的流向,从 stdout 改为了流向文件。这时如果我们执行
$ cat file2 >file
想要把 file2 的内容也添加到 file 文件中,但是却发现上次的内容被覆盖了。这个是重定向符 > 的特点了,如果想保留原有内容不被覆盖,可以这样
$ cat file2 >>file
我们还可以这样把两个文件弄成一个:
$ cat file1 file2 >file
这个就等价于上面的几步操作。
权限
用户对文件通常会涉及“读”,“写”,“执行” 三种权限,当然 Linux 系统还规定了其他一些权限,不常用。
Linux将用户分为3种:
- 指定一个特定的用户( user )作为它的所有者( owner );
- 指定一个由一个或多个人组成的 group,作为这个文件的所有者组( - owner group ), 严格的术语就叫组( group );
- 两类之外的其他用户归为第三类人,叫 world 。
这三类人各自的权限多少是可以任意指定的, 不一定谁多谁少,当然一般来讲 owner 的权限会多一些。
文件模式( file mode )
了解了权限的基本情况,我们来看一下文件的权限
如果我们执行
$ ls -l a.txt
-rw-rw-r-- 1 peter peter 0 Aug 30 11:57 a.txt
得到的输出中,第一个 - 是关于“文件类型”的,这一位常见的情况有,l 表示符号链接,如果我们查看的是一个目录,那这里就会显示 d ,- 表示普通文件。
我们先跳过后面的9个字符,接下来的这个 1 表示的是硬链接( hard link )的数目。前后两个 peter 分别代表拥有者( owner )名和组( group )名。0是文件大小,以字节为单位,这里明显是个空文件。接下来是“最后修改时间”。
那剩下的9位就是“文件模式”。可以分位三组。第一组(前3位)规定的是所有者( owner )对该文件的权限,第一位表示 owner 对该文件是否有读权限,r 表示有,-表示没有,第二位表示 owner 对该文件是否具有写权限,w代表有,- 代表没有,第三位表示 owner 对该文件是否具有执行的权限,x代表有,- 代表没有。中间三位代表组( group )的情况,最后三位是对其他人( world )。这里,所有者和组用户对该文件有“读”和“写”的权限。其他用户都只有读权限。
修改文件模式(chmod)
chmod 666 a.txt
我们可以用这条指令来修改文件的指令,3个6分别指向三种用户。6是110的10进制写法,110每一位表示‘rwx’3中种权限的有无。
进程
粗略的来讲,每当我启动一个程序,系统就会对应启动一个进程。本课介绍进程的基本操作,包括查看进程号,后台执行,以及当程序运行出现故障的时候,如何杀死进程。
以vim来举例:
打开终端,运行 vim 程序,这样这个程序会一直占据当前这个 shell 。
首先打开一个新的终端。
执行
$ ps aux|grep vim
ps aux获取所有正在运行的进程,grep 筛选含有vim的进程。‘|’是管道线,可以连接两个任务。
我们在显示的进程中,找到我们所需的进程号,假定为2345。
然后执行
$ kill 2345
就可以结束进程。
参考资料:TLCL