文章目录
Linux常用命令
Shell概述
shell是用户和操作系统之间的一个接口。用户在命令提示符下输入的每个命令都首先由shell程序进行解释,然后再传给Linux内核的。shell是一个命令解释器。它拥有自己内建的shell命令集,可以用它来启动、挂起、停止一些程序。此外shell也能被系统中的其他有效的Linux应用程序所调用。
shell还是一个解释型的程序设计语言。shell程序设计语言支持绝大多数高级程序设计语言中常用的元素,比如函数、变量、数组和控制结构。shell编程简单易学,在任何命令提示符中能键入的命令都可以在shell程序中使用。而且一旦掌握,它将成为工作中的得力工具。 和DOS和Windows不同,Linux提供了多种shell程序供用户选择使用,使用不同类型shell的原因是它们都有各自的特点。一般某个用户登录系统时的shell都在/etc/passwd
最常用的几种shell是Bourne shell(sh)、C shell(csh)、Ash shell(ash)、Korn shell(ksh)和Bourne Again shell(bash)等。每种shell都有自己的特点,一般的Linux系统默认使用bash。
Bourne shell是最早被大量使用及标准化的shell,几乎所有的Linux都支持它。它是由贝尔实验室开发的,由于开发者是Steven Bourne,所以被命名为“Bourne shell”。Bourne Again shell(bash)是Bourne shell的扩展,与Bourne shell完全兼容,并且在其基础上增加和增强了很多功能。其中包括了很多csh和ksh的优点。bash不仅有非常灵活和强大的编程接口,同时又有非常友好的用户界面。它内建40个shell命令和12个命令行参数。目前bash是大多数Linux默认的shell。
交互式处理
从用户登录系统开始,shell程序就是在系统终端中显示不同的命令行提示符
-
root用户登录系统则提示符显示“#”
-
普通用户登录则显示“$”
-
~:用户home目录简写
比如:
当前用户为bob,则~相当于/home/bob
后跟用户名,比如jerry,展开后相当于用户home目录,/home/jerry
然后等待用户输入命令。在接收来自用户输入的命令后,bash会根据命令的不同的类型(包括程序或shell内置命令)来执行,在执行完毕后,bash将结果回传给用户,并且再次回到命令提示符,以等待用户的下一次输入。这种模式会一直继续下去,直到用户执行exit或是按下Ctrl+D来注销,bash才会结束,bash的这种与用户沟通的方式称为“交互式处理”。
基本命令
Linux命令是大小写敏感的,并且不一定全是小写
ls:(list)列举目录内容
cd [dir]:(Change directory)改变当前目录,如果不指定目录则进入到用户home目录
pwd:(Print name of current working directory)显示当前工作目录
cat [file]:(Concatenates )连接并显示文件,通常用于查看文件内容
**echo [argument] :**在屏幕上显示参数
man command :(manual)查看命令帮助,q退出查看
注意:
如果man命令不存在,需要使用如下命令安装:
yum install man
**clear:**清屏
**exit,logout,ctrl d:**退出当前会话
命令实践:
练习如下命令:
ls
ls -l
cd
cd .
cd ..
cd /
pwd
cat install.log
echo $PATH
man ls(q:退出)
clear
exit
如何取得帮助
1)man使用:
- 回车,下一行
- 空格,下一页
- g,跳到第一页
- G,跳到最后一页
- q,退出
2)环境变量
PATH:包含可执行命令的搜索目录
使用如下命令可以显示环境变量的值:
echo $PATH
运行效果:
说明:
当你输入一个命令然后回车时,shell会从PATH环境变量所指定的目录中搜索你的命令,比如首先查找/usr/local/sbin目录,然后查找/usr/local/bin目录,找到后马上执行,找不到会提示找不到的命令
PATH变量中的路径分隔符时冒号,windows系统系统中是分号,注意区别
3)查找命令的位置
如果不指定命令在哪个目录下,可以使用which命令:
which man
操作目录
了解Linux目录
常用目录:
/:根目录,linux文件系统的起点
/bin:(Binaries)二进制可执行程序
/etc:系统配置文件
/home:用户主目录
/opt:(Optional)可选的或第三方软件
/tmp:(Temporary)临时空间,重启会清除
/usr:用户程序
/var:(Variable Data)各种数据,日志文件
其他目录:
/boot:操作系统启动时需要的文件
/cdrom:CD-ROM挂载点
/dev:(device)设备文件
/lib:系统库
/lib64:系统库64位
/lost+found:在操作系统执行文件系统检查时存储恢复文件
/media:挂载可移除介质,比如cd-rom
/mnt:用于挂载外部文件系统
/proc:(process)进程运行信息
/root:根账号home目录
/sbin:(System administrator)系统管理员二进制命令
/selinux:SELinux信息
/srv:(server)包含服务器数据
/srv/www:web服务器文件
/srv/ftp:ftp文件
/sys:系统内核相关文件
/usr/bin:用户可执行文件
/usr/lib:用户库
/usr/local:本地安装的软件,不属于基础操作系统的一部分
/usr/sbin:用户相关,系统管理二进制程序
/var/log:日志文件
改变目录
相关符号:
.:当前目录
…:父目录
/:目录分隔符
-:上一次访问目录
技巧
默认情况下,命令的搜索路径由PATH变量指定,但是home目录并没有包含在PATH中,如果执行当前目录下的命令,可以使用如下命令
./程序名
建立或移除目录
-
mkdir:建立目录
mkdir [-p] directory: -p(parents)建立中间目录
-
rmdir:(remove)移除目录
rmdir [-p] directory :-p移除所有指定命令
rmdir仅移除空目录,要移除目录和内容需使用rm
-
rm -rf directory:递归移除目录和文件,注意:移除后不可恢复
命令实践
mkdir test
mkdir test/product/p001
mkdir -p test/product/p001
rm -rf test
ls test
运行效果:
操作文件
在Linux系统中,文件命名必须遵循如下的规则:
(1) 文件名最长可以达到256个字符,可由AZ、az、0~9、.、-、_、等符号组成。
(2) 文件名区分大小写。
(3) 文件没有扩展名的概念。
(4) 使用“/”作为根目录和目录层之间的分隔符。
(5) 支持相对路径和绝对路径。
Linux系统中常用的文件类型有5种:普通文件、目录文件、设备文
件、管道文件和链接文件。
列举文件
ls:-l,详情(长格式列举)也有一个别名ll
ls -d:仅列出目录
ls -R:同时列举子目录(递归列举)
ls -l
列举所有文件(包含隐藏文件)
ls -a
ls -l -a
ls -la
注意:以点开头的文件为隐藏文件
查找文件
find [path…] [expression]
find . -name pattern:在当前目录下查找符合匹配模式的文件,大小写敏感
find . -iname pattern :同上,忽略大小写
例如:
在当前目录下递归查找名字中以conf结尾的文件
find -name "*conf"
查看文件
cat file:一次性显示文件所有内容
more file:浏览文件,回车:下一行,空格:下一页 q:退出,不可向前翻页及搜索
less file:浏览文件,同more,但可向前翻译及搜索
head file:显示文件前10行(-2,显示前2行)
tail file:显示文件后10行(-2,显示后两行)
tail -f file: 实时查看文件,-f(follow)可以查看类似日志文件这样实时发生变化的文件
搜索ASCII文件
grep:Global Regular Expression Print
grep pattern file:在ASCII文件中按指定模式搜索
grep -v pattern file :-v(Invert)返回不匹配内容
其他选项:
- -i:忽略大小写
- -c:统计返回行数
- -n:带行号输出
命令实践
cat test.txt
grep hello test.txt
grep -v hello test.txt
grep -i hello test.txt
grep -ci hello test.txt
grep -ni hello test.txt
管道符(|)
管道功能可以将多个命令集成到一起,以执行一个较为复杂的工作,除了第一个和最后一个命令之外,每个命令的输入都是前一个命令的输出,而每个命令的输出也将成为下一个命令的输入。
命令实践
显示/usr/bin目录下文件名中含有ssh的文件
ls -l /usr/bin | grep ssh
显示/usr/bin目录下文件名中含有se的文件,分页显示:
ls -l /usr/bin | grep se | less
查找ssh监听:
netstat -a | grep ssh
拷贝文件
cp命令(copy)
cp source_file destination_file:将源文件拷贝为目标文件
cp source_file1 [source_fileN …] destination_directory:拷贝多个源文件到目标文件夹
cp -i source_file destination_file:-i(interactive )以交互方式运行,如果目标文件存在则询问是否覆盖
cp -r source_directory destination:-r(recursive)递归拷贝
命令实践
mkdir dir
ls
cd dir
ls
touch myfile1.txt(建立一个空文件)
ls
cp myfile1.txt myfile2.txt
ls
mkdir subdir
ls
cp myfile1.txt myfile2.txt subdir
ls subdir
cp -i myfile1.txt myfile2.txt subdir
ls
cd ..
ls
cp -r dir dir2
ls
查看目录结构:
tree dir2
注意:centos默认没有tree命令请通过yum install tree命令安装
移动和重命名文件
mv(move)移动(重命名)文件或目录
mv source destination :移动文件或目录,如果目标是目录,则将源移动到目标目录下,否则执行重命名操作
mv -i source destination :交互式运行
命令实践
ls
mv dir newdir
ls
mv file1.txt newfile1.txt
ls
mv newfile1.txt newdir
ls
ls newdir
移除文件
rm(remove)
rm file :移除文件
rm -r directory :如果要移除目录必须使用-r(recursive)参数,移除目录其其下的内容
rm -f file:强制移除,不给确认提示 -f(force)
一次移除多个文件可以使用搜索模式。在你使用rm命令前最后使用ls进行确认
命令实践
ls
ls *.txt
rm *.txt
ls
rm dir2
rm -r dir2
ls
rm -rf newdir
ls
归档和压缩
归档
tar(tape archive):打包文件或目录
tar [-] c|x|t f tarfile [pattern]:建立,展开或列举归档文件,注意:这里的[-]是可以省略的
常用选项:
c:创建(create)归档
x:从归档中展开(Extract)文件
t:显示归档文件内容(Display the table of contents )
v:执行中输出详细信息(verbose)
f file:要操作的文件
命令实践
ls
mkdir tartest
cp *.* tartest
ls tartest
tar cf tartest.tar tartest
ls
tar tf tartest.tar
tar cvf tartest2.tar tartest
rm -rf tartest
ls
tar xvf tartest2.tar
ls
ls tartest
压缩
gzip file :压缩文件,压缩后扩展名为.gz
gunzip file:解压文件
du:显示文件使用空间(display file usage)
du -k:以k字节显示
du -h:以易于理解的格式显示(human),比如:1.5M,3.7G
命令实践
ls
du -k install.log
gzip install.log
ls
du install.log.gz
gunzip install.log.gz
ls
注意:压缩或者解压后原始文件会被移除
归档文件压缩
tar命令内置了gzip压缩,只需要使用-z参数,文件扩展名为.tar.gz或者.tgz
命令实践
ls
tar zcf tartest3.tgz tartest
ls
tar ztf tartest3.tgz
系统命令
输入/输出重定向
Linux系统通常从一个叫标准输入的地方读取输入并且将一个命令的结果以写入到标准输出反馈给我们;默认情况下,这也是我们使用的终端(命令行)。如果我们想改变输入和输出的方式,就需要使用重定向。
输入输出有3种默认类型:
(在linux中,任何东西都看成是文件)
I/O名 | 文件描述符 | 编码 |
---|---|---|
标准输入(默认指键盘) | stdin | 0 |
标准输出(默认为屏幕) | stdout | 1 |
标准错误输出(默认为屏幕) | stderr | 2 |
>
:重定向输出
<
:重定向输入
>
:重定向标准输出到文件时会覆盖现有文件,如果文件不存在将建立该文件
>>
:重定向标准输出到文件时,追加到现有文件中,如果文件不存在就建立该文件。
>/dev/null
:重定向到空设备,即忽略输出(不想显示输出内容,比如错误信息的输出)。
注意:在使用文件描述符编码时,注意和大于号或者小于号间不能有空格,比如:ls 1> test.txt,而不是 ls 1 > test.txt
命令实践
echo "123\
hello world
this is myfile
the end" >myfile.txt
cat myfile.txt
ls -l
ls -l > files.txt
cat files.txt
ls -l >> files.txt
cat files.txt
ls
ls tartest nodir
ls tartest nodir > files.txt
cat files.txt
ls tartest nodir 2>out.err
cat out.err
ls tartest nodir 1>files.txt 2>out.err
cat files.txt
cat out.err
ls tartest nodir 1 >files.txt(1和大于号间有空格则命令不正确)
ls tartest nodir 2> /dev/null(错误会被忽略)
查看ip
ifconfig:(network interfaces configuring)显示或配置网络设备
命令实践
查看ip
ifconfig
查看指定网卡ip
ifconfig eth0(第一块网卡设备名)
重启系统
reboot
reboot -f:强制重启
关闭系统
shutdown
可选参数:
-t 秒数:设定在几秒钟后启动关机程序
-h:关闭系统
-c:取消正在进行中的关机动作
-f:强行关机,不进行fcsk文件系统检查
其他技巧
操作shell历史
history:显示Shell历史命令,默认500条。
!N:重复指定行号的命令,比如,!2,执行Shell历史中的第二条命令,!-2,执行Shell历史中的倒数第二条命令
!!:重复上一条命令
!xxx:重复上一条以“xxx”开头的命令
ctrl r:从后向前搜索Shell历史
命令实践
显示Shell历史:
history
执行历史中的第13条,倒数第7条,上一条:
!13
!-7
!!
tab补全
在输入命令,目录,文件名时可以按tab进行补全,如果有多条候选项,连续按两次tab会显示这些候选项
命令实践
1)输入whoa按一次tab键
2)输入who按两次tab键
命令行编辑
通过方向键可以编辑命令行,上一条,下一条,光标左右移动
ctr a:移到当前命令行开头
ctr e:移到当前命令行结尾
不要在终端窗口中使用ctrl-c和ctrl-v,它们不会工作。正确的做法是:
高亮选择一些文本,按下鼠标左键拖动,移动到粘贴位置后按下鼠标右键或者中键
双击文件名,在命令中击鼠标中键或者右键
长命令输入
使用\来换行
echo "123\456\789"
来源:CSDN
作者:luckybeggar
链接:https://blog.csdn.net/luckybeggar/article/details/103798488