例如,如何通过.desktop文件在gui中查找是使用终端控制台启动还是不使用终端控制台启动的脚本?
我已经查看了env
的输出,并且似乎有希望检查一些变量,例如测试$ TERM var。但我想肯定会以一种兼容/便携式的方式知道它。
这是脚本所必需的,它将具有两种用户输入行为,即回退到终端读取或gui输入。
答案 0 :(得分:2)
if [ -t 0 ]; then echo "in a terminal"; fi
测试文件描述符0,即stdin。如果要以GUI形式启动脚本,则该测试应该为false。
如果脚本是从终端运行的,但是在输入的情况下,这将不起作用 重定向。 –戈登·戴维森
答案 1 :(得分:1)
@LeonidMew的回答不完整,有些不正确。
您不应通过STDIN的存在来检测GUI(这是[-t 0]测试所做的)。在某些情况下,STDIN和GUI都不可用。在非交互模式下通过ssh会话运行脚本时。对于CI部署,通常会发生这种情况。
正确答案在很大程度上取决于您的任务,通常有4种不同的环境:
const items = [ { name: "A", data: { title: "B", subData: { val: "AA", anotherData: { subC: [ { name: "Data Item", fruits: ["Apple"] }, { name: "Data Item 2", fruits: ["Orange"] } ] } } } }, { name: "A", data: { title: "B", subData: { val: "AA", anotherData: { subC: [ { name: "Data Item", fruits: ["Apple"] }, { name: "Data Item 2", fruits: ["Orange"] } ] } } } } ]
function findItems(searchItem) {
return items.filter(item => {
return item.data.subData.anotherData.subC.some(di => di.fruits.includes(searchItem));
})
}
console.log("Items containing Apple:", findItems("Apple"))
// Or Oranges
console.log("Items containing Orange:", findItems("Orange"))
。my_list = [np.random.randint(1, 10000, 1000) for v in range(1000)]
my_value = np.random.randint(1, 10000, 1)[0]
def v1(my_list):
if any(my_value in sublist for sublist in my_list):
return True
return False
def v2(my_list):
for sublist in my_list:
if my_value in sublist:
return True
return False
print(my_value)
%timeit v1(my_list)
%timeit v2(my_list)
>> 3012
>> 56.9 µs ± 3.1 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>> 51.2 µs ± 383 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
。imgVec.image = UIImage.init(named: "yourImageName")
。应用可以通过STDIN以文本模式与用户互动。GUI is missing, STDIN is missing
。有2个基本测试可以帮助识别环境:
GUI is present, STDIN is missing
。GUI is missing, STDIN is present
测试文件描述符0(aka STDIN)将这两个测试结合起来可以为您提供环境:
GUI is present, STDIN is present
答案 2 :(得分:0)
或者:
$ [ -t 0 ] && echo "in a terminal" || echo "something else"
in a terminal