Linux的基本操作

Linux——国产系统的未来

  • whoami :查看当前用户

  • date :查看时间

  • cal :查看日历cal 2018 查看一整年

认识Linux的构架

linux中  一切都是从根出发的    /
在Linux中一切皆文件  设备也是文件  访问设备的方式跟访问文件的方式是一样的
挂载:好比把u盘放到电脑上,本来u盘式不能直接访问的,电脑可以访问优盘的内容,我们通过把U盘插入到电脑上,实现访问,这个过程就叫挂载。
​
#在根目录下   ~$ tree -L 1
​
​
.          #根
├── bin    #存放我们常用的命令 比如cd ls
├── boot    #我们系统启动文件和核心文件都在这里(严禁乱动)
├── cdrom #光驱的内容
├── dev  #device 存放我们的硬件设备  硬盘  光驱都在这里
​
├── etc  #系统的配置文件  放在这个目录下    (重点)
​
​
├── home   #普通用户的家目录                (重点)
​
​
​
​
├── initrd.img -> boot/initrd.img-4.13.0-45-generic
├── initrd.img.old -> boot/initrd.img-4.13.0-36-generic
​
├── lib #系统的动态链接库   类似于Windows中的 .dll 文件
​
├── lib64#64位操作系统的动态链接库
├── lost+found#系统自动生成的  如果系统文件出错这里边会自动多文件,记录产生的错误
├── media#当我们插入u盘或者光驱的时候  会自动挂载到这里
​
​
├── mnt  #mount挂载的意思  Linux文件系统类型是ext4  windows中NTFS  
(硬盘先分区 在格式化 )
        #ext4 想访问ntfs类型 可以手动挂载到mnt下面   
        #重点
        
├── opt #安装第三方软件  比如Oracle等
├── proc#系统的进程  状态信息  存放在这里   这些信息是在内存中 
​
​
​
├── root#管理员用户的家目录    里边存放好多隐藏的文件 慎动    重点
​
​
​
├── run#进程的运行数据
​
​
├── sbin #存放管理员常用的命令
​
​
├── snap #sudo  snap
├── srv #Linux服务信息
├── sys #在这里存放Linux驱动的实时信息
​
​
​
├── tmp #临时目录
​
​
├── usr  #C:\Program Files 类似于windows 的这个目录安装软件安装在这里             bin  应用程序的可执行文件
             #sbin  超级管理员的执行文件
             #local 管理员安装应用程序的目录
                                                 #重点
​
​
├── var # 用来存放不断变大的文件  比如数据库文件日志  进程 
                                            #重点
​
├── vmlinuz -> boot/vmlinuz-4.13.0-45-generic
└── vmlinuz.old -> boot/vmlinuz-4.13.0-36-generic
​
22 directories, 4 files

历史命令

  • history

  • cai@hello-world:/音乐$ history 5

    • cai@hello-world:/音乐$ !257(执行257行)

    • !行号 自动执行第n条历史命令

  • 上箭头 上一条命令

  • 下箭头 下一条命令

文件操作

ls
    -a 列出所有的子文件及目录  包括隐藏的
    -l 详细信息展示
    --color  不同颜色展示
        文件 白色
        文件夹 蓝色
        链接  浅蓝色
        

文件及目录的属性

drwxr-xr-x 16 cai  cai      4096 Jul 18 17:06 cai
-r--r--r--  1 root root 55485539 Jul 17 20:02 VMwareTools-10.2.5-8068393.tar.gz
drwxr-xr-x  9 root root     4096 Mar 22 17:10 vmware-tools-distrib
lrwxrwxrwx   1 root root    30 Jul 17 19:03 vmlinuz -> boot/vmlinuz-4.13.0-45-generic
​
​
第一部分:
           -  文件
           d  目录
           l  链接
第二部分:
        rwx  r-x  r-x:
        rwx  文件或者目录拥有者的权限   可读   可写    可执行
            
        r-x  所属组的权限             可读   不可写  可执行
        r-x  其他人的权限             可读   不可写  可执行
