16个桌面Linux用户必须要知道的Shell命令
16个桌面Linux用户必须要知道的Shell命令
王振威 发表于6年前
16个桌面Linux用户必须要知道的Shell命令
  • 发表于 6年前
  • 阅读 15684
  • 收藏 251
  • 点赞 1
  • 评论 28

腾讯云 技术升级10大核心产品年终让利>>>   

    有些人仍然会有这中愚蠢的想法,他们认为使用Linux就必须使用Linux shell命令。胡说!你可以不懂得任何Linux命令,比如说ps,grep,ls等,但是你仍然可以使用很多现代的Linux桌面发行版。
    Linux的系统管理员与桌面用户不一样,他们不像桌面用户一样使用Cinnamon, GNOME, Unity, 或者 KDE,他们所有的时间都是用Linux命令。

    对于桌面用户来讲,若是了解一部分Linux命令,你可以更好的使用Linux,体验它的魅力,下面列举出了一些:

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变量,他就输出变量的值。

 

Echo.png

    一个重要的地方是,你要注意文本的大小写。例如,ls,是DOS的dir命令的Linux版本。这个命令列出当前工作目录下的文件列表。如果你输入的是LS,你得到的只能是“找不到命令”的错误信息。
    另外在Linux shell命令中一个重要的地方是,你可以将命令串起来。这是Unix/Linux从第一天开始就有的巧妙的特点。最简单的将命令连起来的办法就是使用“|”,我们称之为“pipe”。第一个命令的输出就是下一个命令的输入。
Linux命令有自己的语法规则:
基本的语法就像这样:
command -option file
例如:
ls -la
这行命令的意义是输出当前目录的所有文件的文件名,l代表“long”,a代表“all”,有了l选项,你会发现,输出的内容比较丰富,不只包括文件名,还有文件的访问权限,所有者,所属组等。你会发现这个命令会在屏幕上输出大量的信息,如果当前目录的文件比较多的话。
现在就是“pipe”出场的时候了。
ls -la | more

你会在屏幕上看到如下信息:

ls-la.png

    你也可以在大多数Linux命令中使用通配符。通配符就是可以代表文件名中任何未知的字符或字符串。例如,*就代表任意字符串,?代表单个字符。例如:
ls -l a*
这个命令会列出在当前工作目录下所有的以小写a开头的文件,比如说abc.txt,alpha.jpg等等。
ls a?cd

    这条命令会列出所有以小写a开头隔一个未知字符以小写cd结尾的所有文件。例如adcd,axcd,但是不会列出adfdcd,也不会列出axcd.txt。

一些常用的命令

man:如果你想了解每一个命令代表什么含义以及他的用法,你就可以使用man(意义为manual)命令,例如:
man ls
    man输出的内容是为系统管理员和开发者编写的,如果你想了解更多命令的用法,你可以去找网络上的Linux命令文档,有一个非常方便的就是丹尼尔·巴雷特的Linux的袖珍指南。
在以前如果你真的想学习Linux和Unix你必须阅读man手册。而在2012年的今天,面对如此好用的图形界面,这句话显得不是那么的重要,但是如果你想了解Linux更深,阅读man手册仍然是一个好的开始。
su 和sudo: su命令的作用是切换用户,这也被称为超级用户,因为在有些系统中su命令可以使你以系统的所有权限用户root登录。除非你是系统管理员,否则我绝不推荐你使用su切换到root,因为这可能给你带来很多麻烦。
一个相对安全的多的办法是使用sudo命令,这个命令可以上你以root权限运行一个命令。
这两个命令都需要系统密码。在大多数Linux的桌面发行版中这两个是相同的,就是你系统的第一个用户设置的密码。
grep:grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 例如:
grep foo /etc/passwd
返回在password文件中所有的含有foo的行
grep -i "foo" /etc/passwd
-i选项是忽略大小写,这就意味着若某一行含有FOO或FOo也会被搜索到。
grep还支持递归搜索:
grep -r "foo" /home/sjvn
这条命令将会搜索/home/sjvn目录及其子目录下所有的包含“foo”的行
grep也通常与其他命令串连起来使用,例如:
ls -la | grep foo*
列出当前目录下任何以foo开头的文件或目录。例如如下文件将被匹配:foo,foobar,foolish.txt等等。
ps:报告进程的状态。此命令将显示哪些程序正在运行。我使用PS和grep比其他任何命令使用的都要多。 
现在假如你有一个程序运行出了错误,你不能再桌面上把他关掉,(我看准你了,火狐),我运行如下命令就能查看他的进程id:
ps -ef | grep firefox
这条命令做了如下事情:
kill -9 1234
·第一,他找出所有当前在我的电脑上运行的程序
·然后grep命令找出这些文件中叫“firefox”的,显示到屏幕上。
·每一行都有一个进程id数字。有了,现在我就可以是用...
kill:这条命令就想他的名字一样,他可以干掉指定的进程。干掉运行错误的firefox或者其他我想干掉的进程。
kill 1234
这将会干掉所有进程id为1234的程序。为了确保这个程序已经被干掉(强行终止),我使用下面的命令

