Linux命令行入门指南

  • 基本的命令、文件及目录
pwd   #查看当前目录
cd /var/log  #进入/var/log目录cd ..  #进入父级,这里为 /varcd -  #返回上一个之前的目录,这里为 /var/log
ls  #查看文件列表man ls  #查看帮助ls -la  #l表示详细格式,a表示显示dot文件ls -l -h  #h表示更可读,比如文件大小以KB,MB为单位## 向上箭头或向下箭头 查看之前键入过的命w令
cat kern.log  #按Tab可以提示并自动完成,如果按2下Tab,就列出所有可用的列表,再按Enter就使用当前提示cd ~  #回到个人主目录
touch test.txt  #创建一个空文件,Linux不看扩展名,这里只为了直观mkdir testfiles  #创建一个空文件夹mv test.txt testfiles/testfile.txt #将test.txs移动testfiles文件夹下并改名cd testfileslscp testfile.txt testfile2.txt  #复制文件rm testfile.txt  #删除文件cd .. #或使用cd - 回到上一次目录rm testfiles  #尝试删除该文件夹,提示不是空不能删man rm #查用户手册rm -r testfiles  # r表示递归,删除文件夹里的所有文件和目录

  • 文本编辑

Nano:

对初学者非常友好,在大部分Linux发行版开箱即用。但它只有基本功能,不提供高级功能,不过一般使用足够了。

nano  #打开nano#  输入几行文本#  按下ctrl+O  表示存文件,然后输入文件名test.txt,即完成保存#  按ctrl+x  退出nanols  #  查到当前目录已生成刚创建的文件cat test.txt  #  查看编辑的内nano test.txt  #  nano可以带现有的文件名,打开现存文件
#  nano里 ctrl+G,查看帮助。看完按 ctrl+x 退出#  Alt+u  undo功能#  Alt+e  redo功能 #  剪切:用鼠标选择文本,如果没有,可以用shift+右箭头选择。选好之后ctrl+k#  粘贴:ctrl+u#  搜索:ctrl+w#  未保存按ctrl+x,会提示是否保存,要保存就按y

Vim:

比较强大,还有很多插件,有些人甚至用它编码。


Emacs:

与Vim类似,可能更强大。


  • Linux文件系统层级

文件系统层级,也称fhs

类似unix,一切皆是文件。并不是所有文件都存在于硬盘,Linux内核提供了很多信息,或通过文件系统访问硬件或进程信息 。