​
            - :没有权限         r:read w:write x:exec
​
第三部分:
    16  1   表示inode 节点
第四部分:
    cai   所属的用户
第五部分:
    cai   所属的组
第六部分:
    4096  文件的大小   单位字节
第七部分:
    Jul 18 17:06      最后一次修改的时间
第八部分:
    VMwareTools-10.2.5-8068393.tar.gz  目录名  或文件名

rwxrwxrwx 777

4=r,2=w,1=x,- = 0 :
r 代表读,w 代表写,x 代表执行,
如果可读,权限是二进制的100,十进制是4;
如果可写,权限是二进制的010,十进制是2;
如果可运行,权限是二进制的001,十进制是1;
​
具备多个权限,就把相应的 4、2、1 相加就可以了:
若要 rwx 则 4+2+1=7
若要 rw- 则 4+2=6
若要 r-x 则 4+1=5
若要 r-- 则 =4
若要 -wx 则 2+1=3
若要 -w- 则 =2
若要 --x 则 =1
若要 --- 则 =0

软连接 ln就是windows中的快捷方式

link
 ln -s 源文件的名字  新名字(快捷方式的名) 
        sudo ln -s var varrr

目录管理

  • pwd查看当前所在目录

  • 绝对路径

    • cd / home 一切从/出发

  • 相对路径

    • 以当前目录为准 上级 目录或者子目录

    • ..回到上级目录

    • . 还在当前目录

    • ../../回到上两级目录

  • cd 回到当前目录的家目录

  • cd .. 回到上级目录

  • cd . 还在当前目录

  • cd ~ 回到当前用户家目录 (可以直接在虚拟机上进行新建文件夹)

  • cd - 回到来源目录

  • cd / 回到根目录 (在虚拟机上不能直接新建文件夹,需要通过终端创建)

创建目录

sudo mkdir 目录名字    #创建目录名
sudo mkdir -p  目录名/子/孙    #创建多级目录
sudo mkdir -p 音乐/喜欢/最爱

删除 目录

sudo rmdir 目录    删除空目录
sudo rmdir -p    递归删除  (目录里面不能有子目录  文件)
//文件夹音乐/喜欢/最爱
sudo rmdir -p 音乐/喜欢/最爱    递归删除  先删除最爱文件夹 然后 喜欢文件夹下没有其他内容 也会被删除   然后 到音乐文件夹  如果音乐文件夹没有其他内容也会被删除

创建文件

sudo  touch  文件名
sudo touch 文件1 文件2,,,,    创建多个文件
cat 文件名           查看文件中的内容

echo 内容             输出内容到屏幕
echo内容 >文件名        内容保存在文件中(元文件中有内容会被替换掉   添加到最后 用 >> )
​
注意:有时候导入文本失败 需要更改文件的权限 
        chmod 666(参数) 文件名​

文件的移动

mv
sudo mv 文件名  目录名
sudo mv 目录名  目录名(已经存在)
sudo mv 文件名或者目录名   新目录名   (重命名)

文件的复制

cp  copy
sudo cp source.list  source.list.backup  备份
sudo cp -r 目录名   新目录名     (复制目录)

文件的删除

sudo  rm  文件名      可以删除多个
sudo rm -i 文件       删除之前确认是否删除
sudo rm -f 文件       强制删除
sudo rm -f *.mp4      删除以.MP4结尾的文件

强制删除目录

