linux简易教程

Linux简易教程

Linux系统起源简介

balabalabala

Linux用户和权限

linux是一个多任务,多用户系统。多用户就带来了权限的问题,文件和文件夹都有明确的所有者和相应的读写权限。

文件的所有者分为三类:

  • user 用户本人
  • group 用户所在的组
  • other 用户所在组之外的用户

文件的权限分为三类

  • r:read 读

  • w: write 写

  • x:execute 执行

文件/文件夹的权限可以以字rwx来表示,因为只有这三种状态,因此也可以用3位二进制的数字来表示或者用八进制来表示。同时文件的权限不会是单一的一个用户的权限,而是所有三种权限的组合,所以可以看到类似下面表格中的权限表示方式:

user/group/other 八进制数字 二进制数字
rwxrwxrwx 777 111/111/111
rw-rw-r– 664 110/110/100
rw-r–r-- 644 110/100/100

需要注意的是,目录不是文件,目录是不可执行的,目录的可执行代表这个目录可以被查看。

看一个例子

% ls -l
总用量 0
总用量 0
drwxr-xr-x 1 root  root  0 3月  15 16:41 testdir  # 属于root,但是所有用户都可以列举目录内容
-r--r--rw- 1 david david 0 3月  15 16:41 testfile # 属于david,所有用户可读,其他用户可写,david和本组用户不可写
-rw-r--r-- 1 david david 0 3月  15 16:41 testfile1 # 属于david,所有用户可读,只有david可写
-rw-rwxr-- 1 david david 0 3月  15 16:41 testfile2 # 属于david,david可读写,group可读写执行,其他用户只读

Linux目录介绍

/ 根目录

也就是安装系统的那个硬盘,是整个系统的最高目录,通常只有root权限用户才有权操作这个目录

/root目录

这个目录是root用户的目录,跟系统里面的其他用户的目录是分开的,一般用户使用不到这个目录

/home目录

/home/user 目录的名称跟用户名相同,是一般用户的目录,如果没有特别的设置,所有非root用户的home目录都在/home下面

/tmp目录

一般存放一些临时文件,比如linux的socket文件,cache之类的东西,这里的数据重启之后不保证存在,重要的东西不要放在这里

/var目录

一些运行的时候需要改变的东西放在这里,例如web服务器的网页文件等等

/media目录

这个目录一般用来挂载可移动存储设备,如光盘,移动硬盘,u盘等等

/etc目录

大部分配置文件都放在这里

/boot目录

启动目录,也是linux内核等存放的地方

/usr目录

非系统自带的软件会被安装在这里,也就是用户自己安装的软件一般放在这里

/bin目录

系统的一些命令会安装在这里

/lib /lib64目录

系统的一些库在这里

/opt目录

早期一些软件会安装在这里,目前这个目录基本没什么用

/proc目录

系统内核信息查询目录,本身在磁盘上不存在,每次运行的时候,由内核在内存中创建,里面的文件保存了系统的各种运行信息

/dev目录

系统设备目录,所有设备都可以在这里找到

/sys 目录

系统设备和信息目录,一个比较新的目录,里面也是包含了系统所有的设备和信息

/run目录

系统运行目录,存放一些只有运行的时候才会存在的信息,这个目录重启的时候一定会被重新创建。

隐藏文件/目录

在linux下面以点开头的文件/目录为隐藏文件/目录,需要使用特定的参数才能列举出来,这种文件/目录大量出现在用户的home目录下,一般是用做存储配置信息,临时文件等等。

Linux常用命令介绍

linux下的命令一般都自带help,直接在命令行中以 --help参数执行即可看到。也可以通过man命令查看某个命令的手册:

ls --help
man ls

less

当命令输出过长的时候,可以用来分页查看

man ls | less

ls

列举文件或者目录的时候使用,可以用来查看文件的基本信息

ls 
ls -l   # 显示文件的所有参数
ls -a   # 显示包括隐藏文件在内的所有文件
ls -lah # 以人类可读的方式显示当前目录下所有文件的信息

cd

切换目录的时候使用

cd  # 不带任何参数表示切换到home目录下
cd /path/to/dest # 切换到/path/to/dest目录下
cd - # 只带一个短线代表切换到上一个目录

pwd

用于显示当前目录,在需要输入目录参数的时候非常有用

cat

显示命令,用于将文件的内容打印到命令行上面

cat file

需要注意的是,cat可以打印任何文件的内容,甚至是二进制文件,但是二进制文件一般命令行上无法显示,如果要打印的文件过大(几个MB以上)命令行一般会卡住一会儿

tar

打包解包命令,这个命令比较复杂,而且可以组合多个命令实现非常复杂的功能,包括文件分卷压缩等等,请自行666

tar -vxf file.tar|.xz|.gz  # 解压几乎所有格式的压缩文件 rar除外
tar -cvzf file.gz dir  # 以gz压缩dir目录的所有文件

ps

进程信息查询命令,可以用来查询系统中运行的所有进程的信息

ps -ef # 查询所有进程的信息

kill, killall

杀进程命令,可以用来杀掉某些不想要的进程

kill 1111 ## 杀掉进程id为1111的进程

使用kill方式杀掉的进程一般不会有机会执行退出动作,所以并不安全。kill方式并不那么常用

grep,egrep

过滤命令,一般配合其他命令使用,用于对其他命令的输出进行过滤。egrep为其正则表达式版本,功能更加强大,但是一般不常用

ps -ef |grep python # 在所有进程信息里查找所有的带python字样的进程

wc

字数统计命令,一般用来统计文件的行数,经常和其他命令配合使用

cat file | wc
cat file | wc -l # 只输出文件行数

sudo

