美文网首页
Linux 基础知识

Linux 基础知识

作者: 林饕 | 来源:发表于2019-11-24 12:59 被阅读0次

不想看字,那就看看渣渣视频吧

点击链接,跳转观看: https://v.qq.com/x/page/m3022ziwe63.html
因为简书Markdown编辑器不支持视频标签的样子。

基本文件和目录操作

日常文件操作

  1. copy cp

    $ cp
    $ cp file1 file2
    $ cp -r dir1 dir2 
    
  2. move and rename mv

    $ mv file ...
    $ mv file dir/
    
    $ mv file1 file2
    $ mv dir1 dir2 
    
  3. remove rm

    rm fileName
    rm -r dir
    
  4. 创建文件目录和文件 mkdir&touch

    $ mkdir dirName
    
  5. 查看文件内容 cat&less

    $ cat file # 适合比较短的文件
    $ less file # 适合比较长的文件
    
  6. 查看文件类型及基本信息 file

    $ file fileName
    $ file dirName
    
  7. 查看文件大小 du

    $ du -k fileName
    $ du -m fileName
    
  8. 隐藏文件 .fileName

  9. 网络文件下载 wget

  10. 通配符 *

  11. 压缩与解压缩 tar&unzip

    $ unzip fileName.zip
    $ zip -r x.zip x/
    
    $ tar zxvf xxx.tar.gz
    $ tar zcvf xxx.tar.gz xxx/
    
    $ tar jxvf xxx.tar.bz
    $ tar jcvf xxx.tar.bz xxx/
    

重定向

Ref: http://happypeter.github.io/LGCB/book/05_redirection.html

三个重要的文件

Everything is a file.

文件描述符(file descriptor)

文件描述符为 0的文件叫做 stdin (标准输入文件),描述符为 1 的叫做 stdout (标准输出文件),为2的叫 stderr (标准错误输出文件)。

系统默认情况下,我们的键盘输入都会写入 stdin 文件,而程序执行的正常输出写到 stdout 文件,报错信息写到 stderr 文件,同时这两个文件都是默认绑定显示器的,这也就是为啥我们可以在屏幕上看到程序输出和报错的信息了。

正常情况下,在一个程序执行的时候,会从键盘也就是 stdin 中读取输入,正常的输出导入到 stdout,要是执行发生了错误,报错信息流向 stdout 。但是我们也可以动手改变这三股数据流的流向,这个就是重定向。

各种重定向方法

  1. 标准输出重定向 > & >>

    $ cat file1 > file2 # cat输出内容重定向至file2(覆盖)
    $ cat file2 >> file1 # cat输出内容重定向至file1(不覆盖,叠加)
    
    $ cat file1 file2 > file3 # 两个弄成一个
    
  2. 标准错误重定向 2>

    $ ls notExist 2> output.txt # 2是标准错误输出的文件描述符
    
  3. 重定向输入

    $ cowsay < output.txt
    
  4. 管道 |

目的:我们希望把前一个程序的输出,直接作为后一个程序的输入来使用

Task: 把这个文件处理一下,去除里面的重复内容(使用 `uniq` 命令),只保留 txt 文件(使用 `grep` ),然后按文件名字母顺序来排序( `sort` 命令)

Ps: `tee`把数据流分成两股,一股到文件,一股还到 stdout.

权限

ref: http://happypeter.github.io/LGCB/book/06_bash_perm.html

三种权限 “读”, “写”, “执行”

Linux 是一个多用户的操作系统,也就是很多用户可能同时使用一台计算机. 对于一个特定文件,系统会为他指定一个特定的用户( user )作为它的所有者( owner )。 同时也一定会指定一个由一个或多个人组成的 group,作为这个文件的所有者组( owner group ), 严格的术语就叫组( group )。 这两类之外的其他用户归为第三类人,叫 world 。这三类人各自的权限多少是可以任意指定的, 不一定谁多谁少,当然一般来讲 owner 的权限会多一些。

```
$ ls -al .
drwxr-xr-x 4 edward edward   4096 Nov 17 22:01 ./
drwxr-xr-x 4 edward edward   4096 Nov 17 21:19 ../
-rw-r--r-- 1 edward edward     21 Nov 17 21:20 pyfile.py
drwxr-xr-x 2 edward edward   4096 Nov 17 21:09 subfiles1/
```

drwxr-xr-x为例

第一个字符是关于“文件类型”:这一位常见的情况有,l 表示符号链接,如果我们查看的是一个目录,那这里就会显示 d- 表示普通文件。
接下来的九位每三位为一节,分别代表“所有者”“用户组”“其他人”的相关权限. 'r''w''x'分别代表拥有'read','write','execute'的权限,而'-'表示没有对应权限。

```
$ ls -ld dirName # 对指定文件夹查看权限
```

同样是读写执行三种权限,对于普通文件和目录代表的意义是有差异的。 用户对文件有读权限,意味着用户可以查看文件的具体内容。 对目录来说,就是可以看目录中所包含的文件名。

写权限对文件而言很好理解,就是我们可以修改里面的内容。那是不是也意味者我们可以对文件进行重命名或删除操作呢? 答案为否。这要看包含该文件的目录的权限。这就谈到了一个目录的写权限的意义,我们对于一个目录有写权限,意味着我们可以对其中包含的文件或子目录进行创建,重命名或删除(操作成功的前提是我们也同时拥有对该目录的执行权限)。

最后要谈的是执行权限(x), 我们对于一个二进制文件(例如程序的编译输出),或者是一些脚本文件,例如 shell 脚本,python ruby 等脚本,执行权限才有意义。 但是如果我们文件里存的是笔记或者是C程序的源代码,那执行权限是没有什么意义的。这就是为什么系统上的大部分普通文件,如果我们用ls -l查看一下的话,都是没有执行权限的。但是正好相对的,我们用ls -ld查看一下系统上的目录,发现基本上都是有执行权限的。 对于没有执行权限的目录,我们是不能跳转进去的,所以有没有执行权限,意味者我们能不能成功的 cd 到该目录里。

修改文件模式 chmod

```
chmod rw-rw-rw- a.txt # 错误写法

chmod 110110110 a.txt # 错误写法,用1代表“使能”,0代表“禁止”

chmod 666 a.txt # 正确写法,2进制

chmod a+x pyfile.py # all add executable attr
chmod g+x pyfile.py # group
chmod u+x pyfile.py # user(owner)
```

进程

获取进程号 ps

- 查看系统当前所有进程 `ps aux`
- `ps aux | less` 
- grep 查找指定程序 `ps aux | grep vim`

杀死进程 kill

`$ kill PID`

```
$ kill PID
$ killal progName

$ kill -9 PID # 强制关闭
```

Ctrl+Alt+F2 等等可以进入其他console

后台执行 &

`$ progName &`

如果已经在前台启动,占据当前`shell`,使用`<C+z>`,可以把程序挂起,然后`bg`,`fg`可以使程序再回到前台。

相关文章

网友评论

      本文标题:Linux 基础知识

      本文链接:https://www.haomeiwen.com/subject/dbdlwctx.html