clear:  如果你觉得你的屏幕上有太多的东西,看起来很讨厌,可以使用clear命令清空。

文件/目录命令

cp:cp代表copy,就是复制,他可以复制一个或多个文件到指定的一个或多个目录下。
一个通常的用法是:
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
递归的复制在/home/sjvn/docs/目录下的所有文件到指定的文件夹。
hostname: 显示你当前登录进去的计算机的名称。
mv:mv(意义为move)顾名思义就是移动,可以移动指定文件到指定位置。当然这个命令有的时候还可以用来实现重命名。
例如:
mv fred.txt ethel.txt
这条命令的作用你可以简单的认为是重命名fred.txt为ethel.txt。
当然此命令还有其他用法,此处不再一一罗列,用法与cp类似,只是这条命令不再保留原文件。
rm:rm代表remove,是删除的意思,所以我运行:
rm fred.txt
我将删除fred.txt。
我强烈推荐你在执行rm命令的时候使用-i选项。这儿选项将在你执行命令的时候询问你是否要真的删除文件。就像这样:
rm -i fred.txt

系统信息

uname: uname -a命令用一行简短的给你总结的电脑的基本信息。这通常包括你的电脑名称,Linux内核版本,你的发行版名称等。

uname-a.png

对于更详细的信息,你可以使用cat命令,他可以显示你的Linux电脑中的文本信息。
cat /proc/cpuinfo
 展示你的CPU的重要的统计。
cat /proc/version
展示你的当前运行的Linux发行版的详细信息。
cat /etc/printcap
 展示你当前安装的打印机。
set | more: set|more
组合命令可以给你更多的呢当前的桌面环境变量的信息。单如果你只是想知道你系统环境变量中的某一个或两个,可以执行如下命令:
echo $PATH

结束或者说是另一个开始

   这里给你展示的只不过是Linux命令的表皮。成百上千的书和网站可以给你更多更复杂的如何使用Linux命令的展示。本文只是让你在想了解比Linux Gui更深一层时的参考。

如果你想学习更多的关于LInux,推荐你去LinuxCommand.org或者看一看Linux in a Nutshell。如果你想变成一个Linux shell编程的大师,推荐你去学习卡梅伦纽汉姆的 Learning the bash Shell 。

英文原文/OSChina.NET原创翻译


标签: linux shell bash
共有 人打赏支持
王振威
粉丝 499
博文 28
码字总数 20820
评论 (28)
小杨阿哥哥
不错,基本上会的都在里面了,像解压缩 之类的用的也比较多。
Nemesis_E
我想知道 怎么安装 dog
不是说 dog比cat 好用吗
yyliu
谢谢总结,就两个不会
小飞的博客
不错,今天刚把系统换成ubuntu,准备学习linux
郑华勇
好不错的 学习了
Jason阿坚
挺好挺好
张亦俊
怎么说呢,如果是非专业用户,看到这标题就直接弃Linux而去了……
既然是桌面,那就要脱离shell,才会慢慢发展得好
农村程序员
总结的不错,都很常用
sudic
恩,确实都是一些实用的命令,顶一下!
sudic
恩,确实都是一些实用的命令,顶一下!
Kvein
Mark
LamStone
确实在平时工作过程中都用到了,不知道纯用户有没有需要学这些,呵呵。
Head
想知道终端开头那几个提示字符怎么设置成高亮? “sjvn@Serenity ~ $”
这个看着很舒服~ 求答案! Ubuntu
Laycher
确实很有用,巩固了一下,学习了。
嘟嘟的米
确实linux操作中比较有用的命令~~
_varchar
呵呵呵,很适合初学者。
另外,排版挺好的。
李元诚
辛苦了,赞一个!
lovinglily
实用的命令,收下了!!支持一个了。学习中...
常子明
很好,收下了~
张先森°首次(Publish)
我发现你打错字了的,
倒数第一行:大事≠大师~
×
王振威
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: