Linux学习笔记——Shell命令

什么是Shell命令

  可以通过打开Linux的terminal(终端)来执行Shell命令。Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell。在现在的大多数Linux发行版中,默认的Shell一般都是Bourne again shell(bash)。

  想看看你的Shell是哪一种,执行下面的命令:
  echo $SHELL

  在Linux中,$符号代表一个shell 变量。所有的shell都用这种方式使用变量。

  有一些shell变量在你的系统启动的时候就有了默认值。例如、$SHELL;$LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围。

  echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义,例如shell变量,他就输出变量的值。
  Shell 命令分为两种:

  1. Shell 自带的命令称为内置命令,它在 Shell 内部可以通过函数来实现,当 Shell 启动后,这些命令所对应的代码(函数体代码)也被加载到内存中,所以使用内置命令是非常快速的。
  2. 更多的命令是外部的应用程序,一个命令就对应一个应用程序。运行外部命令要开启一个新的进程,所以效率上比内置命令差很多。

  用户输入一个命令后,Shell 先检测该命令是不是内置命令,如果是就执行,如果不是就检测有没有对应的外部程序:有的话就转而执行外部程序,执行结束后再回到 Shell;没有的话就报错,告诉用户该命令不存在。

初识Shell命令

Shell命令基本语法:

command -option file

如 ls -la
l代表 long,a代表all

  还有命令管道pipe,也可以帮我们把多个命令串联起来,它的符号是 |ls -la | more

  还可以在命令中使用通配符(代表任何未知的字符),如 ∗ * 就代表任意字符串, ? ? ?代表单个字符。

ls -l a*
ls a?cd

  man:如果你想了解每一个命令代表什么含义以及他的用法,你就可以使用man(意义为manual)命令
man ls
在这里插入图片描述

常用Shell命令

切换用户

su:切换用户的命令。如su root或者su david,若su后面为空则代表切换到root账号。
注意:su 还可以有带-的用法,和不带-的区别:

  1. su root(或su 其他账号):表示不切换环境变量到当前用户,仍然使用之前用户的环境变量。
  2. su - root(或su - 其他账号):表示切换当前的环境变量到新用户环境变量。

  通俗理解,su - 账号切换的更彻底。

  比如在执行root才能运行的命令时,例如useradd、userdel、shutdown、halt,必须要切换到root。

  sudo:表示临时获取root权限,如此时想添加一个户,必须要以root身份才可以。用sudo useradd abc可以添加一个abc账号。(该过程不要求输入root密码,这是和su命令不同的地方)

  在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。普通用户执行到系统程序时,需要临时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升。

用户不在sudoers文件中的解决办法
$ su root
# chmod 777 /etc/sudoers
# vi /etc/sudoers
编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root ALL=(ALL) ALL,在该行下添加提升权限的用户信息:
root ALL=(ALL) ALL
david ALL=(ALL) ALL
保存并退出,测试该user账号是否能执行sudo命令。

grep

grep:grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep foo /etc/passwd
返回在password文件中所有的含有foo的行。

grep -i “foo” /etc/passwd
-i选项是忽略大小写,这就意味着若某一行含有FOO或FOo也会被搜索到。

grep -r “foo” /etc/passwd
这条命令将会搜索/etc/passwd目录及其子目录下所有的包含“foo”的行。

ps

ps:报告进程的状态。此命令将显示哪些程序正在运行。
ps -ef | grep firefox
返回
root 72694 51442 0 07:06 pts/0 00:00:00 grep firefox
查找firefox进程
找到进程id后,可以通过kill id杀掉某个进程

clear,uname,hostname,cat /proc/version

clear:清屏。
uname: uname -a命令用一行简短的给你总结的电脑的基本信息。这通常包括你的电脑名称,Linux内核版本,你的发行版名称等。
cat /proc/version:展示你的当前运行的Linux发行版的详细信息。

示例:Linux node01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

hostname:显示主机名。