以root权限执行命令

sudo apt-get install terminator  # 安装终结者程序

cp

复制目录或文件

cp src dst # 把src复制为dst
cp -Rvf src dst # 把src目录递归复制到dst,如果dst存在且为目录,则dst下面会出现一个跟src一样结构和内容的目录,如果dst不存在,则出现一个dst目录,其结构和内容与src一样

mv

移动目录或文件

mv src dst # 把src移动到dst

rm

删除目录或文件

rm file # 删除file文件
rm -Rvf dir # 递归的删除dir下面的所有文件

rm删除的文件是真的被从文件系统里面删掉了,不是放到回收站里面了,除非通过特殊手段,一般无法回复,所以rm需要谨慎操作

chmod

文件权限操作命令,这个命令一般用来给文件添加可执行权限

chmod a+x file # 给file文件user/group/other添加可执行权限
chmod o+w file # 给file文件other添加可写权限
chmod g-w file # 给file文件group去掉可写权限
chmod 666 file # 将file设置为user/group/other可读写,不可执行

chown

修改文件的权限所有者

chown user file # 将file的所有者改为user

执行这个命令需要用户有足够的权限,可以操控被修改的所有者,一般是root用户使用

head, tail

查看文件的内容

head file # 将文件的前10行打印出来
head file -n 20 # 将文件的前20行打印出来
tail file # 将文件的后10行打印出来
tail file -n 20 # 将文件的后20行打印出来
tail -f file # 持续监控文件并将后面新增的行打印出来

tree

查看目录的结构

tree dir # 显示dir目录中所有的目录和文件的结构
tree dir -d # 只显示dir目录中所有的目录结构

这个命令一般不包含在系统内,需要apt进行安装

nohup

后台执行命令。在linux中执行命令的时候,如果命令行窗口关掉的话,会直接也干掉命令行窗口里面开的所有进程,远程执行命令的话,很多时候无法保证命令行窗口一直开启,这种时候就需要nohup命令。

nohup python3 train_model.py > train.log 2>&1 & # 后台启动train_model.py并将标准输出和错误输出重定向到train.log文件

同样能够实现后台运行的工具还有screen,tmux等等。但是一般装完系统之后,nohup系统都会带着,其他命令基本都需要自己安装

ssh

ssh登录命令

ssh [email protected] # 以用户user登录ip为192.168.1.123的主机
ssh [email protected] -p 1234 # 以用户user登录ip为192.168.1.123,ssh端口为1234的主机

这个命令只是一个客户端,想要使用的话,还需要被登录的主机上安装ssh服务器,一般使用openssh-server。

ssh默认端口是22,但是为了安全起见,很多服务器都会改变默认的ssh端口

rsync

同步命令,这个命令一般用来在不同的文件夹之间同步文件,同步动作能保证两个文件夹内容一致,不管原来改动了什么。这个命令也经常被用来做备份,因为可以实现增量的备份。

rsync -avp src dst # 将src目录的所有内容都同步到dst下面,保持所有标签和权限
rsync -avpe ssh src [email protected]:/path/to/dst # 将src目录的所有内容都同步到192.168.1.123的dst下面,保持所有标签和权限,这个命令可以用ssh协议,跨机器复制文件

source

执行某个脚本的时候用的命令

source file.sh # 将file.sh中的内容用bash执行

这个命令和直接执行脚本文件是一样的,区别在于这个命令不要去文件具有可执行权限

目前各大linux发行系统中已经使用dash替换bash,这两个是兼容的,由系统自动处理,用户基本不需要关心

apt-get,apt-cache

apt命令家族,主要用于系统软件的管理

sudo apt-get update  # 更新软件仓库信息
sudo apt-get install terminator # 安装终结者程序
sudo apt-get purge terminator # 卸载终结者程序
apt-cache search terminator # 查找终结者程序

nano

文本编辑器,功能比vi弱一些,但是比较方便,学习曲线没有那么陡峭。而且nano编辑器底部自己带着各个快捷键的提示,足以满足日常编辑的需要。写代码肯定不好用,但是ssh到服务器,编辑配置文件足够了。

wget

命令行上的下载工具

Linux下一些增强可用性的工具,插件等

以下介绍一些linux上我认为比较好用的工具或者软件,不详细展开,具体内容请自行666.

screen tmux

命令行中的终端会话管理软件,具体内容请666

terminator

终结者程序,也是一个终端会话管理软件,用于GUI环境中

zsh, oh-my-zsh

bash的替代品,zsh本身功能强大,可配置项极其丰富。oh-my-zsh是zsh的一个配置文件套装,包含了命令行自动补充,语法高亮,git仓库信息提示等等

nautilus-actions

nautilus右键菜单自定义软件,可以很方便的自定义nautilus的右键菜单

wps-for-linux

金山wps的linux版本,虽然好多年没更新了,但是文档标准也一直没变化,看文档肯定是可以用的

uget

一个GUI的带断点续传功能的下载软件,软件后端是aria或者wget

atom

github官方出品的全功能文本编辑器,插件丰富功能强大,通过安装各种插件可以实现几乎任何你想到的功能,缺点是太占资源

top,htop

查看系统内资源占用情况的工具,top一般系统都自带了,htop需要额外安装但是界面看着比较舒服

gnote

GUI下面的便签软件,平时拿来记东西用的

typora

所见即所得的markdown编辑器,功能强大

gitg

GUI的git仓库管理软件

shutter

截屏软件,像qq截屏一样,可以添加各种批注

gnome-tweaks

gnome调节软件,可以优化gnome的各项功能,主题修改等等

meld

类似于windows下的beyondcompare的文本比较软件

你可能感兴趣的:(教程)