ls -l /  #  linux一切文件从根 / 开始/bin  #  /bin放置了单用户模式下的命令,linux是个多用户系统,但在维护或恢复时会切到单用户模式,      #  ls,cat,cp,mv等命令都在这个目录,都是些小程序/boot  #  所有引导加载信息,除非很清楚,否则不要动/dev  #  这是个特殊文件夹,实际不存在硬盘驱动器中,由内核创建      #  比如插入一个网络摄像头,内核将创建一个文件,用于访问该摄像头/etc  #  包含系统范围的配置文件,比如DNS客户端,DNS服务器,WEB服务器等配置文件      #  当我们配置通用系统应用系统时,在这里工作/home  #  用户的个人目录,文档图片等/lib  #  包含运行基本程序需要的库,有些操作系统还有 /lib64,主要是/bin下的      #  程序用到的库/lost+found  #  当linux系统崩溃时,下次启动会检查文件,并将不正常未链接的放在             #  放在该文件夹,我们可以检查该文件夹,并进行复制和恢复/media  #  放置可移动文件,比如插入U盘,CDROM等,Linux内核会在该目录中新建        #  文件夹,以便访问/mnt  #  临时挂载作用。这是过去的残留,现在不太常用。但如果需要手动创建挂载点,      #  可以在这个目录创建挂载点/opt  #  意思是可选文件,一般放置第三方软件或自己编译的应用程序/proc  #  这也是特殊文件,Linux向文件系统提供进程信息。当我们启动一个新应用程序时,       #  linux内核创建新进程时,同时也为该进程ID创建一个文件夹,我们可以在此文件中查找       #  该进程的相关信息/root  #  每个用户都有一个个人目录,除了root。因为root是个非常特殊的用户/run  #  程序运行时的可变数据,当程序运行,需要存储运行时的临时数据。      #  这也是在硬盘不存在的文件,但是在内存运行的临时文件系统      #  当我们重新启动时,这里面的东西将消失,所以不要放任何东西/sbin  #  与 /bin类似,但里面的应用程序仅供超级用户使用,比如格式化及其他系统关键的命令/snap  #  快照文件,也是特殊文件,存在硬盘上。包含容器应用程序的信息,比较复杂。讲明需要单独开课/srv  #  代表服务器文件,比如WEB服务器,FTP服务器上的文件可以存储在这里/sys  #  也是特殊文件,Linux将内核、硬件、系统进程信息放在这里      #  它与 /dev不同,它包含的东西更多。      #  某个时候你需要访问硬件时,可以使用/dev,但要查硬件信息如型号、供应商时需要查 /sys/tmp  #  临时文件。与/run类似。有个区别,/tmp可以被任何无特权的用户访问。不关键的临时数据放这里较好      #  当然具体取决于应用程序或开发人员如何使用/usr  #  这个不是用户文件,已经有/home文件夹了,这里放的是unix资源。      #  usr是 unix system resources 的缩写。他有很多子目录,与 / 根目录有点类似      #  比如也有bin,sbin,lib等。各个Linux发行版处理这个文件夹也有不同。      #  比如 ubuntu,根目录下/bin与/usr/bin 还有有区别的      #  但现代有些发行版,比如arch linux,/bin甚至没有任何文件,只是指向/usr/bin的符号链接      #  该目录也有 lib,share目录等,如果想存字体、壁纸、图标等应用程序之间共享的任何东西,都可放在这里/var  #  可变数据,放一些预期大小会增长的数据,比如WEB服务器、邮件服务器的日志 放 /var/log下

  • 用户和组

我们安装好系统,一般要先创建用户。

系统中原先存在很多用户,其中最重要的用户之一是root用户。

 root用户也被称为超级用户或超级管理员,可以执行任何配置任务,访问任何文件,添加删除软件等等。

一般用普通用户来执行操作,避免对系统造成破坏。

添加删除软件,还是需要切换到root用户才能操作,操作完成之后切回普通用户,这会有些麻烦,所以出现了叫做sudo的东西。sudo代替用户做只有root才能做的事情,可以执行任何命令。