vi/vim创建、修改文件

  1. 用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
  2. 编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。
  3. 保存并退出文件:在命令模式下输入:wq即可(别忘了wq前面的冒号) :q! 为强制不保存退出。

进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首。

命令行模式下:

  • 移至上下左右 kjhi
  • 移至行首和行尾 ^和$
  • 移至段落开头和结尾 { }
  • 向前和向后翻屏 Ctrl+f 和 Ctrl+b
  • 在光标前或者后插入字符 i或a
  • 插入新的一行 o
  • 删除光标后的字符 x (如果是删除光标后的3个字符,则是3x) 大写的X是删除光标前的字符
  • 删除整行 dd
  • 删除从光标开始的3行
  • 复制整行 yy
  • 复制从光标所在的3行 3yy
  • 粘贴 p
  • 取消操作 u

底行模式:

  • w filename 保存当前编辑到filename文件名
  • wq filename 保存到指定文件并退出
  • wq 保存并退出
  • q! 放弃所有修改,直接退出vi

文件操作shell命令

cp:文件复制。
cp fred.txt ethel.txt
把fred.txt中的内容复制到当前文件夹中名为ethel.txt中
cp fred.txt /home/sjvn/docs/fred.txt
把fred.txt复制到指定文件中。
cp *.txt /home/sjvn/docs/
复制当前目录下所有以.txt结尾的文件到指定的目录下。
cp -r /home/sjvn/docs/* /home/sjvn/backup。

mv:文件移动或重命名move。
mv:文件移动或重命名move。
mv fred.txt ethel.txt
也可以实现文件或目录重命名的功能。

rm:删除文件,也可以删除非空目录。
rm -i abc.txt 带上-i参数有确认功能
rm -r /abc 递归删除
rm -rf /abc 递归强制删除(慎重使用)

cd:切换到其他目录。
cd ~ 切换到自己的家目录

mkdir:创建目录。
rmdir:只能删除非空目录。-p可以级联删除

more和less:这是两个显示一般文本文件的指令。

  如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就可以试试more和less两个指令。More指令可以使超过一页的文件临时停留在屏幕,等你按任何的一个键以后,才继续显示。而less除了有more的功能以外,还可以用方向键往上或网下的滚动文件,所以你随意浏览,阅读文章时,less是个非常好的选择

cat:显示或连结一般的文本文件。
cat text显示text这个文件
cat file1 file2 依顺序显示file1,file2的内容
cat file1 file2>file3 把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。

ln:建立链接,它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:
ln –s 源文件 目标文件
如:ln -s /home/david/abc link

logout:注销当前用户

ls -al:显示所有文件的所有信息。
d-rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz
  横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是个文件。如果第一个字符是横线,表示是个非目录的文件。如果是d,表示是个目录,如果是l表示文件链接。

-rw-r–r--拆分如下:

  • rw- r-- r–
    普通文件 文件主 组用户 其他用户

chmod chown文件权限的命令

chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或他们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即和文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。他是系统默认值。
操作符号能是:
+ 添加某个权限 -取消某个权限 = 赋予给定权限并取消其他所有权限
mode所表示的权限可用下述字母的任意组合:
r 可读 w 可写 x 可执行
例如 : chmod a+r /home/david/abc

修改权限除了用刚才的文字设定法,还可以使用数字设定法:
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权
限,然后将其相加。所以数字属性的格式应为3 个从0到7的八进制数,其顺序是(u)(g)(o) 如
chmod 777 /home/david/abc 任何人都有所有权限。

chown:将指定文件的拥有者改为指定的用户或组。
系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

格式:chown [选项] [所有者][:[组]] 文件
如 chown mail:mail log2012.log 修改该文件的拥有者为mail群组的mail用户
如 chown -R -v root:mail test6
-R是递归处理该目录及其子目录下的所有文件
-v是显示处理的详细信息

猜你喜欢

转载自blog.csdn.net/weixin_45031468/article/details/112986001