入门知识——Linux入门

1.Linux系统简介:

操作系统linux=系统调用和内核
linux本身只是操作系统的内核,内核是使其他程序运行的基础,它实现了多任务和硬件管理,用户和系统管理员交互运行的所有程序都运行在内核之上;
shell(命令行解释器),用于用户交互和编写shell脚本
linux操作系统发行版,Ubuntu,CentOS,Fedora,OpenSUSE,Debian,Mint

2.基本概念和操作

linux上图形界面,是运行在linux上的一套软件,xorg:是通过x窗口系统实现的,x本身是工具包和协议架构,xorg是x架构的实现体,也就是说它是实现了x协议规范的一个提供图形界面服务的服务器,当然还需要一个客户端,称为x client,比较熟知的桌面环境就是:KDE,GNOME,XFCE,LXDE

终端模拟器:Terminal,xterm
终端本质是对应linux上的/dev/tty设备,多用户登录是通过不同的/tty设备完成的,linux默认提供6个纯命令界面terminal让用户登录,物理机上通过ctrl+alt+F1-F6切换
shell,提供给使用者的软件,它是交互界面,也是控制系统的脚本语言
linux上比较流行的shell是bash,zsh,ksh,csh

Tab:补全命令,目录,命令参数
Ctrl+c;强行终止当前程序

*、?:对字符串迷糊匹配(文件名,参数名),输入的通配符是由shell处理的,它只会出现在命令的参数里,命令可以用tab补全,shell在参数值中找到通配符时候,将其当做路径或者文件名磁盘中查找匹配,找到了进行替换,否则将其作为一个普通字符传给命令,再由命令进行处理,总之:
通配符只是一种shell实现路径扩展功能,通配符被处理以后,shell先完成命令的重组,然后继续处理重组后的命令,直到执行命令(ls *.txt)

创建多个文件:touch {1..10}_jerry.txt

$man(manual pages):man <command_name>(ls --help)

3.用户和文件权限操作

$who am i:用户名 伪终端,打开时间

root权限,系统权限的一种,与system权限可以理解成一个,是超级管理员用户账户,拥有系统至高无上的权利,要创建用户需要root权限;sudo:需要知道当前用户的密码,同时当前用户属于sudo用户组

su,su-,sudo:

su <user>切换用户,执行需要输入用户密码,sudo <cmd>可以特权命令运行cmd命令,需要当前用户属于sudo用户组,且需要输入当前用户密码,su - <user>,命令切换用户,同时环境变量改成目标用户的环境变量;

$sudo adduser jerry:新建用户jerry,添加用户到系统,同时默认为用户创建了home目录(ls /home)

$su -l jerry:切换登陆

$exit+d/exit:退出当前用户,退出终端;

linux中每个用户都属于用户组,用户组简单理解就是一组用户的集合,共享一些资源和权限,同时拥有私有资源,一个用户可以属于多个用户组

$groups jerry&cat /etc/group:查看用户属于哪些用户组,冒号之前表示用户,后面表示用户属于的用户组,每次创建用户不指定用户组,默认会创建一个和用户名相同的用户组,默认情况下,sudo用户组里可以使用sudo命令获得root权限

$cat /etc/group |sort:cat 命令用户读取指定文件内容然后打印到终端输出,sort将读取的文本进行字典排序在输出

etc/group 文件格式说明
/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:

group_name:password:GID:user_list

你看到上面的 password 字段为一个 x 并不是说密码就是它,只是表示密码不可见而已

将其它用户加入 sudo 用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限:

$ su -l lilei
$ sudo ls
会提示 lilei 不在 sudoers 文件中,意思就是 lilei 不在 sudo 用户组中,至于 sudoers 文件(/etc/sudoers)你现在最好不要动它,操作不慎会导致比较麻烦的后果。

usemod:使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令

这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限:

$ su jerry # 此处需要输入jerry用户密码
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei 然后你再切换回 lilei 用户,现在就可以使用 sudo 获取 root 权限

ls -l:

文件类型
 Linux 里面一切皆文件,正因为这一点才有了设备文件( /dev 目录下有各种设备文件,大都跟具体的硬件设备相关)

socket:网络套接字。pipe 管道,软链接文件:链接文件是分为两种的,另一种当然是“硬链接”(硬链接不常用,而软链接等同于 Windows 上的快捷方式,你记住这一点就够了)。

文件权限
读权限,表示你可以使用 $cat <file name> 之类的命令来读取某个文件的内容;

写权限,表示你可以编辑和修改某个文件;

执行权限,通常指可以运行的二进制程序文件或者脚本文件,如同 Windows 上的 exe 后缀的文件,不过 Linux 上不是通过文件后缀名来区分文件的类型。需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。

所有者权限,这一点相信你应该明白了,至于所属用户组权限,是指你所在的用户组中的所有其它用户对于该文件的权限

链接数
链接到该文件所在的 inode 结点的文件名数目

文件大小
以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。

$ls -A/-Al:显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)

$ls -dl <目录名>:查看某一个目录的完整属性,而不是显示目录里面的文件属性

$ ls -AsSh:显示所有文件大小,并以普通人类能看懂的方式呈现,其中小 s 为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。

sudo chown shiyanlou iphone6:变更文件所有者

修改文件权限:

每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)对应一个 " rwx ",也就是一个 “ 7 ” ,所以如果我要将文件“ iphone6 ”的权限改为只有我自己可以用那么就这样:

$chmod 600 iphone6

加减赋值权限:

$ chmod go-rw iphone6,g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限

useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作

 

4.Linux目录和文件基本操作:

 Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架,

虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统

FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等

第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等

$ tree /

使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(注意,我们上一节介绍过的,以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件), - 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)

进入上一级目录:

$ cd ..
进入你的 home 目录:

$ cd ~ 
# 或者 cd /home/<你的用户名> 
使用 pwd 获取当前路径:

$ pwd

提示:在进行目录切换的过程中请多使用 Tab 键自动补全,可避免输入错误,连续按两次 Tab 可以显示全部候选结果

$touch:新建空白文件,只指定一个文件名,则可以创建一个指定文件名的空白文件(不会覆盖已有同名文件)

$mkdir:mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性

$ mkdir -p father/son/grandson:使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用)

$cp:使用 cp(copy)命令复制一个文件到指定目录,要成功复制目录需要加上 -r 或者 -R 参数,表示递归复制,就是说有点“株连九族”的意思($ cp test father/son/grandson)

$rm:使用 rm(remove files or directories)命令删除一个文件,权限不足,你如果想忽略这提示,直接删除文件,可以使用 -f 参数强制删除,跟复制目录一样,要删除一个目录,也需要加上 -r 或 -R 参数

$mv(mv 源目录文件 目的目录):使用 mv(move or rename files)命令移动文件(剪切)。将文件“ file1 ”移动到 Documents 目录($ mv file1 Documents)

$mv(mv 旧的文件名 新的文件名)

rename 命令可以批量重命名

$ cd /home/shiyanlou/

# 使用通配符批量创建 5 个文件:
$ touch file{1..5}.txt

# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:
$ rename 's/\.txt/\.c/' *.txt

# 批量将这 5 个文件,文件名和后缀改为大写:
$ rename 'y/a-z/A-Z/' *.c

简单解释一下上面的命令,rename 是先使用第二个参数的通配符匹配所有后缀为 .txt 的文件,然后使用第一个参数提供的正则表达式将匹配的这些文件的 .txt 后缀替换为 .c

cat,tac 和 nl 命令查看文件:前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示

标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘、标准输出文件(stdout)和标准错误输出文件(stderr),后两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

$ cat -n passwd:可以加上 -n 参数显示行号,

$nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令

-b : 指定添加行号的方式,主要有两种:
    -b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
    -b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
    -n ln:在行号字段最左端显示
    -n rn:在行号字段最右边显示,且不加 0
    -n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)

使用 more 和 less 命令分页查看文件:其中 more 命令比较简单,只能向一个方向滚动,而 less 为基于 more 和 vi

可以使用 Enter 键向下滚动一行,使用 Space 键向下滚动一屏,按下 h 显示帮助,q 退出

$tail:

甚至更直接的只看一行, 加上 -n 参数,后面紧跟行数:

参数 -f,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的

$file:file 命令查看文件的类型

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值