Linux命令--其他命令
Posted IT利刃出鞘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令--其他命令相关的知识,希望对你有一定的参考价值。
简单命令
命令 |
作用 |
目录类 |
|
cd |
只输入cd然后回车,可以进入进入home目录(即~) |
cd - |
在最近的两个目录之间切换 |
pushddir |
将dir压栈 |
popd |
将本路径退出栈,并回到栈顶路径 |
文件命令 |
|
> file; |
创建名为file的空文件 |
tree |
以树的形式递归显示所有文件(夹)。可以tree -L 3只显示3层文件夹 |
mkdir -p |
创建多级目录 |
ln -s /etc/a /tmp/b |
将/etc/a链接到/tmp/b。 只要/etc/a和/tmp/目录存在即可,会新生成/tmp/b。 |
ln -s /etc/a |
在当前目录新建a,并将/etc/a链接到当前目录下的a。等价于:ln -s /etc/a ./ |
ranger |
命令行浏览文件系统 |
打印类 |
|
echo xxx |
打印xxx |
printf |
可像C语言一样打印信息。如:printf("%x\\n",1234);(打印1234的16进制形式) |
命令运行控制 |
|
! |
感叹号加一个字母,执行最后一次以此字母开头的命令 |
cmd1| cmd2 ; |
在cmd1命令的结果中再执行cmd2(kernel中) |
cmd1 && cmd2; |
cmd1命令执行成功后,执行cmd2(kernel中) |
cmd1 ; cmd2; |
cmd1命令执行完成后,执行cmd2(u-boot或kernel中) |
ctrl+z |
暂停应用程序 |
权限控制 |
|
whoami |
查看本用户是什么:是root还是哪个user |
su liu |
切换到liu用户。如果只用su,默认切换到root |
groups |
查看本用户在哪个组。idliu也可以。 |
启动命令 |
|
reboot; |
内核重启命令 |
shutdown -c |
取消关机。还可以试试pkill shutdown |
其他 |
|
ldd; |
列出可执行文件所依赖的动态库。如:lddhello |
reset; |
u-boot重启命令 |
setenv bootargs |
清除环境变量(以bootargs为例) |
setenv bootargs \'...\' |
环境变量很长时用单引号 |
j : 前进一行
k : 后退一行
f : 向前一页 (空格也可以)
b : 向后一页
g : 跳到第一行
G : 跳到最后一行
/ : 向下搜索
? : 向上搜索
n : 跳到下一个搜索到的项
N : 跳到上一个搜索到的项
r : 刷屏
q : 退出
作用 |
显示历史命令 |
参数 |
|
参数 |
含义 |
n |
打印最近n条命令 |
-c |
清空当前历史命令(缓冲区); |
-a |
将历史命令缓冲区中命令写入历史命令文件中; |
-r |
将历史命令文件中的命令读入当前历史命令缓冲区; |
-w |
将当前历史命令缓冲区命令写入历史命令文件中; |
-d<offset> |
删除历史记录中第offset个命令 |
-n<filename> |
读取指定文件 |
示例 |
|
history 10 |
显示最近10条命令 |
注意事项 |
|
history -c只是清除了当前缓冲区的历史命令。当 Shell 退出时,就不会有历史命令追加到文件 .bash_history 中。但当重新登录到 Shell 时,Shell 便会加载文件 .bash_history,该文件中存储着曾经输入的历史命令,因此,系统的历史命令就又出现了。 解决方法:history -c; history -w |
作用 |
给命令传递参数的一个过滤器,也是组合多个命令的一个工具。 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。 可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有这个必要,所以就有了 xargs 命令,例如: find /sbin -perm +700 |ls -l #这个命令是错误的 find /sbin -perm +700 |xargs ls -l #这样才是正确的 |
格式 |
somecommand |xargs -item command |
选项 |
|
选项 |
含义 |
-a file |
从文件中读入作为sdtin |
-e/-E flag |
flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。 |
-p |
当每次执行一个argument的时候询问一次用户 |
-n num |
后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的 |
-t |
表示先打印命令,然后再执行 |
-i/-I |
看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。 |
-r no-run-if-empty |
当xargs的输入为空的时候则停止xargs,不用再去执行了。 |
-l/-L num |
从标准输入一次读取 num 行送给 command 命令。 |
-d delim |
分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。 |
-x |
exit的意思,主要是配合-s使用。。 |
-P |
修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。 |
示例 |
|
测试文件 # cat test.txt a b c d e f g h i j k l m n o p q |
|
多行输入单行输出 |
cat test.txt | xargs 运行结果: a b c d e f g h i j k l m n o p q |
-n 选项多行输出 |
cat test.txt | xargs -n3 运行结果 a b c d e f g h i j k l m n o p q |
-d 选项可以自 定义一个定界符 |
echo "nameXnameXnameXname" | xargs -dX 运行结果: name name name name |
压缩输入中重复的字符 |
echo "thissss is a text linnnnnnne." | tr -s \' sn\' 运行结果:this is a text line. |
统计php文件的行数 |
find . -type f -name "*.php" -print0 | xargs -0 wc -l |
查找所有的 jpg 文件, 并且压缩它们 |
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz |
下载文件中所有url链接 |
cat url-list.txt | xargs wget -c |
-I/-i 选项 |
使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉, 当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次。 示例: # cat sk.sh #!/bin/bash #sk.sh命令内容,打印出所有参数。 echo $*
# cat arg.txt aaa bbb ccc
cat arg.txt | xargs -I {} ./sk.sh -p {} -l 执行结果: -p aaa -l -p bbb -l -p ccc -l
|
复制所有图片文件 到 /data/images |
ls *.jpg | xargs -n1 -I {} cp {} /data/images |
参考网址:source命令与./命令
source 命令是 bash shell 的内置命令,从 C Shell 而来。
source 命令的另一种写法是点符号,用法和 source 相同,从Bourne Shell而来。
source 命令可以强行让一个脚本去立即影响当前的环境。
source 命令会强制执行脚本中的全部命令,而忽略文件的权限。
source 命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。
source 命令可以影响执行脚本的父shell的环境,而 export 则只能影响其子shell的环境。
source(或点)命令通常用于重新执行刚修改的初始化文件,如 .bash_profile和 .profile 等等。
例如,如果在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能用source命令重新执行 .bash_profile
中的命令而不用注销并重新登录。
“.”点命令是shell的一个内部命令,它从指定的shell 文件中读入所有命令语句并在当前进程中执行。 因此当多个shell进程(父子进程或无关进程均可)共享一组变
量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改
仅涉及到这个shell文件)。但要注意的是,这个shell文件不能包括含有位置参数的语句,即不能接受$1、$2等命令行参数。
从上面可以看出,其实点命令相当于c语言里面的#include。
举例
$source ~/.bashrc 或者:$. ~/.bashrc
执行后 ~/.bashrc 中的内容立即生效。
一个典型的用处是,在使用 android 的 mm 等相关命令时,需要先执行以下命令:
$cd <android source path>
$source ./build/envsetup.sh 或者 $. ./build/envsetup.sh
分析
例1:
cat a.sh
#! /bin/bash
export $KKK=111
执行命令:
./a.sh;echo $KKK
执行结果:
没有打印信息
执行命令:
. ./a.sh;echo $KKK 或者source ./a.sh;echo $KKK
执行结果:
KKK=111
原因分析:
./a.sh:
当前终端所在的shell fork一个子shell然后执行a.sh的,会建立自己的进程环境,这个进程结束的时候,它所建立的环境也随之被销毁。
所以执行完了再返回终端所在的shell,所以执行后,结果并没有反应到父shell里。
source a.sh:
在当前shell中执行的,所以能看到结果。
例2:
cat file1
#! /bin/bash
a="hi"
echo $a
输入命令:
./file1
结果:
bash: ./file1: Permission denied
输入命令:
. ./file1
结果:
hi。
例3:
file1:
#! /bin/bash
a="hi"
file2:(与file1在同一个目录下)
#! /bin/bash
./file1
echo $a
file3:
#! /bin/bash
. ./file1
echo $a
作用:显示和设置shell中的行为选项,通过这些选项以增强shell易用性
用法:shopt 参数 行为项
参数 | 作用 | 示例 |
-s | 开启 | shop -s extglob |
-u | 关闭 | shop -u extglob |
extglob:Bash Shell有个extglob选项,开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便。
例如:rm -rf !(*.txt) //删除*.txt之外的所有文件/文件夹
开启之后,以下5个模式匹配操作符将被识别:
?(pattern-list) - 所给模式匹配0次或1次;
*(pattern-list) - 所给模式匹配0次以上包括0次;
+(pattern-list) - 所给模式匹配1次以上包括1次;
@(pattern-list) - 所给模式仅仅匹配1次;
!(pattern-list) - 不匹配括号内的所给模式。
普通重启
reboot
shutdown
halt
init
强制重启
其他网址
简介
reboot
magic SysRq key
watchdog
IPMI
执行控制at
其他网址
简介
示例
at命令格式
选项
示例
以上是关于Linux命令--其他命令的主要内容,如果未能解决你的问题,请参考以下文章