whoami  #  显示当前用户sudo whoami  #  加上sudo,显示当前用户是rootcat /etc/passwd  #  用户文件,所有用户都可读。但不是每个用户都可写                 #  第一个是root用户,ID为0,一般创建的用户在后面,ID为1000                 #  第一列是用户名                 #  第二列是密码,用x表示,实际密码的哈希值存在/etc/shadow中                 #  第三列是用户ID                 #  第四列是组ID,告诉用户属于哪个主要组。默认情况当我们创建新用户时,linux总是创建同名的组,然后将这个组表示为该用户的主组存在用户文件下。                 #  第五列是注释,可以放任文本                 #  第六列是用户的主文件夹                  #  第七列是用户的shell程序 ,普通用户是 /bin/bash,但看到不少用户是 /usr/sbin/nologin,                 #    表示这些用户是无法真正登陆shell而执行某些操作的,这些用户一般是得用这个用户权限执行某些服务的,                 #    比如运行WEB服务器并不需要全部权限,所以建立相应的服务用户                 #    这也是我们在 /etc/passwd 看到这么多条目的原因#  我们当然可以在前面加 sudo 的方式编辑这个 /etc/passwd 文件,但用命令方法可能更好。             man useraddsudo useradd -m -s /bin/bash -c "test user" test  #  新建test用户  #  m表示添加home下目录,s表示shell,c表示注释cat /etc/passwd  #  查看已建立了test用户sudo passwd test  #  设置test用户的密码passwd  #  设置当前用户密码                 su test  #  su命令,切换到test用户登陆测试是否正常cd ~  #  转到test用户的主目录exit  #  退出test的shell,回到之前的用户  
#  我们来看看组cat /etc/group  #  所有的组都存在这儿                #  我们看到很多组,能看到新建的用户组是1001                #  用户除了自己的组也可以属于其他组  sudo:x:27:chen,最后一列表示该组的成员,这里表示chen属于sudo组su testsudo whoami  #  发现test用户无法使用sudo命令,它不在sudo组exitsudo usermod -aG sudo test # 用usermod命令 将test加入sudo组                            #  a表示添加,如果不加a原组里的成员将被删除,G后面跟组名。                    su testsudo whoami  #  再登录test使用sudo命令,已可以了                 sudo visudo  #  打开文件,查看到sudo可以执行所有命w令,我们也可以参照修改,达到我们的要求
#  下面新建一个组groupadd managessudo usermod -aG manages testsudo usermod -aG manages chen  # 将test,chen用户加入manages组cat /etc/group  #  能看到manages组最后一列有test,chen两个用户
# 下面删除test用户sudo userdel testcat /etc/group  #  能看到test已从刚才的sudo组、manages组中删掉了cat /etc/passwd # 这个用户文件中的test自然也已删除#  不要手动编辑这些文件,用命令就好,他们之前是有关联的,免得未处理好出现问题
#  再删除manages组sudo groupdel manages  cat /etc/group  #  看到已从该文件中去除了

  • 文件权限和属性

文件权限和属性,说明这些用户和组能访问哪些文件,执行哪些文件。

ls -l  #  能看到详细的列#  能看到权限设置,文件所属的用户和组#  权限说明 drwxrwxr-x#  第一位表示类型,d表示目录,- 表示文件#  然后3个3位组,分别代表用户,用户组,以及其他用户的读写执行权限
#  修改权限命令是chmod,有两种方式:文本方式和数字方式chmod u=rwx testscipt.sh  #  文本模式 u 表示 用户,g 表示组, o 表示其他人chmod u=rx testscript.sh  #  权限不必写全chmod u+w testscript.sh # + 表示增加chmod u-x  testscript.sh  # - 表示减少某权限#  当然也可以用 g,o 然后 + ,- ,=#  文本方式比较直观
#  文本模式每次只能设定一类用户,还有一种是数字方式,就灵活多了chmod 761 testfile1.txt  #  数字方式由3位数字组成,每位数字可以从0-7                         #  从左至右的数字分别代表 用户、组、其他用户、                         #  r=4,w=2,x=1,组合成数字
#  可以改变文件的用户和组,命令是chownsudo chown chen textfiles.txt  #  将文件的用户改成chenchown chen:chen testfiles.txt  #  也可以修改文件的组,在冒号后面加上组名sudo chown -R chen:chen downloads  #  递归实现文件用户属性的修改,这样downloads文件夹下的所有文件用户都改成了chen:chen#  同样的,-R 也适用于 chmod

文件除了权限,还有属性:

lsattr  #  不带参数将看到当前目录下所有文件的属性lsattr textfile2.txt  #  具体文件的属性#  属性包括是否是压缩,是否扩展,是否不可变等,可以查看具体文档#  这里做个简单的测试,做个不可改变属性的修改sudo  lsattr +i textfile2.txt  #  这将设置该文件的不可变属性sudo nano textfile2.txt  #  显示不可写入,即便是 root 用户也不能!!sudo lsattr textfile2.txt  #  可以看到 i 属性#  可以经常查看文件属性,看看是否有可疑属性sudo lsattr -i textfile2.txt  #  删掉文件的不可改变 i 属性

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注