文档章节

16个桌面Linux用户必须要知道的Shell命令

王振威
 王振威
发布于 2012/05/06 13:19
字数 2362
阅读 15752
收藏 251
    有些人仍然会有这中愚蠢的想法,他们认为使用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原创翻译


© 著作权归作者所有

共有 人打赏支持
王振威

王振威

粉丝 502
博文 28
码字总数 20820
作品 0
深圳
程序员
私信 提问
加载中

评论(28)

豆仔
豆仔
这条命令做了如下事情:
1
kill -9 1234
·第一,他找出所有当前在我的电脑上运行的程序
·然后grep命令找出这些文件中叫“firefox”的,显示到屏幕上。
·每一行都有一个进程id数字。有了,现在我就可以是用...
kill:这条命令就想他的名字一样,他可以干掉指定的进程。干掉运行错误的firefox或者其他我想干掉的进程。
1
kill 1234
这将会干掉所有进程id为1234的程序。为了确保这个程序已经被干掉(强行终止),我使用下面的命令


这边顺序有问题 上面的 kill -9 1234 应该移到下面
SatSun
SatSun
很好!有种温故而知新的感觉。不错,,,,
5
57965800
很不错 巩固基础。
wisedonkey
wisedonkey
好剧,期待续集
疯 子
很好 收藏了
王振威
王振威

引用来自“Van_chan”的评论

问楼住一下,联想的手提能不能直接装linux,不用虚拟机!

如果你的硬件是常见的那种的话,一般都有linux的驱动支持,装linux没任何问题
Van_chan
Van_chan
问楼住一下,联想的手提能不能直接装linux,不用虚拟机!
王振威
王振威

引用来自“张先森°首次(Publish)”的评论

我发现你打错字了的,
倒数第一行:大事≠大师~

谢谢提醒
张先森°首次(Publish)
张先森°首次(Publish)
我发现你打错字了的,
倒数第一行:大事≠大师~
常子明
常子明
很好,收下了~
Linux学习方法分享

Linux学习方法分享 随着Linux应用的扩展许多朋友开始接触Linux,对于刚接触Linux的人而严,不知从何处开始学起。以下是一位Linux系统管理员,在看了许多有关Linux的文档和书籍并为学习Linux...

不想留名
2014/06/14
792
2
linux的自动登录--理解linux的方式

今天在一个邮件列表中有朋友问在linux下如何做到自动登录,就是不用输入用户名和密码,我的回答是在桌面上进行设置,然后那位朋友就学会了并且很高兴,我敢肯定他是windows的下的老用户... 仅...

晨曦之光
2012/04/10
904
0
如何在 Linux 中安装 2048 游戏

流行的移动益智游戏 2048 也可以在 Ubuntu 和 Linux 发行版上玩。啊!你甚至可以在 Linux 终端上玩 2048。如果你的生产率因为这个让人上瘾的游戏下降,请不要怪我。 早在 2014 年,2048 就是...

17%
09/08
0
0
我的 Gnome Shell 桌面折腾日志

几天前我分享了我的Gnome Shell桌面,有同学希望我分享一下折腾日志,其实我自己也想写一篇关于 Gnome shell 桌面主题安装的折腾文章,要知道在 gnome-look.org 网站上有很多漂亮的图标主题、...

oschina
2015/12/26
14.8K
14
linux系统的启动过程简要分析

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程: 一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总...

ActiveCode
08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

基础编程题目集-7-13 日K蜡烛图

股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开...

niithub
22分钟前
0
0
Jenkins window 下的安装使用

1.下载:https://jenkins.io/download/ 双击安装完毕,将自动打开浏览器: http://localhost:8080 打开对应位置的文件,将初始密钥粘贴至输入框。 第一个是 安装默认的软件;第二个是 自定义...

狼王黄师傅
24分钟前
1
0
深入解析react关于事件绑定this的四种方式

这篇文章主要介绍了详解react关于事件绑定this的四种方式,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 在react组件中,每个方...

前端攻城小牛
32分钟前
1
0
JS正则表达式

url的正则表达式:包括IP,域名(domain),ftp,二级域名,域名中的文件,域名加上端口!用户名等等信息 `function` `IsURL(str_url) {``var` `strRegex =``"^((https|http|ftp|rtsp|mm...

前端小攻略
37分钟前
1
0
shell习题_2

find /root/ceshi1/ -type f -name "*.txt"|xargs -i mv {} {}.bak find /root/ceshi1/ -type f -name "*.txt" -exec mv {} {}.bak \; 1、批量修改文件名: n1=`echo $f|sed '#.bak##'` [ro......

芬野de博客
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部