sudo rm -rf 文件名/目录名   强制删除  ​
sudo  rm -rf /*  删除所有   慎用

查看文件

cat  文件名    查看文件内容
tac  文件名    文件内容的倒看
​
head -n 数字   查看前多少行 
tail -n 数字   查看后多少行
​
tail -f cat文件名  实时查看文件后面的内容    用来查看日志
watch -d -n 秒数 cat 文件名    每秒刷新一次文件的内容     (重点)
​​
more 文件名    空格分页查看  回车一行行      q退出
​
less 文件名  
    g首页   
    G尾页  
    b向前分页  
    空格向后分页  
    q退出
​
stat 文件  查看文件的详细信息
    atime accesstime 访问时间
    mtime modifytime  修改时间
    ctime createtime  创建时间

文件的查找

find [路径] [参数] 文件的名字
cai@hello-world:/$ sudo find / -name 1 (在根目录下查找文件名为1的文件)
cai@hello-world:/$ sudo find / -name test(在根目录下查找文件名为test的文件)
cai@hello-world:/$ sudo find / -iname html(查找名为html的文件不区分大小写)
find /音乐 -mtime -1(查找在音乐目录下的修改时间在一天内的文件)
sudo find /音乐 -user root(查找根目录下音乐文件夹下属于root用户的文件)
sudo find /home -size 10c(查找home目录下大小在10字节的文件)
sudo find /home -size +10c -size -100c(查找home目录下大于在10字节小于100字节的文件)
sudo find /home -size +10c -size -100c -iname "*.txt"  (查找home目录下大于在10字节小于100字节文件后缀.txt的文件)(注意 * 通配符的作用)
​
​
            -name   按文件名字查找
            -iname  
            -mtime   +n 表示超过n天的文件   -n表示在n天之内的文件
    
            -user  根据文件所属的用户 查找
            
            -size 单位 c字节 k m g
​
find /-name test.html  在/(根)目录下查找文件名为 test.html的文件
find /var -size +10k -size -100k -name "*.log"    查看var 下面文件大小在10---100k的.log文件

grep 类似于js正则表达式

  • cai@hello-world:/$ grep -rn 像 /音乐 *.txt (在根目录下查找 匹配内容“像” 在路径音乐文件夹下的后缀为 .txt文件中查找)

  • cai@hello-world:/音乐$ grep 像 *.txt (直接在音乐目录下查找匹配)

  • -r 递归查找

  • -n 显示行号和内容

grep  参数  “内容”(要匹配的内容)  文件名
​
        grep -n 6 1.txt  在文件1.txt中匹配内容6 显示行号 
​
  参数:
    -i  忽略大小写
    -c  只显示行数  不显示内容
    -r  递归查找
    -n  显示行号  内容
    -w  只匹配单词
    --color  不同的颜色显示
    
    --include 在文件中搜索
    --exclude (其他教程都没有提)

​
cai@hello-world:/$ sudo grep -rn '像' --include '*.txt'
(在当前用户根目录含有“.txt文件中匹配 像 递归查找显示行号和内容”)

管道符

  • cai@hello-world:/$ cat /音乐/huawei.txt | grep "风"

  • cat /etc/passwd 查看etc目录下的passwd的所有内容

  • cat /etc/passwd | grep 'root' 匹配包含“root”内容的行

  • cat 1.txt | grep "56"

  • 先查看文件1.txt文件内容 在匹配内容56

  • 上一个的输出 作为下一个的输入

查找命令所在的位置

/bin  存放普通用户常用的命令
which 命令
which ls
whereis ls  
​
cai@hello-world:/$ which ls  (ls命令在哪个文件下)
    /bin/ls
cai@hello-world:/$ which grep (grep命令在哪)
    /bin/grep
    
    
cai@hello-world:/$ whereis ls
    ls: /bin/ls /usr/share/man/man1/ls.1.gz(得到的是绝对路径)
cai@hello-world:/$ whereis grep
grep: /bin/grep /usr/share/man/man1/grep.1.gz       /usr/share/info/grep.info.gz
​

wc统计

统计文件内部有多少行
    wc -l 统计多少行
cai@hello-world:/音乐$ cat english.txt | wc -l
​
    wc -w 统计单词数
cai@hello-world:/音乐$ cat english.txt | wc -w
​
​

awk 流式编辑器 将每一行进行切割 分析

先查看某个文件所有内容   然后用管道符 |  然后awk 参数 -F(以 : 进行切割)  然后输出打印'{print $1(打印第一部分  $0 打印全部)}'
cat /etc/passwd | awk -F ':' '{print $1}'
​
cai@hello-world:/etc$ cat group | awk -F ':' '{print $1}'
​

uniqu配合sort来使用

uniq -c 文件名     输出每一行出现的次数
​
cai@hello-world:/音乐$ uniq -c english.txt 
​
假如文件是1.txt:
    hello
    hello
    nihao
    nihao
    world
uniq -c 1.txt     回车结果 (字符串相邻时行数加1)
    2 hello
    2 nihao
    1 world
​
-d或--repeated 仅显示重复出现的行列
(见菜鸟教程Linux uniq命令)
sort 1.txt | uniq -d   回车结果 
    2 hello
    2 nihao

sort

cai@hello-world:/音乐$ cat time.txt | sort -t ":" -k 1 -n
​
sort 
    -n      按纯数字值排序
    -r      倒序
    -k      按照指定的列排序
    -t      指定分隔符
    -u      忽略相同的行
    
    
cat 文件名  管道符 |  sort  (默认对第一个字母排序)
​
cat 文件名       |  sort   -t ":" -k 3 -n 
把文件以 : 分割 对第三列进行排序  按照数字排列

查找最近使用的10条命令

最近经常使用history

unuq-c 显示出现的次数

sort 排序

对文件的第一列排序按照纯数字倒序 :sort -r -n -k 1

取前10行 head -n 10

history | awk -F " " "{print $2}" | sort |uniq -c | sort -r -n -k 1 | head -n 10
cai@hello-world:/音乐$ history | awk -F ':' '{print $1}' | sort | uniq -c | sort -r -n -k 1 | head -n 5
      1     9  ls
      1    99  vim /crontab
      1    98  ls
      1    97  cd etc
      1    96  ls

文件的权限

rwxr-xr-x
r 读        100     4
w 写        010     2
x exec 执行 001      1
- 没有权限
​
rwx   文件或者目录的拥有着
r-x   所属组的权限    
r-x   其他用户的
常用:
    700
    rwx --- ---
    
    
    755
    rwx r-x r-x 
    
    
    777
    rwx rwx rwx
    
    
    600
    rw- --- ---
    
    
    644
    rw- 可读可写
    r-  可读
    r-  可读
     
     
    666 
    拥有着读写  组读写  其他用户读写 
    rw- rw- rw- 
    
cai@hello-world:/音乐$ sudo chmod g+w lover.odt (给所属的组增加一个写的权限)
​
u  代表拥有着
g  所属组
o  其他人

chmod(修改文件的权限)

chmod 
    + 增加 权限   在原来的基础上
    - 减掉权限
    = 赋值权限
chmod 777 文件名    给文件最大的权限
chmod 666 文件名
​
chmod -R 777 目录  递归修改目录子目录及文件(是目录要加-R)
​
cai@hello-world:/音乐$ sudo chmod 666 lover.odt (给lover.odt文件一个666的权限)
​
cai@hello-world:/音乐$ sudo chmod -R 777 time.txt 

哪个目录或者文件 先到它所在的上一级目录 然后再 修改

更改文件及目录的拥有着 chown

源文件:(所有者为root用户  组名root)
-rw-r--r--  1 root root  261 7月  21 20:33 english.txt
​
更改文件的所有者(更改的所有者用户 组名要存在)
cai@hello-world:/音乐$ sudo chown cai:cai english.txt
文件变成(此时文件的所有者是cai  组名cai)
-rw-r--r--  1 cai  cai   261 7月  21 20:33 english.txt
​
​
递归修改目录的所有者和组名
例:
新建文件夹
cai@hello-world:/音乐$ sudo mkdir -p test/text1/text2
​
cai@hello-world:/音乐$ ls -al(显示所有文件信息)
(test属于root)
drwxr-xr-x  3 root root 4096 7月  21 22:51 test
​
修改所有者
cai@hello-world:/音乐$ sudo chown -R cai:cai test
cai@hello-world:/音乐$ ls -al
(test属于cai)
drwxr-xr-x  3 cai  cai  4096 7月  21 22:51 test
​
然后切换到test目录下
cai@hello-world:/音乐$ cd test
cai@hello-world:/音乐/test$ ls -al
total 12
drwxr-xr-x 3 cai  cai  4096 7月  21 22:51 .
drwxr-xr-x 4 root root 4096 7月  21 22:51 ..
(test1目录所有者也被修改)
drwxr-xr-x 3 cai  cai  4096 7月  21 22:51 text1
​
​​
change owner 的缩写chown
​
chown 用户名:原来的组名 文件或目录 (只修改用户名)
chown 原来的用户名:组名  文件       (只修改所有者)
chown 用户名 :组名  文件           (都改)
​
​
​
chown -R 用户名:组名 目录           (递归改变目录)

 

更改所属的组chgrp

chgrp 组名 文件名/目录名
原来:
-rw-rw-rw-  1 root root    0 7月  21 20:58 lover.odt
更改:
cai@hello-world:/音乐$ sudo chgrp cai lover.odt 
之后:
-rw-rw-rw-  1 root cai     0 7月  21 20:58 lover.odt
chgrp -R 组名 文件名/目录名     递归修改
​

chattr底层控制权限chmod背后的大boss(拥有对文件的绝对的控制权)

i  不能删除  不能重命名 不能修改权限
​
    cai@hello-world:/$ sudo chattr +i grilgril.txt (用chattr + i 处理后 grilgril.txt文件就不再被修改如:追加文件内容 修改所属的组 拥有着等)
    cai@hello-world:/$ sudo echo '女孩子文静点好啊' >> grilgril.txt 
-bash: grilgril.txt: Operation not permitted
​
    
​
a  只能追加  不能删除   只能 >>
cai@hello-world:/$ sudo chattr +a boy.txt 
​
cai@hello-world:/$ sudo vim boy.txt(利用vim编辑器无法写入内容)
​
cai@hello-world:/$ sudo echo '男孩应该坚强!' >> boy.txt (利用echo可以追加内容)
​
cai@hello-world:/$ sudo rm boy.txt (无法删除)
sudo: unable to resolve host hello-world
rm: cannot remove 'boy.txt': Operation not permitted
​
​
+ 在原来的基础上增加
​
- 在原来的基础上递减
cai@hello-world:/$ sudo chattr -a boy.txt (让a作用于文件boy.txt功能消失  可以删除文件   向文件vim内追加内容)
cai@hello-world:/$ sudo vim boy.txt 
sudo: unable to resolve host hello-world
cai@hello-world:/$ cat boy.txt 
男孩应该坚强!
男孩应该爱护女孩子。
​
​
= 更新权限
cai@hello-world:/$ sudo chattr +a boy.txt(增加+a) 
cai@hello-world:/$ sudo chattr = boy.txt (更新,让权限消除)
cai@hello-world:/$ sudo vim boy.txt (可以用vim编辑器操作)
​

用户和组的管理

一个用户至少有一个主组

一个组可以拥有多个用户

一个用户可以拥有多个组

添加组useradd whoami 查看当前哪个用户登陆

useradd  用户名
cai@hello-world:~$ sudo useradd yuting(新建一个用户)
​
cai@hello-world:/etc$ cat passwd(信息存储在passwd文件里)
​
yuting:x:1001:1001::/home/yuting:
​
​
su 用户名        切换用户名
su 不写用户名     表示 切换到root
​
​
添加用户之后  用户信息 会存到  /etc/passwd   重启以后 还会在 home下面产生一个 以用户名为命名的目录  表示该用户的家目录  
​
示例:
​
查看用户:
cai@hello-world:/etc$ cat /etc/passwd | grep cai
得到:cai:x:1000:1000:cai,,,:/home/cai:/bin/bash
​
cai@hello-world:/etc$ cat passwd | grep yuting 
yuting:x:1001:1001::/home/yuting:
​
查看组:
cai@hello-world:/etc$ cat /etc/group
    sambashare:x:128:cai
    sambashare:用户组
    x:密码
    cai:用户???????
    
​
查看组名:
cai@hello-world:/etc$ cat /etc/group | grep cai
    adm:x:4:syslog,cai
    cdrom:x:24:cai
    sudo:x:27:cai
    dip:x:30:cai
    plugdev:x:46:cai
    lpadmin:x:113:cai
    cai:x:1000:
    sambashare:x:128:cai
    
 cai@hello-world:/etc$ cat passwd groups | grep yuting
cat: yuting:x:1001:1001::/home/yuting:
   
    
groups 查看当前登录用户的组内成员   
    cai@hello-world:/etc$ groups
  cai adm cdrom sudo dip plugdev lpadmin sambashare
  
  
groups cai 查看cai用户所在的组,以及组内成员
    cai@hello-world:/etc$ groups cai
    cai : cai adm cdrom sudo dip plugdev lpadmin sambashare
    
    
 whoami 查看当前登录用户名   
cai@hello-world:/etc$ whoami
cai
​
root@hello-world:/etc# whoami
root
​
​
​
cai:x:1000:1000:cai,,,:/home/cai:/bin/bash
​
​
第一部分:cai  用户名
第二部分:x  用户的密码 
第三部分:1000 用户的id   
第四部分:1000 组id  
第五部分:/home/cai     家目录  
第六部分: /bin/bash  表示 cai 具备执行脚本的权限 (shell命令所在的目录)   
        /usr/sbin/nologin  表示该用户不具备执行脚本的权限   也表示 该不能用该用户登录系统
​
​
useradd  
        -g 添加用户的时候 直接把该用户加入到指定的组中 组必须是已经存在的 
        sudo useradd -g jinxingping jinlong 
        -u 用户制定id 
        sudo useradd -u 8888 liangliang
        -m 在创建 用户的同时 自动在home 目录下面生成一个以用户名为命名的目录
        -d 制定用户的家目录  
        sudo useradd -md /qiaoqiao  jinqiao  创建jinqiao的同时自动创建用户家目录  并且自己制定家目录在 /qiaoqiao  
        
cai@hello-world:/etc$ sudo useradd -md /qing feng
​
cai@hello-world:/etc$ cat passwd
feng:x:1003:1003::/qing:
        
        
        -s 制定用户不能登录  
        sudo useradd  -m guoguo -s /usr/sbin/nologin 

删除用户

userdel 用户名
​
​
root@hello-world:/etc# sudo userdel tingzhi (删除tingzhi用户)
root@hello-world:/etc# cat passwd(看不到tingzhi的信息  已经被删除)

修改用户名

passwd  用户名
​
cai@hello-world:/etc$ sudo passwd feng(修改feng用户的密码)
Enter new UNIX password: (输入两次密码)
Retype new UNIX password: 
passwd: password updated successfully
​
cai@hello-world:/etc$ su feng (切换到feng用户)
Password: 
feng@hello-world:/etc$ 
​
​
passwd  后面不写用户名 默认修改root 
         Ubuntu root 是不启用的 
sudo  password rpoot   启用管理员用户 
su root 
​
passwd -l  锁定用户密码
       -u  解锁

用户组

groups 				查看当前用户属于哪个组
id				查看用户id  组id

cai@hello-world:/etc$ groups
cai adm cdrom sudo dip plugdev lpadmin sambashare
cai@hello-world:/etc$ id
uid=1000(cai) gid=1000(cai) groups=1000(cai),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)



添加组:
sudo  groupadd 组名   	组的信息存放在  /etc/group 下面 
删除组:
sudo groupdel 组名
修改组:
sudo groupmod -n 新组名  旧组名 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值